Mercurial > libavcodec.hg
comparison ppc/idct_altivec.c @ 1015:35cf2f4a0f8c libavcodec
PPC perf, PPC clear_block, AltiVec put_pixels8_xy2 patch by (Romain Dolbeau <dolbeau at irisa dot fr>)
author | michaelni |
---|---|
date | Sun, 19 Jan 2003 19:00:45 +0000 |
parents | 3b7cc8e4b83f |
children | b4172ff70d27 |
comparison
equal
deleted
inserted
replaced
1014:48349e11c9b2 | 1015:35cf2f4a0f8c |
---|---|
159 (vector_s16_t)(19266, 26722, 25172, 22654, 19266, 22654, 25172, 26722) | 159 (vector_s16_t)(19266, 26722, 25172, 22654, 19266, 22654, 25172, 26722) |
160 }; | 160 }; |
161 | 161 |
162 void idct_put_altivec(uint8_t* dest, int stride, vector_s16_t* block) | 162 void idct_put_altivec(uint8_t* dest, int stride, vector_s16_t* block) |
163 { | 163 { |
164 ALTIVEC_TBL_DECLARE(altivec_idct_put_num, 1); | 164 POWERPC_TBL_DECLARE(altivec_idct_put_num, 1); |
165 #ifdef ALTIVEC_USE_REFERENCE_C_CODE | 165 #ifdef ALTIVEC_USE_REFERENCE_C_CODE |
166 ALTIVEC_TBL_START_COUNT(altivec_idct_put_num, 1); | 166 POWERPC_TBL_START_COUNT(altivec_idct_put_num, 1); |
167 void simple_idct_put(UINT8 *dest, int line_size, INT16 *block); | 167 void simple_idct_put(UINT8 *dest, int line_size, INT16 *block); |
168 simple_idct_put(dest, stride, (INT16*)block); | 168 simple_idct_put(dest, stride, (INT16*)block); |
169 ALTIVEC_TBL_STOP_COUNT(altivec_idct_put_num, 1); | 169 POWERPC_TBL_STOP_COUNT(altivec_idct_put_num, 1); |
170 #else /* ALTIVEC_USE_REFERENCE_C_CODE */ | 170 #else /* ALTIVEC_USE_REFERENCE_C_CODE */ |
171 vector_u8_t tmp; | 171 vector_u8_t tmp; |
172 | 172 |
173 ALTIVEC_TBL_START_COUNT(altivec_idct_put_num, 1); | 173 POWERPC_TBL_START_COUNT(altivec_idct_put_num, 1); |
174 | 174 |
175 IDCT | 175 IDCT |
176 | 176 |
177 #define COPY(dest,src) \ | 177 #define COPY(dest,src) \ |
178 tmp = vec_packsu (src, src); \ | 178 tmp = vec_packsu (src, src); \ |
186 COPY (dest, vx4) dest += stride; | 186 COPY (dest, vx4) dest += stride; |
187 COPY (dest, vx5) dest += stride; | 187 COPY (dest, vx5) dest += stride; |
188 COPY (dest, vx6) dest += stride; | 188 COPY (dest, vx6) dest += stride; |
189 COPY (dest, vx7) | 189 COPY (dest, vx7) |
190 | 190 |
191 ALTIVEC_TBL_STOP_COUNT(altivec_idct_put_num, 1); | 191 POWERPC_TBL_STOP_COUNT(altivec_idct_put_num, 1); |
192 #endif /* ALTIVEC_USE_REFERENCE_C_CODE */ | 192 #endif /* ALTIVEC_USE_REFERENCE_C_CODE */ |
193 } | 193 } |
194 | 194 |
195 void idct_add_altivec(uint8_t* dest, int stride, vector_s16_t* block) | 195 void idct_add_altivec(uint8_t* dest, int stride, vector_s16_t* block) |
196 { | 196 { |
197 ALTIVEC_TBL_DECLARE(altivec_idct_add_num, 1); | 197 POWERPC_TBL_DECLARE(altivec_idct_add_num, 1); |
198 #ifdef ALTIVEC_USE_REFERENCE_C_CODE | 198 #ifdef ALTIVEC_USE_REFERENCE_C_CODE |
199 ALTIVEC_TBL_START_COUNT(altivec_idct_add_num, 1); | 199 POWERPC_TBL_START_COUNT(altivec_idct_add_num, 1); |
200 void simple_idct_add(UINT8 *dest, int line_size, INT16 *block); | 200 void simple_idct_add(UINT8 *dest, int line_size, INT16 *block); |
201 simple_idct_add(dest, stride, (INT16*)block); | 201 simple_idct_add(dest, stride, (INT16*)block); |
202 ALTIVEC_TBL_STOP_COUNT(altivec_idct_add_num, 1); | 202 POWERPC_TBL_STOP_COUNT(altivec_idct_add_num, 1); |
203 #else /* ALTIVEC_USE_REFERENCE_C_CODE */ | 203 #else /* ALTIVEC_USE_REFERENCE_C_CODE */ |
204 vector_u8_t tmp; | 204 vector_u8_t tmp; |
205 vector_s16_t tmp2, tmp3; | 205 vector_s16_t tmp2, tmp3; |
206 vector_u8_t perm0; | 206 vector_u8_t perm0; |
207 vector_u8_t perm1; | 207 vector_u8_t perm1; |
208 vector_u8_t p0, p1, p; | 208 vector_u8_t p0, p1, p; |
209 | 209 |
210 ALTIVEC_TBL_START_COUNT(altivec_idct_add_num, 1); | 210 POWERPC_TBL_START_COUNT(altivec_idct_add_num, 1); |
211 | 211 |
212 IDCT | 212 IDCT |
213 | 213 |
214 p0 = vec_lvsl (0, dest); | 214 p0 = vec_lvsl (0, dest); |
215 p1 = vec_lvsl (stride, dest); | 215 p1 = vec_lvsl (stride, dest); |
233 ADD (dest, vx4, perm0) dest += stride; | 233 ADD (dest, vx4, perm0) dest += stride; |
234 ADD (dest, vx5, perm1) dest += stride; | 234 ADD (dest, vx5, perm1) dest += stride; |
235 ADD (dest, vx6, perm0) dest += stride; | 235 ADD (dest, vx6, perm0) dest += stride; |
236 ADD (dest, vx7, perm1) | 236 ADD (dest, vx7, perm1) |
237 | 237 |
238 ALTIVEC_TBL_STOP_COUNT(altivec_idct_add_num, 1); | 238 POWERPC_TBL_STOP_COUNT(altivec_idct_add_num, 1); |
239 #endif /* ALTIVEC_USE_REFERENCE_C_CODE */ | 239 #endif /* ALTIVEC_USE_REFERENCE_C_CODE */ |
240 } | 240 } |
241 | 241 |