From: Pan Li <[email protected]>

The vwaddu and vwsubu combine pattern should take plus/minus
instead of any_widen_binop.  This PATCH would like to fix it.

The below test suites are passed for this patch series.
* The rv64gcv fully regression test.

gcc/ChangeLog:

        * config/riscv/autovec-opt.md: Take concrete op instead
        of any_widen_binop for vwaddu/vwsubu wx combine.

Signed-off-by: Pan Li <[email protected]>
---
 gcc/config/riscv/autovec-opt.md | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/gcc/config/riscv/autovec-opt.md b/gcc/config/riscv/autovec-opt.md
index 3d6e0a19c8a..d2705cf0fb9 100644
--- a/gcc/config/riscv/autovec-opt.md
+++ b/gcc/config/riscv/autovec-opt.md
@@ -1913,7 +1913,7 @@ (define_insn_and_split 
"*widen_<any_widen_binop:optab>_<any_extend:su>_vx_<mode>
 
 (define_insn_and_split "*widen_waddu_wx_<mode>"
  [(set (match_operand:VWEXTI_D       0 "register_operand")
-       (any_widen_binop:VWEXTI_D
+       (plus:VWEXTI_D
         (vec_duplicate:VWEXTI_D
           (any_extend:<VEL>
             (match_operand:<VSUBEL> 2 "register_operand")))
@@ -1933,7 +1933,7 @@ (define_insn_and_split "*widen_waddu_wx_<mode>"
 
 (define_insn_and_split "*widen_wsubu_wx_<mode>"
  [(set (match_operand:VWEXTI_D       0 "register_operand")
-       (any_widen_binop:VWEXTI_D
+       (minus:VWEXTI_D
         (match_operand:VWEXTI_D     1 "register_operand")
         (vec_duplicate:VWEXTI_D
           (any_extend:<VEL>
-- 
2.43.0

Reply via email to