]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
i386: Fix AVX10.2 SAT CVT testcases.
authorHu, Lin1 <lin1.hu@intel.com>
Fri, 14 Mar 2025 03:16:14 +0000 (11:16 +0800)
committerHu, Lin1 <lin1.hu@intel.com>
Thu, 20 Mar 2025 02:00:02 +0000 (10:00 +0800)
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

23 files changed:
gcc/testsuite/gcc.target/i386/avx10_2-512-satcvt-1.c
gcc/testsuite/gcc.target/i386/avx10_2-512-vcvtph2ibs-2.c
gcc/testsuite/gcc.target/i386/avx10_2-512-vcvtph2iubs-2.c
gcc/testsuite/gcc.target/i386/avx10_2-512-vcvtps2ibs-2.c
gcc/testsuite/gcc.target/i386/avx10_2-512-vcvtps2iubs-2.c
gcc/testsuite/gcc.target/i386/avx10_2-512-vcvttpd2dqs-2.c
gcc/testsuite/gcc.target/i386/avx10_2-512-vcvttpd2qqs-2.c
gcc/testsuite/gcc.target/i386/avx10_2-512-vcvttpd2udqs-2.c
gcc/testsuite/gcc.target/i386/avx10_2-512-vcvttpd2uqqs-2.c
gcc/testsuite/gcc.target/i386/avx10_2-512-vcvttph2ibs-2.c
gcc/testsuite/gcc.target/i386/avx10_2-512-vcvttph2iubs-2.c
gcc/testsuite/gcc.target/i386/avx10_2-512-vcvttps2dqs-2.c
gcc/testsuite/gcc.target/i386/avx10_2-512-vcvttps2ibs-2.c
gcc/testsuite/gcc.target/i386/avx10_2-512-vcvttps2iubs-2.c
gcc/testsuite/gcc.target/i386/avx10_2-512-vcvttps2qqs-2.c
gcc/testsuite/gcc.target/i386/avx10_2-512-vcvttps2udqs-2.c
gcc/testsuite/gcc.target/i386/avx10_2-512-vcvttps2uqqs-2.c
gcc/testsuite/gcc.target/i386/avx10_2-satcvt-1.c
gcc/testsuite/gcc.target/i386/avx10_2-vcvtps2iubs-2.c [new file with mode: 0644]
gcc/testsuite/gcc.target/i386/avx10_2-vcvttsd2sis-2.c
gcc/testsuite/gcc.target/i386/avx10_2-vcvttsd2usis-2.c
gcc/testsuite/gcc.target/i386/avx10_2-vcvttss2sis-2.c
gcc/testsuite/gcc.target/i386/avx10_2-vcvttss2usis-2.c

index 7f2f7caf4dbfd4f92e807dc07b9de67b12858728..bf10ac2769c072343bd7212049b8fce9764a225d 100644 (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  }  } */
 /* { 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);
index d8819f7d2c75c31559a2e9fa18aaec767bca06cf..d9ca3eff66dc0956fc5796623554b4b6c99ed0a4 100644 (file)
@@ -49,17 +49,27 @@ 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
+
+  CALC (s.a, res_ref);
+
+  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 ();
+
+#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);
-#endif
-
-  CALC (s.a, res_ref);
 
   if (UNION_CHECK (AVX512F_LEN, i_w) (res1, res_ref))
     abort ();
@@ -71,4 +81,5 @@ TEST (void)
   MASK_ZERO (i_w) (res_ref, mask, SIZE);
   if (UNION_CHECK (AVX512F_LEN, i_w) (res3, res_ref))
     abort ();
+#endif
 }
index 877f6f5e2bdb42308196a649b5fbbb20466db7fd..cd6aaa4036237c3b25f59f5c00a208133d86e508 100644 (file)
@@ -49,17 +49,27 @@ 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
+
+  CALC (s.a, res_ref);
+
+  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 ();
+
+#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);
-#endif
-
-  CALC (s.a, res_ref);
 
   if (UNION_CHECK (AVX512F_LEN, i_w) (res1, res_ref))
     abort ();
@@ -71,4 +81,5 @@ TEST (void)
   MASK_ZERO (i_w) (res_ref, mask, SIZE);
   if (UNION_CHECK (AVX512F_LEN, i_w) (res3, res_ref))
     abort ();
+#endif
 }
index 3ebc9e79e380528b4b8019bb1ebd8318d25763e4..aaa1a6487d6f32b255c558fcecc94234bb8c51bc 100644 (file)
@@ -50,17 +50,27 @@ 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
+
+  CALC (s.a, res_ref);
+
+  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 ();
+
+#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);
-#endif
-
-  CALC (s.a, res_ref);
 
   if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref))
     abort ();
@@ -72,4 +82,5 @@ TEST (void)
   MASK_ZERO (i_d) (res_ref, mask, SIZE);
   if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref))
     abort ();
+#endif
 }
index 9e75076b5daf2779034b7463e08fde914fe8751f..274805a50fa22e34caf162b09840ccead3f803b2 100644 (file)
@@ -48,17 +48,27 @@ 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
+
+  CALC (s.a, res_ref);
+
+  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 ();
+
+#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);
-#endif
-
-  CALC (s.a, res_ref);
 
   if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref))
     abort ();
@@ -70,4 +80,5 @@ TEST (void)
   MASK_ZERO (i_d) (res_ref, mask, SIZE);
   if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref))
     abort ();
+#endif
 }
index d885800ed7a85efaa896c5e0e20b2a767b599b1d..fd1a2b28b591506eb83b1518abadb36ce34c3743 100644 (file)
@@ -48,17 +48,27 @@ 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
+
+  CALC (s.a, res_ref);
+
+  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 ();
+
+#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);
-#endif
-
-  CALC (s.a, res_ref);
 
   if (UNION_CHECK (AVX512F_LEN_HALF, i_d) (res1, res_ref))
     abort ();
@@ -70,4 +80,5 @@ TEST (void)
   MASK_ZERO (i_d) (res_ref, mask, SRC_SIZE);
   if (UNION_CHECK (AVX512F_LEN_HALF, i_d) (res3, res_ref))
     abort ();
+#endif
 }
index 3fa451bb14c49c70528232afae87cf03109a3327..a9943e48d9fefb79191d018b5badeaa0bb3373e9 100644 (file)
@@ -47,17 +47,27 @@ 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
+
+  CALC (s.a, res_ref);
+
+  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 ();
+
+#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);
-#endif
-
-  CALC (s.a, res_ref);
 
   if (UNION_CHECK (AVX512F_LEN, i_q) (res1, res_ref))
     abort ();
@@ -69,4 +79,5 @@ TEST (void)
   MASK_ZERO (i_q) (res_ref, mask, SIZE);
   if (UNION_CHECK (AVX512F_LEN, i_q) (res3, res_ref))
     abort ();
+#endif
 }
index 3d2f2ff44df92c300bdc9775c7c6e250e98f0bde..ac39288008141ccb2513eee46f096e320ed18455 100644 (file)
@@ -48,17 +48,27 @@ 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
+
+  CALC (s.a, res_ref);
+
+  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 ();
+
+#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);
-#endif
-
-  CALC (s.a, res_ref);
 
   if (UNION_CHECK (AVX512F_LEN_HALF, i_ud) (res1, res_ref))
     abort ();
@@ -70,4 +80,5 @@ TEST (void)
   MASK_ZERO (i_ud) (res_ref, mask, SRC_SIZE);
   if (UNION_CHECK (AVX512F_LEN_HALF, i_ud) (res3, res_ref))
     abort ();
+#endif
 }
index 3000297e5fba22a55682c25f597b5954dcd0b8d8..346978b19af67a4075e88705c4fec1cd551cc79b 100644 (file)
@@ -47,17 +47,27 @@ 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
+
+  CALC (s.a, res_ref);
+
+  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 ();
+
+#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);
-#endif
-
-  CALC (s.a, res_ref);
 
   if (UNION_CHECK (AVX512F_LEN, i_uq) (res1, res_ref))
     abort ();
@@ -69,4 +79,5 @@ TEST (void)
   MASK_ZERO (i_uq) (res_ref, mask, SIZE);
   if (UNION_CHECK (AVX512F_LEN, i_uq) (res3, res_ref))
     abort ();
+#endif
 }
index 6e91c75e9e5b84ea92ae1ed36d0e0b3fd87a2aa3..e50de96057382fe140bdbe133b0417eabc4e4008 100644 (file)
@@ -49,17 +49,27 @@ 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
+
+  CALC (s.a, res_ref);
+
+  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 ();
+
+#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);
-#endif
-
-  CALC (s.a, res_ref);
 
   if (UNION_CHECK (AVX512F_LEN, i_w) (res1, res_ref))
     abort ();
@@ -71,4 +81,5 @@ TEST (void)
   MASK_ZERO (i_w) (res_ref, mask, SIZE);
   if (UNION_CHECK (AVX512F_LEN, i_w) (res3, res_ref))
     abort ();
+#endif
 }
index 07f9c127518b6c18b833122195ef68e3d54b22d8..073635656915ff1aea066d9e03fa53f082febc4d 100644 (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
 }
index 568f0a3d2fc58fc0281303cc31dd30d807b2b78f..302457ec591b82ba88143c7eb68270f76db1892c 100644 (file)
@@ -47,17 +47,27 @@ 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
+
+  CALC (s.a, res_ref);
+
+  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 ();
+
+#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);
-#endif
-
-  CALC (s.a, res_ref);
 
   if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref))
     abort ();
@@ -69,4 +79,5 @@ TEST (void)
   MASK_ZERO (i_d) (res_ref, mask, SIZE);
   if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref))
     abort ();
+#endif
 }
index b7b10303cdda0630f21d138dfdc7e3914f363ec8..61c5bde541db4fe352371334f3fd50d09e271ed4 100644 (file)
@@ -50,17 +50,27 @@ 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
+
+  CALC (s.a, res_ref);
+
+  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 ();
+
+#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);
-#endif
-
-  CALC (s.a, res_ref);
 
   if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref))
     abort ();
@@ -72,4 +82,5 @@ TEST (void)
   MASK_ZERO (i_d) (res_ref, mask, SIZE);
   if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref))
     abort ();
+#endif
 }
index f689ab7eecec9dae615deb591d4f000f9b203a96..0fb0d5fe08b701581105e8f012675629cdaaf478 100644 (file)
@@ -48,17 +48,27 @@ 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
+
+  CALC (s.a, res_ref);
+
+  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 ();
+
+#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);
-#endif
-
-  CALC (s.a, res_ref);
 
   if (UNION_CHECK (AVX512F_LEN, i_d) (res1, res_ref))
     abort ();
@@ -70,4 +80,5 @@ TEST (void)
   MASK_ZERO (i_d) (res_ref, mask, SIZE);
   if (UNION_CHECK (AVX512F_LEN, i_d) (res3, res_ref))
     abort ();
+#endif
 }
index 6d0ba5fd1f8de1c5b5f12a7f81bede79c11e497d..2ff250e24244bb13340489af0697153ef851226e 100644 (file)
@@ -48,18 +48,27 @@ 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 ();
+
+  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 ();
+
+#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 ();
@@ -71,4 +80,5 @@ TEST (void)
   MASK_ZERO (i_q) (res_ref, mask, SIZE);
   if (UNION_CHECK (AVX512F_LEN, i_q) (res3, res_ref))
     abort ();
+#endif
 }
index 513f8224716f9ecbad69032c5e76e63d8e971eda..ff0d016370df652a6dff80b5dc5689484f43ee00 100644 (file)
@@ -47,17 +47,27 @@ 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
+
+  CALC (s.a, res_ref);
+
+  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 ();
+
+#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);
-#endif
-
-  CALC (s.a, res_ref);
 
   if (UNION_CHECK (AVX512F_LEN, i_ud) (res1, res_ref))
     abort ();
@@ -69,4 +79,5 @@ TEST (void)
   MASK_ZERO (i_ud) (res_ref, mask, SIZE);
   if (UNION_CHECK (AVX512F_LEN, i_ud) (res3, res_ref))
     abort ();
+#endif
 }
index 98d7ea81312cbbedd8961faffad934723c57e0f2..ef3019bb43fa9ac27ef57fa63373c80a5bfde378 100644 (file)
@@ -48,17 +48,27 @@ 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
+
+  CALC (s.a, res_ref);
+
+  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 ();
+
+#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);
-#endif
-
-  CALC (s.a, res_ref);
 
   if (UNION_CHECK (AVX512F_LEN, i_uq) (res1, res_ref))
     abort ();
@@ -70,4 +80,5 @@ TEST (void)
   MASK_ZERO (i_uq) (res_ref, mask, SRC_SIZE);
   if (UNION_CHECK (AVX512F_LEN, i_uq) (res3, res_ref))
     abort ();
+#endif
 }
index 12649e6280990d4ba582459c52539e9aae2691ca..e30f958b89ca8d0c3e4856f76e27e7167e0c57f0 100644 (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  }  } */
 /* { 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  }  } */
 /* { 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);
diff --git a/gcc/testsuite/gcc.target/i386/avx10_2-vcvtps2iubs-2.c b/gcc/testsuite/gcc.target/i386/avx10_2-vcvtps2iubs-2.c
new file mode 100644 (file)
index 0000000..d58019e
--- /dev/null
@@ -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" 
index cb6bd28e8c2dc4ad7f6bc0cb14cb90477b7a2b0b..87f2c57777b50960ae7cc8facf359d9d35d72b77 100644 (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)
index 04328f467332268430b7b7782195ea8e7a3e3da5..1e46e25bb323b605b1c82b61f4fd31528f63ac93 100644 (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)
index c495d22916a24d092708d5189ccd4c1b520a5de8..5616ca5cdc8304e12c49610daaee19f2b3df841a 100644 (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)
index 42c418b408f4c497400886cef69778663a6be56a..286f2ef6d1d525584c3e5b0111275445e7c33f2e 100644 (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)