aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorSergey Shalnov <Sergey.Shalnov@intel.com>2017-12-01 06:22:06 +0000
committerKirill Yukhin <kyukhin@gcc.gnu.org>2017-12-01 06:22:06 +0000
commit1d1e69e934d629a1cf0cfa728cd13bd9a43b7ffe (patch)
tree9f9df5d8002f2972f96f3881361f5293efcbabc0 /gcc
parentb7f47ecdde00d836765f15c0c5dbec927e8933c9 (diff)
downloadgcc-1d1e69e934d629a1cf0cfa728cd13bd9a43b7ffe.zip
gcc-1d1e69e934d629a1cf0cfa728cd13bd9a43b7ffe.tar.gz
gcc-1d1e69e934d629a1cf0cfa728cd13bd9a43b7ffe.tar.bz2
Fix wrong instruction vpcmpeqd generation
gcc/ * config/i386/i386.c (standard_sse_constant_opcode): Fix wrong form for vpcmpeqd instruction. From-SVN: r255291
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/config/i386/i386.c8
2 files changed, 10 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index bfa6016..8e7e844 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,10 @@
2017-12-01 Sergey Shalnov <Sergey.Shalnov@intel.com>
+ * config/i386/i386.c (standard_sse_constant_opcode): Fix wrong form for
+ vpcmpeqd instruction.
+
+2017-12-01 Sergey Shalnov <Sergey.Shalnov@intel.com>
+
* config/i386/i386.c (standard_sse_constant_opcode): Fix
registers type for 128bit mode.
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index 2f4ca7c..145b1c6 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -10449,9 +10449,11 @@ standard_sse_constant_opcode (rtx_insn *insn, rtx x)
case MODE_V2DF:
case MODE_V4SF:
gcc_assert (TARGET_SSE2);
- return (TARGET_AVX
- ? "vpcmpeqd\t%0, %0, %0"
- : "pcmpeqd\t%0, %0");
+ return (TARGET_AVX512F
+ ? "vpternlogd\t{$0xFF, %0, %0, %0|%0, %0, %0, 0xFF}"
+ : TARGET_AVX
+ ? "vpcmpeqd\t%0, %0, %0"
+ : "pcmpeqd\t%0, %0");
default:
gcc_unreachable ();