All pastes #757950 Raw Edit

kernels.c

public text v1 · immutable
·published 2007-11-01 19:38 UTC
rendered paste body
/***************
 * ROTATE KERNEL
 ***************/

/******************************************************
 * Your different versions of the rotate kernel go here
 ******************************************************/

/*
 * naive_rotate - The naive baseline version of rotate
 */
char naive_rotate_descr[] = "naive_rotate: Naive baseline implementation";
void naive_rotate(int dim, pixel *src, pixel *dst)
{
    int i, j;

    for (i = 0; i < dim; i++)
        for (j = 0; j < dim; j++)
            dst[RIDX(dim-1-j, i, dim)] = src[RIDX(i, j, dim)];
}

/*
 * rotate - Your current working version of rotate
 * IMPORTANT: This is the version you will be graded on
 */
char rotate_descr[] = "rotate: Current working version";
void rotate(int dim, pixel *src, pixel *dst)
{
    int i, j;

    for(i = 0; i < dim; i+=32) {
        for(j = 0; j < dim; j+=2) {
            dst[RIDX(dim-1-j, i, dim)] = src[RIDX(i, j, dim)];
            dst[RIDX(dim-1-j, i+1, dim)] = src[RIDX(i+1, j, dim)];
            dst[RIDX(dim-1-j, i+2, dim)] = src[RIDX(i+2, j, dim)];
            dst[RIDX(dim-1-j, i+3, dim)] = src[RIDX(i+3, j, dim)];
            dst[RIDX(dim-1-j, i+4, dim)] = src[RIDX(i+4, j, dim)];
            dst[RIDX(dim-1-j, i+5, dim)] = src[RIDX(i+5, j, dim)];
            dst[RIDX(dim-1-j, i+6, dim)] = src[RIDX(i+6, j, dim)];
            dst[RIDX(dim-1-j, i+7, dim)] = src[RIDX(i+7, j, dim)];
            dst[RIDX(dim-1-j, i+8, dim)] = src[RIDX(i+8, j, dim)];
            dst[RIDX(dim-1-j, i+9, dim)] = src[RIDX(i+9, j, dim)];
            dst[RIDX(dim-1-j, i+10, dim)] = src[RIDX(i+10, j, dim)];
            dst[RIDX(dim-1-j, i+11, dim)] = src[RIDX(i+11, j, dim)];
            dst[RIDX(dim-1-j, i+12, dim)] = src[RIDX(i+12, j, dim)];
            dst[RIDX(dim-1-j, i+13, dim)] = src[RIDX(i+13, j, dim)];
            dst[RIDX(dim-1-j, i+14, dim)] = src[RIDX(i+14, j, dim)];
            dst[RIDX(dim-1-j, i+15, dim)] = src[RIDX(i+15, j, dim)];
            dst[RIDX(dim-1-j, i+16, dim)] = src[RIDX(i+16, j, dim)];
            dst[RIDX(dim-1-j, i+17, dim)] = src[RIDX(i+17, j, dim)];
            dst[RIDX(dim-1-j, i+18, dim)] = src[RIDX(i+18, j, dim)];
            dst[RIDX(dim-1-j, i+19, dim)] = src[RIDX(i+19, j, dim)];
            dst[RIDX(dim-1-j, i+20, dim)] = src[RIDX(i+20, j, dim)];
            dst[RIDX(dim-1-j, i+21, dim)] = src[RIDX(i+21, j, dim)];
            dst[RIDX(dim-1-j, i+22, dim)] = src[RIDX(i+22, j, dim)];
            dst[RIDX(dim-1-j, i+23, dim)] = src[RIDX(i+23, j, dim)];
            dst[RIDX(dim-1-j, i+24, dim)] = src[RIDX(i+24, j, dim)];
            dst[RIDX(dim-1-j, i+25, dim)] = src[RIDX(i+25, j, dim)];
            dst[RIDX(dim-1-j, i+26, dim)] = src[RIDX(i+26, j, dim)];
            dst[RIDX(dim-1-j, i+27, dim)] = src[RIDX(i+27, j, dim)];
            dst[RIDX(dim-1-j, i+28, dim)] = src[RIDX(i+28, j, dim)];
            dst[RIDX(dim-1-j, i+29, dim)] = src[RIDX(i+29, j, dim)];
            dst[RIDX(dim-1-j, i+30, dim)] = src[RIDX(i+30, j, dim)];
            dst[RIDX(dim-1-j, i+31, dim)] = src[RIDX(i+31, j, dim)];
            dst[RIDX(dim-1-j+1, i, dim)] = src[RIDX(i, j+1, dim)];
            dst[RIDX(dim-1-j+1, i+1, dim)] = src[RIDX(i+1, j+1, dim)];
            dst[RIDX(dim-1-j+1, i+2, dim)] = src[RIDX(i+2, j+1, dim)];
            dst[RIDX(dim-1-j+1, i+3, dim)] = src[RIDX(i+3, j+1, dim)];
            dst[RIDX(dim-1-j+1, i+4, dim)] = src[RIDX(i+4, j+1, dim)];
            dst[RIDX(dim-1-j+1, i+5, dim)] = src[RIDX(i+5, j+1, dim)];
            dst[RIDX(dim-1-j+1, i+6, dim)] = src[RIDX(i+6, j+1, dim)];
            dst[RIDX(dim-1-j+1, i+7, dim)] = src[RIDX(i+7, j+1, dim)];
            dst[RIDX(dim-1-j+1, i+8, dim)] = src[RIDX(i+8, j+1, dim)];
            dst[RIDX(dim-1-j+1, i+9, dim)] = src[RIDX(i+9, j+1, dim)];
            dst[RIDX(dim-1-j+1, i+10, dim)] = src[RIDX(i+10, j+1, dim)];
            dst[RIDX(dim-1-j+1, i+11, dim)] = src[RIDX(i+11, j+1, dim)];
            dst[RIDX(dim-1-j+1, i+12, dim)] = src[RIDX(i+12, j+1, dim)];
            dst[RIDX(dim-1-j+1, i+13, dim)] = src[RIDX(i+13, j+1, dim)];
            dst[RIDX(dim-1-j+1, i+14, dim)] = src[RIDX(i+14, j+1, dim)];
            dst[RIDX(dim-1-j+1, i+15, dim)] = src[RIDX(i+15, j+1, dim)];
            dst[RIDX(dim-1-j+1, i+16, dim)] = src[RIDX(i+16, j+1, dim)];
            dst[RIDX(dim-1-j+1, i+17, dim)] = src[RIDX(i+17, j+1, dim)];
            dst[RIDX(dim-1-j+1, i+18, dim)] = src[RIDX(i+18, j+1, dim)];
            dst[RIDX(dim-1-j+1, i+19, dim)] = src[RIDX(i+19, j+1, dim)];
            dst[RIDX(dim-1-j+1, i+20, dim)] = src[RIDX(i+20, j+1, dim)];
            dst[RIDX(dim-1-j+1, i+21, dim)] = src[RIDX(i+21, j+1, dim)];
            dst[RIDX(dim-1-j+1, i+22, dim)] = src[RIDX(i+22, j+1, dim)];
            dst[RIDX(dim-1-j+1, i+23, dim)] = src[RIDX(i+23, j+1, dim)];
            dst[RIDX(dim-1-j+1, i+24, dim)] = src[RIDX(i+24, j+1, dim)];
            dst[RIDX(dim-1-j+1, i+25, dim)] = src[RIDX(i+25, j+1, dim)];
            dst[RIDX(dim-1-j+1, i+26, dim)] = src[RIDX(i+26, j+1, dim)];
            dst[RIDX(dim-1-j+1, i+27, dim)] = src[RIDX(i+27, j+1, dim)];
            dst[RIDX(dim-1-j+1, i+28, dim)] = src[RIDX(i+28, j+1, dim)];
            dst[RIDX(dim-1-j+1, i+29, dim)] = src[RIDX(i+29, j+1, dim)];
            dst[RIDX(dim-1-j+1, i+30, dim)] = src[RIDX(i+30, j+1, dim)];
            dst[RIDX(dim-1-j+1, i+31, dim)] = src[RIDX(i+31, j+1, dim)];
        }
    }
}