Hi! On Tue, Jul 21, 2020 at 10:28:01AM -0700, Carl Love wrote: > [PATCH 6/6] rs6000 Add vector blend, permute builtin support
> > * config/rs6000/altivec.h (vec_blendv, vec_permx): Add define. > * config/rs6000/altivec.md (UNSPEC_XXBLEND, UNSPEC_XXPERMX.): New > unspecs. (stray dot after XXPERMX) > +(define_mode_attr VM3_char [(V2DI "d") > + (V4SI "w") > + (V8HI "h") > + (V16QI "b") > + (V2DF "d") > + (V4SF "w")]) Maybe the <wd> mode attr should handle the floating point modes as well? Hrm, that doesn't even sound too confusing? (This is for later, of course; just thinking out loud). Oh, either align all the ", or just use a single space on the last few lines as well? > + /* Reverse value of byte element indexes by XORing with 0xFF. > + Reverse the 32-byte section identifier match by subracting bits [0:2] > + of elemet from 7. */ (typo "element") > } > - else if (fcode == P10_BUILTIN_VEC_XXEVAL) > + else if ((fcode == P10_BUILTIN_VEC_XXEVAL) > + || (fcode == P10_BUILTIN_VXXPERMX)) Should be indented one char more here... But please just write else if (fcode == P10_BUILTIN_VEC_XXEVAL || fcode == P10_BUILTIN_VXXPERMX) > + case P10_BUILTIN_VXXPERMX: > + gcc_assert ((mode_ret == V2DImode) > + && (mode_arg0 == V2DImode) > + && (mode_arg1 == V2DImode) > + && (mode_arg2 == V16QImode) > + && (mode_arg3 == QImode)); Simimilarly, lose the inner parens here please? > +/* { dg-final { scan-assembler-times {\msplati\M} 6 } } */ > +/* { dg-final { scan-assembler-times {\msrdbi\M} 6 } } */ Same issue here as in 5/6. Okay for trunk with those things fixed, and the testcases tested and the expected assembler code corrected. Thanks! Segher