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