Question: Optimize this code using loop unrolling. void naive_pinwheel(pixel *src, pixel *dest) { int qi, qj, i, j; /* Loop over 4 quadrants: */ for (qi
Optimize this code using loop unrolling.
void naive_pinwheel(pixel *src, pixel *dest)
{
int qi, qj, i, j;
/* Loop over 4 quadrants: */
for (qi = 0; qi < 2; qi++)
for (qj = 0; qj < 2; qj++)
/* Loop within quadrant: */
for (i = 0; i < src->dim/2; i++)
for (j = 0; j < src->dim/2; j++) {
int s_idx = RIDX((qj * src->dim/2) + i,
j + (qi * src->dim/2), src->dim);
int d_idx = RIDX((qj * src->dim/2) + src->dim/2 - 1 - j,
i + (qi * src->dim/2), src->dim);
dest[d_idx].red = (src[s_idx].red
+ src[s_idx].green
+ src[s_idx].blue) / 3;
dest[d_idx].green = (src[s_idx].red
+ src[s_idx].green
+ src[s_idx].blue) / 3;
dest[d_idx].blue = (src[s_idx].red
+ src[s_idx].green
+ src[s_idx].blue) / 3;
}
}
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
