ARM: add prefetch function using ARMv5 PLD instruction

Originally committed as revision 14962 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
Måns Rullgård 2008-08-25 02:29:04 +00:00
parent f1424cfd6d
commit 94cdcece91
1 changed files with 17 additions and 0 deletions

View File

@ -203,6 +203,19 @@ static void simple_idct_ipp_add(uint8_t *dest, int line_size, DCTELEM *block)
} }
#endif #endif
#ifdef HAVE_ARMV5TE
static void prefetch_arm(void *mem, int stride, int h)
{
asm volatile(
"1: \n\t"
"subs %0, %0, #1 \n\t"
"pld [%1] \n\t"
"add %1, %1, %2 \n\t"
"bgt 1b \n\t"
: "+r"(h), "+r"(mem) : "r"(stride));
}
#endif
int mm_support(void) int mm_support(void)
{ {
return ENABLE_IWMMXT * MM_IWMMXT; return ENABLE_IWMMXT * MM_IWMMXT;
@ -279,6 +292,10 @@ void dsputil_init_armv4l(DSPContext* c, AVCodecContext *avctx)
c->put_no_rnd_pixels_tab[1][2] = put_no_rnd_pixels8_y2_arm; //OK c->put_no_rnd_pixels_tab[1][2] = put_no_rnd_pixels8_y2_arm; //OK
c->put_no_rnd_pixels_tab[1][3] = put_no_rnd_pixels8_xy2_arm; c->put_no_rnd_pixels_tab[1][3] = put_no_rnd_pixels8_xy2_arm;
#ifdef HAVE_ARMV5TE
c->prefetch = prefetch_arm;
#endif
#ifdef HAVE_IWMMXT #ifdef HAVE_IWMMXT
dsputil_init_iwmmxt(c, avctx); dsputil_init_iwmmxt(c, avctx);
#endif #endif