230 |
for(i=0; i<8; i++) |
for(i=0; i<8; i++) |
231 |
idctSparseCol(block + i); |
idctSparseCol(block + i); |
232 |
} |
} |
|
|
|
|
|
|
|
/* Input permutation for the simple_idct_mmx */ |
|
|
static const uint8_t simple_mmx_permutation[64]={ |
|
|
0x00, 0x08, 0x04, 0x09, 0x01, 0x0C, 0x05, 0x0D, |
|
|
0x10, 0x18, 0x14, 0x19, 0x11, 0x1C, 0x15, 0x1D, |
|
|
0x20, 0x28, 0x24, 0x29, 0x21, 0x2C, 0x25, 0x2D, |
|
|
0x12, 0x1A, 0x16, 0x1B, 0x13, 0x1E, 0x17, 0x1F, |
|
|
0x02, 0x0A, 0x06, 0x0B, 0x03, 0x0E, 0x07, 0x0F, |
|
|
0x30, 0x38, 0x34, 0x39, 0x31, 0x3C, 0x35, 0x3D, |
|
|
0x22, 0x2A, 0x26, 0x2B, 0x23, 0x2E, 0x27, 0x2F, |
|
|
0x32, 0x3A, 0x36, 0x3B, 0x33, 0x3E, 0x37, 0x3F, |
|
|
}; |
|
|
|
|
|
#if defined(ARCH_IS_IA32) |
|
|
/* wrapper function, as simple_idct_mmx expects data to be permutated */ |
|
|
void simple_idct_mmx2(int16_t * const block) |
|
|
{ |
|
|
int16_t tmp[64]; |
|
|
int i; |
|
|
|
|
|
for(i=0;i<64;i++) tmp[simple_mmx_permutation[i]] = block[i]; |
|
|
simple_idct_mmx(tmp); |
|
|
for(i=0;i<64;i++) block[i] = tmp[i]; |
|
|
} |
|
|
#endif |
|