summaryrefslogtreecommitdiff
path: root/liboil/ref
diff options
context:
space:
mode:
authorDavid Schleef <ds@schleef.org>2006-02-02 20:11:07 +0000
committerDavid Schleef <ds@schleef.org>2006-02-02 20:11:07 +0000
commiteb94d0eb7fdfbc24669f984cb87fea5497472df9 (patch)
treea5de5fd4b5d834c97a27818c513523a9e0165522 /liboil/ref
parentd14fb56ab84532957842d95dba6e41de2be1cc80 (diff)
downloadliboil-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.am1
-rw-r--r--liboil/ref/wavelet.c47
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);
+