summaryrefslogtreecommitdiff
path: root/gcc/config/i386/i386.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/config/i386/i386.c')
-rw-r--r--gcc/config/i386/i386.c20
1 files changed, 7 insertions, 13 deletions
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index a061b2f1a6e..e7adbd539e8 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -10868,30 +10868,24 @@ standard_sse_constant_opcode (rtx_insn *insn, rtx x)
case MODE_V8DF:
case MODE_V16SF:
gcc_assert (TARGET_AVX512F);
- break;
+ return "vpternlogd\t{$0xFF, %g0, %g0, %g0|%g0, %g0, %g0, 0xFF}";
+
case MODE_OI:
case MODE_V4DF:
case MODE_V8SF:
gcc_assert (TARGET_AVX2);
- break;
+ /* FALLTHRU */
case MODE_TI:
case MODE_V2DF:
case MODE_V4SF:
gcc_assert (TARGET_SSE2);
- break;
+ return (TARGET_AVX
+ ? "vpcmpeqd\t%0, %0, %0"
+ : "pcmpeqd\t%0, %0");
+
default:
gcc_unreachable ();
}
-
- if (TARGET_AVX512VL
- || insn_mode == MODE_XI
- || insn_mode == MODE_V8DF
- || insn_mode == MODE_V16SF)
- return "vpternlogd\t{$0xFF, %g0, %g0, %g0|%g0, %g0, %g0, 0xFF}";
- else if (TARGET_AVX)
- return "vpcmpeqd\t%0, %0, %0";
- else
- return "pcmpeqd\t%0, %0";
}
gcc_unreachable ();