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