comparison armv4l/dsputil_arm.c @ 7688:160d5c1ae60a libavcodec

ARM: add prefetch function using ARMv5 PLD instruction
author mru
date Mon, 25 Aug 2008 02:29:04 +0000
parents 74488eb735a6
children eebc7209c47f
comparison
equal deleted inserted replaced
7687:e5b5a9af1b68 7688:160d5c1ae60a
201 add_pixels_clamped_ARM(block, dest, line_size); 201 add_pixels_clamped_ARM(block, dest, line_size);
202 #endif 202 #endif
203 } 203 }
204 #endif 204 #endif
205 205
206 #ifdef HAVE_ARMV5TE
207 static void prefetch_arm(void *mem, int stride, int h)
208 {
209 asm volatile(
210 "1: \n\t"
211 "subs %0, %0, #1 \n\t"
212 "pld [%1] \n\t"
213 "add %1, %1, %2 \n\t"
214 "bgt 1b \n\t"
215 : "+r"(h), "+r"(mem) : "r"(stride));
216 }
217 #endif
218
206 int mm_support(void) 219 int mm_support(void)
207 { 220 {
208 return ENABLE_IWMMXT * MM_IWMMXT; 221 return ENABLE_IWMMXT * MM_IWMMXT;
209 } 222 }
210 223
277 c->put_no_rnd_pixels_tab[1][0] = put_pixels8_arm;//OK 290 c->put_no_rnd_pixels_tab[1][0] = put_pixels8_arm;//OK
278 c->put_no_rnd_pixels_tab[1][1] = put_no_rnd_pixels8_x2_arm; //OK 291 c->put_no_rnd_pixels_tab[1][1] = put_no_rnd_pixels8_x2_arm; //OK
279 c->put_no_rnd_pixels_tab[1][2] = put_no_rnd_pixels8_y2_arm; //OK 292 c->put_no_rnd_pixels_tab[1][2] = put_no_rnd_pixels8_y2_arm; //OK
280 c->put_no_rnd_pixels_tab[1][3] = put_no_rnd_pixels8_xy2_arm; 293 c->put_no_rnd_pixels_tab[1][3] = put_no_rnd_pixels8_xy2_arm;
281 294
295 #ifdef HAVE_ARMV5TE
296 c->prefetch = prefetch_arm;
297 #endif
298
282 #ifdef HAVE_IWMMXT 299 #ifdef HAVE_IWMMXT
283 dsputil_init_iwmmxt(c, avctx); 300 dsputil_init_iwmmxt(c, avctx);
284 #endif 301 #endif
285 #ifdef HAVE_ARMVFP 302 #ifdef HAVE_ARMVFP
286 ff_float_init_arm_vfp(c, avctx); 303 ff_float_init_arm_vfp(c, avctx);