Commit d6beb90e by Xuepeng Guo Committed by H.J. Lu

vector-1b_main.c: New.

2008-08-28  Xuepeng Guo  <xuepeng.guo@intel.com>
	    Joey Ye  <joey.ye@intel.com>
	    H.J. Lu  <hongjiu.lu@intel.com>

	* gcc.dg/compat/vector-1b_main.c: New.
	* gcc.dg/compat/vector-1b_x.c: Likewise.
	* gcc.dg/compat/vector-1b_y.c: Likewise.
	* gcc.dg/compat/vector-2b_main.c: Likewise.
	* gcc.dg/compat/vector-2b_x.c: Likewise.
	* gcc.dg/compat/vector-2b_y.c: Likewise.
	* gcc.target/i386/aes-avx-check.h: Likewise.
	* gcc.target/i386/avx-1.c: Likewise.
	* gcc.target/i386/avx-2.c: Likewise.
	* gcc.target/i386/avx-3.c: Likewise.
	* gcc.target/i386/avx-check.h: Likewise.
	* gcc.target/i386/avx-set1-epi32-1.c: Likewise.
	* gcc.target/i386/avx-set1-pd-256-1.c: Likewise.
	* gcc.target/i386/avx-set1-ps-256-1.c: Likewise.
	* gcc.target/i386/avx-set-v16hi-1.c: Likewise.
	* gcc.target/i386/avx-set-v16hi-2.c: Likewise.
	* gcc.target/i386/avx-set-v16hi-3.c: Likewise.
	* gcc.target/i386/avx-set-v16hi-4.c: Likewise.
	* gcc.target/i386/avx-set-v16hi-5.c: Likewise.
	* gcc.target/i386/avx-set-v32qi-1.c: Likewise.
	* gcc.target/i386/avx-set-v32qi-2.c: Likewise.
	* gcc.target/i386/avx-set-v32qi-3.c: Likewise.
	* gcc.target/i386/avx-set-v32qi-4.c: Likewise.
	* gcc.target/i386/avx-set-v32qi-5.c: Likewise.
	* gcc.target/i386/avx-set-v4df-1.c: Likewise.
	* gcc.target/i386/avx-set-v4df-2.c: Likewise.
	* gcc.target/i386/avx-set-v4df-3.c: Likewise.
	* gcc.target/i386/avx-set-v4df-4.c: Likewise.
	* gcc.target/i386/avx-set-v4df-5.c: Likewise.
	* gcc.target/i386/avx-set-v4di-1.c: Likewise.
	* gcc.target/i386/avx-set-v4di-2.c: Likewise.
	* gcc.target/i386/avx-set-v4di-3.c: Likewise.
	* gcc.target/i386/avx-set-v4di-4.c: Likewise.
	* gcc.target/i386/avx-set-v4di-5.c: Likewise.
	* gcc.target/i386/avx-set-v8sf-1.c: Likewise.
	* gcc.target/i386/avx-set-v8sf-2.c: Likewise.
	* gcc.target/i386/avx-set-v8sf-3.c: Likewise.
	* gcc.target/i386/avx-set-v8sf-4.c: Likewise.
	* gcc.target/i386/avx-set-v8sf-5.c: Likewise.
	* gcc.target/i386/avx-set-v8si-1.c: Likewise.
	* gcc.target/i386/avx-set-v8si-2.c: Likewise.
	* gcc.target/i386/avx-set-v8si-3.c: Likewise.
	* gcc.target/i386/avx-set-v8si-4.c: Likewise.
	* gcc.target/i386/avx-set-v8si-5.c: Likewise.
	* gcc.target/i386/avx-setzero-pd-256-1.c: Likewise.
	* gcc.target/i386/avx-setzero-ps-256-1.c: Likewise.
	* gcc.target/i386/avx-setzero-si256-1.c: Likewise.
	* gcc.target/i386/avx-vaddpd-1.c: Likewise.
	* gcc.target/i386/avx-vaddpd-256-1.c: Likewise.
	* gcc.target/i386/avx-vaddps-1.c: Likewise.
	* gcc.target/i386/avx-vaddps-256-1.c: Likewise.
	* gcc.target/i386/avx-vaddsd-1.c: Likewise.
	* gcc.target/i386/avx-vaddss-1.c: Likewise.
	* gcc.target/i386/avx-vaddsubpd-1.c: Likewise.
	* gcc.target/i386/avx-vaddsubpd-256-1.c: Likewise.
	* gcc.target/i386/avx-vaddsubps-1.c: Likewise.
	* gcc.target/i386/avx-vaddsubps-256-1.c: Likewise.
	* gcc.target/i386/avx-vaesdec-1.c: Likewise.
	* gcc.target/i386/avx-vaesdeclast-1.c: Likewise.
	* gcc.target/i386/avx-vaesenc-1.c: Likewise.
	* gcc.target/i386/avx-vaesenclast-1.c: Likewise.
	* gcc.target/i386/avx-vaesimc-1.c: Likewise.
	* gcc.target/i386/avx-vaeskeygenassist-1.c: Likewise.
	* gcc.target/i386/avx-vandnpd-1.c: Likewise.
	* gcc.target/i386/avx-vandnpd-256-1.c: Likewise.
	* gcc.target/i386/avx-vandnps-1.c: Likewise.
	* gcc.target/i386/avx-vandnps-256-1.c: Likewise.
	* gcc.target/i386/avx-vandpd-1.c: Likewise.
	* gcc.target/i386/avx-vandpd-256-1.c: Likewise.
	* gcc.target/i386/avx-vandps-1.c: Likewise.
	* gcc.target/i386/avx-vandps-256-1.c: Likewise.
	* gcc.target/i386/avx-vblendpd-1.c: Likewise.
	* gcc.target/i386/avx-vblendpd-256-1.c: Likewise.
	* gcc.target/i386/avx-vblendps-256-1.c: Likewise.
	* gcc.target/i386/avx-vblendvpd-256-1.c: Likewise.
	* gcc.target/i386/avx-vblendvps-256-1.c: Likewise.
	* gcc.target/i386/avx-vbroadcastf128-256-1.c: Likewise.
	* gcc.target/i386/avx-vbroadcastf128-256-2.c: Likewise.
	* gcc.target/i386/avx-vbroadcastsd-1.c: Likewise.
	* gcc.target/i386/avx-vbroadcastss-1.c: Likewise.
	* gcc.target/i386/avx-vbroadcastss-2.c: Likewise.
	* gcc.target/i386/avx-vcmppd-1.c: Likewise.
	* gcc.target/i386/avx-vcmppd-256-1.c: Likewise.
	* gcc.target/i386/avx-vcmpps-1.c: Likewise.
	* gcc.target/i386/avx-vcmpps-256-1.c: Likewise.
	* gcc.target/i386/avx-vcmpsd-1.c: Likewise.
	* gcc.target/i386/avx-vcmpss-1.c: Likewise.
	* gcc.target/i386/avx-vcomisd-1.c: Likewise.
	* gcc.target/i386/avx-vcomisd-2.c: Likewise.
	* gcc.target/i386/avx-vcomisd-3.c: Likewise.
	* gcc.target/i386/avx-vcomisd-4.c: Likewise.
	* gcc.target/i386/avx-vcomisd-5.c: Likewise.
	* gcc.target/i386/avx-vcomisd-6.c: Likewise.
	* gcc.target/i386/avx-vcomiss-1.c: Likewise.
	* gcc.target/i386/avx-vcomiss-2.c: Likewise.
	* gcc.target/i386/avx-vcomiss-3.c: Likewise.
	* gcc.target/i386/avx-vcomiss-4.c: Likewise.
	* gcc.target/i386/avx-vcomiss-5.c: Likewise.
	* gcc.target/i386/avx-vcomiss-6.c: Likewise.
	* gcc.target/i386/avx-vcvtdq2pd-1.c: Likewise.
	* gcc.target/i386/avx-vcvtdq2pd-256-1.c: Likewise.
	* gcc.target/i386/avx-vcvtdq2ps-1.c: Likewise.
	* gcc.target/i386/avx-vcvtpd2dq-1.c: Likewise.
	* gcc.target/i386/avx-vcvtpd2dq-256-1.c: Likewise.
	* gcc.target/i386/avx-vcvtpd2ps-1.c: Likewise.
	* gcc.target/i386/avx-vcvtpd2ps-256-1.c: Likewise.
	* gcc.target/i386/avx-vcvtps2dq-1.c: Likewise.
	* gcc.target/i386/avx-vcvtps2dq-256-1.c: Likewise.
	* gcc.target/i386/avx-vcvtps2pd-1.c: Likewise.
	* gcc.target/i386/avx-vcvtps2pd-256-1.c: Likewise.
	* gcc.target/i386/avx-vcvtsd2si-1.c: Likewise.
	* gcc.target/i386/avx-vcvtsd2si-2.c: Likewise.
	* gcc.target/i386/avx-vcvtsd2ss-1.c: Likewise.
	* gcc.target/i386/avx-vcvtsi2sd-1.c: Likewise.
	* gcc.target/i386/avx-vcvtsi2sd-2.c: Likewise.
	* gcc.target/i386/avx-vcvtsi2ss-1.c: Likewise.
	* gcc.target/i386/avx-vcvtsi2ss-2.c: Likewise.
	* gcc.target/i386/avx-vcvtss2sd-1.c: Likewise.
	* gcc.target/i386/avx-vcvtss2si-1.c: Likewise.
	* gcc.target/i386/avx-vcvtss2si-2.c: Likewise.
	* gcc.target/i386/avx-vcvttpd2dq-1.c: Likewise.
	* gcc.target/i386/avx-vcvttpd2dq-256-1.c: Likewise.
	* gcc.target/i386/avx-vcvttps2dq-1.c: Likewise.
	* gcc.target/i386/avx-vcvttps2dq-256-1.c: Likewise.
	* gcc.target/i386/avx-vcvttsd2si-1.c: Likewise.
	* gcc.target/i386/avx-vcvttsd2si-2.c: Likewise.
	* gcc.target/i386/avx-vcvttss2si-1.c: Likewise.
	* gcc.target/i386/avx-vcvttss2si-2.c: Likewise.
	* gcc.target/i386/avx-vdivpd-1.c: Likewise.
	* gcc.target/i386/avx-vdivpd-256-1.c: Likewise.
	* gcc.target/i386/avx-vdivps-1.c: Likewise.
	* gcc.target/i386/avx-vdivps-256-1.c: Likewise.
	* gcc.target/i386/avx-vdivsd-1.c: Likewise.
	* gcc.target/i386/avx-vdivss-1.c: Likewise.
	* gcc.target/i386/avx-vdppd-1.c: Likewise.
	* gcc.target/i386/avx-vdppd-2.c: Likewise.
	* gcc.target/i386/avx-vdpps-1.c: Likewise.
	* gcc.target/i386/avx-vdpps-2.c: Likewise.
	* gcc.target/i386/avx-vextractf128-256-1.c: Likewise.
	* gcc.target/i386/avx-vextractf128-256-2.c: Likewise.
	* gcc.target/i386/avx-vextractps-1.c: Likewise.
	* gcc.target/i386/avx-vhaddpd-1.c: Likewise.
	* gcc.target/i386/avx-vhaddpd-256-1.c: Likewise.
	* gcc.target/i386/avx-vhaddps-1.c: Likewise.
	* gcc.target/i386/avx-vhaddps-256-1.c: Likewise.
	* gcc.target/i386/avx-vhsubpd-1.c: Likewise.
	* gcc.target/i386/avx-vhsubpd-256-1.c: Likewise.
	* gcc.target/i386/avx-vhsubps-1.c: Likewise.
	* gcc.target/i386/avx-vhsubps-256-1.c: Likewise.
	* gcc.target/i386/avx-vinsertf128-256-1.c: Likewise.
	* gcc.target/i386/avx-vinsertf128-256-2.c: Likewise.
	* gcc.target/i386/avx-vinsertf128-256-3.c: Likewise.
	* gcc.target/i386/avx-vinsertps-1.c: Likewise.
	* gcc.target/i386/avx-vinsertps-2.c: Likewise.
	* gcc.target/i386/avx-vlddqu-1.c: Likewise.
	* gcc.target/i386/avx-vlddqu-256-1.c: Likewise.
	* gcc.target/i386/avx-vmaskmovpd-256-1.c: Likewise.
	* gcc.target/i386/avx-vmaskmovpd-256-2.c: Likewise.
	* gcc.target/i386/avx-vmaskmovps-256-1.c: Likewise.
	* gcc.target/i386/avx-vmaskmovps-256-2.c: Likewise.
	* gcc.target/i386/avx-vmaxpd-1.c: Likewise.
	* gcc.target/i386/avx-vmaxpd-256-1.c: Likewise.
	* gcc.target/i386/avx-vmaxps-1.c: Likewise.
	* gcc.target/i386/avx-vmaxps-256-1.c: Likewise.
	* gcc.target/i386/avx-vmaxsd-1.c: Likewise.
	* gcc.target/i386/avx-vmaxss-1.c: Likewise.
	* gcc.target/i386/avx-vminpd-1.c: Likewise.
	* gcc.target/i386/avx-vminpd-256-1.c: Likewise.
	* gcc.target/i386/avx-vminps-1.c: Likewise.
	* gcc.target/i386/avx-vminps-256-1.c: Likewise.
	* gcc.target/i386/avx-vminsd-1.c: Likewise.
	* gcc.target/i386/avx-vminss-1.c: Likewise.
	* gcc.target/i386/avx-vmovapd-1.c: Likewise.
	* gcc.target/i386/avx-vmovapd-256-1.c: Likewise.
	* gcc.target/i386/avx-vmovapd-256-2.c: Likewise.
	* gcc.target/i386/avx-vmovapd-2.c: Likewise.
	* gcc.target/i386/avx-vmovaps-1.c: Likewise.
	* gcc.target/i386/avx-vmovaps-256-1.c: Likewise.
	* gcc.target/i386/avx-vmovaps-256-2.c: Likewise.
	* gcc.target/i386/avx-vmovaps-2.c: Likewise.
	* gcc.target/i386/avx-vmovd-1.c: Likewise.
	* gcc.target/i386/avx-vmovd-2.c: Likewise.
	* gcc.target/i386/avx-vmovddup-1.c: Likewise.
	* gcc.target/i386/avx-vmovddup-256-1.c: Likewise.
	* gcc.target/i386/avx-vmovdqa-1.c: Likewise.
	* gcc.target/i386/avx-vmovdqa-256-1.c: Likewise.
	* gcc.target/i386/avx-vmovdqa-256-2.c: Likewise.
	* gcc.target/i386/avx-vmovdqa-2.c: Likewise.
	* gcc.target/i386/avx-vmovdqu-1.c: Likewise.
	* gcc.target/i386/avx-vmovdqu-256-1.c: Likewise.
	* gcc.target/i386/avx-vmovdqu-256-2.c: Likewise.
	* gcc.target/i386/avx-vmovdqu-2.c: Likewise.
	* gcc.target/i386/avx-vmovhlps-1.c: Likewise.
	* gcc.target/i386/avx-vmovhpd-1.c: Likewise.
	* gcc.target/i386/avx-vmovhpd-2.c: Likewise.
	* gcc.target/i386/avx-vmovhps-1.c: Likewise.
	* gcc.target/i386/avx-vmovhps-2.c: Likewise.
	* gcc.target/i386/avx-vmovlhps-1.c: Likewise.
	* gcc.target/i386/avx-vmovlpd-1.c: Likewise.
	* gcc.target/i386/avx-vmovlpd-2.c: Likewise.
	* gcc.target/i386/avx-vmovmskpd-1.c: Likewise.
	* gcc.target/i386/avx-vmovmskpd-256-1.c: Likewise.
	* gcc.target/i386/avx-vmovmskps-1.c: Likewise.
	* gcc.target/i386/avx-vmovmskps-256-1.c: Likewise.
	* gcc.target/i386/avx-vmovntdq-1.c: Likewise.
	* gcc.target/i386/avx-vmovntdqa-1.c: Likewise.
	* gcc.target/i386/avx-vmovntpd-1.c: Likewise.
	* gcc.target/i386/avx-vmovntps-1.c: Likewise.
	* gcc.target/i386/avx-vmovq-1.c: Likewise.
	* gcc.target/i386/avx-vmovq-2.c: Likewise.
	* gcc.target/i386/avx-vmovq-3.c: Likewise.
	* gcc.target/i386/avx-vmovsd-1.c: Likewise.
	* gcc.target/i386/avx-vmovsd-2.c: Likewise.
	* gcc.target/i386/avx-vmovshdup-1.c: Likewise.
	* gcc.target/i386/avx-vmovshdup-256-1.c: Likewise.
	* gcc.target/i386/avx-vmovsldup-1.c: Likewise.
	* gcc.target/i386/avx-vmovsldup-256-1.c: Likewise.
	* gcc.target/i386/avx-vmovss-1.c: Likewise.
	* gcc.target/i386/avx-vmovss-2.c: Likewise.
	* gcc.target/i386/avx-vmovss-3.c: Likewise.
	* gcc.target/i386/avx-vmovupd-1.c: Likewise.
	* gcc.target/i386/avx-vmovupd-256-1.c: Likewise.
	* gcc.target/i386/avx-vmovupd-256-2.c: Likewise.
	* gcc.target/i386/avx-vmovupd-2.c: Likewise.
	* gcc.target/i386/avx-vmovups-1.c: Likewise.
	* gcc.target/i386/avx-vmovups-256-1.c: Likewise.
	* gcc.target/i386/avx-vmovups-256-2.c: Likewise.
	* gcc.target/i386/avx-vmovups-2.c: Likewise.
	* gcc.target/i386/avx-vmpsadbw-1.c: Likewise.
	* gcc.target/i386/avx-vmulpd-1.c: Likewise.
	* gcc.target/i386/avx-vmulpd-256-1.c: Likewise.
	* gcc.target/i386/avx-vmulps-1.c: Likewise.
	* gcc.target/i386/avx-vmulps-256-1.c: Likewise.
	* gcc.target/i386/avx-vmulsd-1.c: Likewise.
	* gcc.target/i386/avx-vmulss-1.c: Likewise.
	* gcc.target/i386/avx-vorpd-1.c: Likewise.
	* gcc.target/i386/avx-vorpd-256-1.c: Likewise.
	* gcc.target/i386/avx-vorps-1.c: Likewise.
	* gcc.target/i386/avx-vorps-256-1.c: Likewise.
	* gcc.target/i386/avx-vpabsb-1.c: Likewise.
	* gcc.target/i386/avx-vpabsd-1.c: Likewise.
	* gcc.target/i386/avx-vpabsw-1.c: Likewise.
	* gcc.target/i386/avx-vpackssdw-1.c: Likewise.
	* gcc.target/i386/avx-vpacksswb-1.c: Likewise.
	* gcc.target/i386/avx-vpackusdw-1.c: Likewise.
	* gcc.target/i386/avx-vpackuswb-1.c: Likewise.
	* gcc.target/i386/avx-vpaddb-1.c: Likewise.
	* gcc.target/i386/avx-vpaddd-1.c: Likewise.
	* gcc.target/i386/avx-vpaddq-1.c: Likewise.
	* gcc.target/i386/avx-vpaddsb-1.c: Likewise.
	* gcc.target/i386/avx-vpaddsw-1.c: Likewise.
	* gcc.target/i386/avx-vpaddusb-1.c: Likewise.
	* gcc.target/i386/avx-vpaddusw-1.c: Likewise.
	* gcc.target/i386/avx-vpaddw-1.c: Likewise.
	* gcc.target/i386/avx-vpalignr-1.c: Likewise.
	* gcc.target/i386/avx-vpand-1.c: Likewise.
	* gcc.target/i386/avx-vpandn-1.c: Likewise.
	* gcc.target/i386/avx-vpavgb-1.c: Likewise.
	* gcc.target/i386/avx-vpavgw-1.c: Likewise.
	* gcc.target/i386/avx-vpblendvb-1.c: Likewise.
	* gcc.target/i386/avx-vpblendw-1.c: Likewise.
	* gcc.target/i386/avx-vpcmpeqb-1.c: Likewise.
	* gcc.target/i386/avx-vpcmpeqd-1.c: Likewise.
	* gcc.target/i386/avx-vpcmpeqq-1.c: Likewise.
	* gcc.target/i386/avx-vpcmpeqw-1.c: Likewise.
	* gcc.target/i386/avx-vpcmpestri-1.c: Likewise.
	* gcc.target/i386/avx-vpcmpestri-2.c: Likewise.
	* gcc.target/i386/avx-vpcmpestrm-1.c: Likewise.
	* gcc.target/i386/avx-vpcmpestrm-2.c: Likewise.
	* gcc.target/i386/avx-vpcmpgtb-1.c: Likewise.
	* gcc.target/i386/avx-vpcmpgtd-1.c: Likewise.
	* gcc.target/i386/avx-vpcmpgtq-1.c: Likewise.
	* gcc.target/i386/avx-vpcmpgtw-1.c: Likewise.
	* gcc.target/i386/avx-vpcmpistri-1.c: Likewise.
	* gcc.target/i386/avx-vpcmpistri-2.c: Likewise.
	* gcc.target/i386/avx-vpcmpistrm-1.c: Likewise.
	* gcc.target/i386/avx-vpcmpistrm-2.c: Likewise.
	* gcc.target/i386/avx-vperm2f128-256-1.c: Likewise.
	* gcc.target/i386/avx-vperm2f128-256-2.c: Likewise.
	* gcc.target/i386/avx-vperm2f128-256-3.c: Likewise.
	* gcc.target/i386/avx-vpermil2pd-1.c: Likewise.
	* gcc.target/i386/avx-vpermil2pd-256-1.c: Likewise.
	* gcc.target/i386/avx-vpermil2ps-1.c: Likewise.
	* gcc.target/i386/avx-vpermil2ps-256-1.c: Likewise.
	* gcc.target/i386/avx-vpermilpd-1.c: Likewise.
	* gcc.target/i386/avx-vpermilpd-256-1.c: Likewise.
	* gcc.target/i386/avx-vpermilpd-256-2.c: Likewise.
	* gcc.target/i386/avx-vpermilpd-2.c: Likewise.
	* gcc.target/i386/avx-vpermilps-1.c: Likewise.
	* gcc.target/i386/avx-vpermilps-256-1.c: Likewise.
	* gcc.target/i386/avx-vpermilps-256-2.c: Likewise.
	* gcc.target/i386/avx-vpermilps-2.c: Likewise.
	* gcc.target/i386/avx-vpextrb-1.c: Likewise.
	* gcc.target/i386/avx-vpextrd-1.c: Likewise.
	* gcc.target/i386/avx-vpextrq-1.c: Likewise.
	* gcc.target/i386/avx-vpextrw-1.c: Likewise.
	* gcc.target/i386/avx-vphaddd-1.c: Likewise.
	* gcc.target/i386/avx-vphaddsw-1.c: Likewise.
	* gcc.target/i386/avx-vphaddw-1.c: Likewise.
	* gcc.target/i386/avx-vphminposuw-1.c: Likewise.
	* gcc.target/i386/avx-vphsubd-1.c: Likewise.
	* gcc.target/i386/avx-vphsubsw-1.c: Likewise.
	* gcc.target/i386/avx-vphsubw-1.c: Likewise.
	* gcc.target/i386/avx-vpinsrb-1.c: Likewise.
	* gcc.target/i386/avx-vpinsrd-1.c: Likewise.
	* gcc.target/i386/avx-vpinsrq-1.c: Likewise.
	* gcc.target/i386/avx-vpmaddubsw-1.c: Likewise.
	* gcc.target/i386/avx-vpmaxsb-1.c: Likewise.
	* gcc.target/i386/avx-vpmaxsd-1.c: Likewise.
	* gcc.target/i386/avx-vpmaxsw-1.c: Likewise.
	* gcc.target/i386/avx-vpmaxub-1.c: Likewise.
	* gcc.target/i386/avx-vpmaxud-1.c: Likewise.
	* gcc.target/i386/avx-vpmaxuw-1.c: Likewise.
	* gcc.target/i386/avx-vpminsb-1.c: Likewise.
	* gcc.target/i386/avx-vpminsd-1.c: Likewise.
	* gcc.target/i386/avx-vpminsw-1.c: Likewise.
	* gcc.target/i386/avx-vpminub-1.c: Likewise.
	* gcc.target/i386/avx-vpminud-1.c: Likewise.
	* gcc.target/i386/avx-vpminuw-1.c: Likewise.
	* gcc.target/i386/avx-vpmovmskb-1.c: Likewise.
	* gcc.target/i386/avx-vpmovsxbd-1.c: Likewise.
	* gcc.target/i386/avx-vpmovsxbq-1.c: Likewise.
	* gcc.target/i386/avx-vpmovsxbw-1.c: Likewise.
	* gcc.target/i386/avx-vpmovsxdq-1.c: Likewise.
	* gcc.target/i386/avx-vpmovsxwd-1.c: Likewise.
	* gcc.target/i386/avx-vpmovsxwq-1.c: Likewise.
	* gcc.target/i386/avx-vpmovzxbd-1.c: Likewise.
	* gcc.target/i386/avx-vpmovzxbq-1.c: Likewise.
	* gcc.target/i386/avx-vpmovzxbw-1.c: Likewise.
	* gcc.target/i386/avx-vpmovzxdq-1.c: Likewise.
	* gcc.target/i386/avx-vpmovzxwd-1.c: Likewise.
	* gcc.target/i386/avx-vpmovzxwq-1.c: Likewise.
	* gcc.target/i386/avx-vpmuldq-1.c: Likewise.
	* gcc.target/i386/avx-vpmulhrsw-1.c: Likewise.
	* gcc.target/i386/avx-vpmulhuw-1.c: Likewise.
	* gcc.target/i386/avx-vpmulhw-1.c: Likewise.
	* gcc.target/i386/avx-vpmulld-1.c: Likewise.
	* gcc.target/i386/avx-vpmullw-1.c: Likewise.
	* gcc.target/i386/avx-vpmuludq-1.c: Likewise.
	* gcc.target/i386/avx-vpor-1.c: Likewise.
	* gcc.target/i386/avx-vpsadbw-1.c: Likewise.
	* gcc.target/i386/avx-vpshufb-1.c: Likewise.
	* gcc.target/i386/avx-vpshufd-1.c: Likewise.
	* gcc.target/i386/avx-vpshufhw-1.c: Likewise.
	* gcc.target/i386/avx-vpshuflw-1.c: Likewise.
	* gcc.target/i386/avx-vpsignb-1.c: Likewise.
	* gcc.target/i386/avx-vpsignd-1.c: Likewise.
	* gcc.target/i386/avx-vpsignw-1.c: Likewise.
	* gcc.target/i386/avx-vpslld-1.c: Likewise.
	* gcc.target/i386/avx-vpslld-2.c: Likewise.
	* gcc.target/i386/avx-vpslldq-1.c: Likewise.
	* gcc.target/i386/avx-vpsllq-1.c: Likewise.
	* gcc.target/i386/avx-vpsllq-2.c: Likewise.
	* gcc.target/i386/avx-vpsllw-1.c: Likewise.
	* gcc.target/i386/avx-vpsllw-2.c: Likewise.
	* gcc.target/i386/avx-vpsrad-1.c: Likewise.
	* gcc.target/i386/avx-vpsrad-2.c: Likewise.
	* gcc.target/i386/avx-vpsraw-1.c: Likewise.
	* gcc.target/i386/avx-vpsraw-2.c: Likewise.
	* gcc.target/i386/avx-vpsrld-1.c: Likewise.
	* gcc.target/i386/avx-vpsrld-2.c: Likewise.
	* gcc.target/i386/avx-vpsrldq-1.c: Likewise.
	* gcc.target/i386/avx-vpsrlq-1.c: Likewise.
	* gcc.target/i386/avx-vpsrlq-2.c: Likewise.
	* gcc.target/i386/avx-vpsrlw-1.c: Likewise.
	* gcc.target/i386/avx-vpsrlw-2.c: Likewise.
	* gcc.target/i386/avx-vpsubb-1.c: Likewise.
	* gcc.target/i386/avx-vpsubd-1.c: Likewise.
	* gcc.target/i386/avx-vpsubq-1.c: Likewise.
	* gcc.target/i386/avx-vpsubsb-1.c: Likewise.
	* gcc.target/i386/avx-vpsubsw-1.c: Likewise.
	* gcc.target/i386/avx-vpsubw-1.c: Likewise.
	* gcc.target/i386/avx-vptest-1.c: Likewise.
	* gcc.target/i386/avx-vptest-256-1.c: Likewise.
	* gcc.target/i386/avx-vptest-256-2.c: Likewise.
	* gcc.target/i386/avx-vptest-256-3.c: Likewise.
	* gcc.target/i386/avx-vptest-2.c: Likewise.
	* gcc.target/i386/avx-vptest-3.c: Likewise.
	* gcc.target/i386/avx-vpunpckhbw-1.c: Likewise.
	* gcc.target/i386/avx-vpunpckhdq-1.c: Likewise.
	* gcc.target/i386/avx-vpunpckhqdq-1.c: Likewise.
	* gcc.target/i386/avx-vpunpckhwd-1.c: Likewise.
	* gcc.target/i386/avx-vpunpcklbw-1.c: Likewise.
	* gcc.target/i386/avx-vpunpckldq-1.c: Likewise.
	* gcc.target/i386/avx-vpunpcklqdq-1.c: Likewise.
	* gcc.target/i386/avx-vpunpcklwd-1.c: Likewise.
	* gcc.target/i386/avx-vpxor-1.c: Likewise.
	* gcc.target/i386/avx-vrcpps-1.c: Likewise.
	* gcc.target/i386/avx-vrcpps-256-1.c: Likewise.
	* gcc.target/i386/avx-vroundpd-1.c: Likewise.
	* gcc.target/i386/avx-vroundpd-256-1.c: Likewise.
	* gcc.target/i386/avx-vroundpd-256-2.c: Likewise.
	* gcc.target/i386/avx-vroundpd-256-3.c: Likewise.
	* gcc.target/i386/avx-vroundpd-2.c: Likewise.
	* gcc.target/i386/avx-vroundpd-3.c: Likewise.
	* gcc.target/i386/avx-vroundps-256-1.c: Likewise.
	* gcc.target/i386/avx-vrsqrtps-1.c: Likewise.
	* gcc.target/i386/avx-vrsqrtps-256-1.c: Likewise.
	* gcc.target/i386/avx-vshufpd-1.c: Likewise.
	* gcc.target/i386/avx-vshufpd-256-1.c: Likewise.
	* gcc.target/i386/avx-vshufps-1.c: Likewise.
	* gcc.target/i386/avx-vshufps-256-1.c: Likewise.
	* gcc.target/i386/avx-vsqrtpd-1.c: Likewise.
	* gcc.target/i386/avx-vsqrtpd-256-1.c: Likewise.
	* gcc.target/i386/avx-vsqrtps-1.c: Likewise.
	* gcc.target/i386/avx-vsqrtps-256-1.c: Likewise.
	* gcc.target/i386/avx-vsubpd-1.c: Likewise.
	* gcc.target/i386/avx-vsubpd-256-1.c: Likewise.
	* gcc.target/i386/avx-vsubps-1.c: Likewise.
	* gcc.target/i386/avx-vsubps-256-1.c: Likewise.
	* gcc.target/i386/avx-vsubsd-1.c: Likewise.
	* gcc.target/i386/avx-vsubss-1.c: Likewise.
	* gcc.target/i386/avx-vtestpd-1.c: Likewise.
	* gcc.target/i386/avx-vtestpd-256-1.c: Likewise.
	* gcc.target/i386/avx-vtestpd-256-2.c: Likewise.
	* gcc.target/i386/avx-vtestpd-256-3.c: Likewise.
	* gcc.target/i386/avx-vtestpd-2.c: Likewise.
	* gcc.target/i386/avx-vtestpd-3.c: Likewise.
	* gcc.target/i386/avx-vtestps-1.c: Likewise.
	* gcc.target/i386/avx-vtestps-256-1.c: Likewise.
	* gcc.target/i386/avx-vtestps-256-2.c: Likewise.
	* gcc.target/i386/avx-vtestps-256-3.c: Likewise.
	* gcc.target/i386/avx-vtestps-2.c: Likewise.
	* gcc.target/i386/avx-vtestps-3.c: Likewise.
	* gcc.target/i386/avx-vucomisd-1.c: Likewise.
	* gcc.target/i386/avx-vucomisd-2.c: Likewise.
	* gcc.target/i386/avx-vucomisd-3.c: Likewise.
	* gcc.target/i386/avx-vucomisd-4.c: Likewise.
	* gcc.target/i386/avx-vucomisd-5.c: Likewise.
	* gcc.target/i386/avx-vucomisd-6.c: Likewise.
	* gcc.target/i386/avx-vucomiss-1.c: Likewise.
	* gcc.target/i386/avx-vucomiss-2.c: Likewise.
	* gcc.target/i386/avx-vucomiss-3.c: Likewise.
	* gcc.target/i386/avx-vucomiss-4.c: Likewise.
	* gcc.target/i386/avx-vucomiss-5.c: Likewise.
	* gcc.target/i386/avx-vucomiss-6.c: Likewise.
	* gcc.target/i386/avx-vunpckhpd-1.c: Likewise.
	* gcc.target/i386/avx-vunpckhpd-256-1.c: Likewise.
	* gcc.target/i386/avx-vunpckhps-1.c: Likewise.
	* gcc.target/i386/avx-vunpckhps-256-1.c: Likewise.
	* gcc.target/i386/avx-vunpcklpd-1.c: Likewise.
	* gcc.target/i386/avx-vunpcklpd-256-1.c: Likewise.
	* gcc.target/i386/avx-vunpcklps-1.c: Likewise.
	* gcc.target/i386/avx-vunpcklps-256-1.c: Likewise.
	* gcc.target/i386/avx-vxorpd-1.c: Likewise.
	* gcc.target/i386/avx-vxorpd-256-1.c: Likewise.
	* gcc.target/i386/avx-vxorps-1.c: Likewise.
	* gcc.target/i386/avx-vxorps-256-1.c: Likewise.
	* gcc.target/i386/avx-vzeroall-1.c: Likewise.
	* gcc.target/i386/avx-vzeroall-2.c: Likewise.
	* gcc.target/i386/avx-vzeroupper-1.c: Likewise.
	* gcc.target/i386/avx-vzeroupper-2.c: Likewise.
	* gcc.target/i386/m256-1.c: Likewise.
	* gcc.target/i386/m256-2.c: Likewise.
	* gcc.target/i386/m256-check.h: Likewise.
	* gcc.target/i386/sse2-addpd-1.c: Likewise.
	* gcc.target/i386/sse2-addsd-1.c: Likewise.
	* gcc.target/i386/sse2-andnpd-1.c: Likewise.
	* gcc.target/i386/sse2-andpd-1.c: Likewise.
	* gcc.target/i386/sse2-comisd-1.c: Likewise.
	* gcc.target/i386/sse2-comisd-2.c: Likewise.
	* gcc.target/i386/sse2-comisd-3.c: Likewise.
	* gcc.target/i386/sse2-comisd-4.c: Likewise.
	* gcc.target/i386/sse2-comisd-5.c: Likewise.
	* gcc.target/i386/sse2-comisd-6.c: Likewise.
	* gcc.target/i386/sse2-cvtdq2pd-1.c: Likewise.
	* gcc.target/i386/sse2-cvtdq2ps-1.c: Likewise.
	* gcc.target/i386/sse2-cvtpd2dq-1.c: Likewise.
	* gcc.target/i386/sse2-cvtpd2ps-1.c: Likewise.
	* gcc.target/i386/sse2-cvtps2dq-1.c: Likewise.
	* gcc.target/i386/sse2-cvtps2pd-1.c: Likewise.
	* gcc.target/i386/sse2-cvtsd2si-1.c: Likewise.
	* gcc.target/i386/sse2-cvtsd2si-2.c: Likewise.
	* gcc.target/i386/sse2-cvtsd2ss-1.c: Likewise.
	* gcc.target/i386/sse2-cvtsi2sd-1.c: Likewise.
	* gcc.target/i386/sse2-cvtsi2sd-2.c: Likewise.
	* gcc.target/i386/sse2-cvtss2sd-1.c: Likewise.
	* gcc.target/i386/sse2-cvttpd2dq-1.c: Likewise.
	* gcc.target/i386/sse2-cvttps2dq-1.c: Likewise.
	* gcc.target/i386/sse2-cvttsd2si-1.c: Likewise.
	* gcc.target/i386/sse2-cvttsd2si-2.c: Likewise.
	* gcc.target/i386/sse2-divpd-1.c: Likewise.
	* gcc.target/i386/sse2-divsd-1.c: Likewise.
	* gcc.target/i386/sse2-maxpd-1.c: Likewise.
	* gcc.target/i386/sse2-maxsd-1.c: Likewise.
	* gcc.target/i386/sse2-minpd-1.c: Likewise.
	* gcc.target/i386/sse2-minsd-1.c: Likewise.
	* gcc.target/i386/sse2-movapd-1.c: Likewise.
	* gcc.target/i386/sse2-movapd-2.c: Likewise.
	* gcc.target/i386/sse2-movd-1.c: Likewise.
	* gcc.target/i386/sse2-movd-2.c: Likewise.
	* gcc.target/i386/sse2-movdqa-1.c: Likewise.
	* gcc.target/i386/sse2-movdqa-2.c: Likewise.
	* gcc.target/i386/sse2-movdqu-1.c: Likewise.
	* gcc.target/i386/sse2-movdqu-2.c: Likewise.
	* gcc.target/i386/sse2-movhpd-1.c: Likewise.
	* gcc.target/i386/sse2-movhpd-2.c: Likewise.
	* gcc.target/i386/sse2-movlpd-1.c: Likewise.
	* gcc.target/i386/sse2-movlpd-2.c: Likewise.
	* gcc.target/i386/sse2-movmskpd-1.c: Likewise.
	* gcc.target/i386/sse2-movntdq-1.c: Likewise.
	* gcc.target/i386/sse2-movntpd-1.c: Likewise.
	* gcc.target/i386/sse2-movq-1.c: Likewise.
	* gcc.target/i386/sse2-movq-2.c: Likewise.
	* gcc.target/i386/sse2-movq-3.c: Likewise.
	* gcc.target/i386/sse2-movsd-1.c: Likewise.
	* gcc.target/i386/sse2-movsd-2.c: Likewise.
	* gcc.target/i386/sse2-movupd-1.c: Likewise.
	* gcc.target/i386/sse2-movupd-2.c: Likewise.
	* gcc.target/i386/sse2-mulpd-1.c: Likewise.
	* gcc.target/i386/sse2-mulsd-1.c: Likewise.
	* gcc.target/i386/sse2-orpd-1.c: Likewise.
	* gcc.target/i386/sse2-packssdw-1.c: Likewise.
	* gcc.target/i386/sse2-packsswb-1.c: Likewise.
	* gcc.target/i386/sse2-packuswb-1.c: Likewise.
	* gcc.target/i386/sse2-paddb-1.c: Likewise.
	* gcc.target/i386/sse2-paddd-1.c: Likewise.
	* gcc.target/i386/sse2-paddq-1.c: Likewise.
	* gcc.target/i386/sse2-paddsb-1.c: Likewise.
	* gcc.target/i386/sse2-paddsw-1.c: Likewise.
	* gcc.target/i386/sse2-paddusb-1.c: Likewise.
	* gcc.target/i386/sse2-paddusw-1.c: Likewise.
	* gcc.target/i386/sse2-paddw-1.c: Likewise.
	* gcc.target/i386/sse2-pand-1.c: Likewise.
	* gcc.target/i386/sse2-pandn-1.c: Likewise.
	* gcc.target/i386/sse2-pavgb-1.c: Likewise.
	* gcc.target/i386/sse2-pavgw-1.c: Likewise.
	* gcc.target/i386/sse2-pcmpeqb-1.c: Likewise.
	* gcc.target/i386/sse2-pcmpeqd-1.c: Likewise.
	* gcc.target/i386/sse2-pcmpeqw-1.c: Likewise.
	* gcc.target/i386/sse2-pcmpgtb-1.c: Likewise.
	* gcc.target/i386/sse2-pcmpgtd-1.c: Likewise.
	* gcc.target/i386/sse2-pcmpgtw-1.c: Likewise.
	* gcc.target/i386/sse2-pmaddwd-1.c: Likewise.
	* gcc.target/i386/sse2-pmaxsw-1.c: Likewise.
	* gcc.target/i386/sse2-pmaxub-1.c: Likewise.
	* gcc.target/i386/sse2-pminsw-1.c: Likewise.
	* gcc.target/i386/sse2-pminub-1.c: Likewise.
	* gcc.target/i386/sse2-pmovmskb-1.c: Likewise.
	* gcc.target/i386/sse2-pmulhuw-1.c: Likewise.
	* gcc.target/i386/sse2-pmulhw-1.c: Likewise.
	* gcc.target/i386/sse2-pmullw-1.c: Likewise.
	* gcc.target/i386/sse2-pmuludq-1.c: Likewise.
	* gcc.target/i386/sse2-por-1.c: Likewise.
	* gcc.target/i386/sse2-psadbw-1.c: Likewise.
	* gcc.target/i386/sse2-pshufd-1.c: Likewise.
	* gcc.target/i386/sse2-pshufhw-1.c: Likewise.
	* gcc.target/i386/sse2-pshuflw-1.c: Likewise.
	* gcc.target/i386/sse2-pslld-1.c: Likewise.
	* gcc.target/i386/sse2-pslld-2.c: Likewise.
	* gcc.target/i386/sse2-pslldq-1.c: Likewise.
	* gcc.target/i386/sse2-psllq-1.c: Likewise.
	* gcc.target/i386/sse2-psllq-2.c: Likewise.
	* gcc.target/i386/sse2-psllw-1.c: Likewise.
	* gcc.target/i386/sse2-psllw-2.c: Likewise.
	* gcc.target/i386/sse2-psrad-1.c: Likewise.
	* gcc.target/i386/sse2-psrad-2.c: Likewise.
	* gcc.target/i386/sse2-psraw-1.c: Likewise.
	* gcc.target/i386/sse2-psraw-2.c: Likewise.
	* gcc.target/i386/sse2-psrld-1.c: Likewise.
	* gcc.target/i386/sse2-psrld-2.c: Likewise.
	* gcc.target/i386/sse2-psrldq-1.c: Likewise.
	* gcc.target/i386/sse2-psrlq-1.c: Likewise.
	* gcc.target/i386/sse2-psrlq-2.c: Likewise.
	* gcc.target/i386/sse2-psrlw-1.c: Likewise.
	* gcc.target/i386/sse2-psrlw-2.c: Likewise.
	* gcc.target/i386/sse2-psubb-1.c: Likewise.
	* gcc.target/i386/sse2-psubd-1.c: Likewise.
	* gcc.target/i386/sse2-psubq-1.c: Likewise.
	* gcc.target/i386/sse2-psubsb-1.c: Likewise.
	* gcc.target/i386/sse2-psubsw-1.c: Likewise.
	* gcc.target/i386/sse2-psubw-1.c: Likewise.
	* gcc.target/i386/sse2-punpckhbw-1.c: Likewise.
	* gcc.target/i386/sse2-punpckhdq-1.c: Likewise.
	* gcc.target/i386/sse2-punpckhqdq-1.c: Likewise.
	* gcc.target/i386/sse2-punpckhwd-1.c: Likewise.
	* gcc.target/i386/sse2-punpcklbw-1.c: Likewise.
	* gcc.target/i386/sse2-punpckldq-1.c: Likewise.
	* gcc.target/i386/sse2-punpcklqdq-1.c: Likewise.
	* gcc.target/i386/sse2-punpcklwd-1.c: Likewise.
	* gcc.target/i386/sse2-pxor-1.c: Likewise.
	* gcc.target/i386/sse2-shufpd-1.c: Likewise.
	* gcc.target/i386/sse2-shufps-1.c: Likewise.
	* gcc.target/i386/sse2-sqrtpd-1.c: Likewise.
	* gcc.target/i386/sse2-subpd-1.c: Likewise.
	* gcc.target/i386/sse2-subsd-1.c: Likewise.
	* gcc.target/i386/sse2-ucomisd-1.c: Likewise.
	* gcc.target/i386/sse2-ucomisd-2.c: Likewise.
	* gcc.target/i386/sse2-ucomisd-3.c: Likewise.
	* gcc.target/i386/sse2-ucomisd-4.c: Likewise.
	* gcc.target/i386/sse2-ucomisd-5.c: Likewise.
	* gcc.target/i386/sse2-ucomisd-6.c: Likewise.
	* gcc.target/i386/sse2-unpckhpd-1.c: Likewise.
	* gcc.target/i386/sse2-unpcklpd-1.c: Likewise.
	* gcc.target/i386/sse2-xorpd-1.c: Likewise.
	* gcc.target/i386/sse-addps-1.c: Likewise.
	* gcc.target/i386/sse-addss-1.c: Likewise.
	* gcc.target/i386/sse-andnps-1.c: Likewise.
	* gcc.target/i386/sse-andps-1.c: Likewise.
	* gcc.target/i386/sse-comiss-1.c: Likewise.
	* gcc.target/i386/sse-comiss-2.c: Likewise.
	* gcc.target/i386/sse-comiss-3.c: Likewise.
	* gcc.target/i386/sse-comiss-4.c: Likewise.
	* gcc.target/i386/sse-comiss-5.c: Likewise.
	* gcc.target/i386/sse-comiss-6.c: Likewise.
	* gcc.target/i386/sse-cvtsi2ss-1.c: Likewise.
	* gcc.target/i386/sse-cvtsi2ss-2.c: Likewise.
	* gcc.target/i386/sse-cvtss2si-1.c: Likewise.
	* gcc.target/i386/sse-cvtss2si-2.c: Likewise.
	* gcc.target/i386/sse-cvttss2si-1.c: Likewise.
	* gcc.target/i386/sse-cvttss2si-2.c: Likewise.
	* gcc.target/i386/sse-divps-1.c: Likewise.
	* gcc.target/i386/sse-divss-1.c: Likewise.
	* gcc.target/i386/sse-maxps-1.c: Likewise.
	* gcc.target/i386/sse-maxss-1.c: Likewise.
	* gcc.target/i386/sse-minps-1.c: Likewise.
	* gcc.target/i386/sse-minss-1.c: Likewise.
	* gcc.target/i386/sse-movaps-1.c: Likewise.
	* gcc.target/i386/sse-movaps-2.c: Likewise.
	* gcc.target/i386/sse-movhlps-1.c: Likewise.
	* gcc.target/i386/sse-movhps-1.c: Likewise.
	* gcc.target/i386/sse-movhps-2.c: Likewise.
	* gcc.target/i386/sse-movlhps-1.c: Likewise.
	* gcc.target/i386/sse-movmskps-1.c: Likewise.
	* gcc.target/i386/sse-movntps-1.c: Likewise.
	* gcc.target/i386/sse-movss-1.c: Likewise.
	* gcc.target/i386/sse-movss-2.c: Likewise.
	* gcc.target/i386/sse-movss-3.c: Likewise.
	* gcc.target/i386/sse-movups-1.c: Likewise.
	* gcc.target/i386/sse-movups-2.c: Likewise.
	* gcc.target/i386/sse-mulps-1.c: Likewise.
	* gcc.target/i386/sse-mulss-1.c: Likewise.
	* gcc.target/i386/sse-orps-1.c: Likewise.
	* gcc.target/i386/sse-rcpps-1.c: Likewise.
	* gcc.target/i386/sse-rsqrtps-1.c: Likewise.
	* gcc.target/i386/sse-sqrtps-1.c: Likewise.
	* gcc.target/i386/sse-subps-1.c: Likewise.
	* gcc.target/i386/sse-subss-1.c: Likewise.
	* gcc.target/i386/sse-ucomiss-1.c: Likewise.
	* gcc.target/i386/sse-ucomiss-2.c: Likewise.
	* gcc.target/i386/sse-ucomiss-3.c: Likewise.
	* gcc.target/i386/sse-ucomiss-4.c: Likewise.
	* gcc.target/i386/sse-ucomiss-5.c: Likewise.
	* gcc.target/i386/sse-ucomiss-6.c: Likewise.
	* gcc.target/i386/sse-unpckhps-1.c: Likewise.
	* gcc.target/i386/sse-unpcklps-1.c: Likewise.
	* gcc.target/i386/sse-xorps-1.c: Likewise.
	* gcc.target/i386/vararg-10.c: Likewise.
	* gcc.target/i386/vararg-3.c: Likewise.
	* gcc.target/i386/vararg-4.c: Likewise.
	* gcc.target/i386/vararg-5.c: Likewise.
	* gcc.target/i386/vararg-6.c: Likewise.
	* gcc.target/i386/vararg-7.c: Likewise.
	* gcc.target/i386/vararg-8.c: Likewise.
	* gcc.target/i386/vararg-9.c: Likewise.
	* g++.dg/other/i386-5.C: Likewise.
	* g++.dg/other/i386-6.C: Likewise.

	* gcc.target/i386/aesdec.c (CHECK_H): New.
	(TEST): New.
	Include CHECK_H instead of "XXX-check.h" and run TEST
	instead of XXX_test.
	* gcc.target/i386/aesdeclast.c: Likewise.
	* gcc.target/i386/aesenc.c: Likewise.
	* gcc.target/i386/aesenclast.c: Likewise.
	* gcc.target/i386/aesimc.c: Likewise.
	* gcc.target/i386/aeskeygenassist.c: Likewise.
	* gcc.target/i386/sse3-addsubpd.c: Likewise.
	* gcc.target/i386/sse3-addsubps.c: Likewise.
	* gcc.target/i386/sse3-haddpd.c: Likewise.
	* gcc.target/i386/sse3-haddps.c: Likewise.
	* gcc.target/i386/sse3-hsubpd.c: Likewise.
	* gcc.target/i386/sse3-hsubps.c: Likewise.
	* gcc.target/i386/sse3-lddqu.c: Likewise.
	* gcc.target/i386/sse3-movddup.c: Likewise.
	* gcc.target/i386/sse3-movshdup.c: Likewise.
	* gcc.target/i386/sse3-movsldup.c: Likewise.
	* gcc.target/i386/sse4_1-blendpd.c: Likewise.
	* gcc.target/i386/sse4_1-blendps.c: Likewise.
	* gcc.target/i386/sse4_1-dppd-1.c: Likewise.
	* gcc.target/i386/sse4_1-dppd-2.c: Likewise.
	* gcc.target/i386/sse4_1-dpps-1.c: Likewise.
	* gcc.target/i386/sse4_1-dpps-2.c: Likewise.
	* gcc.target/i386/sse4_1-extractps.c: Likewise.
	* gcc.target/i386/sse4_1-insertps-1.c: Likewise.
	* gcc.target/i386/sse4_1-insertps-2.c: Likewise.
	* gcc.target/i386/sse4_1-movntdqa.c: Likewise.
	* gcc.target/i386/sse4_1-mpsadbw.c: Likewise.
	* gcc.target/i386/sse4_1-packusdw.c: Likewise.
	* gcc.target/i386/sse4_1-pblendvb.c: Likewise.
	* gcc.target/i386/sse4_1-pblendw.c: Likewise.
	* gcc.target/i386/sse4_1-pcmpeqq.c: Likewise.
	* gcc.target/i386/sse4_1-pextrb.c: Likewise.
	* gcc.target/i386/sse4_1-pextrd.c: Likewise.
	* gcc.target/i386/sse4_1-pextrq.c: Likewise.
	* gcc.target/i386/sse4_1-pextrw.c: Likewise.
	* gcc.target/i386/sse4_1-phminposuw.c: Likewise.
	* gcc.target/i386/sse4_1-pinsrb.c: Likewise.
	* gcc.target/i386/sse4_1-pinsrd.c: Likewise.
	* gcc.target/i386/sse4_1-pinsrq.c: Likewise.
	* gcc.target/i386/sse4_1-pmaxsb.c: Likewise.
	* gcc.target/i386/sse4_1-pmaxsd.c: Likewise.
	* gcc.target/i386/sse4_1-pmaxud.c: Likewise.
	* gcc.target/i386/sse4_1-pmaxuw.c: Likewise.
	* gcc.target/i386/sse4_1-pminsb.c: Likewise.
	* gcc.target/i386/sse4_1-pminsd.c: Likewise.
	* gcc.target/i386/sse4_1-pminud.c: Likewise.
	* gcc.target/i386/sse4_1-pminuw.c: Likewise.
	* gcc.target/i386/sse4_1-pmovsxbd.c: Likewise.
	* gcc.target/i386/sse4_1-pmovsxbq.c: Likewise.
	* gcc.target/i386/sse4_1-pmovsxbw.c: Likewise.
	* gcc.target/i386/sse4_1-pmovsxdq.c: Likewise.
	* gcc.target/i386/sse4_1-pmovsxwd.c: Likewise.
	* gcc.target/i386/sse4_1-pmovsxwq.c: Likewise.
	* gcc.target/i386/sse4_1-pmovzxbd.c: Likewise.
	* gcc.target/i386/sse4_1-pmovzxbq.c: Likewise.
	* gcc.target/i386/sse4_1-pmovzxbw.c: Likewise.
	* gcc.target/i386/sse4_1-pmovzxdq.c: Likewise.
	* gcc.target/i386/sse4_1-pmovzxwd.c: Likewise.
	* gcc.target/i386/sse4_1-pmovzxwq.c: Likewise.
	* gcc.target/i386/sse4_1-pmuldq.c: Likewise.
	* gcc.target/i386/sse4_1-pmulld.c: Likewise.
	* gcc.target/i386/sse4_1-ptest-1.c: Likewise.
	* gcc.target/i386/sse4_1-ptest-2.c: Likewise.
	* gcc.target/i386/sse4_1-ptest-3.c: Likewise.
	* gcc.target/i386/sse4_1-roundpd-1.c: Likewise.
	* gcc.target/i386/sse4_1-roundpd-2.c: Likewise.
	* gcc.target/i386/sse4_1-roundpd-3.c: Likewise.
	* gcc.target/i386/sse4_2-pcmpestri-1.c: Likewise.
	* gcc.target/i386/sse4_2-pcmpestri-2.c: Likewise.
	* gcc.target/i386/sse4_2-pcmpestrm-1.c: Likewise.
	* gcc.target/i386/sse4_2-pcmpestrm-2.c: Likewise.
	* gcc.target/i386/sse4_2-pcmpgtq.c: Likewise.
	* gcc.target/i386/sse4_2-pcmpistri-1.c: Likewise.
	* gcc.target/i386/sse4_2-pcmpistri-2.c: Likewise.
	* gcc.target/i386/sse4_2-pcmpistrm-1.c: Likewise.
	* gcc.target/i386/sse4_2-pcmpistrm-2.c: Likewise.
	* gcc.target/i386/ssse3-pabsb.c: Likewise.  Don't run MMX
	tests for AVX.
	* gcc.target/i386/ssse3-pabsd.c: Likewise.
	* gcc.target/i386/ssse3-pabsw.c: Likewise.
	* gcc.target/i386/ssse3-palignr.c: Likewise.
	* gcc.target/i386/ssse3-phaddd.c: Likewise.
	* gcc.target/i386/ssse3-phaddsw.c: Likewise.
	* gcc.target/i386/ssse3-phaddw.c: Likewise.
	* gcc.target/i386/ssse3-phsubd.c: Likewise.
	* gcc.target/i386/ssse3-phsubsw.c: Likewise.
	* gcc.target/i386/ssse3-phsubw.c: Likewise.
	* gcc.target/i386/ssse3-pmaddubsw.c: Likewise.
	* gcc.target/i386/ssse3-pmulhrsw.c: Likewise.
	* gcc.target/i386/ssse3-pshufb.c: Likewise.
	* gcc.target/i386/ssse3-psignb.c: Likewise.
	* gcc.target/i386/ssse3-psignd.c: Likewise.
	* gcc.target/i386/ssse3-psignw.c: Likewise.

	* gcc.target/i386/i386.exp (check_effective_target_vaes): New.

	* gcc.target/i386/m128-check.h: Include <xmmintrin.h>.  Include
	<emmintrin.h> for SSE2.
	(union128i_b): Defined only for SSE2.
	(union128i_w): Likewise.
	(union128i_d): Likewise.
	(union128i_q): Likewise.
	(union128d): Likewise.
	(check_union128i_b): Likewise.
	(check_union128i_w): Likewise.
	(check_union128i_d): Likewise.
	(check_union128i_q): Likewise.
	(check_union128d): Likewise.
	(union128i_ub): New.
	(union128i_uw): Likewise.
	(check_union128i_ub): Likewise.
	(check_union128i_uw): Likewise.
	(ESP_FLOAT): Likewise.
	(ESP_DOUBLE): Likewise.
	(CHECK_ARRAY): Likewise.
	(checkVd): Likewise.
	(checkVf): Likewise.
	(ieee754_float): Likewise.
	(ieee754_double): Likewise.

	* gcc.target/i386/sse-check.h: Include "m128-check.h".

	* gcc.target/x86_64/abi/abi-x86_64.exp: Replace asm-support.s
	with asm-support.S.

	* gcc.target/x86_64/abi/asm-support.s: Renamed to ...
	* gcc.target/x86_64/abi/asm-support.S: This.  Add
	".sse_check none" if __AVX__ is defined.

	* lib/target-supports.exp (check_effective_target_avx): New.

Co-Authored-By: H.J. Lu <hongjiu.lu@intel.com>
Co-Authored-By: Joey Ye <joey.ye@intel.com>

From-SVN: r139730
parent 1e053dfe
/* Test that {,x,e,p,t,s,w,g,a,b}mmintrin.h, mm3dnow.h and mm_malloc.h are
usable with -O -fkeep-inline-functions. */
/* { dg-do compile { target i?86-*-* x86_64-*-* } } */
/* { dg-options "-O -fkeep-inline-functions -march=k8 -m3dnow -maes -mpclmul -mavx -msse5" } */
#include <wmmintrin.h>
#include <bmmintrin.h>
#include <gmmintrin.h>
#include <mm3dnow.h>
/* Test that {,x,e,p,t,s,w,g,a,b}mmintrin.h, mm3dnow.h and mm_malloc.h are
usable with -O -pedantic-errors. */
/* { dg-do compile { target i?86-*-* x86_64-*-* } } */
/* { dg-options "-O -pedantic-errors -march=k8 -m3dnow -mavx -msse5 -maes -mpclmul" } */
#include <wmmintrin.h>
#include <bmmintrin.h>
#include <gmmintrin.h>
#include <mm3dnow.h>
int dummy;
/* { dg-skip-if "test AVX vector" { ! { i?86-*-* x86_64-*-* } } } */
/* { dg-require-effective-target avx } */
/* Test compatibility of vector types: layout between separately-compiled
modules, parameter passing, and function return. This test uses
vectors of integer values. */
#include "cpuid.h"
extern void vector_1_x (void);
extern void exit (int);
int fails;
int
main ()
{
unsigned int eax, ebx, ecx, edx;
if (!__get_cpuid (1, &eax, &ebx, &ecx, &edx))
return 0;
/* Run AVX vector test only if host has AVX support. */
if (ecx & bit_AVX)
vector_1_x ();
exit (0);
}
/* { dg-options "-w -mno-mmx -mavx" } */
#include "vector-1_x.c"
/* { dg-options "-w -mno-mmx -mavx" } */
#include "vector-1_y.c"
/* { dg-skip-if "test AVX support" { ! { i?86-*-* x86_64-*-* } } } */
/* { dg-require-effective-target avx } */
/* Test compatibility of vector types: layout between separately-compiled
modules, parameter passing, and function return. This test uses
vectors of floating points values. */
#include "cpuid.h"
extern void vector_2_x (void);
extern void exit (int);
int fails;
int
main ()
{
unsigned int eax, ebx, ecx, edx;
if (!__get_cpuid (1, &eax, &ebx, &ecx, &edx))
return 0;
/* Run AVX vector test only if host has AVX support. */
if (ecx & bit_AVX)
vector_2_x ();
exit (0);
}
/* { dg-options "-w -mno-mmx -mavx" } */
#include "vector-2_x.c"
/* { dg-options "-w -mno-mmx -mavx" } */
#include "vector-2_y.c"
#ifdef DEBUG
#include <stdio.h>
#endif
#include <stdlib.h>
#include "cpuid.h"
static void aes_avx_test (void);
int
main ()
{
unsigned int eax, ebx, ecx, edx;
if (!__get_cpuid (1, &eax, &ebx, &ecx, &edx))
return 0;
/* Run AES + AVX test only if host has AES + AVX support. */
if ((ecx & (bit_AVX | bit_AES)) == (bit_AVX | bit_AES))
{
aes_avx_test ();
#ifdef DEBUG
printf ("PASSED\n");
#endif
}
#ifdef DEBUG
else
printf ("SKIPPED\n");
#endif
return 0;
}
...@@ -2,11 +2,19 @@ ...@@ -2,11 +2,19 @@
/* { dg-require-effective-target aes } */ /* { dg-require-effective-target aes } */
/* { dg-options "-O2 -maes" } */ /* { dg-options "-O2 -maes" } */
#ifndef CHECK_H
#define CHECK_H "aes-check.h"
#endif
#ifndef TEST
#define TEST aes_test
#endif
#include CHECK_H
#include <wmmintrin.h> #include <wmmintrin.h>
#include <string.h> #include <string.h>
#include "aes-check.h"
extern void abort (void); extern void abort (void);
#define NUM 1024 #define NUM 1024
...@@ -35,7 +43,7 @@ init_data (__m128i *s1, __m128i *s2, __m128i *d) ...@@ -35,7 +43,7 @@ init_data (__m128i *s1, __m128i *s2, __m128i *d)
} }
static void static void
aes_test (void) TEST (void)
{ {
int i; int i;
......
...@@ -2,11 +2,19 @@ ...@@ -2,11 +2,19 @@
/* { dg-require-effective-target aes } */ /* { dg-require-effective-target aes } */
/* { dg-options "-O2 -maes" } */ /* { dg-options "-O2 -maes" } */
#ifndef CHECK_H
#define CHECK_H "aes-check.h"
#endif
#ifndef TEST
#define TEST aes_test
#endif
#include CHECK_H
#include <wmmintrin.h> #include <wmmintrin.h>
#include <string.h> #include <string.h>
#include "aes-check.h"
extern void abort (void); extern void abort (void);
#define NUM 1024 #define NUM 1024
...@@ -37,7 +45,7 @@ init_data (__m128i *s1, __m128i *s2, __m128i *d) ...@@ -37,7 +45,7 @@ init_data (__m128i *s1, __m128i *s2, __m128i *d)
} }
static void static void
aes_test (void) TEST (void)
{ {
int i; int i;
......
...@@ -2,11 +2,19 @@ ...@@ -2,11 +2,19 @@
/* { dg-require-effective-target aes } */ /* { dg-require-effective-target aes } */
/* { dg-options "-O2 -maes" } */ /* { dg-options "-O2 -maes" } */
#ifndef CHECK_H
#define CHECK_H "aes-check.h"
#endif
#ifndef TEST
#define TEST aes_test
#endif
#include CHECK_H
#include <wmmintrin.h> #include <wmmintrin.h>
#include <string.h> #include <string.h>
#include "aes-check.h"
extern void abort (void); extern void abort (void);
#define NUM 1024 #define NUM 1024
...@@ -36,7 +44,7 @@ init_data (__m128i *s1, __m128i *s2, __m128i *d) ...@@ -36,7 +44,7 @@ init_data (__m128i *s1, __m128i *s2, __m128i *d)
} }
static void static void
aes_test (void) TEST (void)
{ {
int i; int i;
......
...@@ -2,11 +2,19 @@ ...@@ -2,11 +2,19 @@
/* { dg-require-effective-target aes } */ /* { dg-require-effective-target aes } */
/* { dg-options "-O2 -maes" } */ /* { dg-options "-O2 -maes" } */
#ifndef CHECK_H
#define CHECK_H "aes-check.h"
#endif
#ifndef TEST
#define TEST aes_test
#endif
#include CHECK_H
#include <wmmintrin.h> #include <wmmintrin.h>
#include <string.h> #include <string.h>
#include "aes-check.h"
extern void abort (void); extern void abort (void);
#define NUM 1024 #define NUM 1024
...@@ -36,7 +44,7 @@ init_data (__m128i *s1, __m128i *s2, __m128i *d) ...@@ -36,7 +44,7 @@ init_data (__m128i *s1, __m128i *s2, __m128i *d)
} }
static void static void
aes_test (void) TEST (void)
{ {
int i; int i;
......
...@@ -2,11 +2,19 @@ ...@@ -2,11 +2,19 @@
/* { dg-require-effective-target aes } */ /* { dg-require-effective-target aes } */
/* { dg-options "-O2 -maes" } */ /* { dg-options "-O2 -maes" } */
#ifndef CHECK_H
#define CHECK_H "aes-check.h"
#endif
#ifndef TEST
#define TEST aes_test
#endif
#include CHECK_H
#include <wmmintrin.h> #include <wmmintrin.h>
#include <string.h> #include <string.h>
#include "aes-check.h"
extern void abort (void); extern void abort (void);
#define NUM 1024 #define NUM 1024
...@@ -34,7 +42,7 @@ init_data (__m128i *s1, __m128i *d) ...@@ -34,7 +42,7 @@ init_data (__m128i *s1, __m128i *d)
} }
static void static void
aes_test (void) TEST (void)
{ {
int i; int i;
......
...@@ -2,11 +2,19 @@ ...@@ -2,11 +2,19 @@
/* { dg-require-effective-target aes } */ /* { dg-require-effective-target aes } */
/* { dg-options "-O2 -maes" } */ /* { dg-options "-O2 -maes" } */
#ifndef CHECK_H
#define CHECK_H "aes-check.h"
#endif
#ifndef TEST
#define TEST aes_test
#endif
#include CHECK_H
#include <wmmintrin.h> #include <wmmintrin.h>
#include <string.h> #include <string.h>
#include "aes-check.h"
extern void abort (void); extern void abort (void);
#define NUM 1024 #define NUM 1024
...@@ -34,7 +42,7 @@ init_data (__m128i *s1, __m128i *d) ...@@ -34,7 +42,7 @@ init_data (__m128i *s1, __m128i *d)
} }
static void static void
aes_test (void) TEST (void)
{ {
int i; int i;
......
/* { dg-do compile } */
/* { dg-options "-O2 -Werror-implicit-function-declaration -march=k8 -m3dnow -mavx -msse5 -maes -mpclmul" } */
#include <mm_malloc.h>
/* Test that the intrinsics compile with optimization. All of them are
defined as inline functions in {,x,e,p,t,s,w,g,a,b}mmintrin.h and
mm3dnow.h that reference the proper builtin functions. Defining away
"extern" and "__inline" results in all of them being compiled as proper
functions. */
#define extern
#define __inline
/* Following intrinsics require immediate arguments. */
/* ammintrin.h */
#define __builtin_ia32_extrqi(X, I, L) __builtin_ia32_extrqi(X, 1, 1)
#define __builtin_ia32_insertqi(X, Y, I, L) __builtin_ia32_insertqi(X, Y, 1, 1)
/* gmmintrin.h */
#define __builtin_ia32_blendpd256(X, Y, M) __builtin_ia32_blendpd256(X, Y, 1)
#define __builtin_ia32_blendps256(X, Y, M) __builtin_ia32_blendps256(X, Y, 1)
#define __builtin_ia32_dpps256(X, Y, M) __builtin_ia32_dpps256(X, Y, 1)
#define __builtin_ia32_shufpd256(X, Y, M) __builtin_ia32_shufpd256(X, Y, 1)
#define __builtin_ia32_shufps256(X, Y, M) __builtin_ia32_shufps256(X, Y, 1)
#define __builtin_ia32_cmpsd(X, Y, O) __builtin_ia32_cmpsd(X, Y, 1)
#define __builtin_ia32_cmpss(X, Y, O) __builtin_ia32_cmpss(X, Y, 1)
#define __builtin_ia32_cmppd(X, Y, O) __builtin_ia32_cmppd(X, Y, 1)
#define __builtin_ia32_cmpps(X, Y, O) __builtin_ia32_cmpps(X, Y, 1)
#define __builtin_ia32_cmppd256(X, Y, O) __builtin_ia32_cmppd256(X, Y, 1)
#define __builtin_ia32_cmpps256(X, Y, O) __builtin_ia32_cmpps256(X, Y, 1)
#define __builtin_ia32_vextractf128_pd256(X, N) __builtin_ia32_vextractf128_pd256(X, 1)
#define __builtin_ia32_vextractf128_ps256(X, N) __builtin_ia32_vextractf128_ps256(X, 1)
#define __builtin_ia32_vextractf128_si256(X, N) __builtin_ia32_vextractf128_si256(X, 1)
#define __builtin_ia32_vpermilpd(X, N) __builtin_ia32_vpermilpd(X, 1)
#define __builtin_ia32_vpermilpd256(X, N) __builtin_ia32_vpermilpd256(X, 1)
#define __builtin_ia32_vpermilps(X, N) __builtin_ia32_vpermilps(X, 1)
#define __builtin_ia32_vpermilps256(X, N) __builtin_ia32_vpermilps256(X, 1)
#define __builtin_ia32_vpermil2pd(X, Y, C, I) __builtin_ia32_vpermil2pd(X, Y, C, 1)
#define __builtin_ia32_vpermil2pd256(X, Y, C, I) __builtin_ia32_vpermil2pd256(X, Y, C, 1)
#define __builtin_ia32_vpermil2ps(X, Y, C, I) __builtin_ia32_vpermil2ps(X, Y, C, 1)
#define __builtin_ia32_vpermil2ps256(X, Y, C, I) __builtin_ia32_vpermil2ps256(X, Y, C, 1)
#define __builtin_ia32_vperm2f128_pd256(X, Y, C) __builtin_ia32_vperm2f128_pd256(X, Y, 1)
#define __builtin_ia32_vperm2f128_ps256(X, Y, C) __builtin_ia32_vperm2f128_ps256(X, Y, 1)
#define __builtin_ia32_vperm2f128_si256(X, Y, C) __builtin_ia32_vperm2f128_si256(X, Y, 1)
#define __builtin_ia32_vinsertf128_pd256(X, Y, C) __builtin_ia32_vinsertf128_pd256(X, Y, 1)
#define __builtin_ia32_vinsertf128_ps256(X, Y, C) __builtin_ia32_vinsertf128_ps256(X, Y, 1)
#define __builtin_ia32_vinsertf128_si256(X, Y, C) __builtin_ia32_vinsertf128_si256(X, Y, 1)
#define __builtin_ia32_roundpd256(V, M) __builtin_ia32_roundpd256(V, 1)
#define __builtin_ia32_roundps256(V, M) __builtin_ia32_roundps256(V, 1)
/* wmmintrin.h */
#define __builtin_ia32_aeskeygenassist128(X, C) __builtin_ia32_aeskeygenassist128(X, 1)
#define __builtin_ia32_pclmulqdq128(X, Y, I) __builtin_ia32_pclmulqdq128(X, Y, 1)
/* mmintrin-common.h */
#define __builtin_ia32_roundpd(V, M) __builtin_ia32_roundpd(V, 1)
#define __builtin_ia32_roundsd(D, V, M) __builtin_ia32_roundsd(D, V, 1)
#define __builtin_ia32_roundps(V, M) __builtin_ia32_roundps(V, 1)
#define __builtin_ia32_roundss(D, V, M) __builtin_ia32_roundss(D, V, 1)
/* smmintrin.h */
#define __builtin_ia32_pblendw128(X, Y, M) __builtin_ia32_pblendw128 (X, Y, 1)
#define __builtin_ia32_blendps(X, Y, M) __builtin_ia32_blendps(X, Y, 1)
#define __builtin_ia32_blendpd(X, Y, M) __builtin_ia32_blendpd(X, Y, 1)
#define __builtin_ia32_dpps(X, Y, M) __builtin_ia32_dpps(X, Y, 1)
#define __builtin_ia32_dppd(X, Y, M) __builtin_ia32_dppd(X, Y, 1)
#define __builtin_ia32_insertps128(D, S, N) __builtin_ia32_insertps128(D, S, 1)
#define __builtin_ia32_vec_ext_v4sf(X, N) __builtin_ia32_vec_ext_v4sf(X, 1)
#define __builtin_ia32_vec_set_v16qi(D, S, N) __builtin_ia32_vec_set_v16qi(D, S, 1)
#define __builtin_ia32_vec_set_v4si(D, S, N) __builtin_ia32_vec_set_v4si(D, S, 1)
#define __builtin_ia32_vec_set_v2di(D, S, N) __builtin_ia32_vec_set_v2di(D, S, 1)
#define __builtin_ia32_vec_ext_v16qi(X, N) __builtin_ia32_vec_ext_v16qi(X, 1)
#define __builtin_ia32_vec_ext_v4si(X, N) __builtin_ia32_vec_ext_v4si(X, 1)
#define __builtin_ia32_vec_ext_v2di(X, N) __builtin_ia32_vec_ext_v2di(X, 1)
#define __builtin_ia32_mpsadbw128(X, Y, M) __builtin_ia32_mpsadbw128(X, Y, 1)
#define __builtin_ia32_pcmpistrm128(X, Y, M) \
__builtin_ia32_pcmpistrm128(X, Y, 1)
#define __builtin_ia32_pcmpistri128(X, Y, M) \
__builtin_ia32_pcmpistri128(X, Y, 1)
#define __builtin_ia32_pcmpestrm128(X, LX, Y, LY, M) \
__builtin_ia32_pcmpestrm128(X, LX, Y, LY, 1)
#define __builtin_ia32_pcmpestri128(X, LX, Y, LY, M) \
__builtin_ia32_pcmpestri128(X, LX, Y, LY, 1)
#define __builtin_ia32_pcmpistria128(X, Y, M) \
__builtin_ia32_pcmpistria128(X, Y, 1)
#define __builtin_ia32_pcmpistric128(X, Y, M) \
__builtin_ia32_pcmpistric128(X, Y, 1)
#define __builtin_ia32_pcmpistrio128(X, Y, M) \
__builtin_ia32_pcmpistrio128(X, Y, 1)
#define __builtin_ia32_pcmpistris128(X, Y, M) \
__builtin_ia32_pcmpistris128(X, Y, 1)
#define __builtin_ia32_pcmpistriz128(X, Y, M) \
__builtin_ia32_pcmpistriz128(X, Y, 1)
#define __builtin_ia32_pcmpestria128(X, LX, Y, LY, M) \
__builtin_ia32_pcmpestria128(X, LX, Y, LY, 1)
#define __builtin_ia32_pcmpestric128(X, LX, Y, LY, M) \
__builtin_ia32_pcmpestric128(X, LX, Y, LY, 1)
#define __builtin_ia32_pcmpestrio128(X, LX, Y, LY, M) \
__builtin_ia32_pcmpestrio128(X, LX, Y, LY, 1)
#define __builtin_ia32_pcmpestris128(X, LX, Y, LY, M) \
__builtin_ia32_pcmpestris128(X, LX, Y, LY, 1)
#define __builtin_ia32_pcmpestriz128(X, LX, Y, LY, M) \
__builtin_ia32_pcmpestriz128(X, LX, Y, LY, 1)
/* tmmintrin.h */
#define __builtin_ia32_palignr128(X, Y, N) __builtin_ia32_palignr128(X, Y, 8)
#define __builtin_ia32_palignr(X, Y, N) __builtin_ia32_palignr(X, Y, 8)
/* emmintrin.h */
#define __builtin_ia32_psrldqi128(A, B) __builtin_ia32_psrldqi128(A, 8)
#define __builtin_ia32_pslldqi128(A, B) __builtin_ia32_pslldqi128(A, 8)
#define __builtin_ia32_pshufhw(A, N) __builtin_ia32_pshufhw(A, 0)
#define __builtin_ia32_pshuflw(A, N) __builtin_ia32_pshuflw(A, 0)
#define __builtin_ia32_pshufd(A, N) __builtin_ia32_pshufd(A, 0)
#define __builtin_ia32_vec_set_v8hi(A, D, N) \
__builtin_ia32_vec_set_v8hi(A, D, 0)
#define __builtin_ia32_vec_ext_v8hi(A, N) __builtin_ia32_vec_ext_v8hi(A, 0)
#define __builtin_ia32_shufpd(A, B, N) __builtin_ia32_shufpd(A, B, 0)
/* xmmintrin.h */
#define __builtin_prefetch(P, A, I) __builtin_prefetch(P, A, _MM_HINT_NTA)
#define __builtin_ia32_pshufw(A, N) __builtin_ia32_pshufw(A, 0)
#define __builtin_ia32_vec_set_v4hi(A, D, N) \
__builtin_ia32_vec_set_v4hi(A, D, 0)
#define __builtin_ia32_vec_ext_v4hi(A, N) __builtin_ia32_vec_ext_v4hi(A, 0)
#define __builtin_ia32_shufps(A, B, N) __builtin_ia32_shufps(A, B, 0)
/* bmmintrin.h */
#define __builtin_ia32_protbi(A, B) __builtin_ia32_protbi(A,1)
#define __builtin_ia32_protwi(A, B) __builtin_ia32_protwi(A,1)
#define __builtin_ia32_protdi(A, B) __builtin_ia32_protdi(A,1)
#define __builtin_ia32_protqi(A, B) __builtin_ia32_protqi(A,1)
#include <wmmintrin.h>
#include <bmmintrin.h>
#include <gmmintrin.h>
#include <mm3dnow.h>
/* { dg-do compile } */
/* { dg-options "-O0 -Werror-implicit-function-declaration -march=k8 -m3dnow -mavx -msse5 -maes -mpclmul" } */
#include <mm_malloc.h>
/* Test that the intrinsics compile without optimization. All of them are
defined as inline functions in {,x,e,p,t,s,w,g,a,b}mmintrin.h and
mm3dnow.h that reference the proper builtin functions. Defining away
"extern" and "__inline" results in all of them being compiled as proper
functions. */
#define extern
#define __inline
#include <wmmintrin.h>
#include <bmmintrin.h>
#include <gmmintrin.h>
#include <mm3dnow.h>
#define _CONCAT(x,y) x ## y
#define test_1(func, type, op1_type, imm) \
type _CONCAT(_,func) (op1_type A, int const I) \
{ return func (A, imm); }
#define test_1x(func, type, op1_type, imm1, imm2) \
type _CONCAT(_,func) (op1_type A, int const I, int const L) \
{ return func (A, imm1, imm2); }
#define test_2(func, type, op1_type, op2_type, imm) \
type _CONCAT(_,func) (op1_type A, op2_type B, int const I) \
{ return func (A, B, imm); }
#define test_2x(func, type, op1_type, op2_type, imm1, imm2) \
type _CONCAT(_,func) (op1_type A, op2_type B, int const I, int const L) \
{ return func (A, B, imm1, imm2); }
#define test_3(func, type, op1_type, op2_type, op3_type, imm) \
type _CONCAT(_,func) (op1_type A, op2_type B, \
op3_type C, int const I) \
{ return func (A, B, C, imm); }
#define test_4(func, type, op1_type, op2_type, op3_type, op4_type, imm) \
type _CONCAT(_,func) (op1_type A, op2_type B, \
op3_type C, op4_type D, int const I) \
{ return func (A, B, C, D, imm); }
/* Following intrinsics require immediate arguments. They
are defined as macros for non-optimized compilations. */
/* ammintrin.h */
test_1x (_mm_extracti_si64, __m128i, __m128i, 1, 1)
test_2x (_mm_inserti_si64, __m128i, __m128i, __m128i, 1, 1)
/* gmmintrin.h */
test_2 (_mm256_blend_pd, __m256d, __m256d, __m256d, 1)
test_2 (_mm256_blend_ps, __m256, __m256, __m256, 1)
test_2 (_mm256_dp_ps, __m256, __m256, __m256, 1)
test_2 (_mm256_shuffle_pd, __m256d, __m256d, __m256d, 1)
test_2 (_mm256_shuffle_ps, __m256, __m256, __m256, 1)
test_2 (_mm_cmp_sd, __m128d, __m128d, __m128d, 1)
test_2 (_mm_cmp_ss, __m128, __m128, __m128, 1)
test_2 (_mm_cmp_pd, __m128d, __m128d, __m128d, 1)
test_2 (_mm_cmp_ps, __m128, __m128, __m128, 1)
test_2 (_mm256_cmp_pd, __m256d, __m256d, __m256d, 1)
test_2 (_mm256_cmp_ps, __m256, __m256, __m256, 1)
test_1 (_mm256_extractf128_pd, __m128d, __m256d, 1)
test_1 (_mm256_extractf128_ps, __m128, __m256, 1)
test_1 (_mm256_extractf128_si256, __m128i, __m256i, 1)
test_1 (_mm256_extract_epi8, int, __m256i, 20)
test_1 (_mm256_extract_epi16, int, __m256i, 13)
test_1 (_mm256_extract_epi32, int, __m256i, 6)
#ifdef __x86_64__
test_1 (_mm256_extract_epi64, long long, __m256i, 2)
#endif
test_1 (_mm_permute_pd, __m128d, __m128d, 1)
test_1 (_mm256_permute_pd, __m256d, __m256d, 1)
test_1 (_mm_permute_ps, __m128, __m128, 1)
test_1 (_mm256_permute_ps, __m256, __m256, 1)
test_3 (_mm_permute2_pd, __m128d, __m128d, __m128d, __m128d, 1)
test_3 (_mm256_permute2_pd, __m256d, __m256d, __m256d, __m256d, 1)
test_3 (_mm_permute2_ps, __m128, __m128, __m128, __m128, 1)
test_3 (_mm256_permute2_ps, __m256, __m256, __m256, __m256, 1)
test_2 (_mm256_permute2f128_pd, __m256d, __m256d, __m256d, 1)
test_2 (_mm256_permute2f128_ps, __m256, __m256, __m256, 1)
test_2 (_mm256_permute2f128_si256, __m256i, __m256i, __m256i, 1)
test_2 (_mm256_insertf128_pd, __m256d, __m256d, __m128d, 1)
test_2 (_mm256_insertf128_ps, __m256, __m256, __m128, 1)
test_2 (_mm256_insertf128_si256, __m256i, __m256i, __m128i, 1)
test_2 (_mm256_insert_epi8, __m256i, __m256i, int, 30)
test_2 (_mm256_insert_epi16, __m256i, __m256i, int, 7)
test_2 (_mm256_insert_epi32, __m256i, __m256i, int, 3)
#ifdef __x86_64__
test_2 (_mm256_insert_epi64, __m256i, __m256i, long long, 1)
#endif
test_1 (_mm256_round_pd, __m256d, __m256d, 1)
test_1 (_mm256_round_ps, __m256, __m256, 1)
/* wmmintrin.h */
test_1 (_mm_aeskeygenassist_si128, __m128i, __m128i, 1)
test_2 (_mm_clmulepi64_si128, __m128i, __m128i, __m128i, 1)
/* mmintrin-common.h */
test_1 (_mm_round_pd, __m128d, __m128d, 1)
test_1 (_mm_round_ps, __m128, __m128, 1)
test_2 (_mm_round_sd, __m128d, __m128d, __m128d, 1)
test_2 (_mm_round_ss, __m128, __m128, __m128, 1)
/* smmintrin.h */
test_2 (_mm_blend_epi16, __m128i, __m128i, __m128i, 1)
test_2 (_mm_blend_ps, __m128, __m128, __m128, 1)
test_2 (_mm_blend_pd, __m128d, __m128d, __m128d, 1)
test_2 (_mm_dp_ps, __m128, __m128, __m128, 1)
test_2 (_mm_dp_pd, __m128d, __m128d, __m128d, 1)
test_2 (_mm_insert_ps, __m128, __m128, __m128, 1)
test_1 (_mm_extract_ps, int, __m128, 1)
test_2 (_mm_insert_epi8, __m128i, __m128i, int, 1)
test_2 (_mm_insert_epi32, __m128i, __m128i, int, 1)
#ifdef __x86_64__
test_2 (_mm_insert_epi64, __m128i, __m128i, long long, 1)
#endif
test_1 (_mm_extract_epi8, int, __m128i, 1)
test_1 (_mm_extract_epi32, int, __m128i, 1)
#ifdef __x86_64__
test_1 (_mm_extract_epi64, long long, __m128i, 1)
#endif
test_2 (_mm_mpsadbw_epu8, __m128i, __m128i, __m128i, 1)
test_2 (_mm_cmpistrm, __m128i, __m128i, __m128i, 1)
test_2 (_mm_cmpistri, int, __m128i, __m128i, 1)
test_4 (_mm_cmpestrm, __m128i, __m128i, int, __m128i, int, 1)
test_4 (_mm_cmpestri, int, __m128i, int, __m128i, int, 1)
test_2 (_mm_cmpistra, int, __m128i, __m128i, 1)
test_2 (_mm_cmpistrc, int, __m128i, __m128i, 1)
test_2 (_mm_cmpistro, int, __m128i, __m128i, 1)
test_2 (_mm_cmpistrs, int, __m128i, __m128i, 1)
test_2 (_mm_cmpistrz, int, __m128i, __m128i, 1)
test_4 (_mm_cmpestra, int, __m128i, int, __m128i, int, 1)
test_4 (_mm_cmpestrc, int, __m128i, int, __m128i, int, 1)
test_4 (_mm_cmpestro, int, __m128i, int, __m128i, int, 1)
test_4 (_mm_cmpestrs, int, __m128i, int, __m128i, int, 1)
test_4 (_mm_cmpestrz, int, __m128i, int, __m128i, int, 1)
/* tmmintrin.h */
test_2 (_mm_alignr_epi8, __m128i, __m128i, __m128i, 1)
test_2 (_mm_alignr_pi8, __m64, __m64, __m64, 1)
/* emmintrin.h */
test_2 (_mm_shuffle_pd, __m128d, __m128d, __m128d, 1)
test_1 (_mm_srli_si128, __m128i, __m128i, 1)
test_1 (_mm_slli_si128, __m128i, __m128i, 1)
test_1 (_mm_extract_epi16, int, __m128i, 1)
test_2 (_mm_insert_epi16, __m128i, __m128i, int, 1)
test_1 (_mm_shufflehi_epi16, __m128i, __m128i, 1)
test_1 (_mm_shufflelo_epi16, __m128i, __m128i, 1)
test_1 (_mm_shuffle_epi32, __m128i, __m128i, 1)
/* xmmintrin.h */
test_2 (_mm_shuffle_ps, __m128, __m128, __m128, 1)
test_1 (_mm_extract_pi16, int, __m64, 1)
test_1 (_m_pextrw, int, __m64, 1)
test_2 (_mm_insert_pi16, __m64, __m64, int, 1)
test_2 (_m_pinsrw, __m64, __m64, int, 1)
test_1 (_mm_shuffle_pi16, __m64, __m64, 1)
test_1 (_m_pshufw, __m64, __m64, 1)
test_1 (_mm_prefetch, void, void *, _MM_HINT_NTA)
/* bmmintrin.h */
test_1 (_mm_roti_epi8, __m128i, __m128i, 1)
test_1 (_mm_roti_epi16, __m128i, __m128i, 1)
test_1 (_mm_roti_epi32, __m128i, __m128i, 1)
test_1 (_mm_roti_epi64, __m128i, __m128i, 1)
/* { dg-do compile } */
/* { dg-options "-O2 -mavx -std=gnu99" } */
_Decimal128
foo128 (_Decimal128 z)
{
return z + 1.0dl;
}
#include <stdlib.h>
#include "cpuid.h"
#include "m256-check.h"
static void avx_test (void);
int
main ()
{
unsigned int eax, ebx, ecx, edx;
if (!__get_cpuid (1, &eax, &ebx, &ecx, &edx))
return 0;
/* Run AVX test only if host has AVX support. */
if (ecx & bit_AVX)
{
avx_test ();
#ifdef DEBUG
printf ("PASSED\n");
#endif
}
#ifdef DEBUG
else
printf ("SKIPPED\n");
#endif
return 0;
}
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#include "avx-check.h"
static __m256i
__attribute__((noinline))
foo (short *v)
{
return _mm256_set_epi16 (v[15], v[14], v[13], v[12],
v[11], v[10], v[9], v[8],
v[7], v[6], v[5], v[4],
v[3], v[2], v[1], v[0]);
}
static void
avx_test (void)
{
short v[16] =
{
-3, 60, 48, 104, -90, 37, -48, 78,
4, 33, 81, 4, -89, 17, 8, 68
};
union256i_w u;
u.x = foo (v);
if (check_union256i_w (u, v))
abort ();
}
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#include "avx-check.h"
static __m256i
__attribute__((noinline))
foo (short x1, short x2, short x3, short x4,
short x5, short x6, short x7, short x8,
short x9, short x10, short x11, short x12,
short x13, short x14, short x15, short x16)
{
return _mm256_set_epi16 (x1, x2, x3, x4, x5, x6, x7, x8,
x9, x10, x11, x12, x13, x14, x15, x16);
}
static void
avx_test (void)
{
short v[16] =
{
-3, 60, 48, 104, -90, 37, -48, 78,
4, 33, 81, 4, -89, 17, 8, 68
};
union256i_w u;
u.x = foo (v[15], v[14], v[13], v[12],
v[11], v[10], v[9], v[8],
v[7], v[6], v[5], v[4],
v[3], v[2], v[1], v[0]);
if (check_union256i_w (u, v))
abort ();
}
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#include "avx-check.h"
static __m256i
__attribute__((noinline))
foo (short x)
{
return _mm256_set_epi16 (x, x, x, x, x, x, x, x,
x, x, x, x, x, x, x, x);
}
static void
avx_test (void)
{
short e = 345;
short v[16];
union256i_w u;
int i;
for (i = 0; i < ARRAY_SIZE (v); i++)
v[i] = e;
u.x = foo (e);
if (check_union256i_w (u, v))
abort ();
}
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#include "avx-check.h"
static __m256i
__attribute__((noinline))
foo (short x, int i)
{
switch (i)
{
case 15:
return _mm256_set_epi16 (x, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0);
case 14:
return _mm256_set_epi16 (0, x, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0);
case 13:
return _mm256_set_epi16 (0, 0, x, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0);
case 12:
return _mm256_set_epi16 (0, 0, 0, x, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0);
case 11:
return _mm256_set_epi16 (0, 0, 0, 0, x, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0);
case 10:
return _mm256_set_epi16 (0, 0, 0, 0, 0, x, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0);
case 9:
return _mm256_set_epi16 (0, 0, 0, 0, 0, 0, x, 0,
0, 0, 0, 0, 0, 0, 0, 0);
case 8:
return _mm256_set_epi16 (0, 0, 0, 0, 0, 0, 0, x,
0, 0, 0, 0, 0, 0, 0, 0);
case 7:
return _mm256_set_epi16 (0, 0, 0, 0, 0, 0, 0, 0,
x, 0, 0, 0, 0, 0, 0, 0);
case 6:
return _mm256_set_epi16 (0, 0, 0, 0, 0, 0, 0, 0,
0, x, 0, 0, 0, 0, 0, 0);
case 5:
return _mm256_set_epi16 (0, 0, 0, 0, 0, 0, 0, 0,
0, 0, x, 0, 0, 0, 0, 0);
case 4:
return _mm256_set_epi16 (0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, x, 0, 0, 0, 0);
case 3:
return _mm256_set_epi16 (0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, x, 0, 0, 0);
case 2:
return _mm256_set_epi16 (0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, x, 0, 0);
case 1:
return _mm256_set_epi16 (0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, x, 0);
case 0:
return _mm256_set_epi16 (0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, x);
default:
abort ();
}
}
static void
avx_test (void)
{
short e = 0xbeef;
short v[16];
union256i_w u;
int i, j;
for (i = 0; i < ARRAY_SIZE (v); i++)
{
for (j = 0; j < ARRAY_SIZE (v); j++)
v[j] = 0;
v[i] = e;
u.x = foo (e, i);
if (check_union256i_w (u, v))
abort ();
}
}
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#include "avx-check.h"
static __m256i
__attribute__((noinline))
foo (short x, int i)
{
switch (i)
{
case 15:
return _mm256_set_epi16 (x, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1);
case 14:
return _mm256_set_epi16 (1, x, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1);
case 13:
return _mm256_set_epi16 (1, 1, x, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1);
case 12:
return _mm256_set_epi16 (1, 1, 1, x, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1);
case 11:
return _mm256_set_epi16 (1, 1, 1, 1, x, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1);
case 10:
return _mm256_set_epi16 (1, 1, 1, 1, 1, x, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1);
case 9:
return _mm256_set_epi16 (1, 1, 1, 1, 1, 1, x, 1,
1, 1, 1, 1, 1, 1, 1, 1);
case 8:
return _mm256_set_epi16 (1, 1, 1, 1, 1, 1, 1, x,
1, 1, 1, 1, 1, 1, 1, 1);
case 7:
return _mm256_set_epi16 (1, 1, 1, 1, 1, 1, 1, 1,
x, 1, 1, 1, 1, 1, 1, 1);
case 6:
return _mm256_set_epi16 (1, 1, 1, 1, 1, 1, 1, 1,
1, x, 1, 1, 1, 1, 1, 1);
case 5:
return _mm256_set_epi16 (1, 1, 1, 1, 1, 1, 1, 1,
1, 1, x, 1, 1, 1, 1, 1);
case 4:
return _mm256_set_epi16 (1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, x, 1, 1, 1, 1);
case 3:
return _mm256_set_epi16 (1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, x, 1, 1, 1);
case 2:
return _mm256_set_epi16 (1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, x, 1, 1);
case 1:
return _mm256_set_epi16 (1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, x, 1);
case 0:
return _mm256_set_epi16 (1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, x);
default:
abort ();
}
}
static void
avx_test (void)
{
short e = 0xbeef;
short v[16];
union256i_w u;
int i, j;
for (i = 0; i < ARRAY_SIZE (v); i++)
{
for (j = 0; j < ARRAY_SIZE (v); j++)
v[j] = 1;
v[i] = e;
u.x = foo (e, i);
if (check_union256i_w (u, v))
abort ();
}
}
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#include "avx-check.h"
static __m256i
__attribute__((noinline))
foo (char *v)
{
return _mm256_set_epi8 (v[31], v[30], v[29], v[28],
v[27], v[26], v[25], v[24],
v[23], v[22], v[21], v[20],
v[19], v[18], v[17], v[16],
v[15], v[14], v[13], v[12],
v[11], v[10], v[9], v[8],
v[7], v[6], v[5], v[4],
v[3], v[2], v[1], v[0]);
}
static void
avx_test (void)
{
char v[32] =
{
-3, 60, 48, 104, -90, 37, -48, 78,
4, 33, 81, 4, -89, 17, 8, 68,
-13, 30, 78, 149, -70, -37, 98, 38,
41, 73, 89, 14, 80, 117, 108, 8
};
union256i_b u;
u.x = foo (v);
if (check_union256i_b (u, v))
abort ();
}
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#include "avx-check.h"
static __m256i
__attribute__((noinline))
foo (char x1, char x2, char x3, char x4,
char x5, char x6, char x7, char x8,
char x9, char x10, char x11, char x12,
char x13, char x14, char x15, char x16,
char x17, char x18, char x19, char x20,
char x21, char x22, char x23, char x24,
char x25, char x26, char x27, char x28,
char x29, char x30, char x31, char x32)
{
return _mm256_set_epi8 (x1, x2, x3, x4, x5, x6, x7, x8,
x9, x10, x11, x12, x13, x14, x15, x16,
x17, x18, x19, x20, x21, x22, x23, x24,
x25, x26, x27, x28, x29, x30, x31, x32);
}
static void
avx_test (void)
{
char v[32] =
{
-3, 60, 48, 104, -90, 37, -48, 78,
4, 33, 81, 4, -89, 17, 8, 68,
-13, 30, 78, 149, -70, -37, 98, 38,
41, 73, 89, 14, 80, 117, 108, 8
};
union256i_b u;
u.x = foo (v[31], v[30], v[29], v[28],
v[27], v[26], v[25], v[24],
v[23], v[22], v[21], v[20],
v[19], v[18], v[17], v[16],
v[15], v[14], v[13], v[12],
v[11], v[10], v[9], v[8],
v[7], v[6], v[5], v[4],
v[3], v[2], v[1], v[0]);
if (check_union256i_b (u, v))
abort ();
}
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#include "avx-check.h"
static __m256i
__attribute__((noinline))
foo (char x)
{
return _mm256_set_epi8 (x, x, x, x, x, x, x, x,
x, x, x, x, x, x, x, x,
x, x, x, x, x, x, x, x,
x, x, x, x, x, x, x, x);
}
static void
avx_test (void)
{
char e = -45;
char v[32];
union256i_b u;
int i;
for (i = 0; i < ARRAY_SIZE (v); i++)
v[i] = e;
u.x = foo (e);
if (check_union256i_b (u, v))
abort ();
}
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#include "avx-check.h"
static __m256i
__attribute__((noinline))
foo (char x, int i)
{
switch (i)
{
case 31:
return _mm256_set_epi8 (x, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
case 30:
return _mm256_set_epi8 (0, x, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
case 29:
return _mm256_set_epi8 (0, 0, x, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
case 28:
return _mm256_set_epi8 (0, 0, 0, x, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
case 27:
return _mm256_set_epi8 (0, 0, 0, 0, x, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
case 26:
return _mm256_set_epi8 (0, 0, 0, 0, 0, x, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
case 25:
return _mm256_set_epi8 (0, 0, 0, 0, 0, 0, x, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
case 24:
return _mm256_set_epi8 (0, 0, 0, 0, 0, 0, 0, x, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
case 23:
return _mm256_set_epi8 (0, 0, 0, 0, 0, 0, 0, 0, x, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
case 22:
return _mm256_set_epi8 (0, 0, 0, 0, 0, 0, 0, 0, 0, x, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
case 21:
return _mm256_set_epi8 (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, x, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
case 20:
return _mm256_set_epi8 (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, x, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
case 19:
return _mm256_set_epi8 (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, x, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
case 18:
return _mm256_set_epi8 (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, x, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
case 17:
return _mm256_set_epi8 (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, x, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
case 16:
return _mm256_set_epi8 (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, x,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
case 15:
return _mm256_set_epi8 (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
x, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
case 14:
return _mm256_set_epi8 (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, x, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
case 13:
return _mm256_set_epi8 (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, x, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
case 12:
return _mm256_set_epi8 (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, x, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
case 11:
return _mm256_set_epi8 (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, x, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
case 10:
return _mm256_set_epi8 (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, x, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);
case 9:
return _mm256_set_epi8 (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, x, 0, 0, 0, 0, 0, 0, 0, 0, 0);
case 8:
return _mm256_set_epi8 (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, x, 0, 0, 0, 0, 0, 0, 0, 0);
case 7:
return _mm256_set_epi8 (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, x, 0, 0, 0, 0, 0, 0, 0);
case 6:
return _mm256_set_epi8 (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, x, 0, 0, 0, 0, 0, 0);
case 5:
return _mm256_set_epi8 (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, x, 0, 0, 0, 0, 0);
case 4:
return _mm256_set_epi8 (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, x, 0, 0, 0, 0);
case 3:
return _mm256_set_epi8 (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, x, 0, 0, 0);
case 2:
return _mm256_set_epi8 (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, x, 0, 0);
case 1:
return _mm256_set_epi8 (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, x, 0);
case 0:
return _mm256_set_epi8 (0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, x);
default:
abort ();
}
}
static void
avx_test (void)
{
char e = 0xa1;
char v[32];
union256i_b u;
int i, j;
for (i = 0; i < ARRAY_SIZE (v); i++)
{
for (j = 0; j < ARRAY_SIZE (v); j++)
v[j] = 0;
v[i] = e;
u.x = foo (e, i);
if (check_union256i_b (u, v))
abort ();
}
}
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#include "avx-check.h"
static __m256i
__attribute__((noinline))
foo (char x, int i)
{
switch (i)
{
case 31:
return _mm256_set_epi8 (x, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
case 30:
return _mm256_set_epi8 (1, x, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
case 29:
return _mm256_set_epi8 (1, 1, x, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
case 28:
return _mm256_set_epi8 (1, 1, 1, x, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
case 27:
return _mm256_set_epi8 (1, 1, 1, 1, x, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
case 26:
return _mm256_set_epi8 (1, 1, 1, 1, 1, x, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
case 25:
return _mm256_set_epi8 (1, 1, 1, 1, 1, 1, x, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
case 24:
return _mm256_set_epi8 (1, 1, 1, 1, 1, 1, 1, x, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
case 23:
return _mm256_set_epi8 (1, 1, 1, 1, 1, 1, 1, 1, x, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
case 22:
return _mm256_set_epi8 (1, 1, 1, 1, 1, 1, 1, 1, 1, x, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
case 21:
return _mm256_set_epi8 (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, x, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
case 20:
return _mm256_set_epi8 (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, x, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
case 19:
return _mm256_set_epi8 (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, x, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
case 18:
return _mm256_set_epi8 (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, x, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
case 17:
return _mm256_set_epi8 (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, x, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
case 16:
return _mm256_set_epi8 (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, x,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
case 15:
return _mm256_set_epi8 (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
x, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
case 14:
return _mm256_set_epi8 (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, x, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
case 13:
return _mm256_set_epi8 (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, x, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
case 12:
return _mm256_set_epi8 (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, x, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
case 11:
return _mm256_set_epi8 (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, x, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
case 10:
return _mm256_set_epi8 (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, x, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1);
case 9:
return _mm256_set_epi8 (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, x, 1, 1, 1, 1, 1, 1, 1, 1, 1);
case 8:
return _mm256_set_epi8 (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, x, 1, 1, 1, 1, 1, 1, 1, 1);
case 7:
return _mm256_set_epi8 (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, x, 1, 1, 1, 1, 1, 1, 1);
case 6:
return _mm256_set_epi8 (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, x, 1, 1, 1, 1, 1, 1);
case 5:
return _mm256_set_epi8 (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, x, 1, 1, 1, 1, 1);
case 4:
return _mm256_set_epi8 (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, x, 1, 1, 1, 1);
case 3:
return _mm256_set_epi8 (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, x, 1, 1, 1);
case 2:
return _mm256_set_epi8 (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, x, 1, 1);
case 1:
return _mm256_set_epi8 (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, x, 1);
case 0:
return _mm256_set_epi8 (1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, x);
default:
abort ();
}
}
static void
avx_test (void)
{
char e = 0xa1;
char v[32];
union256i_b u;
int i, j;
for (i = 0; i < ARRAY_SIZE (v); i++)
{
for (j = 0; j < ARRAY_SIZE (v); j++)
v[j] = 1;
v[i] = e;
u.x = foo (e, i);
if (check_union256i_b (u, v))
abort ();
}
}
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#include "avx-check.h"
static __m256d
__attribute__((noinline))
foo (double *v)
{
return _mm256_set_pd (v[3], v[2], v[1], v[0]);
}
static void
avx_test (void)
{
double v[4] = { -3, 2, 1, 9 };
union256d u;
u.x = foo (v);
if (check_union256d (u, v))
abort ();
}
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#include "avx-check.h"
static __m256d
__attribute__((noinline))
foo (double x1, double x2, double x3, double x4)
{
return _mm256_set_pd (x1, x2, x3, x4);
}
static void
avx_test (void)
{
double v[4] = { -3, 2, 1, 9 };
union256d u;
u.x = foo (v[3], v[2], v[1], v[0]);
if (check_union256d (u, v))
abort ();
}
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#include "avx-check.h"
static __m256d
__attribute__((noinline))
foo (double x)
{
return _mm256_set_pd (x, x, x, x);
}
static void
avx_test (void)
{
double e = 34.5;
double v[4];
union256d u;
int i;
for (i = 0; i < ARRAY_SIZE (v); i++)
v[i] = e;
u.x = foo (e);
if (check_union256d (u, v))
abort ();
}
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#include "avx-check.h"
static __m256d
__attribute__((noinline))
foo (double x, int i)
{
switch (i)
{
case 3:
return _mm256_set_pd (x, 0, 0, 0);
case 2:
return _mm256_set_pd (0, x, 0, 0);
case 1:
return _mm256_set_pd (0, 0, x, 0);
case 0:
return _mm256_set_pd (0, 0, 0, x);
default:
abort ();
}
}
static void
avx_test (void)
{
double e = -3.234;
double v[4];
union256d u;
int i, j;
for (i = 0; i < ARRAY_SIZE (v); i++)
{
for (j = 0; j < ARRAY_SIZE (v); j++)
v[j] = 0;
v[i] = e;
u.x = foo (e, i);
if (check_union256d (u, v))
abort ();
}
}
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#include "avx-check.h"
static __m256d
__attribute__((noinline))
foo (double x, int i)
{
switch (i)
{
case 3:
return _mm256_set_pd (x, 1, 1, 1);
case 2:
return _mm256_set_pd (1, x, 1, 1);
case 1:
return _mm256_set_pd (1, 1, x, 1);
case 0:
return _mm256_set_pd (1, 1, 1, x);
default:
abort ();
}
}
static void
avx_test (void)
{
double e = -3.234;
double v[4];
union256d u;
int i, j;
for (i = 0; i < ARRAY_SIZE (v); i++)
{
for (j = 0; j < ARRAY_SIZE (v); j++)
v[j] = 1;
v[i] = e;
u.x = foo (e, i);
if (check_union256d (u, v))
abort ();
}
}
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#include "avx-check.h"
static __m256i
__attribute__((noinline))
foo (long long *v)
{
return _mm256_set_epi64x (v[3], v[2], v[1], v[0]);
}
static void
avx_test (void)
{
long long v[4]
= { 0x12e9e94645ad8LL, 0x851c0b39446LL,
0x786784645245LL, 0x9487731234LL };
union256i_q u;
u.x = foo (v);
if (check_union256i_q (u, v))
abort ();
}
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#include "avx-check.h"
static __m256i
__attribute__((noinline))
foo (long long x1, long long x2, long long x3, long long x4)
{
return _mm256_set_epi64x (x1, x2, x3, x4);
}
static void
avx_test (void)
{
long long v[4]
= { 0x12e9e94645ad8LL, 0x851c0b39446LL,
0x786784645245LL, 0x9487731234LL };
union256i_q u;
u.x = foo (v[3], v[2], v[1], v[0]);
if (check_union256i_q (u, v))
abort ();
}
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#include "avx-check.h"
static __m256i
__attribute__((noinline))
foo (long long x)
{
return _mm256_set_epi64x (x, x, x, x);
}
static void
avx_test (void)
{
long long e = 0xfed178ab134badf1LL;
long long v[4];
union256i_q u;
int i;
for (i = 0; i < ARRAY_SIZE (v); i++)
v[i] = e;
u.x = foo (e);
if (check_union256i_q (u, v))
abort ();
}
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#include "avx-check.h"
static __m256i
__attribute__((noinline))
foo (long long x, int i)
{
switch (i)
{
case 3:
return _mm256_set_epi64x (x, 0, 0, 0);
case 2:
return _mm256_set_epi64x (0, x, 0, 0);
case 1:
return _mm256_set_epi64x (0, 0, x, 0);
case 0:
return _mm256_set_epi64x (0, 0, 0, x);
default:
abort ();
}
}
static void
avx_test (void)
{
long long e = 0xabadbeef01234567LL;
long long v[4];
union256i_q u;
int i, j;
for (i = 0; i < ARRAY_SIZE (v); i++)
{
for (j = 0; j < ARRAY_SIZE (v); j++)
v[j] = 0;
v[i] = e;
u.x = foo (e, i);
if (check_union256i_q (u, v))
abort ();
}
}
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#include "avx-check.h"
static __m256i
__attribute__((noinline))
foo (long long x, int i)
{
switch (i)
{
case 3:
return _mm256_set_epi64x (x, 1, 1, 1);
case 2:
return _mm256_set_epi64x (1, x, 1, 1);
case 1:
return _mm256_set_epi64x (1, 1, x, 1);
case 0:
return _mm256_set_epi64x (1, 1, 1, x);
default:
abort ();
}
}
static void
avx_test (void)
{
long long e = 0xabadbeef01234567LL;
long long v[4];
union256i_q u;
int i, j;
for (i = 0; i < ARRAY_SIZE (v); i++)
{
for (j = 0; j < ARRAY_SIZE (v); j++)
v[j] = 1;
v[i] = e;
u.x = foo (e, i);
if (check_union256i_q (u, v))
abort ();
}
}
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#include "avx-check.h"
static __m256
__attribute__((noinline))
foo (float *v)
{
return _mm256_set_ps (v[7], v[6], v[5], v[4],
v[3], v[2], v[1], v[0]);
}
static void
avx_test (void)
{
float v[8] = { -3, 2, 1, 9, 23, -173, -13, 69 };
union256 u;
u.x = foo (v);
if (check_union256 (u, v))
abort ();
}
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#include "avx-check.h"
__m256
__attribute__((noinline))
foo (float x1, float x2, float x3, float x4,
float x5, float x6, float x7, float x8)
{
return _mm256_set_ps (x1, x2, x3, x4, x5, x6, x7, x8);
}
void
avx_test (void)
{
float v[8] = { -3, 2, 1, 9, 23, -173, -13, 69 };
union256 u;
u.x = foo (v[7], v[6], v[5], v[4], v[3], v[2], v[1], v[0]);
if (check_union256 (u, v))
abort ();
}
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#include "avx-check.h"
static __m256
__attribute__((noinline))
foo (float x)
{
return _mm256_set_ps (x, x, x, x, x, x, x, x);
}
static void
avx_test (void)
{
float e = 34.5;
float v[8];
union256 u;
int i;
for (i = 0; i < ARRAY_SIZE (v); i++)
v[i] = e;
u.x = foo (e);
if (check_union256 (u, v))
abort ();
}
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#include "avx-check.h"
static __m256
__attribute__((noinline))
foo (float x, int i)
{
switch (i)
{
case 7:
return _mm256_set_ps (x, 0, 0, 0, 0, 0, 0, 0);
case 6:
return _mm256_set_ps (0, x, 0, 0, 0, 0, 0, 0);
case 5:
return _mm256_set_ps (0, 0, x, 0, 0, 0, 0, 0);
case 4:
return _mm256_set_ps (0, 0, 0, x, 0, 0, 0, 0);
case 3:
return _mm256_set_ps (0, 0, 0, 0, x, 0, 0, 0);
case 2:
return _mm256_set_ps (0, 0, 0, 0, 0, x, 0, 0);
case 1:
return _mm256_set_ps (0, 0, 0, 0, 0, 0, x, 0);
case 0:
return _mm256_set_ps (0, 0, 0, 0, 0, 0, 0, x);
default:
abort ();
}
}
static void
avx_test (void)
{
float e = -3.234;
float v[8];
union256 u;
int i, j;
for (i = 0; i < ARRAY_SIZE (v); i++)
{
for (j = 0; j < ARRAY_SIZE (v); j++)
v[j] = 0;
v[i] = e;
u.x = foo (e, i);
if (check_union256 (u, v))
abort ();
}
}
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#include "avx-check.h"
static __m256
__attribute__((noinline))
foo (float x, int i)
{
switch (i)
{
case 7:
return _mm256_set_ps (x, 1, 1, 1, 1, 1, 1, 1);
case 6:
return _mm256_set_ps (1, x, 1, 1, 1, 1, 1, 1);
case 5:
return _mm256_set_ps (1, 1, x, 1, 1, 1, 1, 1);
case 4:
return _mm256_set_ps (1, 1, 1, x, 1, 1, 1, 1);
case 3:
return _mm256_set_ps (1, 1, 1, 1, x, 1, 1, 1);
case 2:
return _mm256_set_ps (1, 1, 1, 1, 1, x, 1, 1);
case 1:
return _mm256_set_ps (1, 1, 1, 1, 1, 1, x, 1);
case 0:
return _mm256_set_ps (1, 1, 1, 1, 1, 1, 1, x);
default:
abort ();
}
}
static void
avx_test (void)
{
float e = -3.234;
float v[8];
union256 u;
int i, j;
for (i = 0; i < ARRAY_SIZE (v); i++)
{
for (j = 0; j < ARRAY_SIZE (v); j++)
v[j] = 1;
v[i] = e;
u.x = foo (e, i);
if (check_union256 (u, v))
abort ();
}
}
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#include "avx-check.h"
static __m256i
__attribute__((noinline))
foo (int *v)
{
return _mm256_set_epi32 (v[7], v[6], v[5], v[4],
v[3], v[2], v[1], v[0]);
}
static void
avx_test (void)
{
int v[8]
= { 19832468, 6576856, 8723467, 234566,
786784, 645245, 948773, 1234 };
union256i_d u;
u.x = foo (v);
if (check_union256i_d (u, v))
abort ();
}
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#include "avx-check.h"
__m256i
__attribute__((noinline))
foo (int x1, int x2, int x3, int x4,
int x5, int x6, int x7, int x8)
{
return _mm256_set_epi32 (x1, x2, x3, x4, x5, x6, x7, x8);
}
static void
avx_test (void)
{
int v[8] = { -3, 2, 1, 9, 23, -173, -13, 69 };
union256i_d u;
u.x = foo (v[7], v[6], v[5], v[4], v[3], v[2], v[1], v[0]);
if (check_union256i_d (u, v))
abort ();
}
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#include "avx-check.h"
static __m256i
__attribute__((noinline))
foo (int x)
{
return _mm256_set_epi32 (x, x, x, x, x, x, x, x);
}
static void
avx_test (void)
{
int e = 0xabadbeef;
int v[8];
union256i_d u;
int i;
for (i = 0; i < ARRAY_SIZE (v); i++)
v[i] = e;
u.x = foo (e);
if (check_union256i_d (u, v))
abort ();
}
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#include "avx-check.h"
static __m256i
__attribute__((noinline))
foo (int x, int i)
{
switch (i)
{
case 7:
return _mm256_set_epi32 (x, 0, 0, 0, 0, 0, 0, 0);
case 6:
return _mm256_set_epi32 (0, x, 0, 0, 0, 0, 0, 0);
case 5:
return _mm256_set_epi32 (0, 0, x, 0, 0, 0, 0, 0);
case 4:
return _mm256_set_epi32 (0, 0, 0, x, 0, 0, 0, 0);
case 3:
return _mm256_set_epi32 (0, 0, 0, 0, x, 0, 0, 0);
case 2:
return _mm256_set_epi32 (0, 0, 0, 0, 0, x, 0, 0);
case 1:
return _mm256_set_epi32 (0, 0, 0, 0, 0, 0, x, 0);
case 0:
return _mm256_set_epi32 (0, 0, 0, 0, 0, 0, 0, x);
default:
abort ();
}
}
static void
avx_test (void)
{
int e = 0xabadbeef;
int v[8];
union256i_d u;
int i, j;
for (i = 0; i < ARRAY_SIZE (v); i++)
{
for (j = 0; j < ARRAY_SIZE (v); j++)
v[j] = 0;
v[i] = e;
u.x = foo (e, i);
if (check_union256i_d (u, v))
abort ();
}
}
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#include "avx-check.h"
static __m256i
__attribute__((noinline))
foo (int x, int i)
{
switch (i)
{
case 7:
return _mm256_set_epi32 (x, 1, 1, 1, 1, 1, 1, 1);
case 6:
return _mm256_set_epi32 (1, x, 1, 1, 1, 1, 1, 1);
case 5:
return _mm256_set_epi32 (1, 1, x, 1, 1, 1, 1, 1);
case 4:
return _mm256_set_epi32 (1, 1, 1, x, 1, 1, 1, 1);
case 3:
return _mm256_set_epi32 (1, 1, 1, 1, x, 1, 1, 1);
case 2:
return _mm256_set_epi32 (1, 1, 1, 1, 1, x, 1, 1);
case 1:
return _mm256_set_epi32 (1, 1, 1, 1, 1, 1, x, 1);
case 0:
return _mm256_set_epi32 (1, 1, 1, 1, 1, 1, 1, x);
default:
abort ();
}
}
static void
avx_test (void)
{
int e = 0xabadbeef;
int v[8];
union256i_d u;
int i, j;
for (i = 0; i < ARRAY_SIZE (v); i++)
{
for (j = 0; j < ARRAY_SIZE (v); j++)
v[j] = 1;
v[i] = e;
u.x = foo (e, i);
if (check_union256i_d (u, v))
abort ();
}
}
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#include "avx-check.h"
void static
avx_test (void)
{
int i;
union256i_d u;
int e [8];
int source[1] = {1234};
u.x = _mm256_set1_epi32 (source[0]);
for (i = 0; i < 8; i++)
e[i] = source[0];
if (check_union256i_d (u, e))
abort ();
}
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#include "avx-check.h"
void static
avx_test (void)
{
int i;
union256d u;
double e [4];
double source[1] = {26156.643};
u.x = _mm256_set1_pd (source[0]);
for (i = 0; i < 4; i++)
e[i] = source[0];
if (check_union256d (u, e))
abort ();
}
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#include "avx-check.h"
void static
avx_test (void)
{
int i;
union256 u;
float e [8];
float source[1] = {1234.234f};
u.x = _mm256_set1_ps (source[0]);
for (i = 0; i < 8; i++)
e[i] = source[0];
if (check_union256 (u, e))
abort ();
}
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#include "avx-check.h"
void static
avx_test (void)
{
int i;
union256d u;
double e [4];
u.x = _mm256_setzero_pd ();
for (i = 0; i < 4; i++)
e[i] = 0.0;
if (check_union256d (u, e))
abort ();
}
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#include "avx-check.h"
void static
avx_test (void)
{
int i;
union256 u;
float e [8];
u.x = _mm256_setzero_ps ();
for (i = 0; i < 8; i++)
e[i] = 0.0;
if (check_union256 (u, e))
abort ();
}
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#include "avx-check.h"
void static
avx_test (void)
{
int i;
union256i_q u;
long long e [4];
u.x = _mm256_setzero_si256 ();
for (i = 0; i < 4; i++)
e[i] = 0;
if (check_union256i_q (u, e))
abort ();
}
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#define CHECK_H "avx-check.h"
#define TEST avx_test
#include "sse2-addpd-1.c"
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#include "avx-check.h"
void static
avx_test (void)
{
int i;
union256d u, s1, s2;
double e [4];
s1.x = _mm256_set_pd (2134.3343,1234.635654,453.345635,54646.464356);
s2.x = _mm256_set_pd (41124.234,2344.2354,8653.65635,856.43576);
u.x = _mm256_add_pd (s1.x, s2.x);
for (i = 0; i < 4; i++)
e[i] = s1.a[i] + s2.a[i];
if (check_union256d (u, e))
abort ();
}
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#define CHECK_H "avx-check.h"
#define TEST avx_test
#include "sse-addps-1.c"
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#include "avx-check.h"
void static
avx_test (void)
{
int i;
union256 u, s1, s2;
float e [8];
s1.x = _mm256_set_ps (24.43, 68.346, 43.35, 546.46, 46.79, 82.78, 82.7, 9.4);
s2.x = _mm256_set_ps (1.17, 2.16, 3.15, 4.14, 5.13, 6.12, 7.11, 8.9);
u.x = _mm256_add_ps (s1.x, s2.x);
for (i = 0; i < 8; i++)
e[i] = s1.a[i] + s2.a[i];
if (check_union256 (u, e))
abort ();
}
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#define CHECK_H "avx-check.h"
#define TEST avx_test
#include "sse2-addsd-1.c"
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#define CHECK_H "avx-check.h"
#define TEST avx_test
#include "sse-addss-1.c"
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx -mfpmath=sse" } */
#define CHECK_H "avx-check.h"
#define TEST avx_test
#include "sse3-addsubpd.c"
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#include "avx-check.h"
void static
avx_test (void)
{
int i;
union256d u, s1, s2;
double e [4];
s1.x = _mm256_set_pd (2134.3343,1234.635654,453.345635,54646.464356);
s2.x = _mm256_set_pd (41124.234,2344.2354,8653.65635,856.43576);
u.x = _mm256_addsub_pd (s1.x, s2.x);
for (i = 0; i < 4; i++)
if (i % 2)
e[i] = s1.a[i] + s2.a[i];
else
e[i] = s1.a[i] - s2.a[i];
if (check_union256d (u, e))
abort ();
}
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx -mfpmath=sse" } */
#define CHECK_H "avx-check.h"
#define TEST avx_test
#include "sse3-addsubps.c"
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#include "avx-check.h"
void static
avx_test (void)
{
int i;
union256 u, s1, s2;
float e [8];
s1.x = _mm256_set_ps (24.43, 68.346, 43.35, 546.46, 46.79, 82.78, 82.7, 9.4);
s2.x = _mm256_set_ps (1.17, 2.16, 3.15, 4.14, 5.13, 6.12, 7.11, 8.9);
u.x = _mm256_addsub_ps (s1.x, s2.x);
for (i = 0; i < 8; i++)
if (i % 2)
e[i] = s1.a[i] + s2.a[i];
else
e[i] = s1.a[i] - s2.a[i];
if (check_union256 (u, e))
abort ();
}
/* { dg-do run } */
/* { dg-require-effective-target vaes } */
/* { dg-options "-O2 -maes -mavx" } */
#define CHECK_H "aes-avx-check.h"
#define TEST aes_avx_test
#include "aesdec.c"
/* { dg-do run } */
/* { dg-require-effective-target vaes } */
/* { dg-options "-O2 -maes -mavx" } */
#define CHECK_H "aes-avx-check.h"
#define TEST aes_avx_test
#include "aesdeclast.c"
/* { dg-do run } */
/* { dg-require-effective-target vaes } */
/* { dg-options "-O2 -maes -mavx" } */
#define CHECK_H "aes-avx-check.h"
#define TEST aes_avx_test
#include "aesenc.c"
/* { dg-do run } */
/* { dg-require-effective-target vaes } */
/* { dg-options "-O2 -maes -mavx" } */
#define CHECK_H "aes-avx-check.h"
#define TEST aes_avx_test
#include "aesenclast.c"
/* { dg-do run } */
/* { dg-require-effective-target vaes } */
/* { dg-options "-O2 -maes -mavx" } */
#define CHECK_H "aes-avx-check.h"
#define TEST aes_avx_test
#include "aesimc.c"
/* { dg-do run } */
/* { dg-require-effective-target vaes } */
/* { dg-options "-O2 -maes -mavx" } */
#define CHECK_H "aes-avx-check.h"
#define TEST aes_avx_test
#include "aeskeygenassist.c"
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#define CHECK_H "avx-check.h"
#define TEST avx_test
#include "sse2-andnpd-1.c"
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#include "avx-check.h"
void static
avx_test (void)
{
int i;
union256d u, s1, s2;
long long source1[4]={34545, 95567, 23443, 5675};
long long source2[4]={674, 57897, 93459, 45624};
long long d[4];
long long e[4];
s1.x = _mm256_loadu_pd ((double *)source1);
s2.x = _mm256_loadu_pd ((double *)source2);
u.x = _mm256_andnot_pd (s1.x, s2.x);
_mm256_storeu_pd ((double *)d, u.x);
for (i = 0; i < 4; i++)
e[i] = (~source1[i]) & source2[i];
if (checkVl (d, e, 4))
abort ();
}
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#define CHECK_H "avx-check.h"
#define TEST avx_test
#include "sse-andnps-1.c"
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#include "avx-check.h"
void static
avx_test (void)
{
int i;
union256 u, s1, s2;
int source1[8]={34545, 95567, 23443, 5675, 2323, 67, 2345, 45667};
int source2[8]={674, 57897, 93459, 45624, 54674, 1237, 67436, 79608};
int d[8];
int e[8];
s1.x = _mm256_loadu_ps ((float *)source1);
s2.x = _mm256_loadu_ps ((float *)source2);
u.x = _mm256_andnot_ps (s1.x, s2.x);
_mm256_storeu_ps ((float *)d, u.x);
for (i = 0; i < 8; i++)
e[i] = (~source1[i]) & source2[i];
if (checkVi (d, e, 8))
abort ();
}
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#define CHECK_H "avx-check.h"
#define TEST avx_test
#include "sse2-andpd-1.c"
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#include "avx-check.h"
void static
avx_test (void)
{
int i;
union256d u, s1, s2;
union
{
double d[4];
long long ll[4];
}source1, source2, e;
s1.x = _mm256_set_pd (345.45, 95567, 2344.3, 567.5);
s2.x = _mm256_set_pd (674, 57.897, 934.59, 4562.4);
_mm256_storeu_pd (source1.d, s1.x);
_mm256_storeu_pd (source2.d, s2.x);
u.x = _mm256_and_pd (s1.x, s2.x);
for (i = 0; i < 4; i++)
e.ll[i] = source1.ll[i] & source2.ll[i];
if (check_union256d (u, e.d))
abort ();
}
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#define CHECK_H "avx-check.h"
#define TEST avx_test
#include "sse-andps-1.c"
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#include "avx-check.h"
void static
avx_test (void)
{
int i;
union256 u, s1, s2;
union
{
float f[8];
int i[8];
}source1, source2, e;
s1.x = _mm256_set_ps (34545, 95567, 23443, 5675, 2323, 67, 2345, 45667);
s2.x = _mm256_set_ps (674, 57897, 93459, 45624, 54674, 1237, 67436, 79608);
_mm256_storeu_ps (source1.f, s1.x);
_mm256_storeu_ps (source2.f, s2.x);
u.x = _mm256_and_ps (s1.x, s2.x);
for (i = 0; i < 8; i++)
e.i[i] = source1.i[i] & source2.i[i];
if (check_union256 (u, e.f))
abort ();
}
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#define CHECK_H "avx-check.h"
#define TEST avx_test
#include "sse4_1-blendpd.c"
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#include "avx-check.h"
#ifndef MASK
#define MASK 12
#endif
void static
avx_test (void)
{
int i;
union256d u, s1, s2;
double e [4];
s1.x = _mm256_set_pd (34545, 95567, 23443, 5675);
s2.x = _mm256_set_pd (674, 57897, 93459, 45624);
u.x = _mm256_blend_pd (s1.x, s2.x, MASK);
for (i = 0; i < 4; i++)
e[i] = (MASK & (0x01 << i)) ? s2.a[i] : s1.a[i];
if (check_union256d (u, e))
abort ();
}
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#include "avx-check.h"
#ifndef MASK
#define MASK 114
#endif
void static
avx_test (void)
{
int i;
union256 u, s1, s2;
float e [8];
s1.x = _mm256_set_ps (34545, 95567, 23443, 5675, 2323, 67, 2345, 45667);
s2.x = _mm256_set_ps (674, 57897, 93459, 45624, 54674, 1237, 67436, 79608);
u.x = _mm256_blend_ps (s1.x, s2.x, MASK);
for (i = 0; i < 8; i++)
e[i] = (MASK & (0x01 << i)) ? s2.a[i] : s1.a[i];
if (check_union256 (u, e))
abort ();
}
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#include "avx-check.h"
#ifndef MASK
#define MASK 6
#endif
#define mask_v(pos) (((MASK >> (pos)) & 1ULL) << 63)
void static
avx_test (void)
{
int i;
union256d u, mask, s1, s2;
long long m[4]={mask_v(0), mask_v(1), mask_v(2), mask_v(3)};
double e [4];
s1.x = _mm256_set_pd (34545, 95567, 23443, 5675);
s2.x = _mm256_set_pd (674, 57897, 93459, 45624);
mask.x = _mm256_set_pd (m[0], m[1], m[2], m[3]);
u.x = _mm256_blendv_pd (s1.x, s2.x, mask.x);
for (i = 0; i < 4; i++)
e[i] = (m[i] & (1ULL << 63)) ? s2.a[i] : s1.a[i];
if (check_union256d (u, e))
abort ();
}
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#include "avx-check.h"
#ifndef MASK
#define MASK 214
#endif
#define mask_v(pos) (((MASK >> (pos)) & 1U) << 31)
void static
avx_test (void)
{
int i;
union256 u, mask, s1, s2;
int m[8]={mask_v(0), mask_v(1), mask_v(2), mask_v(3),
mask_v(4), mask_v(5), mask_v(6), mask_v(7)};
float e [8];
s1.x = _mm256_set_ps (34545, 95567, 23443, 5675, 2323, 67, 2345, 45667);
s2.x = _mm256_set_ps (674, 57897, 93459, 45624, 54674, 1237, 67436, 79608);
mask.x = _mm256_loadu_ps ((float *)m);
u.x = _mm256_blendv_ps (s1.x, s2.x, mask.x);
for (i = 0; i < 8; i++)
e[i] = (m[i] & (1ULL << 31)) ? s2.a[i] : s1.a[i];
if (check_union256 (u, e))
abort ();
}
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#include "avx-check.h"
void static
avx_test (void)
{
int i;
union256 u;
union128 s;
float e [8];
s.x = _mm_set_ps(24.43, 68.346, 43.35, 546.46);
u.x = _mm256_broadcast_ps (&s.x);
for (i = 0; i < 4; i++)
e[i+4] = e[i] = s.a[i];
if (check_union256 (u, e))
abort ();
}
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#include "avx-check.h"
void static
avx_test (void)
{
union256d u;
union128d s;
double e [4];
s.x = _mm_set_pd(24.43, 68.346);
u.x = _mm256_broadcast_pd (&s.x);
e[0] = e[2] = s.a[0];
e[1] = e[3] = s.a[1];
if (check_union256d (u, e))
abort ();
}
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#include "avx-check.h"
void static
avx_test (void)
{
int i;
double s = 39678;
union256d u;
double e [4];
u.x = _mm256_broadcast_sd (&s);
for (i = 0; i < 4; i++)
e[i] = s;
if (check_union256d (u, e))
abort ();
}
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#include "avx-check.h"
void static
avx_test (void)
{
int i;
float s = 39678.3452;
union256 u;
float e [8];
u.x = _mm256_broadcast_ss (&s);
for (i = 0; i < 8; i++)
e[i] = s;
if (check_union256 (u, e))
abort ();
}
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#include "avx-check.h"
void static
avx_test (void)
{
int i;
float s = 39678.3452;
union128 u;
float e [4];
u.x = _mm_broadcast_ss (&s);
for (i = 0; i < 4; i++)
e[i] = s;
if (check_union128 (u, e))
abort ();
}
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx -std=c99" } */
#include "avx-check.h"
#include <math.h>
double s1[2]={2134.3343,6678.346};
double s2[2]={41124.234,6678.346};
long long e[2];
union
{
double d[2];
long long ll[2];
}d;
void check(unsigned imm, char *id)
{
if(checkVl(d.ll, e, 2)){
printf("mm_cmp_pd(%s: 0x%x) FAILED\n", id, imm);
}
}
#define CMP(imm, rel) \
for (i = 0; i < 2; i++) e[i] = rel ? -1 : 0; \
source1 = _mm_loadu_pd(s1); \
source2 = _mm_loadu_pd(s2); \
dest = _mm_cmp_pd(source1, source2, imm); \
_mm_storeu_pd(d.d, dest); \
check(imm, "" #imm "");
static void
avx_test ()
{
__m128d source1, source2, dest;
int i;
d.ll[0] = e[0] = 222;
d.ll[1] = e[1] = -33;
CMP(_CMP_EQ_OQ, !isunordered(s1[i], s2[i]) && s1[i] == s2[i]);
CMP(_CMP_LT_OS, !isunordered(s1[i], s2[i]) && s1[i] < s2[i]);
CMP(_CMP_LE_OS, !isunordered(s1[i], s2[i]) && s1[i] <= s2[i]);
CMP(_CMP_UNORD_Q, isunordered(s1[i], s2[i]));
CMP(_CMP_NEQ_UQ, isunordered(s1[i], s2[i]) || s1[i] != s2[i]);
CMP(_CMP_NLT_US, isunordered(s1[i], s2[i]) || s1[i] >= s2[i]);
CMP(_CMP_NLE_US, isunordered(s1[i], s2[i]) || s1[i] > s2[i]);
CMP(_CMP_ORD_Q, !isunordered(s1[i], s2[i]));
CMP(_CMP_EQ_UQ, isunordered(s1[i], s2[i]) || s1[i] == s2[i]);
CMP(_CMP_NGE_US, isunordered(s1[i], s2[i]) || s1[i] < s2[i]);
CMP(_CMP_NGT_US, isunordered(s1[i], s2[i]) || s1[i] <= s2[i]);
CMP(_CMP_FALSE_OQ, 0);
CMP(_CMP_NEQ_OQ, !isunordered(s1[i], s2[i]) && s1[i] != s2[i]);
CMP(_CMP_GE_OS, !isunordered(s1[i], s2[i]) && s1[i] >= s2[i]);
CMP(_CMP_GT_OS, !isunordered(s1[i], s2[i]) && s1[i] > s2[i]);
CMP(_CMP_TRUE_UQ, 1);
CMP(_CMP_EQ_OS, !isunordered(s1[i], s2[i]) && s1[i] == s2[i]);
CMP(_CMP_LT_OQ, !isunordered(s1[i], s2[i]) && s1[i] < s2[i]);
CMP(_CMP_LE_OQ, !isunordered(s1[i], s2[i]) && s1[i] <= s2[i]);
CMP(_CMP_UNORD_S, isunordered(s1[i], s2[i]));
CMP(_CMP_NEQ_US, isunordered(s1[i], s2[i]) || s1[i] != s2[i]);
CMP(_CMP_NLT_UQ, isunordered(s1[i], s2[i]) || s1[i] >= s2[i]);
CMP(_CMP_NLE_UQ, isunordered(s1[i], s2[i]) || s1[i] > s2[i]);
CMP(_CMP_ORD_S, !isunordered(s1[i], s2[i]));
CMP(_CMP_EQ_US, isunordered(s1[i], s2[i]) || s1[i] == s2[i]);
CMP(_CMP_NGE_UQ, isunordered(s1[i], s2[i]) || s1[i] < s2[i]);
CMP(_CMP_NGT_UQ, isunordered(s1[i], s2[i]) || s1[i] <= s2[i]);
CMP(_CMP_FALSE_OS, 0);
CMP(_CMP_NEQ_OS, !isunordered(s1[i], s2[i]) && s1[i] != s2[i]);
CMP(_CMP_GE_OQ, !isunordered(s1[i], s2[i]) && s1[i] >= s2[i]);
CMP(_CMP_GT_OQ, !isunordered(s1[i], s2[i]) && s1[i] > s2[i]);
CMP(_CMP_TRUE_US, 1);
}
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx -std=c99" } */
#include "avx-check.h"
#include <math.h>
double s1[4]={2134.3343,6678.346,453.345635,54646.464356};
double s2[4]={41124.234,6678.346,8653.65635,856.43576};
long long e[4];
union
{
double d[4];
long long ll[4];
}d;
void check(unsigned imm, char *id)
{
if(checkVl(d.ll, e, 4)){
printf("mm256_cmp_pd(%s: 0x%x) FAILED\n", id, imm);
}
}
#define CMP(imm, rel) \
for (i = 0; i < 4; i++) e[i] = rel ? -1 : 0; \
source1 = _mm256_loadu_pd(s1); \
source2 = _mm256_loadu_pd(s2); \
dest = _mm256_cmp_pd(source1, source2, imm); \
_mm256_storeu_pd(d.d, dest); \
check(imm, "" #imm "");
static void
avx_test ()
{
__m256d source1, source2, dest;
int i;
CMP(_CMP_EQ_OQ, !isunordered(s1[i], s2[i]) && s1[i] == s2[i]);
CMP(_CMP_LT_OS, !isunordered(s1[i], s2[i]) && s1[i] < s2[i]);
CMP(_CMP_LE_OS, !isunordered(s1[i], s2[i]) && s1[i] <= s2[i]);
CMP(_CMP_UNORD_Q, isunordered(s1[i], s2[i]));
CMP(_CMP_NEQ_UQ, isunordered(s1[i], s2[i]) || s1[i] != s2[i]);
CMP(_CMP_NLT_US, isunordered(s1[i], s2[i]) || s1[i] >= s2[i]);
CMP(_CMP_NLE_US, isunordered(s1[i], s2[i]) || s1[i] > s2[i]);
CMP(_CMP_ORD_Q, !isunordered(s1[i], s2[i]));
CMP(_CMP_EQ_UQ, isunordered(s1[i], s2[i]) || s1[i] == s2[i]);
CMP(_CMP_NGE_US, isunordered(s1[i], s2[i]) || s1[i] < s2[i]);
CMP(_CMP_NGT_US, isunordered(s1[i], s2[i]) || s1[i] <= s2[i]);
CMP(_CMP_FALSE_OQ, 0);
CMP(_CMP_NEQ_OQ, !isunordered(s1[i], s2[i]) && s1[i] != s2[i]);
CMP(_CMP_GE_OS, !isunordered(s1[i], s2[i]) && s1[i] >= s2[i]);
CMP(_CMP_GT_OS, !isunordered(s1[i], s2[i]) && s1[i] > s2[i]);
CMP(_CMP_TRUE_UQ, 1);
CMP(_CMP_EQ_OS, !isunordered(s1[i], s2[i]) && s1[i] == s2[i]);
CMP(_CMP_LT_OQ, !isunordered(s1[i], s2[i]) && s1[i] < s2[i]);
CMP(_CMP_LE_OQ, !isunordered(s1[i], s2[i]) && s1[i] <= s2[i]);
CMP(_CMP_UNORD_S, isunordered(s1[i], s2[i]));
CMP(_CMP_NEQ_US, isunordered(s1[i], s2[i]) || s1[i] != s2[i]);
CMP(_CMP_NLT_UQ, isunordered(s1[i], s2[i]) || s1[i] >= s2[i]);
CMP(_CMP_NLE_UQ, isunordered(s1[i], s2[i]) || s1[i] > s2[i]);
CMP(_CMP_ORD_S, !isunordered(s1[i], s2[i]));
CMP(_CMP_EQ_US, isunordered(s1[i], s2[i]) || s1[i] == s2[i]);
CMP(_CMP_NGE_UQ, isunordered(s1[i], s2[i]) || s1[i] < s2[i]);
CMP(_CMP_NGT_UQ, isunordered(s1[i], s2[i]) || s1[i] <= s2[i]);
CMP(_CMP_FALSE_OS, 0);
CMP(_CMP_NEQ_OS, !isunordered(s1[i], s2[i]) && s1[i] != s2[i]);
CMP(_CMP_GE_OQ, !isunordered(s1[i], s2[i]) && s1[i] >= s2[i]);
CMP(_CMP_GT_OQ, !isunordered(s1[i], s2[i]) && s1[i] > s2[i]);
CMP(_CMP_TRUE_US, 1);
}
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx -std=c99" } */
#include "avx-check.h"
#include <math.h>
float s1[4]={2134.3343,6678.346,453.345635,54646.464356};
float s2[4]={41124.234,6678.346,8653.65635,856.43576};
int e[4];
union
{
float f[4];
int i[4];
}d;
void check(unsigned imm, char *id)
{
if(checkVi(d.i, e, 4)){
printf("mm_cmp_ps(0x%x, %s) FAILED\n", imm, id);
}
}
static void
avx_test ()
{
__m128 source1, source2, dest;
int i;
#define CMP(imm, rel) \
for (i = 0; i < 4; i++) e[i] = rel ? -1 : 0; \
source1 = _mm_loadu_ps(s1); \
source2 = _mm_loadu_ps(s2); \
dest = _mm_cmp_ps(source1, source2, imm); \
_mm_storeu_ps(d.f, dest); \
check(imm, "" #imm "");
CMP(_CMP_EQ_OQ, !isunordered(s1[i], s2[i]) && s1[i] == s2[i]);
CMP(_CMP_LT_OS, !isunordered(s1[i], s2[i]) && s1[i] < s2[i]);
CMP(_CMP_LE_OS, !isunordered(s1[i], s2[i]) && s1[i] <= s2[i]);
CMP(_CMP_UNORD_Q, isunordered(s1[i], s2[i]));
CMP(_CMP_NEQ_UQ, isunordered(s1[i], s2[i]) || s1[i] != s2[i]);
CMP(_CMP_NLT_US, isunordered(s1[i], s2[i]) || s1[i] >= s2[i]);
CMP(_CMP_NLE_US, isunordered(s1[i], s2[i]) || s1[i] > s2[i]);
CMP(_CMP_ORD_Q, !isunordered(s1[i], s2[i]));
CMP(_CMP_EQ_UQ, isunordered(s1[i], s2[i]) || s1[i] == s2[i]);
CMP(_CMP_NGE_US, isunordered(s1[i], s2[i]) || s1[i] < s2[i]);
CMP(_CMP_NGT_US, isunordered(s1[i], s2[i]) || s1[i] <= s2[i]);
CMP(_CMP_FALSE_OQ, 0);
CMP(_CMP_NEQ_OQ, !isunordered(s1[i], s2[i]) && s1[i] != s2[i]);
CMP(_CMP_GE_OS, !isunordered(s1[i], s2[i]) && s1[i] >= s2[i]);
CMP(_CMP_GT_OS, !isunordered(s1[i], s2[i]) && s1[i] > s2[i]);
CMP(_CMP_TRUE_UQ, 1);
CMP(_CMP_EQ_OS, !isunordered(s1[i], s2[i]) && s1[i] == s2[i]);
CMP(_CMP_LT_OQ, !isunordered(s1[i], s2[i]) && s1[i] < s2[i]);
CMP(_CMP_LE_OQ, !isunordered(s1[i], s2[i]) && s1[i] <= s2[i]);
CMP(_CMP_UNORD_S, isunordered(s1[i], s2[i]));
CMP(_CMP_NEQ_US, isunordered(s1[i], s2[i]) || s1[i] != s2[i]);
CMP(_CMP_NLT_UQ, isunordered(s1[i], s2[i]) || s1[i] >= s2[i]);
CMP(_CMP_NLE_UQ, isunordered(s1[i], s2[i]) || s1[i] > s2[i]);
CMP(_CMP_ORD_S, !isunordered(s1[i], s2[i]));
CMP(_CMP_EQ_US, isunordered(s1[i], s2[i]) || s1[i] == s2[i]);
CMP(_CMP_NGE_UQ, isunordered(s1[i], s2[i]) || s1[i] < s2[i]);
CMP(_CMP_NGT_UQ, isunordered(s1[i], s2[i]) || s1[i] <= s2[i]);
CMP(_CMP_FALSE_OS, 0);
CMP(_CMP_NEQ_OS, !isunordered(s1[i], s2[i]) && s1[i] != s2[i]);
CMP(_CMP_GE_OQ, !isunordered(s1[i], s2[i]) && s1[i] >= s2[i]);
CMP(_CMP_GT_OQ, !isunordered(s1[i], s2[i]) && s1[i] > s2[i]);
CMP(_CMP_TRUE_US, 1);
}
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx -std=c99" } */
#include "avx-check.h"
#include <math.h>
float s1[8]={2134.3343,6678.346,453.345635,54646.464356,456,678567,123,2346};
float s2[8]={41124.234,6678.346,8653.65635,856.43576,7456,134,539,54674};
int e[8];
union
{
float f[8];
int i[8];
}d;
void check(unsigned imm, char *id)
{
if(checkVi(d.i, e, 8)){
printf("mm256_cmp_ps(0x%x, %s) FAILED\n", imm, id);
}
}
static void
avx_test ()
{
__m256 source1, source2, dest;
int i;
#define CMP(imm, rel) \
for (i = 0; i < 8; i++) e[i] = rel ? -1 : 0; \
source1 = _mm256_loadu_ps(s1); \
source2 = _mm256_loadu_ps(s2); \
dest = _mm256_cmp_ps(source1, source2, imm); \
_mm256_storeu_ps(d.f, dest); \
check(imm, "" #imm "");
CMP(_CMP_EQ_OQ, !isunordered(s1[i], s2[i]) && s1[i] == s2[i]);
CMP(_CMP_LT_OS, !isunordered(s1[i], s2[i]) && s1[i] < s2[i]);
CMP(_CMP_LE_OS, !isunordered(s1[i], s2[i]) && s1[i] <= s2[i]);
CMP(_CMP_UNORD_Q, isunordered(s1[i], s2[i]));
CMP(_CMP_NEQ_UQ, isunordered(s1[i], s2[i]) || s1[i] != s2[i]);
CMP(_CMP_NLT_US, isunordered(s1[i], s2[i]) || s1[i] >= s2[i]);
CMP(_CMP_NLE_US, isunordered(s1[i], s2[i]) || s1[i] > s2[i]);
CMP(_CMP_ORD_Q, !isunordered(s1[i], s2[i]));
CMP(_CMP_EQ_UQ, isunordered(s1[i], s2[i]) || s1[i] == s2[i]);
CMP(_CMP_NGE_US, isunordered(s1[i], s2[i]) || s1[i] < s2[i]);
CMP(_CMP_NGT_US, isunordered(s1[i], s2[i]) || s1[i] <= s2[i]);
CMP(_CMP_FALSE_OQ, 0);
CMP(_CMP_NEQ_OQ, !isunordered(s1[i], s2[i]) && s1[i] != s2[i]);
CMP(_CMP_GE_OS, !isunordered(s1[i], s2[i]) && s1[i] >= s2[i]);
CMP(_CMP_GT_OS, !isunordered(s1[i], s2[i]) && s1[i] > s2[i]);
CMP(_CMP_TRUE_UQ, 1);
CMP(_CMP_EQ_OS, !isunordered(s1[i], s2[i]) && s1[i] == s2[i]);
CMP(_CMP_LT_OQ, !isunordered(s1[i], s2[i]) && s1[i] < s2[i]);
CMP(_CMP_LE_OQ, !isunordered(s1[i], s2[i]) && s1[i] <= s2[i]);
CMP(_CMP_UNORD_S, isunordered(s1[i], s2[i]));
CMP(_CMP_NEQ_US, isunordered(s1[i], s2[i]) || s1[i] != s2[i]);
CMP(_CMP_NLT_UQ, isunordered(s1[i], s2[i]) || s1[i] >= s2[i]);
CMP(_CMP_NLE_UQ, isunordered(s1[i], s2[i]) || s1[i] > s2[i]);
CMP(_CMP_ORD_S, !isunordered(s1[i], s2[i]));
CMP(_CMP_EQ_US, isunordered(s1[i], s2[i]) || s1[i] == s2[i]);
CMP(_CMP_NGE_UQ, isunordered(s1[i], s2[i]) || s1[i] < s2[i]);
CMP(_CMP_NGT_UQ, isunordered(s1[i], s2[i]) || s1[i] <= s2[i]);
CMP(_CMP_FALSE_OS, 0);
CMP(_CMP_NEQ_OS, !isunordered(s1[i], s2[i]) && s1[i] != s2[i]);
CMP(_CMP_GE_OQ, !isunordered(s1[i], s2[i]) && s1[i] >= s2[i]);
CMP(_CMP_GT_OQ, !isunordered(s1[i], s2[i]) && s1[i] > s2[i]);
CMP(_CMP_TRUE_US, 1);
}
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx -std=c99" } */
#include "avx-check.h"
#include <math.h>
double s1[] = {2134.3343, 6678.346};
double s2[] = {41124.234, 6678.346};
long long dd[] = {1, 2}, d[2];
union{long long l[2]; double d[2];} e;
void check(unsigned imm, char *id)
{
if(checkVl(d, e.l, 2)){
printf("mm_cmp_sd(%s: 0x%x) FAILED\n", id, imm);
}
}
#define CMP(imm, rel) \
e.l[0] = rel ? -1 : 0; \
dest = _mm_loadu_pd((double*)dd); \
source1 = _mm_loadu_pd(s1); \
source2 = _mm_loadu_pd(s2); \
dest = _mm_cmp_sd(source1, source2, imm); \
_mm_storeu_pd((double*) d, dest); \
check(imm, "" #imm "");
static void
avx_test ()
{
__m128d source1, source2, dest;
e.d[1] = s1[1];
CMP(_CMP_EQ_OQ, !isunordered(s1[0], s2[0]) && s1[0] == s2[0]);
CMP(_CMP_LT_OS, !isunordered(s1[0], s2[0]) && s1[0] < s2[0]);
CMP(_CMP_LE_OS, !isunordered(s1[0], s2[0]) && s1[0] <= s2[0]);
CMP(_CMP_UNORD_Q, isunordered(s1[0], s2[0]));
CMP(_CMP_NEQ_UQ, isunordered(s1[0], s2[0]) || s1[0] != s2[0]);
CMP(_CMP_NLT_US, isunordered(s1[0], s2[0]) || s1[0] >= s2[0]);
CMP(_CMP_NLE_US, isunordered(s1[0], s2[0]) || s1[0] > s2[0]);
CMP(_CMP_ORD_Q, !isunordered(s1[0], s2[0]));
CMP(_CMP_EQ_UQ, isunordered(s1[0], s2[0]) || s1[0] == s2[0]);
CMP(_CMP_NGE_US, isunordered(s1[0], s2[0]) || s1[0] < s2[0]);
CMP(_CMP_NGT_US, isunordered(s1[0], s2[0]) || s1[0] <= s2[0]);
CMP(_CMP_FALSE_OQ, 0);
CMP(_CMP_NEQ_OQ, !isunordered(s1[0], s2[0]) && s1[0] != s2[0]);
CMP(_CMP_GE_OS, !isunordered(s1[0], s2[0]) && s1[0] >= s2[0]);
CMP(_CMP_GT_OS, !isunordered(s1[0], s2[0]) && s1[0] > s2[0]);
CMP(_CMP_TRUE_UQ, 1);
CMP(_CMP_EQ_OS, !isunordered(s1[0], s2[0]) && s1[0] == s2[0]);
CMP(_CMP_LT_OQ, !isunordered(s1[0], s2[0]) && s1[0] < s2[0]);
CMP(_CMP_LE_OQ, !isunordered(s1[0], s2[0]) && s1[0] <= s2[0]);
CMP(_CMP_UNORD_S, isunordered(s1[0], s2[0]));
CMP(_CMP_NEQ_US, isunordered(s1[0], s2[0]) || s1[0] != s2[0]);
CMP(_CMP_NLT_UQ, isunordered(s1[0], s2[0]) || s1[0] >= s2[0]);
CMP(_CMP_NLE_UQ, isunordered(s1[0], s2[0]) || s1[0] > s2[0]);
CMP(_CMP_ORD_S, !isunordered(s1[0], s2[0]));
CMP(_CMP_EQ_US, isunordered(s1[0], s2[0]) || s1[0] == s2[0]);
CMP(_CMP_NGE_UQ, isunordered(s1[0], s2[0]) || s1[0] < s2[0]);
CMP(_CMP_NGT_UQ, isunordered(s1[0], s2[0]) || s1[0] <= s2[0]);
CMP(_CMP_FALSE_OS, 0);
CMP(_CMP_NEQ_OS, !isunordered(s1[0], s2[0]) && s1[0] != s2[0]);
CMP(_CMP_GE_OQ, !isunordered(s1[0], s2[0]) && s1[0] >= s2[0]);
CMP(_CMP_GT_OQ, !isunordered(s1[0], s2[0]) && s1[0] > s2[0]);
CMP(_CMP_TRUE_US, 1);
}
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx -std=c99" } */
#include "avx-check.h"
#include <math.h>
float s1[]={2134.3343, 6678.346, 453.345635, 54646.464356};
float s2[]={41124.234, 6678.346, 8653.65635, 856.43576};
int dd[] = {1, 2, 3, 4};
float d[4];
union{int i[4]; float f[4];} e;
void check(unsigned imm, char *id)
{
if(checkVi((int*)d, e.i, 4)){
printf("mm_cmp_ss(0x%x, %s) FAILED\n", imm, id);
}
}
static void
avx_test ()
{
__m128 source1, source2, dest;
int i;
#define CMP(imm, rel) \
e.i[0] = rel ? -1 : 0; \
dest = _mm_loadu_ps((float*)dd); \
source1 = _mm_loadu_ps(s1); \
source2 = _mm_loadu_ps(s2); \
dest = _mm_cmp_ss(source1, source2, imm); \
_mm_storeu_ps(d, dest); \
check(imm, "" #imm "");
for(i = 1; i < 4; i++) e.f[i] = s1[i];
CMP(_CMP_EQ_OQ, !isunordered(s1[0], s2[0]) && s1[0] == s2[0]);
CMP(_CMP_LT_OS, !isunordered(s1[0], s2[0]) && s1[0] < s2[0]);
CMP(_CMP_LE_OS, !isunordered(s1[0], s2[0]) && s1[0] <= s2[0]);
CMP(_CMP_UNORD_Q, isunordered(s1[0], s2[0]));
CMP(_CMP_NEQ_UQ, isunordered(s1[0], s2[0]) || s1[0] != s2[0]);
CMP(_CMP_NLT_US, isunordered(s1[0], s2[0]) || s1[0] >= s2[0]);
CMP(_CMP_NLE_US, isunordered(s1[0], s2[0]) || s1[0] > s2[0]);
CMP(_CMP_ORD_Q, !isunordered(s1[0], s2[0]));
CMP(_CMP_EQ_UQ, isunordered(s1[0], s2[0]) || s1[0] == s2[0]);
CMP(_CMP_NGE_US, isunordered(s1[0], s2[0]) || s1[0] < s2[0]);
CMP(_CMP_NGT_US, isunordered(s1[0], s2[0]) || s1[0] <= s2[0]);
CMP(_CMP_FALSE_OQ, 0);
CMP(_CMP_NEQ_OQ, !isunordered(s1[0], s2[0]) && s1[0] != s2[0]);
CMP(_CMP_GE_OS, !isunordered(s1[0], s2[0]) && s1[0] >= s2[0]);
CMP(_CMP_GT_OS, !isunordered(s1[0], s2[0]) && s1[0] > s2[0]);
CMP(_CMP_TRUE_UQ, 1);
CMP(_CMP_EQ_OS, !isunordered(s1[0], s2[0]) && s1[0] == s2[0]);
CMP(_CMP_LT_OQ, !isunordered(s1[0], s2[0]) && s1[0] < s2[0]);
CMP(_CMP_LE_OQ, !isunordered(s1[0], s2[0]) && s1[0] <= s2[0]);
CMP(_CMP_UNORD_S, isunordered(s1[0], s2[0]));
CMP(_CMP_NEQ_US, isunordered(s1[0], s2[0]) || s1[0] != s2[0]);
CMP(_CMP_NLT_UQ, isunordered(s1[0], s2[0]) || s1[0] >= s2[0]);
CMP(_CMP_NLE_UQ, isunordered(s1[0], s2[0]) || s1[0] > s2[0]);
CMP(_CMP_ORD_S, !isunordered(s1[0], s2[0]));
CMP(_CMP_EQ_US, isunordered(s1[0], s2[0]) || s1[0] == s2[0]);
CMP(_CMP_NGE_UQ, isunordered(s1[0], s2[0]) || s1[0] < s2[0]);
CMP(_CMP_NGT_UQ, isunordered(s1[0], s2[0]) || s1[0] <= s2[0]);
CMP(_CMP_FALSE_OS, 0);
CMP(_CMP_NEQ_OS, !isunordered(s1[0], s2[0]) && s1[0] != s2[0]);
CMP(_CMP_GE_OQ, !isunordered(s1[0], s2[0]) && s1[0] >= s2[0]);
CMP(_CMP_GT_OQ, !isunordered(s1[0], s2[0]) && s1[0] > s2[0]);
CMP(_CMP_TRUE_US, 1);
}
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#define CHECK_H "avx-check.h"
#define TEST avx_test
#include "sse2-comisd-1.c"
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#define CHECK_H "avx-check.h"
#define TEST avx_test
#include "sse2-comisd-2.c"
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#define CHECK_H "avx-check.h"
#define TEST avx_test
#include "sse2-comisd-3.c"
/* { dg-do run } */
/* { dg-require-effective-target avx } */
/* { dg-options "-O2 -mavx" } */
#define CHECK_H "avx-check.h"
#define TEST avx_test
#include "sse2-comisd-4.c"
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment