summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSiarhei Siamashka <siarhei.siamashka@gmail.com>2014-09-22 06:30:51 +0300
committerMatt Turner <mattst88@gmail.com>2014-10-24 14:25:30 -0700
commit594e6a6c93e92fcfb495e987aec5617f6c37f467 (patch)
tree074569a348fbb2078cdb93f8d56efedec1099404
parenta8669137b9b95b5a6f78c880a51c016a1dd439b4 (diff)
mmx: Fix _mm_empty problems for over_8888_8888/over_8888_n_8888
Using "--disable-sse2 --disable-ssse3" configure options and CFLAGS="-m32 -O2 -g" on an x86 system results in pixman "make check" failures: ../test-driver: line 95: 29874 Aborted FAIL: affine-test ../test-driver: line 95: 29887 Aborted FAIL: scaling-test One _mm_empty () was missing and another one is needed to workaround an old GCC bug https://gcc.gnu.org/PR47759 (GCC may move MMX instructions around and cause test suite failures). Reviewed-by: Matt Turner <mattst88@gmail.com>
-rw-r--r--pixman/pixman-mmx.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/pixman/pixman-mmx.c b/pixman/pixman-mmx.c
index c7fd503..42826d9 100644
--- a/pixman/pixman-mmx.c
+++ b/pixman/pixman-mmx.c
@@ -3580,6 +3580,8 @@ scaled_nearest_scanline_mmx_8888_8888_OVER (uint32_t* pd,
w--;
}
+
+ _mm_empty ();
}
FAST_NEAREST_MAINLOOP (mmx_8888_8888_cover_OVER,
@@ -3608,7 +3610,11 @@ scaled_nearest_scanline_mmx_8888_n_8888_OVER (const uint32_t * mask,
__m64 mm_mask;
if (zero_src || (*mask >> 24) == 0)
+ {
+ /* A workaround for https://gcc.gnu.org/PR47759 */
+ _mm_empty ();
return;
+ }
mm_mask = expand_alpha (load8888 (mask));