aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJakub Jelinek <jakub@redhat.com>2018-02-13 09:31:58 +0100
committerJakub Jelinek <jakub@gcc.gnu.org>2018-02-13 09:31:58 +0100
commitf4b29321048fa82c754f04814dbd46d92773e72a (patch)
tree1d7ccc86cd75afba3b61a57517cd4537d273af90 /gcc
parent7b47686da37d266cfcc5f45cd44222737c12390a (diff)
downloadgcc-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/ChangeLog6
-rw-r--r--gcc/config/i386/sse.md5
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/gcc.target/i386/pr84336.c13
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);
+}