From 3b1778b7c3ccec3d672824d185b8994e7fd023d0 Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Fri, 19 Oct 2018 08:56:37 +0000 Subject: [PATCH] i386: Use register_operand in AVX512 FMA with memory broadcast Use "register_operand" in AVX512 FMA with memory broadcast when only registers are allowed. * config/i386/sse.md (*fma_fmadd__bcst_1): Replace nonimmediate_operand with register_operand. (*fma_fmadd__bcst_2): Likewise. (*fma_fmadd__bcst_3): Likewise. From-SVN: r265310 --- gcc/ChangeLog | 10 ++++++++++ gcc/config/i386/sse.md | 12 ++++++------ 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 1b91d7d42a0..ee08f80154c 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,13 @@ +2018-10-19 H.J. Lu + + * config/i386/sse.md + (*fma_fmadd__bcst_1): + Replace nonimmediate_operand with register_operand. + (*fma_fmadd__bcst_2): + Likewise. + (*fma_fmadd__bcst_3): + Likewise. + 2018-10-19 Ilya Leoshkevich PR rtl-optimization/87596 diff --git a/gcc/config/i386/sse.md b/gcc/config/i386/sse.md index 71684d63423..06144dc4662 100644 --- a/gcc/config/i386/sse.md +++ b/gcc/config/i386/sse.md @@ -3749,8 +3749,8 @@ (define_insn "*fma_fmadd__bcst_1" [(set (match_operand:VF_AVX512 0 "register_operand" "=v,v") (fma:VF_AVX512 - (match_operand:VF_AVX512 1 "nonimmediate_operand" "0,v") - (match_operand:VF_AVX512 2 "nonimmediate_operand" "v,0") + (match_operand:VF_AVX512 1 "register_operand" "0,v") + (match_operand:VF_AVX512 2 "register_operand" "v,0") (vec_duplicate:VF_AVX512 (match_operand: 3 "memory_operand" "m,m"))))] "TARGET_AVX512F && " @@ -3763,8 +3763,8 @@ (fma:VF_AVX512 (vec_duplicate:VF_AVX512 (match_operand: 1 "memory_operand" "m,m")) - (match_operand:VF_AVX512 2 "nonimmediate_operand" "0,v") - (match_operand:VF_AVX512 3 "nonimmediate_operand" "v,0")))] + (match_operand:VF_AVX512 2 "register_operand" "0,v") + (match_operand:VF_AVX512 3 "register_operand" "v,0")))] "TARGET_AVX512F && " "@ vfmadd132\t{%1, %3, %0|%0, %3, %1} @@ -3775,10 +3775,10 @@ (define_insn "*fma_fmadd__bcst_3" [(set (match_operand:VF_AVX512 0 "register_operand" "=v,v") (fma:VF_AVX512 - (match_operand:VF_AVX512 1 "nonimmediate_operand" "0,v") + (match_operand:VF_AVX512 1 "register_operand" "0,v") (vec_duplicate:VF_AVX512 (match_operand: 2 "memory_operand" "m,m")) - (match_operand:VF_AVX512 3 "nonimmediate_operand" "v,0")))] + (match_operand:VF_AVX512 3 "register_operand" "v,0")))] "TARGET_AVX512F && " "@ vfmadd132\t{%2, %3, %0|%0, %3, %2} -- 2.30.2