diff options
author | Siarhei Siamashka <siarhei.siamashka@gmail.com> | 2014-09-22 06:30:51 +0300 |
---|---|---|
committer | Matt Turner <mattst88@gmail.com> | 2014-10-24 14:25:30 -0700 |
commit | 594e6a6c93e92fcfb495e987aec5617f6c37f467 (patch) | |
tree | 074569a348fbb2078cdb93f8d56efedec1099404 | |
parent | a8669137b9b95b5a6f78c880a51c016a1dd439b4 (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.c | 6 |
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)); |