From a28a9de744adfa810537fa5c5cdd6baef08e7919 Mon Sep 17 00:00:00 2001 From: David Schleef Date: Sat, 13 Sep 2008 05:52:49 -0700 Subject: Add avg2_32xn_u8 --- liboil/i386_amd64/sad8x8.c | 71 ++++++++++++++++++++++++++++++++++++++++++++++ liboil/liboilclasses.h | 2 ++ liboil/liboilfuncs-04.h | 2 ++ liboil/liboilfuncs-doc.h | 2 ++ liboil/liboilfuncs.h | 6 ++++ liboil/liboiltrampolines.c | 20 +++++++++++++ liboil/ref/wavelet.c | 49 ++++++++++++++++++++++++++++++++ 7 files changed, 152 insertions(+) (limited to 'liboil') diff --git a/liboil/i386_amd64/sad8x8.c b/liboil/i386_amd64/sad8x8.c index f72cbf5..fbc268e 100644 --- a/liboil/i386_amd64/sad8x8.c +++ b/liboil/i386_amd64/sad8x8.c @@ -616,6 +616,47 @@ combine4_16xn_u8_mmx (uint8_t *d, int ds1, } OIL_DEFINE_IMPL_FULL (combine4_16xn_u8_mmx, combine4_16xn_u8, OIL_IMPL_FLAG_MMX|OIL_IMPL_FLAG_MMXEXT); +void +combine4_32xn_u8_mmx (uint8_t *d, int ds1, + uint8_t *s1, int ss1, + uint8_t *s2, int ss2, + uint8_t *s3, int ss3, + uint8_t *s4, int ss4, + int16_t *s5_6, int n) +{ + int j; + + asm volatile ("\n" + " pxor %%mm7, %%mm7\n" + " movq 0(%0), %%mm6\n" + " movd 8(%0), %%mm4\n" + " pshufw $0x00, %%mm4, %%mm4\n" + ::"r" (s5_6)); + + for(j=0;j> s5_6[5]; + } + s1 += ss1; + s2 += ss2; + s3 += ss3; + s4 += ss4; + d += ds1; + } +} +OIL_DEFINE_IMPL_REF (combine4_32xn_u8_ref, combine4_32xn_u8); + void combine2_8xn_u8_ref (uint8_t *d, int ds1, uint8_t *s1, int ss1, @@ -929,3 +962,19 @@ avg2_16xn_u8_ref (uint8_t *d, int ds1, uint8_t *s1, int ss1, } OIL_DEFINE_IMPL_REF (avg2_16xn_u8_ref, avg2_16xn_u8); +void +avg2_32xn_u8_ref (uint8_t *d, int ds1, uint8_t *s1, int ss1, + uint8_t *s2, int ss2, int n) +{ + int i; + int j; + for(j=0;j>1; + } + s1 += ss1; + s2 += ss2; + d += ds1; + } +} +OIL_DEFINE_IMPL_REF (avg2_32xn_u8_ref, avg2_32xn_u8); -- cgit v1.2.1