On Tue, Aug 8, 2023 at 3:23 PM Haochen Jiang via Gcc-patches
<gcc-patches@gcc.gnu.org> wrote:
>
> gcc/testsuite/ChangeLog:
>
>         * gcc.target/i386/avx10_1-vextractf64x2-1.c: New test.
>         * gcc.target/i386/avx10_1-vextracti64x2-1.c: Ditto.
>         * gcc.target/i386/avx10_1-vfpclasspd-1.c: Ditto.
>         * gcc.target/i386/avx10_1-vfpclassps-1.c: Ditto.
>         * gcc.target/i386/avx10_1-vinsertf64x2-1.c: Ditto.
>         * gcc.target/i386/avx10_1-vinserti64x2-1.c: Ditto.
>         * gcc.target/i386/avx10_1-vrangepd-1.c: Ditto.
>         * gcc.target/i386/avx10_1-vrangeps-1.c: Ditto.
>         * gcc.target/i386/avx10_1-vreducepd-1.c: Ditto.
>         * gcc.target/i386/avx10_1-vreduceps-1.c: Ditto.
Ok for all 6 patches(please wait for extra 24 hours to commit, if
there's no objection).
> ---
>  .../gcc.target/i386/avx10_1-vextractf64x2-1.c | 18 ++++++++++++
>  .../gcc.target/i386/avx10_1-vextracti64x2-1.c | 19 ++++++++++++
>  .../gcc.target/i386/avx10_1-vfpclasspd-1.c    | 21 ++++++++++++++
>  .../gcc.target/i386/avx10_1-vfpclassps-1.c    | 21 ++++++++++++++
>  .../gcc.target/i386/avx10_1-vinsertf64x2-1.c  | 18 ++++++++++++
>  .../gcc.target/i386/avx10_1-vinserti64x2-1.c  | 18 ++++++++++++
>  .../gcc.target/i386/avx10_1-vrangepd-1.c      | 27 +++++++++++++++++
>  .../gcc.target/i386/avx10_1-vrangeps-1.c      | 27 +++++++++++++++++
>  .../gcc.target/i386/avx10_1-vreducepd-1.c     | 29 +++++++++++++++++++
>  .../gcc.target/i386/avx10_1-vreduceps-1.c     | 29 +++++++++++++++++++
>  10 files changed, 227 insertions(+)
>  create mode 100644 gcc/testsuite/gcc.target/i386/avx10_1-vextractf64x2-1.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/avx10_1-vextracti64x2-1.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/avx10_1-vfpclasspd-1.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/avx10_1-vfpclassps-1.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/avx10_1-vinsertf64x2-1.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/avx10_1-vinserti64x2-1.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/avx10_1-vrangepd-1.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/avx10_1-vrangeps-1.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/avx10_1-vreducepd-1.c
>  create mode 100644 gcc/testsuite/gcc.target/i386/avx10_1-vreduceps-1.c
>
> diff --git a/gcc/testsuite/gcc.target/i386/avx10_1-vextractf64x2-1.c 
> b/gcc/testsuite/gcc.target/i386/avx10_1-vextractf64x2-1.c
> new file mode 100644
> index 00000000000..4c7e54dc198
> --- /dev/null
> +++ b/gcc/testsuite/gcc.target/i386/avx10_1-vextractf64x2-1.c
> @@ -0,0 +1,18 @@
> +/* { dg-do compile } */
> +/* { dg-options "-mavx10.1 -O2" } */
> +/* { dg-final { scan-assembler-times "vextractf64x2\[ 
> \\t\]+\[^\{\n\]*%ymm\[0-9\]+.{7}(?:\n|\[ \\t\]+#)"  1 } } */
> +/* { dg-final { scan-assembler-times "vextractf64x2\[ 
> \\t\]+\[^\{\n\]*%ymm\[0-9\]+.{7}\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)"  1 } } */
> +/* { dg-final { scan-assembler-times "vextractf64x2\[ 
> \\t\]+\[^\{\n\]*%ymm\[0-9\]+.{7}\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)"  1 } } */
> +
> +#include <immintrin.h>
> +
> +volatile __m256d x;
> +volatile __m128d y;
> +
> +void extern
> +avx10_1_test (void)
> +{
> +  y = _mm256_extractf64x2_pd (x, 1);
> +  y = _mm256_mask_extractf64x2_pd (y, 2, x, 1);
> +  y = _mm256_maskz_extractf64x2_pd (2, x, 1);
> +}
> diff --git a/gcc/testsuite/gcc.target/i386/avx10_1-vextracti64x2-1.c 
> b/gcc/testsuite/gcc.target/i386/avx10_1-vextracti64x2-1.c
> new file mode 100644
> index 00000000000..c0bd7700d52
> --- /dev/null
> +++ b/gcc/testsuite/gcc.target/i386/avx10_1-vextracti64x2-1.c
> @@ -0,0 +1,19 @@
> +/* { dg-do compile } */
> +/* { dg-options "-mavx10.1 -O2" } */
> +/* { dg-final { scan-assembler-times "vextracti64x2\[ 
> \\t\]+\[^\{\n\]*%ymm\[0-9\]+.{7}(?:\n|\[ \\t\]+#)"  1 } } */
> +/* { dg-final { scan-assembler-times "vextracti64x2\[ 
> \\t\]+\[^\{\n\]*%ymm\[0-9\]+.{7}\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)"  1 } } */
> +/* { dg-final { scan-assembler-times "vextracti64x2\[ 
> \\t\]+\[^\{\n\]*%ymm\[0-9\]+.{7}\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)"  1 } } */
> +
> +#include <immintrin.h>
> +
> +volatile __m256i x;
> +volatile __m128i y;
> +
> +void extern
> +avx10_1_test (void)
> +{
> +  y = _mm256_extracti64x2_epi64 (x, 1);
> +  y = _mm256_mask_extracti64x2_epi64 (y, 2, x, 1);
> +  y = _mm256_maskz_extracti64x2_epi64 (2, x, 1);
> +}
> +
> diff --git a/gcc/testsuite/gcc.target/i386/avx10_1-vfpclasspd-1.c 
> b/gcc/testsuite/gcc.target/i386/avx10_1-vfpclasspd-1.c
> new file mode 100644
> index 00000000000..806ba800023
> --- /dev/null
> +++ b/gcc/testsuite/gcc.target/i386/avx10_1-vfpclasspd-1.c
> @@ -0,0 +1,21 @@
> +/* { dg-do compile } */
> +/* { dg-options "-mavx10.1 -O2" } */
> +/* { dg-final { scan-assembler-times "vfpclasspdy\[ 
> \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
> +/* { dg-final { scan-assembler-times "vfpclasspdx\[ 
> \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
> +/* { dg-final { scan-assembler-times "vfpclasspdy\[ 
> \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ 
> \\t\]+#)" 1 } } */
> +/* { dg-final { scan-assembler-times "vfpclasspdx\[ 
> \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ 
> \\t\]+#)" 1 } } */
> +
> +#include <immintrin.h>
> +
> +volatile __m256d x256;
> +volatile __m128d x128;
> +volatile __mmask8 m;
> +
> +void extern
> +avx10_1_test (void)
> +{
> +  m = _mm256_fpclass_pd_mask (x256, 13);
> +  m = _mm_fpclass_pd_mask (x128, 13);
> +  m = _mm256_mask_fpclass_pd_mask (2, x256, 13);
> +  m = _mm_mask_fpclass_pd_mask (2, x128, 13);
> +}
> diff --git a/gcc/testsuite/gcc.target/i386/avx10_1-vfpclassps-1.c 
> b/gcc/testsuite/gcc.target/i386/avx10_1-vfpclassps-1.c
> new file mode 100644
> index 00000000000..174903c7676
> --- /dev/null
> +++ b/gcc/testsuite/gcc.target/i386/avx10_1-vfpclassps-1.c
> @@ -0,0 +1,21 @@
> +/* { dg-do compile } */
> +/* { dg-options "-mavx10.1 -O2" } */
> +/* { dg-final { scan-assembler-times "vfpclasspsy\[ 
> \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
> +/* { dg-final { scan-assembler-times "vfpclasspsx\[ 
> \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n^k\]*%k\[0-7\](?:\n|\[ \\t\]+#)" 1 } } */
> +/* { dg-final { scan-assembler-times "vfpclasspsy\[ 
> \\t\]+\[^\{\n\]*%ymm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ 
> \\t\]+#)" 1 } } */
> +/* { dg-final { scan-assembler-times "vfpclasspsx\[ 
> \\t\]+\[^\{\n\]*%xmm\[0-9\]+\[^\n^k\]*%k\[0-7\]\{%k\[1-7\]\}(?:\n|\[ 
> \\t\]+#)" 1 } } */
> +
> +#include <immintrin.h>
> +
> +volatile __m256 x256;
> +volatile __m128 x128;
> +volatile __mmask8 m;
> +
> +void extern
> +avx10_1_test (void)
> +{
> +  m = _mm256_fpclass_ps_mask (x256, 13);
> +  m = _mm_fpclass_ps_mask (x128, 13);
> +  m = _mm256_mask_fpclass_ps_mask (2, x256, 13);
> +  m = _mm_mask_fpclass_ps_mask (2, x128, 13);
> +}
> diff --git a/gcc/testsuite/gcc.target/i386/avx10_1-vinsertf64x2-1.c 
> b/gcc/testsuite/gcc.target/i386/avx10_1-vinsertf64x2-1.c
> new file mode 100644
> index 00000000000..5a196844e76
> --- /dev/null
> +++ b/gcc/testsuite/gcc.target/i386/avx10_1-vinsertf64x2-1.c
> @@ -0,0 +1,18 @@
> +/* { dg-do compile } */
> +/* { dg-options "-mavx10.1 -O2" } */
> +/* { dg-final { scan-assembler-times 
> "vinsertf64x2\[^\n\]*ymm\[0-9\]+(?:\n|\[ \\t\]+#)"  1 } } */
> +/* { dg-final { scan-assembler-times 
> "vinsertf64x2\[^\n\]*ymm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)"  1 } } */
> +/* { dg-final { scan-assembler-times 
> "vinsertf64x2\[^\n\]*ymm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)"  1 } } */
> +
> +#include <immintrin.h>
> +
> +volatile __m256d x;
> +volatile __m128d y;
> +
> +void extern
> +avx10_1_test (void)
> +{
> +  x = _mm256_insertf64x2 (x, y, 1);
> +  x = _mm256_mask_insertf64x2 (x, 2, x, y, 1);
> +  x = _mm256_maskz_insertf64x2 (2, x, y, 1);
> +}
> diff --git a/gcc/testsuite/gcc.target/i386/avx10_1-vinserti64x2-1.c 
> b/gcc/testsuite/gcc.target/i386/avx10_1-vinserti64x2-1.c
> new file mode 100644
> index 00000000000..69ee06f0f08
> --- /dev/null
> +++ b/gcc/testsuite/gcc.target/i386/avx10_1-vinserti64x2-1.c
> @@ -0,0 +1,18 @@
> +/* { dg-do compile } */
> +/* { dg-options "-mavx10.1 -O2" } */
> +/* { dg-final { scan-assembler-times 
> "vinserti64x2\[^\n\]*ymm\[0-9\]+(?:\n|\[ \\t\]+#)"  1 } } */
> +/* { dg-final { scan-assembler-times 
> "vinserti64x2\[^\n\]*ymm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)"  1 } } */
> +/* { dg-final { scan-assembler-times 
> "vinserti64x2\[^\n\]*ymm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)"  1 } } */
> +
> +#include <immintrin.h>
> +
> +volatile __m256i x;
> +volatile __m128i y;
> +
> +void extern
> +avx10_1_test (void)
> +{
> +  x = _mm256_inserti64x2 (x, y, 1);
> +  x = _mm256_mask_inserti64x2 (x, 2, x, y, 1);
> +  x = _mm256_maskz_inserti64x2 (2, x, y, 1);
> +}
> diff --git a/gcc/testsuite/gcc.target/i386/avx10_1-vrangepd-1.c 
> b/gcc/testsuite/gcc.target/i386/avx10_1-vrangepd-1.c
> new file mode 100644
> index 00000000000..995b6de64ae
> --- /dev/null
> +++ b/gcc/testsuite/gcc.target/i386/avx10_1-vrangepd-1.c
> @@ -0,0 +1,27 @@
> +/* { dg-do compile } */
> +/* { dg-options "-mavx10.1 -O2" } */
> +/* { dg-final { scan-assembler-times "vrangepd\[ 
> \\t\]+\[^\{\n\]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)"  1 } } */
> +/* { dg-final { scan-assembler-times "vrangepd\[ 
> \\t\]+\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)"  1 } } */
> +/* { dg-final { scan-assembler-times "vrangepd\[ 
> \\t\]+\[^\{\n\]*%ymm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
> +/* { dg-final { scan-assembler-times "vrangepd\[ 
> \\t\]+\[^\{\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
> +/* { dg-final { scan-assembler-times "vrangepd\[ 
> \\t\]+\[^\{\n\]*%ymm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
> +/* { dg-final { scan-assembler-times "vrangepd\[ 
> \\t\]+\[^\{\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
> +
> +#include <immintrin.h>
> +
> +volatile __m256d y;
> +volatile __m128d x;
> +volatile __mmask8 m;
> +
> +void extern
> +avx10_1_test (void)
> +{
> +  y = _mm256_range_pd (y, y, 15);
> +  x = _mm_range_pd (x, x, 15);
> +
> +  y = _mm256_mask_range_pd (y, m, y, y, 15);
> +  x = _mm_mask_range_pd (x, m, x, x, 15);
> +
> +  y = _mm256_maskz_range_pd (m, y, y, 15);
> +  x = _mm_maskz_range_pd (m, x, x, 15);
> +}
> diff --git a/gcc/testsuite/gcc.target/i386/avx10_1-vrangeps-1.c 
> b/gcc/testsuite/gcc.target/i386/avx10_1-vrangeps-1.c
> new file mode 100644
> index 00000000000..faf844a9ae1
> --- /dev/null
> +++ b/gcc/testsuite/gcc.target/i386/avx10_1-vrangeps-1.c
> @@ -0,0 +1,27 @@
> +/* { dg-do compile } */
> +/* { dg-options "-mavx10.1 -O2" } */
> +/* { dg-final { scan-assembler-times "vrangeps\[ 
> \\t\]+\[^\{\n\]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)"  1 } } */
> +/* { dg-final { scan-assembler-times "vrangeps\[ 
> \\t\]+\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)"  1 } } */
> +/* { dg-final { scan-assembler-times "vrangeps\[ 
> \\t\]+\[^\{\n\]*%ymm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
> +/* { dg-final { scan-assembler-times "vrangeps\[ 
> \\t\]+\[^\{\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
> +/* { dg-final { scan-assembler-times "vrangeps\[ 
> \\t\]+\[^\{\n\]*%ymm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
> +/* { dg-final { scan-assembler-times "vrangeps\[ 
> \\t\]+\[^\{\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
> +
> +#include <immintrin.h>
> +
> +volatile __m256 y;
> +volatile __m128 x;
> +volatile __mmask8 m;
> +
> +void extern
> +avx10_1_test (void)
> +{
> +  y = _mm256_range_ps (y, y, 15);
> +  x = _mm_range_ps (x, x, 15);
> +
> +  y = _mm256_mask_range_ps (y, m, y, y, 15);
> +  x = _mm_mask_range_ps (x, m, x, x, 15);
> +
> +  y = _mm256_maskz_range_ps (m, y, y, 15);
> +  x = _mm_maskz_range_ps (m, x, x, 15);
> +}
> diff --git a/gcc/testsuite/gcc.target/i386/avx10_1-vreducepd-1.c 
> b/gcc/testsuite/gcc.target/i386/avx10_1-vreducepd-1.c
> new file mode 100644
> index 00000000000..76bcec0d2f6
> --- /dev/null
> +++ b/gcc/testsuite/gcc.target/i386/avx10_1-vreducepd-1.c
> @@ -0,0 +1,29 @@
> +/* { dg-do compile } */
> +/* { dg-options "-mavx10.1 -O2" } */
> +/* { dg-final { scan-assembler-times "vreducepd\[ 
> \\t\]+\[^\{\n\]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)"  1 } } */
> +/* { dg-final { scan-assembler-times "vreducepd\[ 
> \\t\]+\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)"  1 } } */
> +/* { dg-final { scan-assembler-times "vreducepd\[ 
> \\t\]+\[^\{\n\]*%ymm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
> +/* { dg-final { scan-assembler-times "vreducepd\[ 
> \\t\]+\[^\{\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
> +/* { dg-final { scan-assembler-times "vreducepd\[ 
> \\t\]+\[^\{\n\]*%ymm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
> +/* { dg-final { scan-assembler-times "vreducepd\[ 
> \\t\]+\[^\{\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
> +
> +#include <immintrin.h>
> +
> +#define IMM 123
> +
> +volatile __m256d x1;
> +volatile __m128d x2;
> +volatile __mmask8 m;
> +
> +void extern
> +avx156p_test (void)
> +{
> +  x1 = _mm256_reduce_pd (x1, IMM);
> +  x2 = _mm_reduce_pd (x2, IMM);
> +
> +  x1 = _mm256_mask_reduce_pd (x1, m, x1, IMM);
> +  x2 = _mm_mask_reduce_pd (x2, m, x2, IMM);
> +
> +  x1 = _mm256_maskz_reduce_pd (m, x1, IMM);
> +  x2 = _mm_maskz_reduce_pd (m, x2, IMM);
> +}
> diff --git a/gcc/testsuite/gcc.target/i386/avx10_1-vreduceps-1.c 
> b/gcc/testsuite/gcc.target/i386/avx10_1-vreduceps-1.c
> new file mode 100644
> index 00000000000..9d3aeb362fc
> --- /dev/null
> +++ b/gcc/testsuite/gcc.target/i386/avx10_1-vreduceps-1.c
> @@ -0,0 +1,29 @@
> +/* { dg-do compile } */
> +/* { dg-options "-mavx10.1 -O2" } */
> +/* { dg-final { scan-assembler-times "vreduceps\[ 
> \\t\]+\[^\{\n\]*%ymm\[0-9\]+(?:\n|\[ \\t\]+#)"  1 } } */
> +/* { dg-final { scan-assembler-times "vreduceps\[ 
> \\t\]+\[^\{\n\]*%xmm\[0-9\]+(?:\n|\[ \\t\]+#)"  1 } } */
> +/* { dg-final { scan-assembler-times "vreduceps\[ 
> \\t\]+\[^\{\n\]*%ymm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
> +/* { dg-final { scan-assembler-times "vreduceps\[ 
> \\t\]+\[^\{\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}(?:\n|\[ \\t\]+#)" 1 } } */
> +/* { dg-final { scan-assembler-times "vreduceps\[ 
> \\t\]+\[^\{\n\]*%ymm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
> +/* { dg-final { scan-assembler-times "vreduceps\[ 
> \\t\]+\[^\{\n\]*%xmm\[0-9\]+\{%k\[1-7\]\}\{z\}(?:\n|\[ \\t\]+#)" 1 } } */
> +
> +#include <immintrin.h>
> +
> +#define IMM 123
> +
> +volatile __m256 x1;
> +volatile __m128 x2;
> +volatile __mmask8 m;
> +
> +void extern
> +avx10_1_test (void)
> +{
> +  x1 = _mm256_reduce_ps (x1, IMM);
> +  x2 = _mm_reduce_ps (x2, IMM);
> +
> +  x1 = _mm256_mask_reduce_ps (x1, m, x1, IMM);
> +  x2 = _mm_mask_reduce_ps (x2, m, x2, IMM);
> +
> +  x1 = _mm256_maskz_reduce_ps (m, x1, IMM);
> +  x2 = _mm_maskz_reduce_ps (m, x2, IMM);
> +}
> --
> 2.31.1
>


-- 
BR,
Hongtao

Reply via email to