On Fri, Jul 10, 2020 at 4:19 AM Jakub Jelinek <ja...@redhat.com> wrote: > > On Thu, Jul 09, 2020 at 03:02:35PM -0700, H.J. Lu via Gcc-patches wrote: > --- a/gcc/config/i386/i386-expand.c > +++ b/gcc/config/i386/i386-expand.c > @@ -15540,7 +15540,11 @@ 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, > > Why the empty line in there? > Ok for trunk with that fixed. > > gen_rtx_FMA (mode, e0, x0, mthree))); > else
This is the patch I am checking in. Thanks. -- H.J.
From 2bcd21b9142cdf75fc166a73206518b8754f5b6a Mon Sep 17 00:00:00 2001 From: "H.J. Lu" <hjl.to...@gmail.com> Date: Thu, 9 Jul 2020 14:56:48 -0700 Subject: [PATCH] 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. --- gcc/config/i386/i386-expand.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/gcc/config/i386/i386-expand.c b/gcc/config/i386/i386-expand.c index 49718b7a41c..e194214804b 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 -- 2.26.2