On Wed, 2017-10-25 at 18:37 -0500, Segher Boessenkool wrote: > Hi! > > On Tue, Oct 17, 2017 at 01:27:16PM -0500, Steven Munroe wrote: > > This it part 2/2 for contributing PPC64LE support for X86 SSE2 > > instrisics. This patch includes testsuite/gcc.target tests for the > > intrinsics included by emmintrin.h. > > > --- gcc/testsuite/gcc.target/powerpc/sse2-mmx.c (revision 0) > > +++ gcc/testsuite/gcc.target/powerpc/sse2-mmx.c (revision 0) > > @@ -0,0 +1,83 @@ > > +/* { dg-do run } */ > > +/* { dg-options "-O3 -mdirect-move" } */ > > +/* { dg-require-effective-target lp64 } */ > > +/* { dg-require-effective-target p8vector_hw } */ > > +/* { dg-skip-if "do not override -mcpu" { powerpc*-*-* } { "-mcpu=*" } { > > "-mcpu=power8" } } */ > > Why this dg-skip-if? Also, why -mdirect-move? > this is weird test because it the effectively MMX style operations but added to IA under the SSE2 Technology.
Normally mmintrin.h compare operations require a transfer to/from vector with direct move for efficient execution on power. The one exception to that is _mm_cmpeq_pi8 which can be implemented directly in GPRs using cmpb. The cmpb instruction is from power6 but I do not want to use -mcpu=power6 here. -mdirect-move is a compromise. I suspect that the dg-skip-if is an artifact of the early struggles to make this stuff work across various --withcpu= settings. I think the key is dg-require-effective-target p8vector_hw which should allow dropping both the -mdirect-move and the whole dg-skip-if clause. Will need to try this change and retest. > > Okay for trunk with that taken care of. Sorry it took a while. > > Have you tested this on big endian btw? > Yes. I have tested on P8 BE using --withcpu=[power6 | power7 | power8 ] > > Segher >