i386: Fix AVX10.2 SAT CVT testcases.

Add missing testcases.

gcc/testsuite/ChangeLog:

	* gcc.target/i386/avx10_2-512-satcvt-1.c: Add testcase.
	* gcc.target/i386/avx10_2-512-vcvtph2ibs-2.c: Ditto
	* gcc.target/i386/avx10_2-512-vcvtph2iubs-2.c: Ditto
	* gcc.target/i386/avx10_2-512-vcvtps2ibs-2.c: Ditto
	* gcc.target/i386/avx10_2-512-vcvtps2iubs-2.c: Ditto
	* gcc.target/i386/avx10_2-512-vcvttpd2dqs-2.c: Ditto
	* gcc.target/i386/avx10_2-512-vcvttpd2qqs-2.c: Ditto
	* gcc.target/i386/avx10_2-512-vcvttpd2udqs-2.c: Ditto
	* gcc.target/i386/avx10_2-512-vcvttpd2uqqs-2.c: Ditto
	* gcc.target/i386/avx10_2-512-vcvttph2ibs-2.c: Ditto
	* gcc.target/i386/avx10_2-512-vcvttph2iubs-2.c: Ditto
	* gcc.target/i386/avx10_2-512-vcvttps2dqs-2.c: Ditto
	* gcc.target/i386/avx10_2-512-vcvttps2ibs-2.c: Ditto
	* gcc.target/i386/avx10_2-512-vcvttps2iubs-2.c: Ditto
	* gcc.target/i386/avx10_2-512-vcvttps2qqs-2.c: Ditto
	* gcc.target/i386/avx10_2-512-vcvttps2udqs-2.c: Ditto
	* gcc.target/i386/avx10_2-512-vcvttps2uqqs-2.c: Ditto
	* gcc.target/i386/avx10_2-satcvt-1.c: Ditto
	* gcc.target/i386/avx10_2-vcvttsd2sis-2.c: Ditto
	* gcc.target/i386/avx10_2-vcvttsd2usis-2.c: Ditto
	* gcc.target/i386/avx10_2-vcvttss2sis-2.c: Ditto
	* gcc.target/i386/avx10_2-vcvttss2usis-2.c: Ditto
This commit is contained in:
Hu, Lin1 2025-03-14 11:16:14 +08:00
parent e353272423
commit 2e7a92a68a
23 changed files with 580 additions and 112 deletions

View file

@ -1,27 +1,43 @@
/* { dg-do compile } */
/* { dg-options "-O2 -march=x86-64-v3 -mavx10.2-512" } */
/* { dg-final { scan-assembler-times "vcvtph2ibs\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvtph2ibs\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
/* { dg-final { scan-assembler-times "vcvtph2ibs\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvtph2ibs\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvtph2ibs\[ \\t\]+\{rn-sae\}\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvtph2ibs\[ \\t\]+\{rz-sae\}\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvtph2iubs\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvtph2iubs\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
/* { dg-final { scan-assembler-times "vcvtph2iubs\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvtph2iubs\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvtph2iubs\[ \\t\]+\{rn-sae\}\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvtph2iubs\[ \\t\]+\{rz-sae\}\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttph2ibs\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttph2ibs\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
/* { dg-final { scan-assembler-times "vcvttph2ibs\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttph2ibs\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttph2ibs\[ \\t\]+\{sae\}\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttph2ibs\[ \\t\]+\{sae\}\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttph2iubs\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttph2iubs\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
/* { dg-final { scan-assembler-times "vcvttph2iubs\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttph2iubs\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttph2iubs\[ \\t\]+\{sae\}\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttph2iubs\[ \\t\]+\{sae\}\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvtps2ibs\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvtps2ibs\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
/* { dg-final { scan-assembler-times "vcvtps2ibs\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvtps2ibs\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvtps2ibs\[ \\t\]+\{rn-sae\}\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvtps2ibs\[ \\t\]+\{rz-sae\}\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvtps2iubs\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvtps2iubs\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
/* { dg-final { scan-assembler-times "vcvtps2iubs\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvtps2iubs\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvtps2iubs\[ \\t\]+\{rn-sae\}\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvtps2iubs\[ \\t\]+\{rz-sae\}\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2ibs\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2ibs\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
/* { dg-final { scan-assembler-times "vcvttps2ibs\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2ibs\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2ibs\[ \\t\]+\{sae\}\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2ibs\[ \\t\]+\{sae\}\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2iubs\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2iubs\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
/* { dg-final { scan-assembler-times "vcvttps2iubs\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2iubs\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2iubs\[ \\t\]+\{sae\}\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2iubs\[ \\t\]+\{sae\}\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvtbf162ibs\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
@ -36,27 +52,51 @@
/* { dg-final { scan-assembler-times "vcvttbf162iubs\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttbf162iubs\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttbf162iubs\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttpd2dqs\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttpd2dqs\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttpd2dqs\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttpd2dqs\[ \\t\]+\{sae\}\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttpd2dqs\[ \\t\]+\{sae\}\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttpd2dqs\[ \\t\]+\{sae\}\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttpd2qqs\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttpd2qqs\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttpd2qqs\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttpd2qqs\[ \\t\]+\{sae\}\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttpd2qqs\[ \\t\]+\{sae\}\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttpd2qqs\[ \\t\]+\{sae\}\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttpd2udqs\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttpd2udqs\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttpd2udqs\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttpd2udqs\[ \\t\]+\{sae\}\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttpd2udqs\[ \\t\]+\{sae\}\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttpd2udqs\[ \\t\]+\{sae\}\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttpd2uqqs\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttpd2uqqs\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttpd2uqqs\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttpd2uqqs\[ \\t\]+\{sae\}\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttpd2uqqs\[ \\t\]+\{sae\}\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttpd2uqqs\[ \\t\]+\{sae\}\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2dqs\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2dqs\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2dqs\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2dqs\[ \\t\]+\{sae\}\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2dqs\[ \\t\]+\{sae\}\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2dqs\[ \\t\]+\{sae\}\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2qqs\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2qqs\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2qqs\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2qqs\[ \\t\]+\{sae\}\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2qqs\[ \\t\]+\{sae\}\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2qqs\[ \\t\]+\{sae\}\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2udqs\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2udqs\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2udqs\[ \\t\]+\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2udqs\[ \\t\]+\{sae\}\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2udqs\[ \\t\]+\{sae\}\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2udqs\[ \\t\]+\{sae\}\[^\{\n\]*%zmm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2uqqs\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2uqqs\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2uqqs\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2uqqs\[ \\t\]+\{sae\}\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2uqqs\[ \\t\]+\{sae\}\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2uqqs\[ \\t\]+\{sae\}\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%zmm\[0-9\]+\{%k\[0-9\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
@ -77,34 +117,58 @@ volatile __mmask32 m32;
void extern
avx10_2_test (void)
{
xi = _mm512_ipcvtph_epi8 (xh);
xi = _mm512_mask_ipcvtph_epi8 (xi, m32, xh);
xi = _mm512_maskz_ipcvtph_epi8 (m32, xh);
xi = _mm512_ipcvt_roundph_epi8 (xh, 4);
xi = _mm512_mask_ipcvt_roundph_epi8 (xi, m32, xh, 8);
xi = _mm512_maskz_ipcvt_roundph_epi8 (m32, xh, 11);
xi = _mm512_ipcvtph_epu8 (xh);
xi = _mm512_mask_ipcvtph_epu8 (xi, m32, xh);
xi = _mm512_maskz_ipcvtph_epu8 (m32, xh);
xi = _mm512_ipcvt_roundph_epu8 (xh, 4);
xi = _mm512_mask_ipcvt_roundph_epu8 (xi, m32, xh, 8);
xi = _mm512_maskz_ipcvt_roundph_epu8 (m32, xh, 11);
xi = _mm512_ipcvttph_epi8 (xh);
xi = _mm512_mask_ipcvttph_epi8 (xi, m32, xh);
xi = _mm512_maskz_ipcvttph_epi8 (m32, xh);
xi = _mm512_ipcvtt_roundph_epi8 (xh, 4);
xi = _mm512_mask_ipcvtt_roundph_epi8 (xi, m32, xh, 8);
xi = _mm512_maskz_ipcvtt_roundph_epi8 (m32, xh, 8);
xi = _mm512_ipcvttph_epu8 (xh);
xi = _mm512_mask_ipcvttph_epu8 (xi, m32, xh);
xi = _mm512_maskz_ipcvttph_epu8 (m32, xh);
xi = _mm512_ipcvtt_roundph_epu8 (xh, 4);
xi = _mm512_mask_ipcvtt_roundph_epu8 (xi, m32, xh, 8);
xi = _mm512_maskz_ipcvtt_roundph_epu8 (m32, xh, 8);
xi = _mm512_ipcvtps_epi8 (x);
xi = _mm512_mask_ipcvtps_epi8 (xi, m16, x);
xi = _mm512_maskz_ipcvtps_epi8 (m16, x);
xi = _mm512_ipcvt_roundps_epi8 (x, 4);
xi = _mm512_mask_ipcvt_roundps_epi8 (xi, m16, x, 8);
xi = _mm512_maskz_ipcvt_roundps_epi8 (m16, x, 11);
xi = _mm512_ipcvtps_epu8 (x);
xi = _mm512_mask_ipcvtps_epu8 (xi, m16, x);
xi = _mm512_maskz_ipcvtps_epu8 (m16, x);
xi = _mm512_ipcvt_roundps_epu8 (x, 4);
xi = _mm512_mask_ipcvt_roundps_epu8 (xi, m16, x, 8);
xi = _mm512_maskz_ipcvt_roundps_epu8 (m16, x, 11);
xi = _mm512_ipcvttps_epi8 (x);
xi = _mm512_mask_ipcvttps_epi8 (xi, m16, x);
xi = _mm512_maskz_ipcvttps_epi8 (m16, x);
xi = _mm512_ipcvtt_roundps_epi8 (x, 4);
xi = _mm512_mask_ipcvtt_roundps_epi8 (xi, m16, x, 8);
xi = _mm512_maskz_ipcvtt_roundps_epi8 (m16, x, 8);
xi = _mm512_ipcvttps_epu8 (x);
xi = _mm512_mask_ipcvttps_epu8 (xi, m16, x);
xi = _mm512_maskz_ipcvttps_epu8 (m16, x);
xi = _mm512_ipcvtt_roundps_epu8 (x, 4);
xi = _mm512_mask_ipcvtt_roundps_epu8 (xi, m16, x, 8);
xi = _mm512_maskz_ipcvtt_roundps_epu8 (m16, x, 8);
@ -125,34 +189,58 @@ avx10_2_test (void)
xi = _mm512_mask_ipcvttbf16_epu8 (xi, m32, xbh);
xi = _mm512_maskz_ipcvttbf16_epu8 (m32, xbh);
hxi = _mm512_cvttspd_epi32 (xd);
hxi = _mm512_mask_cvttspd_epi32 (hxi, m8, xd);
hxi = _mm512_maskz_cvttspd_epi32 (m8, xd);
hxi = _mm512_cvtts_roundpd_epi32 (xd, 8);
hxi = _mm512_mask_cvtts_roundpd_epi32 (hxi, m8, xd, 8);
hxi = _mm512_maskz_cvtts_roundpd_epi32 (m8, xd, 8);
xi = _mm512_cvttspd_epi64 (xd);
xi = _mm512_mask_cvttspd_epi64 (xi, m8, xd);
xi = _mm512_maskz_cvttspd_epi64 (m8, xd);
xi = _mm512_cvtts_roundpd_epi64 (xd, 8);
xi = _mm512_mask_cvtts_roundpd_epi64 (xi, m8, xd, 8);
xi = _mm512_maskz_cvtts_roundpd_epi64 (m8, xd, 8);
hxi = _mm512_cvttspd_epu32 (xd);
hxi = _mm512_mask_cvttspd_epu32 (hxi, m8, xd);
hxi = _mm512_maskz_cvttspd_epu32 (m8, xd);
hxi = _mm512_cvtts_roundpd_epu32 (xd, 8);
hxi = _mm512_mask_cvtts_roundpd_epu32 (hxi, m8, xd, 8);
hxi = _mm512_maskz_cvtts_roundpd_epu32 (m8, xd, 8);
xi = _mm512_cvttspd_epu64 (xd);
xi = _mm512_mask_cvttspd_epu64 (xi, m8, xd);
xi = _mm512_maskz_cvttspd_epu64 (m8, xd);
xi = _mm512_cvtts_roundpd_epu64 (xd, 8);
xi = _mm512_mask_cvtts_roundpd_epu64 (xi, m8, xd, 8);
xi = _mm512_maskz_cvtts_roundpd_epu64 (m8, xd, 8);
xi = _mm512_cvttsps_epi32 (x);
xi = _mm512_mask_cvttsps_epi32 (xi, m16, x);
xi = _mm512_maskz_cvttsps_epi32 (m16, x);
xi = _mm512_cvtts_roundps_epi32 (x, 8);
xi = _mm512_mask_cvtts_roundps_epi32 (xi, m16, x, 8);
xi = _mm512_maskz_cvtts_roundps_epi32 (m16, x, 8);
xi = _mm512_cvttsps_epi64 (hx);
xi = _mm512_mask_cvttsps_epi64 (xi, m8, hx);
xi = _mm512_maskz_cvttsps_epi64 (m8, hx);
xi = _mm512_cvtts_roundps_epi64 (hx, 8);
xi = _mm512_mask_cvtts_roundps_epi64 (xi, m8, hx, 8);
xi = _mm512_maskz_cvtts_roundps_epi64 (m8, hx, 8);
xi = _mm512_cvttsps_epu32 (x);
xi = _mm512_mask_cvttsps_epu32 (xi, m16, x);
xi = _mm512_maskz_cvttsps_epu32 (m16, x);
xi = _mm512_cvtts_roundps_epu32 (x, 8);
xi = _mm512_mask_cvtts_roundps_epu32 (xi, m16, x, 8);
xi = _mm512_maskz_cvtts_roundps_epu32 (m16, x, 8);
xi = _mm512_cvttsps_epu64 (hx);
xi = _mm512_mask_cvttsps_epu64 (xi, m8, hx);
xi = _mm512_maskz_cvttsps_epu64 (m8, hx);
xi = _mm512_cvtts_roundps_epu64 (hx, 8);
xi = _mm512_mask_cvtts_roundps_epu64 (xi, m8, hx, 8);
xi = _mm512_maskz_cvtts_roundps_epu64 (m8, hx, 8);

View file

@ -49,15 +49,9 @@ TEST (void)
for (i = 0; i < SIZE; i++)
res2.a[i] = DEFAULT_VALUE;
#if AVX512F_LEN == 128
res1.x = INTRINSIC (_ipcvtph_epi8) (s.x);
res2.x = INTRINSIC (_mask_ipcvtph_epi8) (res2.x, mask, s.x);
res3.x = INTRINSIC (_maskz_ipcvtph_epi8) (mask, s.x);
#else
res1.x = INTRINSIC (_ipcvt_roundph_epi8) (s.x, 8);
res2.x = INTRINSIC (_mask_ipcvt_roundph_epi8) (res2.x, mask, s.x, 8);
res3.x = INTRINSIC (_maskz_ipcvt_roundph_epi8) (mask, s.x, 8);
#endif
CALC (s.a, res_ref);
@ -71,4 +65,21 @@ TEST (void)
MASK_ZERO (i_w) (res_ref, mask, SIZE);
if (UNION_CHECK (AVX512F_LEN, i_w) (res3, res_ref))
abort ();
#if AVX512F_LEN != 128
res1.x = INTRINSIC (_ipcvt_roundph_epi8) (s.x, 8);
res2.x = INTRINSIC (_mask_ipcvt_roundph_epi8) (res2.x, mask, s.x, 8);
res3.x = INTRINSIC (_maskz_ipcvt_roundph_epi8) (mask, s.x, 8);
if (UNION_CHECK (AVX512F_LEN, i_w) (res1, res_ref))
abort ();
MASK_MERGE (i_w) (res_ref, mask, SIZE);
if (UNION_CHECK (AVX512F_LEN, i_w) (res2, res_ref))
abort ();
MASK_ZERO (i_w) (res_ref, mask, SIZE);
if (UNION_CHECK (AVX512F_LEN, i_w) (res3, res_ref))
abort ();
#endif
}

View file

@ -49,15 +49,9 @@ TEST (void)
for (i = 0; i < SIZE; i++)
res2.a[i] = DEFAULT_VALUE;
#if AVX512F_LEN == 128
res1.x = INTRINSIC (_ipcvtph_epu8) (s.x);
res2.x = INTRINSIC (_mask_ipcvtph_epu8) (res2.x, mask, s.x);
res3.x = INTRINSIC (_maskz_ipcvtph_epu8) (mask, s.x);
#else
res1.x = INTRINSIC (_ipcvt_roundph_epu8) (s.x, 8);
res2.x = INTRINSIC (_mask_ipcvt_roundph_epu8) (res2.x, mask, s.x, 8);
res3.x = INTRINSIC (_maskz_ipcvt_roundph_epu8) (mask, s.x, 8);
#endif
CALC (s.a, res_ref);
@ -71,4 +65,21 @@ TEST (void)
MASK_ZERO (i_w) (res_ref, mask, SIZE);
if (UNION_CHECK (AVX512F_LEN, i_w) (res3, res_ref))
abort ();
#if AVX512F_LEN != 128
res1.x = INTRINSIC (_ipcvt_roundph_epu8) (s.x, 8);
res2.x = INTRINSIC (_mask_ipcvt_roundph_epu8) (res2.x, mask, s.x, 8);
res3.x = INTRINSIC (_maskz_ipcvt_roundph_epu8) (mask, s.x, 8);
if (UNION_CHECK (AVX512F_LEN, i_w) (res1, res_ref))
abort ();
MASK_MERGE (i_w) (res_ref, mask, SIZE);
if (UNION_CHECK (AVX512F_LEN, i_w) (res2, res_ref))
abort ();
MASK_ZERO (i_w) (res_ref, mask, SIZE);
if (UNION_CHECK (AVX512F_LEN, i_w) (res3, res_ref))
abort ();
#endif
}

View file

@ -50,15 +50,9 @@ TEST (void)
for (i = 0; i < SIZE; i++)
res2.a[i] = DEFAULT_VALUE;
#if AVX512F_LEN == 128
res1.x = INTRINSIC (_ipcvtps_epi8) (s.x);
res2.x = INTRINSIC (_mask_ipcvtps_epi8) (res2.x, mask, s.x);
res3.x = INTRINSIC (_maskz_ipcvtps_epi8) (mask, s.x);
#else
res1.x = INTRINSIC (_ipcvt_roundps_epi8) (s.x, 8);
res2.x = INTRINSIC (_mask_ipcvt_roundps_epi8) (res2.x, mask, s.x, 8);
res3.x = INTRINSIC (_maskz_ipcvt_roundps_epi8) (mask, s.x, 8);
#endif
CALC (s.a, res_ref);
@ -72,4 +66,21 @@ TEST (void)
MASK_ZERO (i_d) (res_ref, mask, SIZE);
if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref))
abort ();
#if AVX512F_LEN != 128
res1.x = INTRINSIC (_ipcvt_roundps_epi8) (s.x, 8);
res2.x = INTRINSIC (_mask_ipcvt_roundps_epi8) (res2.x, mask, s.x, 8);
res3.x = INTRINSIC (_maskz_ipcvt_roundps_epi8) (mask, s.x, 8);
if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref))
abort ();
MASK_MERGE (i_d) (res_ref, mask, SIZE);
if (UNION_CHECK (AVX512F_LEN, i_d) (res2, res_ref))
abort ();
MASK_ZERO (i_d) (res_ref, mask, SIZE);
if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref))
abort ();
#endif
}

View file

@ -48,15 +48,9 @@ TEST (void)
for (i = 0; i < SIZE; i++)
res2.a[i] = DEFAULT_VALUE;
#if AVX512F_LEN == 128
res1.x = INTRINSIC (_ipcvtps_epu8) (s.x);
res2.x = INTRINSIC (_mask_ipcvtps_epu8) (res2.x, mask, s.x);
res3.x = INTRINSIC (_maskz_ipcvtps_epu8) (mask, s.x);
#else
res1.x = INTRINSIC (_ipcvt_roundps_epu8) (s.x, 8);
res2.x = INTRINSIC (_mask_ipcvt_roundps_epu8) (res2.x, mask, s.x, 8);
res3.x = INTRINSIC (_maskz_ipcvt_roundps_epu8) (mask, s.x, 8);
#endif
CALC (s.a, res_ref);
@ -70,4 +64,21 @@ TEST (void)
MASK_ZERO (i_d) (res_ref, mask, SIZE);
if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref))
abort ();
#if AVX512F_LEN != 128
res1.x = INTRINSIC (_ipcvt_roundps_epu8) (s.x, 8);
res2.x = INTRINSIC (_mask_ipcvt_roundps_epu8) (res2.x, mask, s.x, 8);
res3.x = INTRINSIC (_maskz_ipcvt_roundps_epu8) (mask, s.x, 8);
if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref))
abort ();
MASK_MERGE (i_d) (res_ref, mask, SIZE);
if (UNION_CHECK (AVX512F_LEN, i_d) (res2, res_ref))
abort ();
MASK_ZERO (i_d) (res_ref, mask, SIZE);
if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref))
abort ();
#endif
}

View file

@ -48,15 +48,9 @@ TEST (void)
for (i = 0; i < SIZE; i++)
res2.a[i] = DEFAULT_VALUE;
#if AVX512F_LEN == 128
res1.x = INTRINSIC (_cvttspd_epi32) (s.x);
res2.x = INTRINSIC (_mask_cvttspd_epi32) (res2.x, mask, s.x);
res3.x = INTRINSIC (_maskz_cvttspd_epi32) (mask, s.x);
#else
res1.x = INTRINSIC (_cvtts_roundpd_epi32) (s.x, 8);
res2.x = INTRINSIC (_mask_cvtts_roundpd_epi32) (res2.x, mask, s.x, 8);
res3.x = INTRINSIC (_maskz_cvtts_roundpd_epi32) (mask, s.x, 8);
#endif
CALC (s.a, res_ref);
@ -70,4 +64,21 @@ TEST (void)
MASK_ZERO (i_d) (res_ref, mask, SRC_SIZE);
if (UNION_CHECK (AVX512F_LEN_HALF, i_d) (res3, res_ref))
abort ();
#if AVX512F_LEN != 128
res1.x = INTRINSIC (_cvtts_roundpd_epi32) (s.x, 8);
res2.x = INTRINSIC (_mask_cvtts_roundpd_epi32) (res2.x, mask, s.x, 8);
res3.x = INTRINSIC (_maskz_cvtts_roundpd_epi32) (mask, s.x, 8);
if (UNION_CHECK (AVX512F_LEN_HALF, i_d) (res1, res_ref))
abort ();
MASK_MERGE (i_d) (res_ref, mask, SRC_SIZE);
if (UNION_CHECK (AVX512F_LEN_HALF, i_d) (res2, res_ref))
abort ();
MASK_ZERO (i_d) (res_ref, mask, SRC_SIZE);
if (UNION_CHECK (AVX512F_LEN_HALF, i_d) (res3, res_ref))
abort ();
#endif
}

View file

@ -47,15 +47,9 @@ TEST (void)
for (i = 0; i < SIZE; i++)
res2.a[i] = DEFAULT_VALUE;
#if AVX512F_LEN == 128
res1.x = INTRINSIC (_cvttspd_epi64) (s.x);
res2.x = INTRINSIC (_mask_cvttspd_epi64) (res2.x, mask, s.x);
res3.x = INTRINSIC (_maskz_cvttspd_epi64) (mask, s.x);
#else
res1.x = INTRINSIC (_cvtts_roundpd_epi64) (s.x, 8);
res2.x = INTRINSIC (_mask_cvtts_roundpd_epi64) (res2.x, mask, s.x, 8);
res3.x = INTRINSIC (_maskz_cvtts_roundpd_epi64) (mask, s.x, 8);
#endif
CALC (s.a, res_ref);
@ -69,4 +63,21 @@ TEST (void)
MASK_ZERO (i_q) (res_ref, mask, SIZE);
if (UNION_CHECK (AVX512F_LEN, i_q) (res3, res_ref))
abort ();
#if AVX512F_LEN != 128
res1.x = INTRINSIC (_cvtts_roundpd_epi64) (s.x, 8);
res2.x = INTRINSIC (_mask_cvtts_roundpd_epi64) (res2.x, mask, s.x, 8);
res3.x = INTRINSIC (_maskz_cvtts_roundpd_epi64) (mask, s.x, 8);
if (UNION_CHECK (AVX512F_LEN, i_q) (res1, res_ref))
abort ();
MASK_MERGE (i_q) (res_ref, mask, SIZE);
if (UNION_CHECK (AVX512F_LEN, i_q) (res2, res_ref))
abort ();
MASK_ZERO (i_q) (res_ref, mask, SIZE);
if (UNION_CHECK (AVX512F_LEN, i_q) (res3, res_ref))
abort ();
#endif
}

View file

@ -48,15 +48,9 @@ TEST (void)
for (i = 0; i < SIZE; i++)
res2.a[i] = DEFAULT_VALUE;
#if AVX512F_LEN == 128
res1.x = INTRINSIC (_cvttspd_epu32) (s.x);
res2.x = INTRINSIC (_mask_cvttspd_epu32) (res2.x, mask, s.x);
res3.x = INTRINSIC (_maskz_cvttspd_epu32) (mask, s.x);
#else
res1.x = INTRINSIC (_cvtts_roundpd_epu32) (s.x, 8);
res2.x = INTRINSIC (_mask_cvtts_roundpd_epu32) (res2.x, mask, s.x, 8);
res3.x = INTRINSIC (_maskz_cvtts_roundpd_epu32) (mask, s.x, 8);
#endif
CALC (s.a, res_ref);
@ -70,4 +64,21 @@ TEST (void)
MASK_ZERO (i_ud) (res_ref, mask, SRC_SIZE);
if (UNION_CHECK (AVX512F_LEN_HALF, i_ud) (res3, res_ref))
abort ();
#if AVX512F_LEN != 128
res1.x = INTRINSIC (_cvtts_roundpd_epu32) (s.x, 8);
res2.x = INTRINSIC (_mask_cvtts_roundpd_epu32) (res2.x, mask, s.x, 8);
res3.x = INTRINSIC (_maskz_cvtts_roundpd_epu32) (mask, s.x, 8);
if (UNION_CHECK (AVX512F_LEN_HALF, i_ud) (res1, res_ref))
abort ();
MASK_MERGE (i_ud) (res_ref, mask, SRC_SIZE);
if (UNION_CHECK (AVX512F_LEN_HALF, i_ud) (res2, res_ref))
abort ();
MASK_ZERO (i_ud) (res_ref, mask, SRC_SIZE);
if (UNION_CHECK (AVX512F_LEN_HALF, i_ud) (res3, res_ref))
abort ();
#endif
}

View file

@ -47,15 +47,9 @@ TEST (void)
for (i = 0; i < SIZE; i++)
res2.a[i] = DEFAULT_VALUE;
#if AVX512F_LEN == 128
res1.x = INTRINSIC (_cvttspd_epu64) (s.x);
res2.x = INTRINSIC (_mask_cvttspd_epu64) (res2.x, mask, s.x);
res3.x = INTRINSIC (_maskz_cvttspd_epu64) (mask, s.x);
#else
res1.x = INTRINSIC (_cvtts_roundpd_epu64) (s.x, 8);
res2.x = INTRINSIC (_mask_cvtts_roundpd_epu64) (res2.x, mask, s.x, 8);
res3.x = INTRINSIC (_maskz_cvtts_roundpd_epu64) (mask, s.x, 8);
#endif
CALC (s.a, res_ref);
@ -69,4 +63,21 @@ TEST (void)
MASK_ZERO (i_uq) (res_ref, mask, SIZE);
if (UNION_CHECK (AVX512F_LEN, i_uq) (res3, res_ref))
abort ();
#if AVX512F_LEN != 128
res1.x = INTRINSIC (_cvtts_roundpd_epu64) (s.x, 8);
res2.x = INTRINSIC (_mask_cvtts_roundpd_epu64) (res2.x, mask, s.x, 8);
res3.x = INTRINSIC (_maskz_cvtts_roundpd_epu64) (mask, s.x, 8);
if (UNION_CHECK (AVX512F_LEN, i_uq) (res1, res_ref))
abort ();
MASK_MERGE (i_uq) (res_ref, mask, SIZE);
if (UNION_CHECK (AVX512F_LEN, i_uq) (res2, res_ref))
abort ();
MASK_ZERO (i_uq) (res_ref, mask, SIZE);
if (UNION_CHECK (AVX512F_LEN, i_uq) (res3, res_ref))
abort ();
#endif
}

View file

@ -49,15 +49,9 @@ TEST (void)
for (i = 0; i < SIZE; i++)
res2.a[i] = DEFAULT_VALUE;
#if AVX512F_LEN == 128
res1.x = INTRINSIC (_ipcvttph_epi8) (s.x);
res2.x = INTRINSIC (_mask_ipcvttph_epi8) (res2.x, mask, s.x);
res3.x = INTRINSIC (_maskz_ipcvttph_epi8) (mask, s.x);
#else
res1.x = INTRINSIC (_ipcvtt_roundph_epi8) (s.x, 8);
res2.x = INTRINSIC (_mask_ipcvtt_roundph_epi8) (res2.x, mask, s.x, 8);
res3.x = INTRINSIC (_maskz_ipcvtt_roundph_epi8) (mask, s.x, 8);
#endif
CALC (s.a, res_ref);
@ -71,4 +65,21 @@ TEST (void)
MASK_ZERO (i_w) (res_ref, mask, SIZE);
if (UNION_CHECK (AVX512F_LEN, i_w) (res3, res_ref))
abort ();
#if AVX512F_LEN != 128
res1.x = INTRINSIC (_ipcvtt_roundph_epi8) (s.x, 8);
res2.x = INTRINSIC (_mask_ipcvtt_roundph_epi8) (res2.x, mask, s.x, 8);
res3.x = INTRINSIC (_maskz_ipcvtt_roundph_epi8) (mask, s.x, 8);
if (UNION_CHECK (AVX512F_LEN, i_w) (res1, res_ref))
abort ();
MASK_MERGE (i_w) (res_ref, mask, SIZE);
if (UNION_CHECK (AVX512F_LEN, i_w) (res2, res_ref))
abort ();
MASK_ZERO (i_w) (res_ref, mask, SIZE);
if (UNION_CHECK (AVX512F_LEN, i_w) (res3, res_ref))
abort ();
#endif
}

View file

@ -49,17 +49,16 @@ TEST (void)
for (i = 0; i < SIZE; i++)
res2.a[i] = DEFAULT_VALUE;
#if AVX512F_LEN == 128
res1.x = INTRINSIC (_ipcvttph_epu8) (s.x);
res2.x = INTRINSIC (_mask_ipcvttph_epu8) (res2.x, mask, s.x);
res3.x = INTRINSIC (_maskz_ipcvttph_epu8) (mask, s.x);
#else
CALC (s.a, res_ref);
#if AVX512F_LEN != 128
res1.x = INTRINSIC (_ipcvtt_roundph_epu8) (s.x, 8);
res2.x = INTRINSIC (_mask_ipcvtt_roundph_epu8) (res2.x, mask, s.x, 8);
res3.x = INTRINSIC (_maskz_ipcvtt_roundph_epu8) (mask, s.x, 8);
#endif
CALC (s.a, res_ref);
if (UNION_CHECK (AVX512F_LEN, i_w) (res1, res_ref))
abort ();
@ -71,4 +70,5 @@ TEST (void)
MASK_ZERO (i_w) (res_ref, mask, SIZE);
if (UNION_CHECK (AVX512F_LEN, i_w) (res3, res_ref))
abort ();
#endif
}

View file

@ -47,15 +47,9 @@ TEST (void)
for (i = 0; i < SIZE; i++)
res2.a[i] = DEFAULT_VALUE;
#if AVX512F_LEN == 128
res1.x = INTRINSIC (_cvttsps_epi32) (s.x);
res2.x = INTRINSIC (_mask_cvttsps_epi32) (res2.x, mask, s.x);
res3.x = INTRINSIC (_maskz_cvttsps_epi32) (mask, s.x);
#else
res1.x = INTRINSIC (_cvtts_roundps_epi32) (s.x, 8);
res2.x = INTRINSIC (_mask_cvtts_roundps_epi32) (res2.x, mask, s.x, 8);
res3.x = INTRINSIC (_maskz_cvtts_roundps_epi32) (mask, s.x, 8);
#endif
CALC (s.a, res_ref);
@ -69,4 +63,21 @@ TEST (void)
MASK_ZERO (i_d) (res_ref, mask, SIZE);
if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref))
abort ();
#if AVX512F_LEN != 128
res1.x = INTRINSIC (_cvtts_roundps_epi32) (s.x, 8);
res2.x = INTRINSIC (_mask_cvtts_roundps_epi32) (res2.x, mask, s.x, 8);
res3.x = INTRINSIC (_maskz_cvtts_roundps_epi32) (mask, s.x, 8);
if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref))
abort ();
MASK_MERGE (i_d) (res_ref, mask, SIZE);
if (UNION_CHECK (AVX512F_LEN, i_d) (res2, res_ref))
abort ();
MASK_ZERO (i_d) (res_ref, mask, SIZE);
if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref))
abort ();
#endif
}

View file

@ -50,15 +50,9 @@ TEST (void)
for (i = 0; i < SIZE; i++)
res2.a[i] = DEFAULT_VALUE;
#if AVX512F_LEN == 128
res1.x = INTRINSIC (_ipcvttps_epi8) (s.x);
res2.x = INTRINSIC (_mask_ipcvttps_epi8) (res2.x, mask, s.x);
res3.x = INTRINSIC (_maskz_ipcvttps_epi8) (mask, s.x);
#else
res1.x = INTRINSIC (_ipcvtt_roundps_epi8) (s.x, 8);
res2.x = INTRINSIC (_mask_ipcvtt_roundps_epi8) (res2.x, mask, s.x, 8);
res3.x = INTRINSIC (_maskz_ipcvtt_roundps_epi8) (mask, s.x, 8);
#endif
CALC (s.a, res_ref);
@ -72,4 +66,21 @@ TEST (void)
MASK_ZERO (i_d) (res_ref, mask, SIZE);
if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref))
abort ();
#if AVX512F_LEN != 128
res1.x = INTRINSIC (_ipcvtt_roundps_epi8) (s.x, 8);
res2.x = INTRINSIC (_mask_ipcvtt_roundps_epi8) (res2.x, mask, s.x, 8);
res3.x = INTRINSIC (_maskz_ipcvtt_roundps_epi8) (mask, s.x, 8);
if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref))
abort ();
MASK_MERGE (i_d) (res_ref, mask, SIZE);
if (UNION_CHECK (AVX512F_LEN, i_d) (res2, res_ref))
abort ();
MASK_ZERO (i_d) (res_ref, mask, SIZE);
if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref))
abort ();
#endif
}

View file

@ -48,15 +48,9 @@ TEST (void)
for (i = 0; i < SIZE; i++)
res2.a[i] = DEFAULT_VALUE;
#if AVX512F_LEN == 128
res1.x = INTRINSIC (_ipcvttps_epu8) (s.x);
res2.x = INTRINSIC (_mask_ipcvttps_epu8) (res2.x, mask, s.x);
res3.x = INTRINSIC (_maskz_ipcvttps_epu8) (mask, s.x);
#else
res1.x = INTRINSIC (_ipcvtt_roundps_epu8) (s.x, 8);
res2.x = INTRINSIC (_mask_ipcvtt_roundps_epu8) (res2.x, mask, s.x, 8);
res3.x = INTRINSIC (_maskz_ipcvtt_roundps_epu8) (mask, s.x, 8);
#endif
CALC (s.a, res_ref);
@ -70,4 +64,21 @@ TEST (void)
MASK_ZERO (i_d) (res_ref, mask, SIZE);
if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref))
abort ();
#if AVX512F_LEN != 128
res1.x = INTRINSIC (_ipcvtt_roundps_epu8) (s.x, 8);
res2.x = INTRINSIC (_mask_ipcvtt_roundps_epu8) (res2.x, mask, s.x, 8);
res3.x = INTRINSIC (_maskz_ipcvtt_roundps_epu8) (mask, s.x, 8);
if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref))
abort ();
MASK_MERGE (i_d) (res_ref, mask, SIZE);
if (UNION_CHECK (AVX512F_LEN, i_d) (res2, res_ref))
abort ();
MASK_ZERO (i_d) (res_ref, mask, SIZE);
if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref))
abort ();
#endif
}

View file

@ -48,19 +48,12 @@ TEST (void)
for (i = 0; i < SIZE; i++)
res2.a[i] = DEFAULT_VALUE;
#if AVX512F_LEN == 128
res1.x = INTRINSIC (_cvttsps_epi64) (s.x);
res2.x = INTRINSIC (_mask_cvttsps_epi64) (res2.x, mask, s.x);
res3.x = INTRINSIC (_maskz_cvttsps_epi64) (mask, s.x);
#else
res1.x = INTRINSIC (_cvtts_roundps_epi64) (s.x, 8);
res2.x = INTRINSIC (_mask_cvtts_roundps_epi64) (res2.x, mask, s.x, 8);
res3.x = INTRINSIC (_maskz_cvtts_roundps_epi64) (mask, s.x, 8);
#endif
CALC (s.a, res_ref);
if (UNION_CHECK (AVX512F_LEN, i_q) (res1, res_ref))
abort ();
@ -71,4 +64,21 @@ TEST (void)
MASK_ZERO (i_q) (res_ref, mask, SIZE);
if (UNION_CHECK (AVX512F_LEN, i_q) (res3, res_ref))
abort ();
#if AVX512F_LEN != 128
res1.x = INTRINSIC (_cvtts_roundps_epi64) (s.x, 8);
res2.x = INTRINSIC (_mask_cvtts_roundps_epi64) (res2.x, mask, s.x, 8);
res3.x = INTRINSIC (_maskz_cvtts_roundps_epi64) (mask, s.x, 8);
if (UNION_CHECK (AVX512F_LEN, i_q) (res1, res_ref))
abort ();
MASK_MERGE (i_q) (res_ref, mask, SIZE);
if (UNION_CHECK (AVX512F_LEN, i_q) (res2, res_ref))
abort ();
MASK_ZERO (i_q) (res_ref, mask, SIZE);
if (UNION_CHECK (AVX512F_LEN, i_q) (res3, res_ref))
abort ();
#endif
}

View file

@ -47,15 +47,9 @@ TEST (void)
for (i = 0; i < SIZE; i++)
res2.a[i] = DEFAULT_VALUE;
#if AVX512F_LEN == 128
res1.x = INTRINSIC (_cvttsps_epu32) (s.x);
res2.x = INTRINSIC (_mask_cvttsps_epu32) (res2.x, mask, s.x);
res3.x = INTRINSIC (_maskz_cvttsps_epu32) (mask, s.x);
#else
res1.x = INTRINSIC (_cvtts_roundps_epu32) (s.x, 8);
res2.x = INTRINSIC (_mask_cvtts_roundps_epu32) (res2.x, mask, s.x, 8);
res3.x = INTRINSIC (_maskz_cvtts_roundps_epu32) (mask, s.x, 8);
#endif
CALC (s.a, res_ref);
@ -69,4 +63,21 @@ TEST (void)
MASK_ZERO (i_ud) (res_ref, mask, SIZE);
if (UNION_CHECK (AVX512F_LEN, i_ud) (res3, res_ref))
abort ();
#if AVX512F_LEN != 128
res1.x = INTRINSIC (_cvtts_roundps_epu32) (s.x, 8);
res2.x = INTRINSIC (_mask_cvtts_roundps_epu32) (res2.x, mask, s.x, 8);
res3.x = INTRINSIC (_maskz_cvtts_roundps_epu32) (mask, s.x, 8);
if (UNION_CHECK (AVX512F_LEN, i_ud) (res1, res_ref))
abort ();
MASK_MERGE (i_ud) (res_ref, mask, SIZE);
if (UNION_CHECK (AVX512F_LEN, i_ud) (res2, res_ref))
abort ();
MASK_ZERO (i_ud) (res_ref, mask, SIZE);
if (UNION_CHECK (AVX512F_LEN, i_ud) (res3, res_ref))
abort ();
#endif
}

View file

@ -48,15 +48,9 @@ TEST (void)
for (i = 0; i < SIZE; i++)
res2.a[i] = DEFAULT_VALUE;
#if AVX512F_LEN == 128
res1.x = INTRINSIC (_cvttsps_epu64) (s.x);
res2.x = INTRINSIC (_mask_cvttsps_epu64) (res2.x, mask, s.x);
res3.x = INTRINSIC (_maskz_cvttsps_epu64) (mask, s.x);
#else
res1.x = INTRINSIC (_cvtts_roundps_epu64) (s.x, 8);
res2.x = INTRINSIC (_mask_cvtts_roundps_epu64) (res2.x, mask, s.x, 8);
res3.x = INTRINSIC (_maskz_cvtts_roundps_epu64) (mask, s.x, 8);
#endif
CALC (s.a, res_ref);
@ -70,4 +64,21 @@ TEST (void)
MASK_ZERO (i_uq) (res_ref, mask, SRC_SIZE);
if (UNION_CHECK (AVX512F_LEN, i_uq) (res3, res_ref))
abort ();
#if AVX512F_LEN != 128
res1.x = INTRINSIC (_cvtts_roundps_epu64) (s.x, 8);
res2.x = INTRINSIC (_mask_cvtts_roundps_epu64) (res2.x, mask, s.x, 8);
res3.x = INTRINSIC (_maskz_cvtts_roundps_epu64) (mask, s.x, 8);
if (UNION_CHECK (AVX512F_LEN, i_uq) (res1, res_ref))
abort ();
MASK_MERGE (i_uq) (res_ref, mask, SRC_SIZE);
if (UNION_CHECK (AVX512F_LEN, i_uq) (res2, res_ref))
abort ();
MASK_ZERO (i_uq) (res_ref, mask, SRC_SIZE);
if (UNION_CHECK (AVX512F_LEN, i_uq) (res3, res_ref))
abort ();
#endif
}

View file

@ -1,27 +1,43 @@
/* { dg-do compile } */
/* { dg-options "-O2 -march=x86-64-v3 -mavx10.2-256" } */
/* { dg-final { scan-assembler-times "vcvtph2ibs\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvtph2ibs\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
/* { dg-final { scan-assembler-times "vcvtph2ibs\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvtph2ibs\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvtph2ibs\[ \\t\]+\{rn-sae\}\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvtph2ibs\[ \\t\]+\{rz-sae\}\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvtph2iubs\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvtph2iubs\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
/* { dg-final { scan-assembler-times "vcvtph2iubs\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvtph2iubs\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvtph2iubs\[ \\t\]+\{rn-sae\}\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvtph2iubs\[ \\t\]+\{rz-sae\}\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttph2ibs\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttph2ibs\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
/* { dg-final { scan-assembler-times "vcvttph2ibs\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttph2ibs\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttph2ibs\[ \\t\]+\{sae\}\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttph2ibs\[ \\t\]+\{sae\}\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttph2iubs\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttph2iubs\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
/* { dg-final { scan-assembler-times "vcvttph2iubs\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttph2iubs\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttph2iubs\[ \\t\]+\{sae\}\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttph2iubs\[ \\t\]+\{sae\}\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvtps2ibs\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvtps2ibs\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
/* { dg-final { scan-assembler-times "vcvtps2ibs\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvtps2ibs\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvtps2ibs\[ \\t\]+\{rn-sae\}\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvtps2ibs\[ \\t\]+\{rz-sae\}\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvtps2iubs\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvtps2iubs\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
/* { dg-final { scan-assembler-times "vcvtps2iubs\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvtps2iubs\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvtps2iubs\[ \\t\]+\{rn-sae\}\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvtps2iubs\[ \\t\]+\{rz-sae\}\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2ibs\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2ibs\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
/* { dg-final { scan-assembler-times "vcvttps2ibs\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2ibs\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2ibs\[ \\t\]+\{sae\}\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2ibs\[ \\t\]+\{sae\}\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2iubs\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2iubs\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 2 } } */
/* { dg-final { scan-assembler-times "vcvttps2iubs\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2iubs\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2iubs\[ \\t\]+\{sae\}\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2iubs\[ \\t\]+\{sae\}\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvtbf162ibs\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
@ -72,27 +88,51 @@
/* { dg-final { scan-assembler-times "vcvttbf162iubs\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttbf162iubs\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}\[^\{\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttbf162iubs\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}\{z\}\[^\n\r]*(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttpd2dqsy\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttpd2dqsy\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttpd2dqsy\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttpd2dqsy\[ \\t\]+\{sae\}\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttpd2dqsy\[ \\t\]+\{sae\}\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttpd2dqsy\[ \\t\]+\{sae\}\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttpd2qqs\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttpd2qqs\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttpd2qqs\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttpd2qqs\[ \\t\]+\{sae\}\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttpd2qqs\[ \\t\]+\{sae\}\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttpd2qqs\[ \\t\]+\{sae\}\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttpd2udqsy\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttpd2udqsy\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttpd2udqsy\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttpd2udqsy\[ \\t\]+\{sae\}\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttpd2udqsy\[ \\t\]+\{sae\}\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttpd2udqsy\[ \\t\]+\{sae\}\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttpd2uqqs\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttpd2uqqs\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttpd2uqqs\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttpd2uqqs\[ \\t\]+\{sae\}\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttpd2uqqs\[ \\t\]+\{sae\}\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttpd2uqqs\[ \\t\]+\{sae\}\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2dqs\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2dqs\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2dqs\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2dqs\[ \\t\]+\{sae\}\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2dqs\[ \\t\]+\{sae\}\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2dqs\[ \\t\]+\{sae\}\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2qqs\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2qqs\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2qqs\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2qqs\[ \\t\]+\{sae\}\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2qqs\[ \\t\]+\{sae\}\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2qqs\[ \\t\]+\{sae\}\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2udqs\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2udqs\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2udqs\[ \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2udqs\[ \\t\]+\{sae\}\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2udqs\[ \\t\]+\{sae\}\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2udqs\[ \\t\]+\{sae\}\[^\{\n\]*%ymm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2uqqs\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2uqqs\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2uqqs\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2uqqs\[ \\t\]+\{sae\}\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2uqqs\[ \\t\]+\{sae\}\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2uqqs\[ \\t\]+\{sae\}\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%ymm\[0-9\]+\{%k\[0-9\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
@ -120,10 +160,18 @@
/* { dg-final { scan-assembler-times "vcvttps2uqqs\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2uqqs\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttps2uqqs\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%xmm\[0-9\]+\{%k\[0-9\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttsd2sis\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%e.x+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttsd2usis\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%e.x+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttss2sis\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%e.x+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttss2usis\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%e.x+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttsd2sis\[ \\t\]+\{sae\}\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%e.x+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttsd2usis\[ \\t\]+\{sae\}\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%e.x+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttss2sis\[ \\t\]+\{sae\}\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%e.x+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttss2usis\[ \\t\]+\{sae\}\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%e.x+(?:\n|\[ \\t\]+#)" 1 } } */
/* { dg-final { scan-assembler-times "vcvttsd2sis\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%r.x+(?:\n|\[ \\t\]+#)" 1 { target { ! ia32 } } } } */
/* { dg-final { scan-assembler-times "vcvttsd2usis\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%r.x+(?:\n|\[ \\t\]+#)" 1 { target { ! ia32 } } } } */
/* { dg-final { scan-assembler-times "vcvttss2sis\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%r.x+(?:\n|\[ \\t\]+#)" 1 { target { ! ia32 } } } } */
/* { dg-final { scan-assembler-times "vcvttss2usis\[ \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%r.x+(?:\n|\[ \\t\]+#)" 1 { target { ! ia32 } } } } */
/* { dg-final { scan-assembler-times "vcvttsd2sis\[ \\t\]+\{sae\}\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%r.x+(?:\n|\[ \\t\]+#)" 1 { target { ! ia32 } } } } */
/* { dg-final { scan-assembler-times "vcvttsd2usis\[ \\t\]+\{sae\}\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%r.x+(?:\n|\[ \\t\]+#)" 1 { target { ! ia32 } } } } */
/* { dg-final { scan-assembler-times "vcvttss2sis\[ \\t\]+\{sae\}\[^\{\n\]*%xmm\[0-9\]+\[^\n\r]*%r.x+(?:\n|\[ \\t\]+#)" 1 { target { ! ia32 } } } } */
@ -151,34 +199,58 @@ volatile unsigned long long ull;
void extern
avx10_2_test (void)
{
xi = _mm256_ipcvtph_epi8 (xh);
xi = _mm256_mask_ipcvtph_epi8 (xi, m16, xh);
xi = _mm256_maskz_ipcvtph_epi8 (m16, xh);
xi = _mm256_ipcvt_roundph_epi8 (xh, 4);
xi = _mm256_mask_ipcvt_roundph_epi8 (xi, m16, xh, 8);
xi = _mm256_maskz_ipcvt_roundph_epi8 (m16, xh, 11);
xi = _mm256_ipcvtph_epu8 (xh);
xi = _mm256_mask_ipcvtph_epu8 (xi, m16, xh);
xi = _mm256_maskz_ipcvtph_epu8 (m16, xh);
xi = _mm256_ipcvt_roundph_epu8 (xh, 4);
xi = _mm256_mask_ipcvt_roundph_epu8 (xi, m16, xh, 8);
xi = _mm256_maskz_ipcvt_roundph_epu8 (m16, xh, 11);
xi = _mm256_ipcvttph_epi8 (xh);
xi = _mm256_mask_ipcvttph_epi8 (xi, m16, xh);
xi = _mm256_maskz_ipcvttph_epi8 (m16, xh);
xi = _mm256_ipcvtt_roundph_epi8 (xh, 4);
xi = _mm256_mask_ipcvtt_roundph_epi8 (xi, m16, xh, 8);
xi = _mm256_maskz_ipcvtt_roundph_epi8 (m16, xh, 8);
xi = _mm256_ipcvttph_epu8 (xh);
xi = _mm256_mask_ipcvttph_epu8 (xi, m16, xh);
xi = _mm256_maskz_ipcvttph_epu8 (m16, xh);
xi = _mm256_ipcvtt_roundph_epu8 (xh, 4);
xi = _mm256_mask_ipcvtt_roundph_epu8 (xi, m16, xh, 8);
xi = _mm256_maskz_ipcvtt_roundph_epu8 (m16, xh, 8);
xi = _mm256_ipcvtps_epi8 (x);
xi = _mm256_mask_ipcvtps_epi8 (xi, m8, x);
xi = _mm256_maskz_ipcvtps_epi8 (m8, x);
xi = _mm256_ipcvt_roundps_epi8 (x, 4);
xi = _mm256_mask_ipcvt_roundps_epi8 (xi, m8, x, 8);
xi = _mm256_maskz_ipcvt_roundps_epi8 (m8, x, 11);
xi = _mm256_ipcvtps_epu8 (x);
xi = _mm256_mask_ipcvtps_epu8 (xi, m8, x);
xi = _mm256_maskz_ipcvtps_epu8 (m8, x);
xi = _mm256_ipcvt_roundps_epu8 (x, 4);
xi = _mm256_mask_ipcvt_roundps_epu8 (xi, m8, x, 8);
xi = _mm256_maskz_ipcvt_roundps_epu8 (m8, x, 11);
xi = _mm256_ipcvttps_epi8 (x);
xi = _mm256_mask_ipcvttps_epi8 (xi, m8, x);
xi = _mm256_maskz_ipcvttps_epi8 (m8, x);
xi = _mm256_ipcvtt_roundps_epi8 (x, 4);
xi = _mm256_mask_ipcvtt_roundps_epi8 (xi, m8, x, 8);
xi = _mm256_maskz_ipcvtt_roundps_epi8 (m8, x, 8);
xi = _mm256_ipcvttps_epu8 (x);
xi = _mm256_mask_ipcvttps_epu8 (xi, m8, x);
xi = _mm256_maskz_ipcvttps_epu8 (m8, x);
xi = _mm256_ipcvtt_roundps_epu8 (x, 4);
xi = _mm256_mask_ipcvtt_roundps_epu8 (xi, m8, x, 8);
xi = _mm256_maskz_ipcvtt_roundps_epu8 (m8, x, 8);
@ -247,34 +319,58 @@ avx10_2_test (void)
hxi = _mm_mask_ipcvttbf16_epu8 (hxi, m8, hxbh);
hxi = _mm_maskz_ipcvttbf16_epu8 (m8, hxbh);
hxi = _mm256_cvttspd_epi32 (xd);
hxi = _mm256_mask_cvttspd_epi32 (hxi, m8, xd);
hxi = _mm256_maskz_cvttspd_epi32 (m8, xd);
hxi = _mm256_cvtts_roundpd_epi32 (xd, 8);
hxi = _mm256_mask_cvtts_roundpd_epi32 (hxi, m8, xd, 8);
hxi = _mm256_maskz_cvtts_roundpd_epi32 (m8, xd, 8);
xi = _mm256_cvttspd_epi64 (xd);
xi = _mm256_mask_cvttspd_epi64 (xi, m8, xd);
xi = _mm256_maskz_cvttspd_epi64 (m8, xd);
xi = _mm256_cvtts_roundpd_epi64 (xd, 8);
xi = _mm256_mask_cvtts_roundpd_epi64 (xi, m8, xd, 8);
xi = _mm256_maskz_cvtts_roundpd_epi64 (m8, xd, 8);
hxi = _mm256_cvttspd_epu32 (xd);
hxi = _mm256_mask_cvttspd_epu32 (hxi, m8, xd);
hxi = _mm256_maskz_cvttspd_epu32 (m8, xd);
hxi = _mm256_cvtts_roundpd_epu32 (xd, 8);
hxi = _mm256_mask_cvtts_roundpd_epu32 (hxi, m8, xd, 8);
hxi = _mm256_maskz_cvtts_roundpd_epu32 (m8, xd, 8);
xi = _mm256_cvttspd_epu64 (xd);
xi = _mm256_mask_cvttspd_epu64 (xi, m8, xd);
xi = _mm256_maskz_cvttspd_epu64 (m8, xd);
xi = _mm256_cvtts_roundpd_epu64 (xd, 8);
xi = _mm256_mask_cvtts_roundpd_epu64 (xi, m8, xd, 8);
xi = _mm256_maskz_cvtts_roundpd_epu64 (m8, xd, 8);
xi = _mm256_cvttsps_epi32 (x);
xi = _mm256_mask_cvttsps_epi32 (xi, m16, x);
xi = _mm256_maskz_cvttsps_epi32 (m16, x);
xi = _mm256_cvtts_roundps_epi32 (x, 8);
xi = _mm256_mask_cvtts_roundps_epi32 (xi, m16, x, 8);
xi = _mm256_maskz_cvtts_roundps_epi32 (m16, x, 8);
xi = _mm256_cvttsps_epi64 (hx);
xi = _mm256_mask_cvttsps_epi64 (xi, m8, hx);
xi = _mm256_maskz_cvttsps_epi64 (m8, hx);
xi = _mm256_cvtts_roundps_epi64 (hx, 8);
xi = _mm256_mask_cvtts_roundps_epi64 (xi, m8, hx, 8);
xi = _mm256_maskz_cvtts_roundps_epi64 (m8, hx, 8);
xi = _mm256_cvttsps_epu32 (x);
xi = _mm256_mask_cvttsps_epu32 (xi, m16, x);
xi = _mm256_maskz_cvttsps_epu32 (m16, x);
xi = _mm256_cvtts_roundps_epu32 (x, 8);
xi = _mm256_mask_cvtts_roundps_epu32 (xi, m16, x, 8);
xi = _mm256_maskz_cvtts_roundps_epu32 (m16, x, 8);
xi = _mm256_cvttsps_epu64 (hx);
xi = _mm256_mask_cvttsps_epu64 (xi, m8, hx);
xi = _mm256_maskz_cvttsps_epu64 (m8, hx);
xi = _mm256_cvtts_roundps_epu64 (hx, 8);
xi = _mm256_mask_cvtts_roundps_epu64 (xi, m8, hx, 8);
xi = _mm256_maskz_cvtts_roundps_epu64 (m8, hx, 8);
@ -311,12 +407,20 @@ avx10_2_test (void)
hxi = _mm_mask_cvttsps_epu64 (hxi, m8, hx);
hxi = _mm_maskz_cvttsps_epu64 (m8, hx);
i = _mm_cvttssd_epi32 (hxd);
ui = _mm_cvttssd_epu32 (hxd);
i = _mm_cvttsss_epi32 (hx);
ui = _mm_cvttsss_epu32 (hx);
i = _mm_cvtts_roundsd_epi32 (hxd, 8);
ui = _mm_cvtts_roundsd_epu32 (hxd, 8);
i = _mm_cvtts_roundss_epi32 (hx, 8);
ui = _mm_cvtts_roundss_epu32 (hx, 8);
#ifdef __x86_64__
ll = _mm_cvttssd_epi64 (hxd);
ull = _mm_cvttssd_epu64 (hxd);
ll = _mm_cvttsss_epi64 (hx);
ull = _mm_cvttsss_epu64 (hx);
ll = _mm_cvtts_roundsd_epi64 (hxd, 8);
ull = _mm_cvtts_roundsd_epu64 (hxd, 8);
ll = _mm_cvtts_roundss_epi64 (hx, 8);

View file

@ -0,0 +1,16 @@
/* { dg-do run } */
/* { dg-options "-O2 -march=x86-64-v3 -mavx10.2-256" } */
/* { dg-require-effective-target avx10_2_256 } */
#define AVX10_2
#define AVX512VL
#define AVX512F_LEN 256
#define AVX512F_LEN_HALF 128
#include "avx10_2-512-vcvtps2iubs-2.c"
#undef AVX512F_LEN
#undef AVX512F_LEN_HALF
#define AVX512F_LEN 128
#define AVX512F_LEN_HALF 128
#include "avx10_2-512-vcvtps2iubs-2.c"

View file

@ -31,9 +31,33 @@ TEST (void)
if (res1 != res1_ref)
abort();
res1 = _mm_cvttssd_epi32 (s.x);
if (s.a[0] > INT_MAX)
res1_ref = INT_MAX;
else if (s.a[0] < INT_MIN)
res1_ref = INT_MIN;
else
res1_ref = s.a[0];
if (res1 != res1_ref)
abort();
#ifdef __x86_64__
res2 = _mm_cvtts_roundsd_epi64 (s.x, 8);
if (s.a[0] > LLONG_MAX)
res2_ref = LLONG_MAX;
else if (s.a[0] < LLONG_MIN)
res2_ref = LLONG_MIN;
else
res2_ref = s.a[0];
if (res2 != res2_ref)
abort();
res2 = _mm_cvttssd_epi64 (s.x);
if (s.a[0] > LLONG_MAX)
res2_ref = LLONG_MAX;
else if (s.a[0] < LLONG_MIN)

View file

@ -31,9 +31,33 @@ TEST (void)
if (res1 != res1_ref)
abort();
res1 = _mm_cvttssd_epu32 (s.x);
if (s.a[0] > UINT_MAX)
res1_ref = UINT_MAX;
else if (s.a[0] < 0)
res1_ref = 0;
else
res1_ref = s.a[0];
if (res1 != res1_ref)
abort();
#ifdef __x86_64__
res2 = _mm_cvtts_roundsd_epu64 (s.x, 8);
if (s.a[0] > ULONG_MAX)
res2_ref = ULONG_MAX;
else if (s.a[0] < 0)
res2_ref = 0;
else
res2_ref = s.a[0];
if (res2 != res2_ref)
abort();
res2 = _mm_cvttssd_epu64 (s.x);
if (s.a[0] > ULONG_MAX)
res2_ref = ULONG_MAX;
else if (s.a[0] < 0)

View file

@ -31,9 +31,33 @@ TEST (void)
if (res1 != res1_ref)
abort();
res1 = _mm_cvttsss_epi32 (s.x);
if (s.a[0] > INT_MAX)
res1_ref = INT_MAX;
else if (s.a[0] < INT_MIN)
res1_ref = INT_MIN;
else
res1_ref = s.a[0];
if (res1 != res1_ref)
abort();
#ifdef __x86_64__
res2 = _mm_cvtts_roundss_epi64 (s.x, 8);
if (s.a[0] > LLONG_MAX)
res2_ref = LLONG_MAX;
else if (s.a[0] < LLONG_MIN)
res2_ref = LLONG_MIN;
else
res2_ref = s.a[0];
if (res2 != res2_ref)
abort();
res2 = _mm_cvttsss_epi64 (s.x);
if (s.a[0] > LLONG_MAX)
res2_ref = LLONG_MAX;
else if (s.a[0] < LLONG_MIN)

View file

@ -30,9 +30,33 @@ TEST (void)
if (res1 != res1_ref)
abort();
res1 = _mm_cvttsss_epu32 (s.x);
if (s.a[0] > UINT_MAX)
res1_ref = UINT_MAX;
else if (s.a[0] < 0)
res1_ref = 0;
else
res1_ref = s.a[0];
if (res1 != res1_ref)
abort();
#ifdef __x86_64__
res2 = _mm_cvtts_roundss_epu64 (s.x, 8);
if (s.a[0] > ULONG_MAX)
res2_ref = ULONG_MAX;
else if (s.a[0] < 0)
res2_ref = 0;
else
res2_ref = s.a[0];
if (res2 != res2_ref)
abort();
res2 = _mm_cvttsss_epu64 (s.x);
if (s.a[0] > ULONG_MAX)
res2_ref = ULONG_MAX;
else if (s.a[0] < 0)