Hi again,

On Tue, Sep 11, 2018 at 10:04:45AM -0500, Will Schmidt wrote:
> On Fri, 2018-09-07 at 16:54 -0500, Segher Boessenkool wrote: 
> > On Fri, Sep 07, 2018 at 04:27:34PM -0500, Will Schmidt wrote:
> > > -/* { dg-final { scan-assembler-times "lvx" 4 } } */
> > > -/* { dg-final { scan-assembler-times "stvx"  4 } } */
> > > -/* { dg-final { scan-assembler-times "xxpermdi" 0 } } */
> > > +/* { dg-final { scan-assembler-times {\mlvx\M|\mlxvd2x\M} 4 } } */
> > > +/* { dg-final { scan-assembler-times {\mstvx\M|\mstxvd2x\M}  4 } } */
> > 
> > So you get xxpermdi when {l,st}xvd2x is generated?  What platform is that
> > on?  Is that the correct code to generate, or is this a regression?  Is
> > this the difference between LE and BE code generation?  So many questions,
> > I am sorry :-)
> 
> Hi, 
> No prob, thanks for the question.  :-) 
> 
> The -v2 test is new-ish, I added it when the gimple-folding for the
> vec_xst,vec_xl intrinsics went in since i was seeing some codegen
> variations at the time.  The check for the lvx,stvx instructions is
> valid IF the test is built for a power9 target.  The test actually
> specifies -mcpu=power8 in it's options, so it needs to handle the lxvd2x
> +xxpermdi and xxpermdi+stxvd2 instruction pairs as appropriate for that
> processor.

lvx is the old AltiVec instruction, that uses  (A+B)&-16  as address
for  lvx D,A,B .  The instruction new on power9 is lxv, which does
reg+imm (instead of reg+reg) addressing.

Maybe the expected result should be separated between BE and LE, or
similar.


Segher

Reply via email to