const vector unsigned char zero = (const vector unsigned char)vec_splat_u8(0);
const_vector unsigned char zero = (const_vector unsigned char)vec_splat_u8(0);
void get_pixels_altivec(DCTELEM *restrict block, const uint8_t *pixels, int line_size){    int i;    vector unsigned char perm, bytes, *pixv;    const vector unsigned char zero = (const vector unsigned char)vec_splat_u8(0);    vector signed short shorts;    for(i=0;i<8;i++)    {        // Read potentially unaligned pixels.        // We're reading 16 pixels, and actually only want 8,        // but we simply ignore the extras.        perm = vec_lvsl(0, pixels);        pixv = (vector unsigned char *) pixels;        bytes = vec_perm(pixv[0], pixv[1], perm);        // convert the bytes into shorts        shorts = (vector signed short)vec_mergeh(zero, bytes);        // save the data to the block, we assume the block is 16-byte aligned        vec_st(shorts, i*16, (vector signed short*)block);        pixels += line_size;    }}