Bug 84266 - mmintrin.h intrinsic headers for PowerPC code fails on power9
Summary: mmintrin.h intrinsic headers for PowerPC code fails on power9
Status: RESOLVED FIXED
Alias: None
Product: gcc
Classification: Unclassified
Component: target (show other bugs)
Version: 8.0.1
: P3 normal
Target Milestone: ---
Assignee: Steven Munroe
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2018-02-07 15:44 UTC by Bill Seurer
Modified: 2018-07-15 18:04 UTC (History)
2 users (show)

See Also:
Host:
Target: powerpc
Build:
Known to work:
Known to fail:
Last reconfirmed: 2018-02-08 00:00:00


Attachments
correct mmintrin.h for power9 (265 bytes, patch)
2018-02-09 18:34 UTC, Steven Munroe
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Bill Seurer 2018-02-07 15:44:02 UTC
(more details coming)

This is the complete list of failures:

FAIL: gcc.target/powerpc/bmi-andn-1.c (test for excess errors)
FAIL: gcc.target/powerpc/bmi-andn-2.c (test for excess errors)
FAIL: gcc.target/powerpc/bmi-bextr-1.c (test for excess errors)
FAIL: gcc.target/powerpc/bmi-bextr-2.c (test for excess errors)
FAIL: gcc.target/powerpc/bmi-bextr-4.c (test for excess errors)
FAIL: gcc.target/powerpc/bmi-bextr-5.c (test for excess errors)
FAIL: gcc.target/powerpc/bmi-blsi-1.c (test for excess errors)
FAIL: gcc.target/powerpc/bmi-blsi-2.c (test for excess errors)
FAIL: gcc.target/powerpc/bmi-blsmsk-1.c (test for excess errors)
FAIL: gcc.target/powerpc/bmi-blsmsk-2.c (test for excess errors)
FAIL: gcc.target/powerpc/bmi-blsr-1.c (test for excess errors)
FAIL: gcc.target/powerpc/bmi-blsr-2.c (test for excess errors)
FAIL: gcc.target/powerpc/bmi-tzcnt-1.c (test for excess errors)
FAIL: gcc.target/powerpc/bmi-tzcnt-2.c (test for excess errors)
FAIL: gcc.target/powerpc/bmi2-bzhi32-1.c (test for excess errors)
FAIL: gcc.target/powerpc/bmi2-bzhi64-1.c (test for excess errors)
FAIL: gcc.target/powerpc/bmi2-bzhi64-1a.c (test for excess errors)
FAIL: gcc.target/powerpc/bmi2-mulx32-2.c (test for excess errors)
FAIL: gcc.target/powerpc/bmi2-mulx64-2.c (test for excess errors)
times)
FAIL: gcc.target/powerpc/mmx-packs.c (test for excess errors)
FAIL: gcc.target/powerpc/mmx-packssdw-1.c (test for excess errors)
FAIL: gcc.target/powerpc/mmx-packsswb-1.c (test for excess errors)
FAIL: gcc.target/powerpc/mmx-packuswb-1.c (test for excess errors)
FAIL: gcc.target/powerpc/mmx-paddb-1.c (test for excess errors)
FAIL: gcc.target/powerpc/mmx-paddd-1.c (test for excess errors)
FAIL: gcc.target/powerpc/mmx-paddsb-1.c (test for excess errors)
FAIL: gcc.target/powerpc/mmx-paddsw-1.c (test for excess errors)
FAIL: gcc.target/powerpc/mmx-paddusb-1.c (test for excess errors)
FAIL: gcc.target/powerpc/mmx-paddusw-1.c (test for excess errors)
FAIL: gcc.target/powerpc/mmx-paddw-1.c (test for excess errors)
FAIL: gcc.target/powerpc/mmx-pcmpeqb-1.c (test for excess errors)
FAIL: gcc.target/powerpc/mmx-pcmpeqd-1.c (test for excess errors)
FAIL: gcc.target/powerpc/mmx-pcmpeqw-1.c (test for excess errors)
FAIL: gcc.target/powerpc/mmx-pcmpgtb-1.c (test for excess errors)
FAIL: gcc.target/powerpc/mmx-pcmpgtd-1.c (test for excess errors)
FAIL: gcc.target/powerpc/mmx-pcmpgtw-1.c (test for excess errors)
FAIL: gcc.target/powerpc/mmx-pmaddwd-1.c (test for excess errors)
FAIL: gcc.target/powerpc/mmx-pmulhw-1.c (test for excess errors)
FAIL: gcc.target/powerpc/mmx-pmullw-1.c (test for excess errors)
FAIL: gcc.target/powerpc/mmx-pslld-1.c (test for excess errors)
FAIL: gcc.target/powerpc/mmx-psllw-1.c (test for excess errors)
FAIL: gcc.target/powerpc/mmx-psrad-1.c (test for excess errors)
FAIL: gcc.target/powerpc/mmx-psraw-1.c (test for excess errors)
FAIL: gcc.target/powerpc/mmx-psrld-1.c (test for excess errors)
FAIL: gcc.target/powerpc/mmx-psrlw-1.c (test for excess errors)
FAIL: gcc.target/powerpc/mmx-psubb-2.c (test for excess errors)
FAIL: gcc.target/powerpc/mmx-psubd-2.c (test for excess errors)
FAIL: gcc.target/powerpc/mmx-psubsb-1.c (test for excess errors)
FAIL: gcc.target/powerpc/mmx-psubsw-1.c (test for excess errors)
FAIL: gcc.target/powerpc/mmx-psubusb-1.c (test for excess errors)
FAIL: gcc.target/powerpc/mmx-psubusw-1.c (test for excess errors)
FAIL: gcc.target/powerpc/mmx-psubw-2.c (test for excess errors)
FAIL: gcc.target/powerpc/mmx-punpckhbw-1.c (test for excess errors)
FAIL: gcc.target/powerpc/mmx-punpckhdq-1.c (test for excess errors)
FAIL: gcc.target/powerpc/mmx-punpckhwd-1.c (test for excess errors)
FAIL: gcc.target/powerpc/mmx-punpcklbw-1.c (test for excess errors)
FAIL: gcc.target/powerpc/mmx-punpckldq-1.c (test for excess errors)
FAIL: gcc.target/powerpc/mmx-punpcklwd-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse-addps-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse-addss-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse-andnps-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse-andps-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse-cmpss-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse-cvtpi16ps-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse-cvtpi32ps-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse-cvtpi32x2ps-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse-cvtpi8ps-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse-cvtpspi16-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse-cvtpspi8-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse-cvtpu16ps-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse-cvtpu8ps-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse-cvtsi2ss-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse-cvtsi2ss-2.c (test for excess errors)
FAIL: gcc.target/powerpc/sse-cvtss2si-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse-cvtss2si-2.c (test for excess errors)
FAIL: gcc.target/powerpc/sse-cvttss2si-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse-cvttss2si-2.c (test for excess errors)
FAIL: gcc.target/powerpc/sse-divps-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse-divss-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse-maxps-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse-maxss-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse-minps-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse-minss-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse-movaps-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse-movaps-2.c (test for excess errors)
FAIL: gcc.target/powerpc/sse-movhlps-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse-movhps-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse-movhps-2.c (test for excess errors)
FAIL: gcc.target/powerpc/sse-movlhps-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse-movlps-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse-movlps-2.c (test for excess errors)
FAIL: gcc.target/powerpc/sse-movmskb-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse-movmskps-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse-movss-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse-movss-2.c (test for excess errors)
FAIL: gcc.target/powerpc/sse-movss-3.c (test for excess errors)
FAIL: gcc.target/powerpc/sse-mulps-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse-mulss-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse-orps-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse-pavgw-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse-pmaxsw-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse-pmaxub-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse-pminsw-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse-pminub-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse-pmulhuw-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse-psadbw-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse-rcpps-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse-rsqrtps-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse-shufps-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse-sqrtps-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse-subps-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse-subss-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse-ucomiss-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse-ucomiss-2.c (test for excess errors)
FAIL: gcc.target/powerpc/sse-ucomiss-3.c (test for excess errors)
FAIL: gcc.target/powerpc/sse-ucomiss-4.c (test for excess errors)
FAIL: gcc.target/powerpc/sse-ucomiss-5.c (test for excess errors)
FAIL: gcc.target/powerpc/sse-ucomiss-6.c (test for excess errors)
FAIL: gcc.target/powerpc/sse-unpckhps-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse-unpcklps-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse-xorps-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-addpd-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-addsd-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-andnpd-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-andpd-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-cmppd-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-cmpsd-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-comisd-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-comisd-2.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-comisd-3.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-comisd-4.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-comisd-5.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-comisd-6.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-cvtdq2pd-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-cvtdq2ps-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-cvtpd2dq-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-cvtpd2ps-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-cvtps2dq-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-cvtps2pd-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-cvtsd2si-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-cvtsd2si-2.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-cvtsd2ss-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-cvtsi2sd-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-cvtsi2sd-2.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-cvtss2sd-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-cvttpd2dq-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-cvttps2dq-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-cvttsd2si-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-cvttsd2si-2.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-divpd-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-divsd-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-maxpd-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-maxsd-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-minpd-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-minsd-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-mmx.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-movhpd-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-movhpd-2.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-movlpd-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-movlpd-2.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-movmskpd-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-movq-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-movq-2.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-movq-3.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-movsd-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-movsd-2.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-movsd-3.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-mulpd-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-mulsd-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-orpd-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-packssdw-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-packsswb-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-packuswb-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-paddb-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-paddd-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-paddq-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-paddsb-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-paddsw-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-paddusb-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-paddusw-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-paddw-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-pavgb-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-pavgw-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-pcmpeqb-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-pcmpeqd-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-pcmpeqw-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-pcmpgtb-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-pcmpgtd-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-pcmpgtw-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-pextrw.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-pinsrw.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-pmaddwd-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-pmaxsw-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-pmaxub-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-pminsw-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-pminub-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-pmovmskb-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-pmulhuw-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-pmulhw-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-pmullw-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-pmuludq-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-psadbw-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-pshufd-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-pshufhw-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-pshuflw-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-pslld-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-pslld-2.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-pslldq-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-psllq-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-psllq-2.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-psllw-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-psllw-2.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-psrad-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-psrad-2.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-psraw-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-psraw-2.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-psrld-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-psrld-2.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-psrldq-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-psrlq-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-psrlq-2.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-psrlw-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-psrlw-2.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-psubb-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-psubd-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-psubq-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-psubsb-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-psubsw-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-psubusb-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-psubusw-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-psubw-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-punpckhbw-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-punpckhdq-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-punpckhqdq-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-punpckhwd-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-punpcklbw-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-punpckldq-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-punpcklqdq-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-punpcklwd-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-shufpd-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-sqrtpd-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-subpd-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-subsd-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-ucomisd-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-ucomisd-2.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-ucomisd-3.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-ucomisd-4.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-ucomisd-5.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-ucomisd-6.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-unpckhpd-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-unpcklpd-1.c (test for excess errors)
FAIL: gcc.target/powerpc/sse2-xorpd-1.c (test for excess errors)
Comment 1 Bill Seurer 2018-02-07 15:58:12 UTC
Most of the failures (well, the first couple dozen or so anyway) appear to be like this:

Executing on host: /home/seurer/gcc/build/gcc-trunk/gcc/xgcc -B/home/seurer/gcc/build/gcc-trunk/gcc/ /home/seurer/gcc/gcc-trunk/gcc/testsuite/gcc.target/powerpc/bmi-andn-1.c     -fno-diagnostics-show-caret -fdiagnostics-color=never   -O3  -lm  -o ./bmi-andn-1.exe    (timeout = 300)
spawn -ignore SIGHUP /home/seurer/gcc/build/gcc-trunk/gcc/xgcc -B/home/seurer/gcc/build/gcc-trunk/gcc/ /home/seurer/gcc/gcc-trunk/gcc/testsuite/gcc.target/powerpc/bmi-andn-1.c -fno-diagnostics-show-caret -fdiagnostics-color=never -O3 -lm -o ./bmi-andn-1.exe
In file included from /home/seurer/gcc/build/gcc-trunk/gcc/include/x86intrin.h:39,
                 from /home/seurer/gcc/gcc-trunk/gcc/testsuite/gcc.target/powerpc/bmi-andn-1.c:7:
/home/seurer/gcc/build/gcc-trunk/gcc/include/mmintrin.h: In function '_mm_cmpeq_pi32':
/home/seurer/gcc/build/gcc-trunk/gcc/include/mmintrin.h:857:3: note: use -flax-vector-conversions to permit conversions between vectors with differing element types or numbers of subparts
/home/seurer/gcc/build/gcc-trunk/gcc/include/mmintrin.h:857:5: error: incompatible types when assigning to type '__vector signed int' {aka '__vector(4) int'} from type '__vector(8) short int'
/home/seurer/gcc/build/gcc-trunk/gcc/include/mmintrin.h: In function '_mm_cmpgt_pi32':
/home/seurer/gcc/build/gcc-trunk/gcc/include/mmintrin.h:886:5: error: incompatible types when assigning to type '__vector signed int' {aka '__vector(4) int'} from type '__vector(8) short int'
compiler exited with status 1
FAIL: gcc.target/powerpc/bmi-andn-1.c (test for excess errors)
Excess errors:
/home/seurer/gcc/build/gcc-trunk/gcc/include/mmintrin.h:857:5: error: incompatible types when assigning to type '__vector signed int' {aka '__vector(4) int'} from type '__vector(8) short int'
/home/seurer/gcc/build/gcc-trunk/gcc/include/mmintrin.h:886:5: error: incompatible types when assigning to type '__vector signed int' {aka '__vector(4) int'} from type '__vector(8) short int'
Comment 2 Bill Schmidt 2018-02-07 20:14:05 UTC
I wonder how many failures are left if that invalid cast is removed from the code?  It is just wrong and unnecessary.
Comment 3 Bill Seurer 2018-02-08 03:56:44 UTC
All the compilation failures disappear if the two casts

/home/seurer/gcc/build/gcc-trunk/gcc/include/mmintrin.h:857:5: error: incompatible types when assigning to type '__vector signed int' {aka '__vector(4) int'} from type '__vector(8) short int'
/home/seurer/gcc/build/gcc-trunk/gcc/include/mmintrin.h:886:5: error: incompatible types when assigning to type '__vector signed int' {aka '__vector(4) int'} from type '__vector(8) short int'

are fixed.
Comment 4 Steven Munroe 2018-02-08 17:58:13 UTC
Yup this looks like a pasteo from the pi16 implementation which was not caught as P9 was rare at the time.

The #if _ARCH_PWR9 clause is an optimization based on better timing for P9 (vs P8) for GPR <-> VSR transfers.

BTW is there a P9 in the GCC compile farm yet?
Comment 5 Steven Munroe 2018-02-08 18:15:30 UTC
I'll take this.
Comment 6 Bill Schmidt 2018-02-08 19:20:04 UTC
(In reply to Steven Munroe from comment #4)
> BTW is there a P9 in the GCC compile farm yet?

Sadly, not yet.  We can do testing on your behalf until we can get a system out there.
Comment 7 Steven Munroe 2018-02-09 18:34:32 UTC
Created attachment 43388 [details]
correct mmintrin.h for power9

2018-02-09  Steven Munroe  <munroesj@gcc.gnu.org>

	* config/rs6000/mmintrin.h (_mm_cmpeq_pi32 [_ARCH_PWR9]):
	Cast vec_cmpeq result to correct type.
	* config/rs6000/mmintrin.h (_mm_cmpgt_pi32 [_ARCH_PWR9]):
	Cast vec_cmpgt result to correct type.
Comment 8 seurer 2018-02-09 19:31:55 UTC
Steve's patch is pretty much what I tried earlier and it works.
Comment 9 Steven Munroe 2018-02-11 21:46:12 UTC
Author: munroesj
Date: Sun Feb 11 21:45:39 2018
New Revision: 257571

URL: https://gcc.gnu.org/viewcvs?rev=257571&root=gcc&view=rev
Log:
Fix PR 84266


Modified:
    trunk/gcc/ChangeLog
    trunk/gcc/config/rs6000/mmintrin.h
Comment 10 Steven Munroe 2018-02-11 21:48:30 UTC
Change this to RESOLVED state now?
Comment 11 Segher Boessenkool 2018-02-11 22:30:05 UTC
Thanks for committing it!

I think it can be closed now yes.
Comment 12 Bill Schmidt 2018-07-15 18:04:32 UTC
Author: wschmidt
Date: Sun Jul 15 18:04:00 2018
New Revision: 262670

URL: https://gcc.gnu.org/viewcvs?rev=262670&root=gcc&view=rev
Log:
[gcc]

2018-07-15  Bill Schmidt  <wschmidt@linux.ibm.com>

	Backport from mainline
	2018-07-13  Bill Schmidt  <wschmidt@linux.ibm.com>
		    Steve Munroe  <munroesj52@gmail.com>

	* config/rs6000/emmintrin.h (_mm_and_si128): New function.
	(_mm_andnot_si128): Likewise.
	(_mm_or_si128): Likewise.
	(_mm_xor_si128): Likewise.

	Backport from mainline
	2017-11-16  Steven Munroe  <munroesj@gcc.gnu.org>

	* config/rs6000/mmintrin.h (_mm_add_pi32[_ARCH_PWR]): Correct
	parameter list for vec_splats.

	Backport from mainline
	2018-02-11  Steven Munroe  <munroesj@gcc.gnu.org>

	PR target/84266
	* config/rs6000/mmintrin.h (_mm_cmpeq_pi32 [_ARCH_PWR9]):
	Cast vec_cmpeq result to correct type.
	* config/rs6000/mmintrin.h (_mm_cmpgt_pi32 [_ARCH_PWR9]):
	Cast vec_cmpgt result to correct type.

[gcc/testsuite]

2018-07-15  Bill Schmidt  <wschmidt@linux.ibm.com>

	Backport from mainline
	2018-07-13  Bill Schmidt  <wschmidt@linux.ibm.com>
		    Steve Munroe  <munroesj52@gmail.com>

	* gcc.target/powerpc/sse2-pand-1.c: New file.
	* gcc.target/powerpc/sse2-pandn-1.c: Likewise.
	* gcc.target/powerpc/sse2-por-1.c: Likewise.
	* gcc.target/powerpc/sse2-pxor-1.c: Likewise.


Added:
    branches/ibm/gcc-7-branch/gcc/testsuite/gcc.target/powerpc/sse2-pand-1.c
    branches/ibm/gcc-7-branch/gcc/testsuite/gcc.target/powerpc/sse2-pandn-1.c
    branches/ibm/gcc-7-branch/gcc/testsuite/gcc.target/powerpc/sse2-por-1.c
    branches/ibm/gcc-7-branch/gcc/testsuite/gcc.target/powerpc/sse2-pxor-1.c
Modified:
    branches/ibm/gcc-7-branch/gcc/ChangeLog.ibm
    branches/ibm/gcc-7-branch/gcc/config/rs6000/emmintrin.h
    branches/ibm/gcc-7-branch/gcc/config/rs6000/mmintrin.h
    branches/ibm/gcc-7-branch/gcc/testsuite/ChangeLog.ibm