Mercurial > libavcodec.hg
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 } |