aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorH.J. Lu <hjl.tools@gmail.com>2020-07-09 14:56:48 -0700
committerGiuliano Belinassi <giuliano.belinassi@usp.br>2020-08-17 13:17:15 -0300
commit515fc8e5e768b4e9fec4d54f4f405484d9cab1b1 (patch)
treef2b4a28f5fba6356cee702b51b81aa8710659fc2 /gcc
parent6d13965453f3a76fe796875867dd176311a10e1f (diff)
downloadgcc-515fc8e5e768b4e9fec4d54f4f405484d9cab1b1.zip
gcc-515fc8e5e768b4e9fec4d54f4f405484d9cab1b1.tar.gz
gcc-515fc8e5e768b4e9fec4d54f4f405484d9cab1b1.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.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/config/i386/i386-expand.c5
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