diff --git a/perf/kernels.c b/perf/kernels.c index e6d3c6e..ef786f1 100644 --- a/perf/kernels.c +++ b/perf/kernels.c @@ -193,7 +193,7 @@ void smooth(int dim, pixel *src, pixel *dst) { add_pixel2(0, 0); add_pixel2(0, 1); set_pixel(0, 0, 4); - for (int i = 1; i < dim - 1; i += 2) { + for (int i = 1; i < 7; i += 2) { add_pixel2(0, i + 1); set_pixel(0, i, 6); sub_pixel2(0, i - 1); @@ -201,6 +201,32 @@ void smooth(int dim, pixel *src, pixel *dst) { set_pixel(0, i + 1, 6); sub_pixel2(0, i); } + for (int i = 7; i < dim - 1; i += 8) { + add_pixel2(0, i + 1); + set_pixel(0, i, 6); + sub_pixel2(0, i - 1); + add_pixel2(0, i + 2); + set_pixel(0, i + 1, 6); + sub_pixel2(0, i); + add_pixel2(0, i + 3); + set_pixel(0, i + 2, 6); + sub_pixel2(0, i + 1); + add_pixel2(0, i + 4); + set_pixel(0, i + 3, 6); + sub_pixel2(0, i + 2); + add_pixel2(0, i + 5); + set_pixel(0, i + 4, 6); + sub_pixel2(0, i + 3); + add_pixel2(0, i + 6); + set_pixel(0, i + 5, 6); + sub_pixel2(0, i + 4); + add_pixel2(0, i + 7); + set_pixel(0, i + 6, 6); + sub_pixel2(0, i + 5); + add_pixel2(0, i + 8); + set_pixel(0, i + 7, 6); + sub_pixel2(0, i + 6); + } set_pixel(0, dim - 1, 4); for (int i = 1; i < dim - 1; i++) { @@ -208,7 +234,7 @@ void smooth(int dim, pixel *src, pixel *dst) { add_pixel3(i, 0); add_pixel3(i, 1); set_pixel(i, 0, 6); - for (int j = 1; j < dim - 1; j += 2) { + for (int j = 1; j < 7; j += 2) { add_pixel3(i, j + 1); set_pixel(i, j, 9); sub_pixel3(i, j - 1); @@ -216,6 +242,32 @@ void smooth(int dim, pixel *src, pixel *dst) { set_pixel(i, j + 1, 9); sub_pixel3(i, j); } + for (int j = 7; j < dim - 1; j += 8) { + add_pixel3(i, j + 1); + set_pixel(i, j, 9); + sub_pixel3(i, j - 1); + add_pixel3(i, j + 2); + set_pixel(i, j + 1, 9); + sub_pixel3(i, j); + add_pixel3(i, j + 3); + set_pixel(i, j + 2, 9); + sub_pixel3(i, j + 1); + add_pixel3(i, j + 4); + set_pixel(i, j + 3, 9); + sub_pixel3(i, j + 2); + add_pixel3(i, j + 5); + set_pixel(i, j + 4, 9); + sub_pixel3(i, j + 3); + add_pixel3(i, j + 6); + set_pixel(i, j + 5, 9); + sub_pixel3(i, j + 4); + add_pixel3(i, j + 7); + set_pixel(i, j + 6, 9); + sub_pixel3(i, j + 5); + add_pixel3(i, j + 8); + set_pixel(i, j + 7, 9); + sub_pixel3(i, j + 6); + } set_pixel(i, dim - 1, 6); } @@ -223,7 +275,7 @@ void smooth(int dim, pixel *src, pixel *dst) { add_pixel2(dim - 2, 0); add_pixel2(dim - 2, 1); set_pixel(dim - 1, 0, 4); - for (int i = 1; i < dim - 1; i += 2) { + for (int i = 1; i < 7; i += 2) { add_pixel2(dim - 2, i + 1); set_pixel(dim - 1, i, 6); sub_pixel2(dim - 2, i - 1); @@ -231,6 +283,32 @@ void smooth(int dim, pixel *src, pixel *dst) { set_pixel(dim - 1, i + 1, 6); sub_pixel2(dim - 2, i); } + for (int i = 7; i < dim - 1; i += 8) { + add_pixel2(dim - 2, i + 1); + set_pixel(dim - 1, i, 6); + sub_pixel2(dim - 2, i - 1); + add_pixel2(dim - 2, i + 2); + set_pixel(dim - 1, i + 1, 6); + sub_pixel2(dim - 2, i); + add_pixel2(dim - 2, i + 3); + set_pixel(dim - 1, i + 2, 6); + sub_pixel2(dim - 2, i + 1); + add_pixel2(dim - 2, i + 4); + set_pixel(dim - 1, i + 3, 6); + sub_pixel2(dim - 2, i + 2); + add_pixel2(dim - 2, i + 5); + set_pixel(dim - 1, i + 4, 6); + sub_pixel2(dim - 2, i + 3); + add_pixel2(dim - 2, i + 6); + set_pixel(dim - 1, i + 5, 6); + sub_pixel2(dim - 2, i + 4); + add_pixel2(dim - 2, i + 7); + set_pixel(dim - 1, i + 6, 6); + sub_pixel2(dim - 2, i + 5); + add_pixel2(dim - 2, i + 8); + set_pixel(dim - 1, i + 7, 6); + sub_pixel2(dim - 2, i + 6); + } set_pixel(dim - 1, dim - 1, 4); #undef set_pixel #undef add_pixel