diff options
author | Jakub Jelinek <jakub@redhat.com> | 2018-02-13 09:31:58 +0100 |
---|---|---|
committer | Jakub Jelinek <jakub@gcc.gnu.org> | 2018-02-13 09:31:58 +0100 |
commit | f4b29321048fa82c754f04814dbd46d92773e72a (patch) | |
tree | 1d7ccc86cd75afba3b61a57517cd4537d273af90 /gcc | |
parent | 7b47686da37d266cfcc5f45cd44222737c12390a (diff) | |
download | gcc-f4b29321048fa82c754f04814dbd46d92773e72a.zip gcc-f4b29321048fa82c754f04814dbd46d92773e72a.tar.gz gcc-f4b29321048fa82c754f04814dbd46d92773e72a.tar.bz2 |
re PR target/84336 (ICE in extract_insn, at recog.c:2304)
PR target/84336
* config/i386/sse.md (<avx512>_vpermi2var<mode>3_mask): Force
operands[2] into a REG before using gen_lowpart on it.
* gcc.target/i386/pr84336.c: New test.
From-SVN: r257616
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/config/i386/sse.md | 5 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/gcc.target/i386/pr84336.c | 13 |
4 files changed, 28 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index a74c861..5ca6058 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2018-02-13 Jakub Jelinek <jakub@redhat.com> + + PR target/84336 + * config/i386/sse.md (<avx512>_vpermi2var<mode>3_mask): Force + operands[2] into a REG before using gen_lowpart on it. + 2018-02-12 Jeff Law <law@redhat.com> PR target/83760 diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index da9af23..26c4f52 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -18183,7 +18183,10 @@ (match_dup 5) (match_operand:<avx512fmaskmode> 4 "register_operand")))] "TARGET_AVX512F" - "operands[5] = gen_lowpart (<MODE>mode, operands[2]);") +{ + operands[2] = force_reg (<sseintvecmode>mode, operands[2]); + operands[5] = gen_lowpart (<MODE>mode, operands[2]); +}) (define_insn "*<avx512>_vpermi2var<mode>3_mask" [(set (match_operand:VPERMI2I 0 "register_operand" "=v") diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 4026175..c1926e7 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2018-02-13 Jakub Jelinek <jakub@redhat.com> + + PR target/84336 + * gcc.target/i386/pr84336.c: New test. + 2018-02-12 Jakub Jelinek <jakub@redhat.com> PR c++/84341 diff --git a/gcc/testsuite/gcc.target/i386/pr84336.c b/gcc/testsuite/gcc.target/i386/pr84336.c new file mode 100644 index 0000000..3218116 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/pr84336.c @@ -0,0 +1,13 @@ +/* PR target/84336 */ +/* { dg-do compile } */ +/* { dg-options "-O0 -ftree-ter -mavx512f" } */ + +#include <x86intrin.h> + +struct S { __m512i h; } b; + +__m512 +foo (__m512 a, __mmask16 c, __m512 d) +{ + return _mm512_mask2_permutex2var_ps (a, b.h, c, d); +} |