summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Schleef <ds@schleef.org>2006-11-05 01:13:26 +0000
committerDavid Schleef <ds@schleef.org>2006-11-05 01:13:26 +0000
commit7c4fb36a2edace90ffa2b4cce9dc1002aeae6a9a (patch)
treed6798931e7c843f8d3b8421245d0ad648d9d37f0
parent224c46ca4c94950674b1af054535e0a9108bdef1 (diff)
downloadliboil-7c4fb36a2edace90ffa2b4cce9dc1002aeae6a9a.tar.gz
* configure.ac:
* liboil/Makefile.am: * liboil/amd64/Makefile.am: * liboil/amd64/empty.c: * liboil/i386/Makefile.am: * liboil/i386/clamp.c: * liboil/i386/idct8x8_i386.c: * liboil/i386/mt19937.c: * liboil/i386/resample.c: * liboil/i386/sum.c: * liboil/i386/swab.c: * liboil/i386_amd64/Makefile.am: * liboil/i386_amd64/clamp.c: * liboil/i386_amd64/idct8x8_i386.c: * liboil/i386_amd64/mt19937.c: * liboil/i386_amd64/resample.c: * liboil/i386_amd64/sum.c: * liboil/i386_amd64/swab.c: * testsuite/stack_align.c: Move stuff from i386/ to i386_amd64/ that compiles on amd64 (along with a resample fix). Other random amd64 fixes.
-rw-r--r--ChangeLog24
-rw-r--r--configure.ac1
-rw-r--r--liboil/Makefile.am8
-rw-r--r--liboil/amd64/Makefile.am8
-rw-r--r--liboil/amd64/empty.c2
-rw-r--r--liboil/i386/Makefile.am6
-rw-r--r--liboil/i386_amd64/Makefile.am13
-rw-r--r--liboil/i386_amd64/clamp.c (renamed from liboil/i386/clamp.c)0
-rw-r--r--liboil/i386_amd64/idct8x8_i386.c (renamed from liboil/i386/idct8x8_i386.c)0
-rw-r--r--liboil/i386_amd64/mt19937.c (renamed from liboil/i386/mt19937.c)0
-rw-r--r--liboil/i386_amd64/resample.c (renamed from liboil/i386/resample.c)9
-rw-r--r--liboil/i386_amd64/sum.c (renamed from liboil/i386/sum.c)0
-rw-r--r--liboil/i386_amd64/swab.c (renamed from liboil/i386/swab.c)0
-rw-r--r--testsuite/stack_align.c17
14 files changed, 69 insertions, 19 deletions
diff --git a/ChangeLog b/ChangeLog
index 858ca43..fcdd9f9 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,29 @@
2006-11-04 David Schleef <ds@schleef.org>
+ * configure.ac:
+ * liboil/Makefile.am:
+ * liboil/amd64/Makefile.am:
+ * liboil/amd64/empty.c:
+ * liboil/i386/Makefile.am:
+ * liboil/i386/clamp.c:
+ * liboil/i386/idct8x8_i386.c:
+ * liboil/i386/mt19937.c:
+ * liboil/i386/resample.c:
+ * liboil/i386/sum.c:
+ * liboil/i386/swab.c:
+ * liboil/i386_amd64/Makefile.am:
+ * liboil/i386_amd64/clamp.c:
+ * liboil/i386_amd64/idct8x8_i386.c:
+ * liboil/i386_amd64/mt19937.c:
+ * liboil/i386_amd64/resample.c:
+ * liboil/i386_amd64/sum.c:
+ * liboil/i386_amd64/swab.c:
+ * testsuite/stack_align.c:
+ Move stuff from i386/ to i386_amd64/ that compiles on amd64
+ (along with a resample fix). Other random amd64 fixes.
+
+2006-11-04 David Schleef <ds@schleef.org>
+
* testsuite/instruction/check-instructions.pl:
Add more instructions.
* liboil/i386/wavelet.c:
diff --git a/configure.ac b/configure.ac
index f7482a9..126981a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -208,6 +208,7 @@ liboil/dct/Makefile
liboil/deprecated/Makefile
liboil/fb/Makefile
liboil/i386/Makefile
+liboil/i386_amd64/Makefile
liboil/jpeg/Makefile
liboil/math/Makefile
liboil/md5/Makefile
diff --git a/liboil/Makefile.am b/liboil/Makefile.am
index c775c48..5fab10a 100644
--- a/liboil/Makefile.am
+++ b/liboil/Makefile.am
@@ -10,8 +10,8 @@ libs =
if HAVE_I386
if HAVE_GCC_ASM
-SUBDIRS += i386
-libs += i386/libi386.la
+SUBDIRS += i386 i386_amd64
+libs += i386/libi386.la i386_amd64/libi386_amd64.la
endif
endif
@@ -30,8 +30,8 @@ endif
if HAVE_AMD64
if HAVE_GCC_ASM
-SUBDIRS +=
-libs +=
+SUBDIRS += amd64 i386_amd64
+libs += amd64/libamd64.la i386_amd64/libi386_amd64.la
endif
endif
diff --git a/liboil/amd64/Makefile.am b/liboil/amd64/Makefile.am
index e69de29..b55c231 100644
--- a/liboil/amd64/Makefile.am
+++ b/liboil/amd64/Makefile.am
@@ -0,0 +1,8 @@
+
+noinst_LTLIBRARIES = libamd64.la
+
+libamd64_la_SOURCES = \
+ empty.c
+
+libamd64_la_CFLAGS = $(LIBOIL_CFLAGS)
+
diff --git a/liboil/amd64/empty.c b/liboil/amd64/empty.c
new file mode 100644
index 0000000..139597f
--- /dev/null
+++ b/liboil/amd64/empty.c
@@ -0,0 +1,2 @@
+
+
diff --git a/liboil/i386/Makefile.am b/liboil/i386/Makefile.am
index 2a644dd..d4e910b 100644
--- a/liboil/i386/Makefile.am
+++ b/liboil/i386/Makefile.am
@@ -4,25 +4,19 @@ noinst_LTLIBRARIES = libi386.la
libi386_la_SOURCES = \
argb_paint_i386.c \
ayuv2argb_i386.c \
- clamp.c \
composite_i386.c \
convert_i386.c \
copy8x8_i386.c \
copy_i386.c \
diff8x8_i386.c \
error8x8_i386.c \
- idct8x8_i386.c \
md5_i386.c \
- mt19937.c \
mult8x8_i386.c \
recon8x8_i386.c \
- resample.c \
rowcolsad8x8_i386.c \
sad8x8_i386.c \
sad8x8avg_i386.c \
splat_i386.c \
- sum.c \
- swab.c \
trans8x8_i386.c \
wavelet.c
diff --git a/liboil/i386_amd64/Makefile.am b/liboil/i386_amd64/Makefile.am
new file mode 100644
index 0000000..f5412cc
--- /dev/null
+++ b/liboil/i386_amd64/Makefile.am
@@ -0,0 +1,13 @@
+
+noinst_LTLIBRARIES = libi386_amd64.la
+
+libi386_amd64_la_SOURCES = \
+ clamp.c \
+ idct8x8_i386.c \
+ mt19937.c \
+ resample.c \
+ sum.c \
+ swab.c
+
+libi386_amd64_la_CFLAGS = $(LIBOIL_CFLAGS)
+
diff --git a/liboil/i386/clamp.c b/liboil/i386_amd64/clamp.c
index e2455d9..e2455d9 100644
--- a/liboil/i386/clamp.c
+++ b/liboil/i386_amd64/clamp.c
diff --git a/liboil/i386/idct8x8_i386.c b/liboil/i386_amd64/idct8x8_i386.c
index a5c5f25..a5c5f25 100644
--- a/liboil/i386/idct8x8_i386.c
+++ b/liboil/i386_amd64/idct8x8_i386.c
diff --git a/liboil/i386/mt19937.c b/liboil/i386_amd64/mt19937.c
index d31084d..d31084d 100644
--- a/liboil/i386/mt19937.c
+++ b/liboil/i386_amd64/mt19937.c
diff --git a/liboil/i386/resample.c b/liboil/i386_amd64/resample.c
index 4d99c63..d8f3d3d 100644
--- a/liboil/i386/resample.c
+++ b/liboil/i386_amd64/resample.c
@@ -34,7 +34,6 @@
#include <stdio.h>
-#ifdef ENABLE_BROKEN_IMPLS
static void
merge_linear_u8_mmx (uint8_t *dest, uint8_t *src1, uint8_t *src2,
uint32_t *src3, int n)
@@ -49,13 +48,11 @@ merge_linear_u8_mmx (uint8_t *dest, uint8_t *src1, uint8_t *src2,
}
n >>= 2;
if (n == 0) return;
- x &= 0xff;
- x |= (x<<8);
x |= (x<<16);
asm volatile ("\n"
" pxor %%mm7, %%mm7\n"
" movd %3, %%mm6\n"
- " punpcklbw %%mm7, %%mm6\n"
+ " pshufw $0x00, %%mm6, %%mm6\n"
" movl $0x01010101, %3\n"
" movd %3, %%mm5\n"
" punpcklbw %%mm7, %%mm5\n"
@@ -83,7 +80,6 @@ merge_linear_u8_mmx (uint8_t *dest, uint8_t *src1, uint8_t *src2,
: "memory");
}
OIL_DEFINE_IMPL_FULL (merge_linear_u8_mmx, merge_linear_u8, OIL_IMPL_FLAG_MMX);
-#endif
static void
merge_linear_u8_sse2 (uint8_t *dest, uint8_t *src1, uint8_t *src2,
@@ -99,14 +95,11 @@ merge_linear_u8_sse2 (uint8_t *dest, uint8_t *src1, uint8_t *src2,
}
n >>= 3;
if (n == 0) return;
- x &= 0xff;
- x |= (x<<8);
x |= (x<<16);
asm volatile ("\n"
" pxor %%xmm7, %%xmm7\n"
" movd %3, %%xmm6\n"
" pshufd $0x00, %%xmm6, %%xmm6\n"
- " punpcklbw %%xmm7, %%xmm6\n"
" movl $0x01010101, %3\n"
" movd %3, %%xmm5\n"
" pshufd $0x00, %%xmm5, %%xmm5\n"
diff --git a/liboil/i386/sum.c b/liboil/i386_amd64/sum.c
index 8bf4de4..8bf4de4 100644
--- a/liboil/i386/sum.c
+++ b/liboil/i386_amd64/sum.c
diff --git a/liboil/i386/swab.c b/liboil/i386_amd64/swab.c
index 354abc5..354abc5 100644
--- a/liboil/i386/swab.c
+++ b/liboil/i386_amd64/swab.c
diff --git a/testsuite/stack_align.c b/testsuite/stack_align.c
index 8156981..935dc75 100644
--- a/testsuite/stack_align.c
+++ b/testsuite/stack_align.c
@@ -235,12 +235,22 @@ int realign_return;
void realign(int align)
{
+#ifdef HAVE_I386
__asm__ __volatile__ (
" sub %%ebx, %%esp\n"
" call check_class_with_alignment\n"
" add %%ebx, %%esp\n"
:: "b" (align)
);
+#endif
+#ifdef HAVE_AMD64
+ __asm__ __volatile__ (
+ " sub %%rbx, %%rsp\n"
+ " call check_class_with_alignment\n"
+ " add %%rbx, %%rsp\n"
+ :: "b" (align)
+ );
+#endif
}
void check_class_with_alignment (void)
@@ -289,8 +299,13 @@ int check_class(OilFunctionClass *klass)
test = oil_test_new(klass);
for (i=0; i < OIL_ARG_LAST; i++) {
int align;
+ int step = 4;
+
+#ifdef HAVE_AMD64
+ step = 16;
+#endif
- for (align = 0; align <= 32; align += 4) {
+ for (align = 0; align <= 32; align += step) {
realign_klass = klass;
realign_align = align;
realign(align);