comparison postproc/swscale_template.c @ 12017:21e5cb258a95

AltiVec support in postproc/ + altivec optimizations for yuv2yuvX patch by (Romain Dolbeau <dolbeau at irisa dot fr>)
author michael
date Thu, 11 Mar 2004 17:58:11 +0000
parents c552fe6acbaa
children 2ef24558b732
comparison
equal deleted inserted replaced
12016:b962aaad2940 12017:21e5cb258a95
55 55
56 #ifdef HAVE_MMX2 56 #ifdef HAVE_MMX2
57 #define MOVNTQ(a,b) "movntq " #a ", " #b " \n\t" 57 #define MOVNTQ(a,b) "movntq " #a ", " #b " \n\t"
58 #else 58 #else
59 #define MOVNTQ(a,b) "movq " #a ", " #b " \n\t" 59 #define MOVNTQ(a,b) "movq " #a ", " #b " \n\t"
60 #endif
61
62 #ifdef HAVE_ALTIVEC
63 #include "swscale_altivec_template.c"
60 #endif 64 #endif
61 65
62 #define YSCALEYUV2YV12X(x, offset) \ 66 #define YSCALEYUV2YV12X(x, offset) \
63 "xorl %%eax, %%eax \n\t"\ 67 "xorl %%eax, %%eax \n\t"\
64 "movq "VROUNDER_OFFSET"(%0), %%mm3\n\t"\ 68 "movq "VROUNDER_OFFSET"(%0), %%mm3\n\t"\
764 :: "r" (&c->redDither), 768 :: "r" (&c->redDither),
765 "r" (dest), "m" (dstW) 769 "r" (dest), "m" (dstW)
766 : "%eax", "%edx", "%esi" 770 : "%eax", "%edx", "%esi"
767 ); 771 );
768 #else 772 #else
773 #ifdef HAVE_ALTIVEC
774 yuv2yuvX_altivec_real(lumFilter, lumSrc, lumFilterSize,
775 chrFilter, chrSrc, chrFilterSize,
776 dest, uDest, vDest, dstW, chrDstW);
777 #else //HAVE_ALTIVEC
769 yuv2yuvXinC(lumFilter, lumSrc, lumFilterSize, 778 yuv2yuvXinC(lumFilter, lumSrc, lumFilterSize,
770 chrFilter, chrSrc, chrFilterSize, 779 chrFilter, chrSrc, chrFilterSize,
771 dest, uDest, vDest, dstW, chrDstW); 780 dest, uDest, vDest, dstW, chrDstW);
781 #endif //!HAVE_ALTIVEC
772 #endif 782 #endif
773 } 783 }
774 784
775 static inline void RENAME(yuv2yuv1)(int16_t *lumSrc, int16_t *chrSrc, 785 static inline void RENAME(yuv2yuv1)(int16_t *lumSrc, int16_t *chrSrc,
776 uint8_t *dest, uint8_t *uDest, uint8_t *vDest, int dstW, int chrDstW) 786 uint8_t *dest, uint8_t *uDest, uint8_t *vDest, int dstW, int chrDstW)