> > +(define_insn "aarch64_<su>abdl<mode>_hi_internal"
> > +  [(set (match_operand:<VWIDE> 0 "register_operand" "=w")
> > +   (minus:<VWIDE>
> > +     (USMAX:<VWIDE>
> > +       (<USMAX_EXT>:<VWIDE>
> > +         (vec_select:<VHALF>
> > +           (match_operand:VQW 1 "register_operand" "w")
> > +           (match_operand:VQW 3 "vect_par_cnst_hi_half" "")))
> > +       (<USMAX_EXT>:<VWIDE>
> > +         (vec_select:<VHALF>
> > +           (match_operand:VQW 2 "register_operand" "w")
> > +           (match_dup 3))))
> > +     (<max_opp>:<VWIDE>
> > +       (<USMAX_EXT>:<VWIDE>
> > +         (vec_select:<VHALF> (match_dup 1) (match_dup 3)))
> > +       (<USMAX_EXT>:<VWIDE>
> > +         (vec_select:<VHALF> (match_dup 2) (match_dup 3))))))]
> > +  "TARGET_SIMD"
> > +  "<su>abdl2\t%0.<Vwtype>, %1.<Vtype>, %2.<Vtype>"
> > +  [(set_attr "type" "neon_abd_long")]
> > +)
> 
> We don't need the (minus (max…) (min…)) thing when widening is
> involved.  It should be enough to do something like:
> 
>   (abs:<VWIDE>
>     (minus:<VWIDE>
>       (ANY_EXTEND:<VWIDE>
>       (vec_select:…))
>       (ANY_EXTEND:<VWIDE>
>       (vec_select:…))))

Change made.

> Sorry to be awkward, but could you put the widening cases in a separate
> file?  It's not very easy as things stand to work out which tests are
> matched against widening ops and which aren't.

Done.

Patch in next email.

Reply via email to