diff options
Diffstat (limited to 'libavcodec/sh4')
-rw-r--r-- | libavcodec/sh4/idct_sh4.c | 151 |
1 files changed, 0 insertions, 151 deletions
diff --git a/libavcodec/sh4/idct_sh4.c b/libavcodec/sh4/idct_sh4.c index 8d1a31670f..13a85b030e 100644 --- a/libavcodec/sh4/idct_sh4.c +++ b/libavcodec/sh4/idct_sh4.c @@ -54,8 +54,6 @@ static const float odd_table[] __attribute__ ((aligned(8))) = { #undef c6 #undef c7 -#if 1 - #define load_matrix(table) \ do { \ const float *t = table; \ @@ -84,52 +82,11 @@ static const float odd_table[] __attribute__ ((aligned(8))) = { register float fr2 __asm__("fr2"); \ register float fr3 __asm__("fr3") -#else - -/* generic C code for check */ - -static void ftrv_(const float xf[],float fv[]) -{ - float f0,f1,f2,f3; - f0 = fv[0]; - f1 = fv[1]; - f2 = fv[2]; - f3 = fv[3]; - fv[0] = xf[0]*f0 + xf[4]*f1 + xf[ 8]*f2 + xf[12]*f3; - fv[1] = xf[1]*f0 + xf[5]*f1 + xf[ 9]*f2 + xf[13]*f3; - fv[2] = xf[2]*f0 + xf[6]*f1 + xf[10]*f2 + xf[14]*f3; - fv[3] = xf[3]*f0 + xf[7]*f1 + xf[11]*f2 + xf[15]*f3; -} - -static void load_matrix_(float xf[],const float table[]) -{ - int i; - for(i=0;i<16;i++) xf[i]=table[i]; -} - -#define ftrv() ftrv_(xf,fv) -#define load_matrix(table) load_matrix_(xf,table) - -#define DEFREG \ - float fv[4],xf[16] - -#define fr0 fv[0] -#define fr1 fv[1] -#define fr2 fv[2] -#define fr3 fv[3] - -#endif - -#if 1 #define DESCALE(x,n) (x)*(1.0f/(1<<(n))) -#else -#define DESCALE(x,n) (((int)(x)+(1<<(n-1)))>>(n)) -#endif /* this code work worse on gcc cvs. 3.2.3 work fine */ -#if 1 //optimized void idct_sh4(DCTELEM *block) @@ -252,111 +209,3 @@ void idct_sh4(DCTELEM *block) fp_single_leave(fpscr); } -#else -void idct_sh4(DCTELEM *block) -{ - DEFREG; - - int i; - float tblock[8*8],*fblock; - - /* row */ - - /* even part */ - load_matrix(even_table); - - fblock = tblock; - i = 8; - do { - fr0 = block[0]; - fr1 = block[2]; - fr2 = block[4]; - fr3 = block[6]; - block+=8; - ftrv(); - fblock[0] = fr0; - fblock[2] = fr1; - fblock[4] = fr2; - fblock[6] = fr3; - fblock+=8; - } while(--i); - block-=8*8; - fblock-=8*8; - - load_matrix(odd_table); - - i = 8; - - do { - float t0,t1,t2,t3; - fr0 = block[1]; - fr1 = block[3]; - fr2 = block[5]; - fr3 = block[7]; - block+=8; - ftrv(); - t0 = fblock[0]; - t1 = fblock[2]; - t2 = fblock[4]; - t3 = fblock[6]; - fblock[0] = t0 + fr0; - fblock[7] = t0 - fr0; - fblock[1] = t1 + fr1; - fblock[6] = t1 - fr1; - fblock[2] = t2 + fr2; - fblock[5] = t2 - fr2; - fblock[3] = t3 + fr3; - fblock[4] = t3 - fr3; - fblock+=8; - } while(--i); - block-=8*8; - fblock-=8*8; - - /* col */ - - /* even part */ - load_matrix(even_table); - - i = 8; - - do { - fr0 = fblock[8*0]; - fr1 = fblock[8*2]; - fr2 = fblock[8*4]; - fr3 = fblock[8*6]; - ftrv(); - fblock[8*0] = fr0; - fblock[8*2] = fr1; - fblock[8*4] = fr2; - fblock[8*6] = fr3; - fblock++; - } while(--i); - fblock-=8; - - load_matrix(odd_table); - - i=8; - do { - float t0,t1,t2,t3; - fr0 = fblock[8*1]; - fr1 = fblock[8*3]; - fr2 = fblock[8*5]; - fr3 = fblock[8*7]; - ftrv(); - t0 = fblock[8*0]; - t1 = fblock[8*2]; - t2 = fblock[8*4]; - t3 = fblock[8*6]; - fblock++; - block[8*0] = DESCALE(t0 + fr0,3); - block[8*7] = DESCALE(t0 - fr0,3); - block[8*1] = DESCALE(t1 + fr1,3); - block[8*6] = DESCALE(t1 - fr1,3); - block[8*2] = DESCALE(t2 + fr2,3); - block[8*5] = DESCALE(t2 - fr2,3); - block[8*3] = DESCALE(t3 + fr3,3); - block[8*4] = DESCALE(t3 - fr3,3); - block++; - } while(--i); -} -#endif |