diff options
author | David Schleef <ds@schleef.org> | 2006-11-05 01:13:26 +0000 |
---|---|---|
committer | David Schleef <ds@schleef.org> | 2006-11-05 01:13:26 +0000 |
commit | 7c4fb36a2edace90ffa2b4cce9dc1002aeae6a9a (patch) | |
tree | d6798931e7c843f8d3b8421245d0ad648d9d37f0 | |
parent | 224c46ca4c94950674b1af054535e0a9108bdef1 (diff) | |
download | liboil-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-- | ChangeLog | 24 | ||||
-rw-r--r-- | configure.ac | 1 | ||||
-rw-r--r-- | liboil/Makefile.am | 8 | ||||
-rw-r--r-- | liboil/amd64/Makefile.am | 8 | ||||
-rw-r--r-- | liboil/amd64/empty.c | 2 | ||||
-rw-r--r-- | liboil/i386/Makefile.am | 6 | ||||
-rw-r--r-- | liboil/i386_amd64/Makefile.am | 13 | ||||
-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.c | 17 |
14 files changed, 69 insertions, 19 deletions
@@ -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); |