comparison ppc/gmc_altivec.c @ 3973:b28edd190fc0 libavcodec

removing ALTIVEC_USE_REFERENCE_C_CODE, since has no use anymore
author lu_zero
date Mon, 09 Oct 2006 18:29:46 +0000
parents c8c591fe26f8
children d5ba514e3f4a
comparison
equal deleted inserted replaced
3972:f5f1c9af095d 3973:b28edd190fc0
32 */ 32 */
33 #define GMC1_PERF_COND (h==8) 33 #define GMC1_PERF_COND (h==8)
34 void gmc1_altivec(uint8_t *dst /* align 8 */, uint8_t *src /* align1 */, int stride, int h, int x16, int y16, int rounder) 34 void gmc1_altivec(uint8_t *dst /* align 8 */, uint8_t *src /* align1 */, int stride, int h, int x16, int y16, int rounder)
35 { 35 {
36 POWERPC_PERF_DECLARE(altivec_gmc1_num, GMC1_PERF_COND); 36 POWERPC_PERF_DECLARE(altivec_gmc1_num, GMC1_PERF_COND);
37 #ifdef ALTIVEC_USE_REFERENCE_C_CODE
38 const int A=(16-x16)*(16-y16);
39 const int B=( x16)*(16-y16);
40 const int C=(16-x16)*( y16);
41 const int D=( x16)*( y16);
42 int i;
43
44 POWERPC_PERF_START_COUNT(altivec_gmc1_num, GMC1_PERF_COND);
45
46 for(i=0; i<h; i++)
47 {
48 dst[0]= (A*src[0] + B*src[1] + C*src[stride+0] + D*src[stride+1] + rounder)>>8;
49 dst[1]= (A*src[1] + B*src[2] + C*src[stride+1] + D*src[stride+2] + rounder)>>8;
50 dst[2]= (A*src[2] + B*src[3] + C*src[stride+2] + D*src[stride+3] + rounder)>>8;
51 dst[3]= (A*src[3] + B*src[4] + C*src[stride+3] + D*src[stride+4] + rounder)>>8;
52 dst[4]= (A*src[4] + B*src[5] + C*src[stride+4] + D*src[stride+5] + rounder)>>8;
53 dst[5]= (A*src[5] + B*src[6] + C*src[stride+5] + D*src[stride+6] + rounder)>>8;
54 dst[6]= (A*src[6] + B*src[7] + C*src[stride+6] + D*src[stride+7] + rounder)>>8;
55 dst[7]= (A*src[7] + B*src[8] + C*src[stride+7] + D*src[stride+8] + rounder)>>8;
56 dst+= stride;
57 src+= stride;
58 }
59
60 POWERPC_PERF_STOP_COUNT(altivec_gmc1_num, GMC1_PERF_COND);
61
62 #else /* ALTIVEC_USE_REFERENCE_C_CODE */
63 const unsigned short __attribute__ ((aligned(16))) rounder_a[8] = 37 const unsigned short __attribute__ ((aligned(16))) rounder_a[8] =
64 {rounder, rounder, rounder, rounder, 38 {rounder, rounder, rounder, rounder,
65 rounder, rounder, rounder, rounder}; 39 rounder, rounder, rounder, rounder};
66 const unsigned short __attribute__ ((aligned(16))) ABCD[8] = 40 const unsigned short __attribute__ ((aligned(16))) ABCD[8] =
67 { 41 {
167 dst += stride; 141 dst += stride;
168 src += stride; 142 src += stride;
169 } 143 }
170 144
171 POWERPC_PERF_STOP_COUNT(altivec_gmc1_num, GMC1_PERF_COND); 145 POWERPC_PERF_STOP_COUNT(altivec_gmc1_num, GMC1_PERF_COND);
172
173 #endif /* ALTIVEC_USE_REFERENCE_C_CODE */
174 } 146 }