On Mon, Oct 11, 2021 at 07:11:13PM -0500, Segher Boessenkool wrote: > On Mon, Aug 23, 2021 at 02:03:10PM -0500, Paul A. Clarke wrote: > > Some compatibility implementations of x86 intrinsics include > > Power intrinsics which require POWER8. Guard them. > > > emmintrin.h: > > - _mm_cmpord_pd: Remove code which was ostensibly for pre-POWER8, > > but which indeed depended on POWER8 (vec_cmpgt(v2du)/vcmpgtud). > > The "POWER8" version works fine on pre-POWER8. > > Huh. It just generates xvcmpeqdp I suppose?
Yes. > > - _mm_mul_epu32: vec_mule(v4su) uses vmuleuw. > > Did this fail on p7? If not, add a test that *does*? Do you mean fail if not for "dg-require-effective-target p8vector_hw"? We have that, in gcc/testsuite/gcc.target/powerpc/sse2-pmuludq-1.c. > > pmmintrin.h: > > - _mm_movehdup_ps: vec_mergeo(v4su) uses vmrgow. > > - _mm_moveldup_ps: vec_mergee(v4su) uses vmrgew. > > Similar. gcc/testsuite/gcc.target/powerpc/sse3-movshdup.c gcc/testsuite/gcc.target/powerpc/sse3-movsldup.c > > smmintrin.h: > > - _mm_cmpeq_epi64: vec_cmpeq(v2di) uses vcmpequd. > > - _mm_mul_epi32: vec_mule(v4si) uses vmuluwm. > > - _mm_cmpgt_epi64: vec_cmpgt(v2di) uses vcmpgtsd. > > tmmintrin.h: > > - _mm_sign_epi8: vec_neg(v4si) uses vsububm. > > - _mm_sign_epi16: vec_neg(v4si) uses vsubuhm. > > - _mm_sign_epi32: vec_neg(v4si) uses vsubuwm. > > Note that the above three could actually be supported pre-POWER8, > > but current GCC does not support them before POWER8. > > - _mm_sign_pi8: depends on _mm_sign_epi8. > > - _mm_sign_pi16: depends on _mm_sign_epi16. > > - _mm_sign_pi32: depends on _mm_sign_epi32. > > And more. gcc/testsuite/gcc.target/powerpc/sse4_1-pcmpeqq.c gcc/testsuite/gcc.target/powerpc/sse4_1-pmuldq.c gcc/testsuite/gcc.target/powerpc/sse4_2-pcmpgtq.c - although this one will _actually_ fail on P7, as it only requires "vsx_hw". I'll fix this. gcc/testsuite/gcc.target/powerpc/ssse3-psignb.c gcc/testsuite/gcc.target/powerpc/ssse3-psignw.c gcc/testsuite/gcc.target/powerpc/ssse3-psignd.c > > gcc > > PR target/101893 > > This is a different bug (the vgbdd one)? PR 101893 is the same issue: things not being properly masked by #ifdefs. > All looks good, but we need such failing tests :-) Thanks for the review! Let me know what you mean by "failing tests". ("Would fail if not for ..."?) PC