On Tue, Jul 23, 2024 at 04:26:43PM -0500, Peter Bergner wrote: > On 7/19/24 3:04 PM, Carl Love wrote: > > diff --git a/gcc/config/rs6000/altivec.md b/gcc/config/rs6000/altivec.md > > index 5af9bf920a2..2a18ee44526 100644 > > --- a/gcc/config/rs6000/altivec.md > > +++ b/gcc/config/rs6000/altivec.md > > @@ -878,9 +878,9 @@ (define_int_attr SLDB_lr [(UNSPEC_SLDB "l") > > (define_int_iterator VSHIFT_DBL_LR [UNSPEC_SLDB UNSPEC_SRDB]) > > > > (define_insn "vs<SLDB_lr>db_<mode>" > > - [(set (match_operand:VI2 0 "register_operand" "=v") > > - (unspec:VI2 [(match_operand:VI2 1 "register_operand" "v") > > - (match_operand:VI2 2 "register_operand" "v") > > + [(set (match_operand:VEC_IC 0 "register_operand" "=v") > > + (unspec:VEC_IC [(match_operand:VEC_IC 1 "register_operand" "v") > > + (match_operand:VEC_IC 2 "register_operand" "v") > > (match_operand:QI 3 "const_0_to_12_operand" "n")] > > VSHIFT_DBL_LR))] > > "TARGET_POWER10" > > I know the old code used the register_operand predicate for the vector > operands, but those really should be changed to altivec_register_operand.
register_operand is just fine usually. The "v" constraint already makes sure things end up in a VMX (a lower VSX) register, the predicate doesn't help here. register_operand is shorter (and thus, preferred), and also more likely correct if the code changes later :-) Segher