diff options
author | H.J. Lu <hjl.tools@gmail.com> | 2020-07-09 14:56:48 -0700 |
---|---|---|
committer | H.J. Lu <hjl.tools@gmail.com> | 2020-07-10 04:32:34 -0700 |
commit | a6645a826f58b68f68dff30e6e6e78542099d0cc (patch) | |
tree | 9b9fb089c59de5275362f68b1536102bb8a6f0d3 | |
parent | d2ed233cb940aa3eecc163d98b47979dd81dbc0a (diff) | |
download | gcc-a6645a826f58b68f68dff30e6e6e78542099d0cc.zip gcc-a6645a826f58b68f68dff30e6e6e78542099d0cc.tar.gz gcc-a6645a826f58b68f68dff30e6e6e78542099d0cc.tar.bz2 |
x86: Check TARGET_AVX512VL when enabling FMA
Check TARGET_AVX512VL when enabling FMA to avoid
gcc.target/i386/avx512er-vrsqrt28ps-3.c:25:1: error: unrecognizable insn:
(insn 29 28 30 6 (set (reg:V8SF 108)
(fma:V8SF (reg:V8SF 106)
(reg:V8SF 105)
(reg:V8SF 110)))
when TARGET_AVX512VL isn't enabled.
PR target/96144
* config/i386/i386-expand.c (ix86_emit_swsqrtsf): Check
TARGET_AVX512VL when enabling FMA.
-rw-r--r-- | gcc/config/i386/i386-expand.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/config/i386/i386-expand.c b/gcc/config/i386/i386-expand.c index 49718b7..e194214 100644 --- a/gcc/config/i386/i386-expand.c +++ b/gcc/config/i386/i386-expand.c @@ -15540,7 +15540,10 @@ void ix86_emit_swsqrtsf (rtx res, rtx a, machine_mode mode, bool recip) /* e0 = x0 * a */ emit_insn (gen_rtx_SET (e0, gen_rtx_MULT (mode, x0, a))); - if (TARGET_FMA || TARGET_AVX512F) + unsigned vector_size = GET_MODE_SIZE (mode); + if (TARGET_FMA + || (TARGET_AVX512F && vector_size == 64) + || (TARGET_AVX512VL && (vector_size == 32 || vector_size == 16))) emit_insn (gen_rtx_SET (e2, gen_rtx_FMA (mode, e0, x0, mthree))); else |