SOURCES: liboil-sse2.patch (NEW) - Fixes for SSE2 code
baggins
baggins at pld-linux.org
Wed May 17 12:48:12 CEST 2006
Author: baggins Date: Wed May 17 10:48:12 2006 GMT
Module: SOURCES Tag: HEAD
---- Log message:
- Fixes for SSE2 code
---- Files affected:
SOURCES:
liboil-sse2.patch (NONE -> 1.1) (NEW)
---- Diffs:
================================================================
Index: SOURCES/liboil-sse2.patch
diff -u /dev/null SOURCES/liboil-sse2.patch:1.1
--- /dev/null Wed May 17 12:48:12 2006
+++ SOURCES/liboil-sse2.patch Wed May 17 12:48:07 2006
@@ -0,0 +1,80 @@
+--- liboil-0.3.6/liboil/i386/composite_i386.c 2005-08-01 12:07:01.000000000 +0200
++++ liboil-0.3.8/liboil/i386/composite_i386.c 2006-01-29 03:54:58.000000000 +0100
+@@ -445,8 +563,6 @@
+ static void
+ composite_over_argb_sse2_2 (uint32_t *dest, uint32_t *src, int n)
+ {
+- int end;
+-
+ __asm__ __volatile__ (" pxor %%xmm7, %%xmm7\n" // mm7 = { 0, 0, 0, 0 }
+ " movl $0x80808080, %%eax\n"
+ " movd %%eax, %%xmm6\n" // mm6 = { 128, 128, 128, 128 }
+@@ -465,7 +581,7 @@
+ :
+ :"eax");
+
+- if (n&1 && ((unsigned long)dest & 0xf)) {
++ if (n&1) {
+ __asm__ __volatile__ (
+ " movl (%1), %%eax\n"
+ " testl $0xff000000, %%eax\n"
+@@ -489,20 +605,21 @@
+ "1:\n"
+ " addl $4, %0\n"
+ " addl $4, %1\n"
+- :"+r" (dest), "+r" (src), "+r" (n)
++ :"+r" (dest), "+r" (src)
+ :
+ :"eax");
+ }
+- end = n&1;
+ n>>=1;
+
+ if (n>0){
+ __asm__ __volatile__ ("\n"
+ "3:\n"
++#if 0
+ " movl (%1), %%eax\n"
+ " orl 4(%1), %%eax\n"
+ " testl $0xff000000, %%eax\n"
+ " jz 4f\n"
++#endif
+
+ " movq (%1), %%xmm1\n"
+ " punpcklbw %%xmm7, %%xmm1\n"
+@@ -527,35 +644,6 @@
+ :
+ :"eax");
+ }
+- if (end) {
+- __asm__ __volatile__ (
+- " movl (%1), %%eax\n"
+- " testl $0xff000000, %%eax\n"
+- " jz 1f\n"
+-
+- " movd (%1), %%xmm1\n"
+- " punpcklbw %%xmm7, %%xmm1\n"
+- " pshuflw $0xff, %%xmm1, %%xmm0\n"
+- " pxor %%xmm5, %%xmm0\n"
+-
+- " movd (%0), %%xmm3\n"
+- " punpcklbw %%xmm7, %%xmm3\n"
+- " pmullw %%xmm0, %%xmm3\n"
+- " paddw %%xmm6, %%xmm3\n"
+- " pmulhuw %%xmm4, %%xmm3\n"
+-
+- " paddw %%xmm1, %%xmm3\n"
+- " packuswb %%xmm3, %%xmm3\n"
+- " movd %%xmm3, (%0)\n"
+-
+- "1:\n"
+- " addl $4, %0\n"
+- " addl $4, %1\n"
+- :"+r" (dest), "+r" (src), "+r" (n)
+- :
+- :"eax");
+- }
+-
+ }
+ OIL_DEFINE_IMPL_FULL (composite_over_argb_sse2_2, composite_over_argb, OIL_IMPL_FLAG_SSE2);
+
================================================================
More information about the pld-cvs-commit
mailing list