diff options
author | Jakub Jelinek <jakub@redhat.com> | 2014-01-16 20:24:07 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2014-01-16 20:24:07 +0100 |
commit | a611d7cb08d5b44fd0f2f8118f8083263a6a06df (patch) | |
tree | 55eea340d0568b1c6e05681399862e077b21fe12 /gcc | |
parent | 2af4ea89e5630063b961c4d026412bb7d5aa8832 (diff) | |
download | gcc-a611d7cb08d5b44fd0f2f8118f8083263a6a06df.zip gcc-a611d7cb08d5b44fd0f2f8118f8083263a6a06df.tar.gz gcc-a611d7cb08d5b44fd0f2f8118f8083263a6a06df.tar.bz2 |
re PR target/59839 (i686 AVX2 gather intrinsic not compiling with -O0 on mingw w64)
PR target/59839
* config/i386/i386.c (ix86_expand_builtin): If target doesn't
satisfy operand 0 predicate for gathers, use a new pseudo as
subtarget.
* gcc.target/i386/pr59839.c: New test.
From-SVN: r206682
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/config/i386/i386.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 3 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/pr59839.c | 12 |
4 files changed, 25 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index ca1f85c..098e0c1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +2014-01-16 Jakub Jelinek <jakub@redhat.com> + + PR target/59839 + * config/i386/i386.c (ix86_expand_builtin): If target doesn't + satisfy operand 0 predicate for gathers, use a new pseudo as + subtarget. + 2014-01-16 Vladimir Makarov <vmakarov@redhat.com> PR middle-end/59609 diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c index 73c5a86..df408ae 100644 --- a/gcc/config/i386/i386.c +++ b/gcc/config/i386/i386.c @@ -35511,7 +35511,9 @@ addcarryx: mode4 = insn_data[icode].operand[5].mode; if (target == NULL_RTX - || GET_MODE (target) != insn_data[icode].operand[0].mode) + || GET_MODE (target) != insn_data[icode].operand[0].mode + || !insn_data[icode].operand[0].predicate (target, + GET_MODE (target))) subtarget = gen_reg_rtx (insn_data[icode].operand[0].mode); else subtarget = target; diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index b874c57..6482650 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,5 +1,8 @@ 2014-01-16 Jakub Jelinek <jakub@redhat.com> + PR target/59839 + * gcc.target/i386/pr59839.c: New test. + PR debug/54694 * gcc.target/i386/pr9771-1.c (main): Rename to... (real_main): ... this. Add __asm name "main". diff --git a/gcc/testsuite/gcc.target/i386/pr59839.c b/gcc/testsuite/gcc.target/i386/pr59839.c new file mode 100644 index 0000000..dfb8945 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr59839.c @@ -0,0 +1,12 @@ +/* PR target/59839 */ +/* { dg-do compile } */ +/* { dg-options "-O0 -mavx2" } */ + +#include <x86intrin.h> + +void +test (const float *x) +{ + __m256i i = _mm256_set1_epi32 (1); + __m256 d = _mm256_i32gather_ps (x, i, 1); +} |