v3: Add "nmmintrin.h". _mm_cmpgt_epi64 is part of SSE4.2 and users will expect to be able to include "nmmintrin.h", even though "nmmintrin.h" just includes "smmintrin.h" where all of the SSE4.2 implementations actually appear.
Only patch 5/6 changed from v2. Tested ppc64le (POWER9) and ppc64/32 (POWER7). OK for trunk? Paul A. Clarke (6): rs6000: Support SSE4.1 "round" intrinsics rs6000: Support SSE4.1 "min" and "max" intrinsics rs6000: Simplify some SSE4.1 "test" intrinsics rs6000: Support SSE4.1 "cvt" intrinsics rs6000: Support more SSE4 "cmp", "mul", "pack" intrinsics rs6000: Guard some x86 intrinsics implementations gcc/config/rs6000/emmintrin.h | 12 +- gcc/config/rs6000/nmmintrin.h | 40 ++ gcc/config/rs6000/pmmintrin.h | 4 + gcc/config/rs6000/smmintrin.h | 427 ++++++++++++++++-- gcc/config/rs6000/tmmintrin.h | 12 + gcc/testsuite/gcc.target/powerpc/pr78102.c | 23 + .../gcc.target/powerpc/sse4_1-packusdw.c | 73 +++ .../gcc.target/powerpc/sse4_1-pcmpeqq.c | 46 ++ .../gcc.target/powerpc/sse4_1-pmaxsb.c | 46 ++ .../gcc.target/powerpc/sse4_1-pmaxsd.c | 46 ++ .../gcc.target/powerpc/sse4_1-pmaxud.c | 47 ++ .../gcc.target/powerpc/sse4_1-pmaxuw.c | 47 ++ .../gcc.target/powerpc/sse4_1-pminsb.c | 46 ++ .../gcc.target/powerpc/sse4_1-pminsd.c | 46 ++ .../gcc.target/powerpc/sse4_1-pminud.c | 47 ++ .../gcc.target/powerpc/sse4_1-pminuw.c | 47 ++ .../gcc.target/powerpc/sse4_1-pmovsxbd.c | 42 ++ .../gcc.target/powerpc/sse4_1-pmovsxbq.c | 42 ++ .../gcc.target/powerpc/sse4_1-pmovsxbw.c | 42 ++ .../gcc.target/powerpc/sse4_1-pmovsxdq.c | 42 ++ .../gcc.target/powerpc/sse4_1-pmovsxwd.c | 42 ++ .../gcc.target/powerpc/sse4_1-pmovsxwq.c | 42 ++ .../gcc.target/powerpc/sse4_1-pmovzxbd.c | 43 ++ .../gcc.target/powerpc/sse4_1-pmovzxbq.c | 43 ++ .../gcc.target/powerpc/sse4_1-pmovzxbw.c | 43 ++ .../gcc.target/powerpc/sse4_1-pmovzxdq.c | 43 ++ .../gcc.target/powerpc/sse4_1-pmovzxwd.c | 43 ++ .../gcc.target/powerpc/sse4_1-pmovzxwq.c | 43 ++ .../gcc.target/powerpc/sse4_1-pmuldq.c | 51 +++ .../gcc.target/powerpc/sse4_1-pmulld.c | 46 ++ .../gcc.target/powerpc/sse4_1-round3.h | 81 ++++ .../gcc.target/powerpc/sse4_1-roundpd.c | 143 ++++++ .../gcc.target/powerpc/sse4_1-roundps.c | 98 ++++ .../gcc.target/powerpc/sse4_1-roundsd.c | 256 +++++++++++ .../gcc.target/powerpc/sse4_1-roundss.c | 208 +++++++++ .../gcc.target/powerpc/sse4_2-check.h | 18 + .../gcc.target/powerpc/sse4_2-pcmpgtq.c | 46 ++ 37 files changed, 2407 insertions(+), 59 deletions(-) create mode 100644 gcc/config/rs6000/nmmintrin.h create mode 100644 gcc/testsuite/gcc.target/powerpc/pr78102.c create mode 100644 gcc/testsuite/gcc.target/powerpc/sse4_1-packusdw.c create mode 100644 gcc/testsuite/gcc.target/powerpc/sse4_1-pcmpeqq.c create mode 100644 gcc/testsuite/gcc.target/powerpc/sse4_1-pmaxsb.c create mode 100644 gcc/testsuite/gcc.target/powerpc/sse4_1-pmaxsd.c create mode 100644 gcc/testsuite/gcc.target/powerpc/sse4_1-pmaxud.c create mode 100644 gcc/testsuite/gcc.target/powerpc/sse4_1-pmaxuw.c create mode 100644 gcc/testsuite/gcc.target/powerpc/sse4_1-pminsb.c create mode 100644 gcc/testsuite/gcc.target/powerpc/sse4_1-pminsd.c create mode 100644 gcc/testsuite/gcc.target/powerpc/sse4_1-pminud.c create mode 100644 gcc/testsuite/gcc.target/powerpc/sse4_1-pminuw.c create mode 100644 gcc/testsuite/gcc.target/powerpc/sse4_1-pmovsxbd.c create mode 100644 gcc/testsuite/gcc.target/powerpc/sse4_1-pmovsxbq.c create mode 100644 gcc/testsuite/gcc.target/powerpc/sse4_1-pmovsxbw.c create mode 100644 gcc/testsuite/gcc.target/powerpc/sse4_1-pmovsxdq.c create mode 100644 gcc/testsuite/gcc.target/powerpc/sse4_1-pmovsxwd.c create mode 100644 gcc/testsuite/gcc.target/powerpc/sse4_1-pmovsxwq.c create mode 100644 gcc/testsuite/gcc.target/powerpc/sse4_1-pmovzxbd.c create mode 100644 gcc/testsuite/gcc.target/powerpc/sse4_1-pmovzxbq.c create mode 100644 gcc/testsuite/gcc.target/powerpc/sse4_1-pmovzxbw.c create mode 100644 gcc/testsuite/gcc.target/powerpc/sse4_1-pmovzxdq.c create mode 100644 gcc/testsuite/gcc.target/powerpc/sse4_1-pmovzxwd.c create mode 100644 gcc/testsuite/gcc.target/powerpc/sse4_1-pmovzxwq.c create mode 100644 gcc/testsuite/gcc.target/powerpc/sse4_1-pmuldq.c create mode 100644 gcc/testsuite/gcc.target/powerpc/sse4_1-pmulld.c create mode 100644 gcc/testsuite/gcc.target/powerpc/sse4_1-round3.h create mode 100644 gcc/testsuite/gcc.target/powerpc/sse4_1-roundpd.c create mode 100644 gcc/testsuite/gcc.target/powerpc/sse4_1-roundps.c create mode 100644 gcc/testsuite/gcc.target/powerpc/sse4_1-roundsd.c create mode 100644 gcc/testsuite/gcc.target/powerpc/sse4_1-roundss.c create mode 100644 gcc/testsuite/gcc.target/powerpc/sse4_2-check.h create mode 100644 gcc/testsuite/gcc.target/powerpc/sse4_2-pcmpgtq.c -- 2.27.0