diff options
author | Jakub Jelinek <jakub@redhat.com> | 2012-06-25 16:52:59 +0200 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2012-06-25 16:52:59 +0200 |
commit | 85d917484f771cd78ae2089f5d901d3c86f7ff6e (patch) | |
tree | cdb8fc6de53d94f5789903886fb4bc0a2197c3ca | |
parent | 0951ac864a07e9c099b0c101f5c29cac40282fa7 (diff) | |
download | gcc-85d917484f771cd78ae2089f5d901d3c86f7ff6e.zip gcc-85d917484f771cd78ae2089f5d901d3c86f7ff6e.tar.gz gcc-85d917484f771cd78ae2089f5d901d3c86f7ff6e.tar.bz2 |
re PR target/53759 (gcc -mavx emits vshufps for __builtin_ia32_loadlps)
PR target/53759
* config/i386/sse.md (sse_loadlps): Use x m x constraints instead
of x x x in the vmovlps load alternative.
* gcc.target/i386/pr53759.c: New test.
From-SVN: r188937
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/i386/sse.md | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/pr53759.c | 17 |
4 files changed, 27 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 8ccdaf0..c8146fb 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2012-06-25 Jakub Jelinek <jakub@redhat.com> + + PR target/53759 + * config/i386/sse.md (sse_loadlps): Use x m x constraints instead + of x x x in the vmovlps load alternative. + 2012-06-25 Richard Sandiford <rdsandiford@googlemail.com> PR debug/53740 diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index 691256d..42b48bc 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -3943,7 +3943,7 @@ (define_insn "sse_loadlps" [(set (match_operand:V4SF 0 "nonimmediate_operand" "=x,x,x,x,m") (vec_concat:V4SF - (match_operand:V2SF 2 "nonimmediate_operand" " 0,x,m,x,x") + (match_operand:V2SF 2 "nonimmediate_operand" " 0,x,m,m,x") (vec_select:V2SF (match_operand:V4SF 1 "nonimmediate_operand" " x,x,0,x,0") (parallel [(const_int 2) (const_int 3)]))))] diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 82bb2d7..6fa762a 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,8 @@ 2012-06-25 Jakub Jelinek <jakub@redhat.com> + PR target/53759 + * gcc.target/i386/pr53759.c: New test. + PR c++/53594 * g++.dg/cpp0x/nsdmi7.C: New test. diff --git a/gcc/testsuite/gcc.target/i386/pr53759.c b/gcc/testsuite/gcc.target/i386/pr53759.c new file mode 100644 index 0000000..b824b98 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr53759.c @@ -0,0 +1,17 @@ +/* PR target/53759 */ +/* { dg-do compile } */ +/* { dg-options "-O2 -mavx" } */ +/* { dg-require-effective-target avx } */ + +#include <xmmintrin.h> + +void +foo (__m128 *x, __m64 *y) +{ + __m128 a = _mm_setzero_ps (); + __m128 b = _mm_loadl_pi (a, y); + *x = _mm_add_ps (b, b); +} + +/* { dg-final { scan-assembler "vmovlps\[ \\t\]" } } */ +/* { dg-final { scan-assembler-not "vshufps\[ \\t\]" } } */ |