Looks good to me FWIW (not a maintainer), just a minor formatting thing: Matthew Malcomson <matthew.malcom...@arm.com> writes: > diff --git a/gcc/config/aarch64/aarch64-simd.md > b/gcc/config/aarch64/aarch64-simd.md > index > aac5fa146ed8dde4507a0eb4ad6a07ce78d2f0cd..67b29cbe2cad91e031ee23be656ec61a403f2cf9 > 100644 > --- a/gcc/config/aarch64/aarch64-simd.md > +++ b/gcc/config/aarch64/aarch64-simd.md > @@ -3302,38 +3302,78 @@ > DONE; > }) > > -(define_insn "aarch64_<ANY_EXTEND:su><ADDSUB:optab>w<mode>" > +(define_insn "aarch64_<ANY_EXTEND:su>subw<mode>" > [(set (match_operand:<VWIDE> 0 "register_operand" "=w") > - (ADDSUB:<VWIDE> (match_operand:<VWIDE> 1 "register_operand" "w") > - (ANY_EXTEND:<VWIDE> > - (match_operand:VD_BHSI 2 "register_operand" "w"))))] > + (minus:<VWIDE> > + (match_operand:<VWIDE> 1 "register_operand" "w") > + (ANY_EXTEND:<VWIDE> > + (match_operand:VD_BHSI 2 "register_operand" "w"))))]
The (minus should be under the "(match_operand": (define_insn "aarch64_<ANY_EXTEND:su>subw<mode>" [(set (match_operand:<VWIDE> 0 "register_operand" "=w") (minus:<VWIDE> (match_operand:<VWIDE> 1 "register_operand" "w") (ANY_EXTEND:<VWIDE> (match_operand:VD_BHSI 2 "register_operand" "w"))))] Same for the other patterns. Thanks, Richard