diff options
author | David Schleef <ds@schleef.org> | 2006-02-02 20:11:07 +0000 |
---|---|---|
committer | David Schleef <ds@schleef.org> | 2006-02-02 20:11:07 +0000 |
commit | eb94d0eb7fdfbc24669f984cb87fea5497472df9 (patch) | |
tree | a5de5fd4b5d834c97a27818c513523a9e0165522 /liboil/ref | |
parent | d14fb56ab84532957842d95dba6e41de2be1cc80 (diff) | |
download | liboil-eb94d0eb7fdfbc24669f984cb87fea5497472df9.tar.gz |
* liboil/i386/wavelet.c:liboil_0_3_7
* liboil/liboilclasses.h:
* liboil/liboilfuncs-04.h:
* liboil/liboilfuncs.h:
* liboil/liboilmarshal.c:
* liboil/liboiltrampolines.c:
* liboil/ref/Makefile.am:
* liboil/ref/wavelet.c:
Revert wavelet stuff for release.
* testsuite/instruction/list-impls.c:
Fixes for HAVE_arch macros from a few days ago.
Diffstat (limited to 'liboil/ref')
-rw-r--r-- | liboil/ref/Makefile.am | 1 | ||||
-rw-r--r-- | liboil/ref/wavelet.c | 47 |
2 files changed, 37 insertions, 11 deletions
diff --git a/liboil/ref/Makefile.am b/liboil/ref/Makefile.am index cadb191..eaef15a 100644 --- a/liboil/ref/Makefile.am +++ b/liboil/ref/Makefile.am @@ -36,7 +36,6 @@ c_sources = \ sum_f64.c \ swab.c \ trans8x8.c \ - wavelet.c \ yuv.c libref_la_SOURCES = \ diff --git a/liboil/ref/wavelet.c b/liboil/ref/wavelet.c index 6656983..abb3262 100644 --- a/liboil/ref/wavelet.c +++ b/liboil/ref/wavelet.c @@ -347,10 +347,14 @@ OIL_DEFINE_CLASS_FULL (lift_add_shift2, "int16_t *d, int16_t *s1, int16_t *s2, int16_t *s3, int n", lift_test); OIL_DEFINE_CLASS_FULL (lift_sub_shift2, "int16_t *d, int16_t *s1, int16_t *s2, int16_t *s3, int n", lift_test); -OIL_DEFINE_CLASS_FULL (lift_add_mult, - "int16_t *d, int16_t *s1, int16_t *s2, int16_t *s3, int16_t *s4_2, int n", lift_test); -OIL_DEFINE_CLASS_FULL (lift_sub_mult, - "int16_t *d, int16_t *s1, int16_t *s2, int16_t *s3, int16_t *s4_2, int n", lift_test); +OIL_DEFINE_CLASS_FULL (lift_add_mult_shift12, + "int16_t *d, int16_t *s1, int16_t *s2, int16_t *s3, int16_t *s4_1, int n", lift_test); +OIL_DEFINE_CLASS_FULL (lift_sub_mult_shift12, + "int16_t *d, int16_t *s1, int16_t *s2, int16_t *s3, int16_t *s4_1, int n", lift_test); +OIL_DEFINE_CLASS_FULL (lift_add_135, + "int16_t *d, int16_t *s1, int16_t *s2, int16_t *s3, int16_t *s4, int16_t *s5, int n", lift_test); +OIL_DEFINE_CLASS_FULL (lift_sub_135, + "int16_t *d, int16_t *s1, int16_t *s2, int16_t *s3, int16_t *s4, int16_t *s5, int n", lift_test); void @@ -394,22 +398,45 @@ lift_sub_shift2_ref (int16_t *d, int16_t *s1, int16_t *s2, int16_t *s3, int n) OIL_DEFINE_IMPL_REF (lift_sub_shift2_ref, lift_sub_shift2); void -lift_add_mult_ref (int16_t *d, int16_t *s1, int16_t *s2, int16_t *s3, int16_t *s4, int n) +lift_add_mult_shift12_ref (int16_t *d, int16_t *s1, int16_t *s2, int16_t *s3, int16_t *s4, int n) { int i; for(i=0;i<n;i++) { - d[i] = s1[i] + ((s4[0]*s2[i] + s4[1]*s3[i])>>16); + d[i] = s1[i] + ((s4[0]*(s2[i] + s3[i]))>>12); } } -OIL_DEFINE_IMPL_REF (lift_add_mult_ref, lift_add_mult); +OIL_DEFINE_IMPL_REF (lift_add_mult_shift12_ref, lift_add_mult_shift12); void -lift_sub_mult_ref (int16_t *d, int16_t *s1, int16_t *s2, int16_t *s3, int16_t *s4, int n) +lift_sub_mult_shift12_ref (int16_t *d, int16_t *s1, int16_t *s2, int16_t *s3, int16_t *s4, int n) { int i; for(i=0;i<n;i++) { - d[i] = s1[i] + ((s4[0]*s2[i] + s4[1]*s3[i])>>16); + d[i] = s1[i] - ((s4[0]*(s2[i] + s3[i]))>>12); } } -OIL_DEFINE_IMPL_REF (lift_sub_mult_ref, lift_sub_mult); +OIL_DEFINE_IMPL_REF (lift_sub_mult_shift12_ref, lift_sub_mult_shift12); + +void +lift_add_135_ref (int16_t *d, int16_t *s1, int16_t *s2, int16_t *s3, + int16_t *s4, int16_t *s5, int n) +{ + int i; + for(i=0;i<n;i++) { + d[i] = s1[i] + ((9*(s3[i-1] + s4[i+1]) - (s2[i-3] + s5[i+3])) >> 4); + } +} +OIL_DEFINE_IMPL_REF (lift_add_135_ref, lift_add_135); + +void +lift_sub_135_ref (int16_t *d, int16_t *s1, int16_t *s2, int16_t *s3, + int16_t *s4, int16_t *s5, int n) +{ + int i; + for(i=0;i<n;i++) { + d[i] = s1[i] - ((9*(s3[i-1] + s4[i+1]) - (s2[i-3] + s5[i+3])) >> 4); + } +} +OIL_DEFINE_IMPL_REF (lift_sub_135_ref, lift_sub_135); + |