> From: Haochen Jiang <haochen.ji...@intel.com> > Sent: Wednesday, September 18, 2024 1:38 PM > > Hi all, > > For AVX10.2 convert tests, all of them are missing mask tests previously, this > patch will add them in the tests. > > Tested on sde with assembler with these insts. Ok for trunk?
Please ignore this patch, I missed some files and will re-send the patch soon. Thx, Haochen > > Thx, > Haochen > > gcc/testsuite/ChangeLog: > > * gcc.target/i386/avx10_2-512-vcvt2ps2phx-2.c: Enhance mask test. > * gcc.target/i386/avx10_2-512-vcvthf82ph-2.c: Ditto. > * gcc.target/i386/avx10_2-512-vcvtne2ph2bf8-2.c: Ditto. > * gcc.target/i386/avx10_2-512-vcvtne2ph2bf8s-2.c: Ditto. > * gcc.target/i386/avx10_2-512-vcvtne2ph2hf8-2.c: Ditto. > * gcc.target/i386/avx10_2-512-vcvtne2ph2hf8s-2.c: Ditto. > * gcc.target/i386/avx10_2-512-vcvtneph2bf8-2.c: Ditto. > * gcc.target/i386/avx10_2-512-vcvtneph2bf8s-2.c: Ditto. > * gcc.target/i386/avx10_2-512-vcvtneph2hf8-2.c: Ditto. > * gcc.target/i386/avx10_2-512-vcvtneph2hf8s-2.c: Ditto. > * gcc.target/i386/avx512f-helper.h: Fix a typo in macro define. > --- > .../i386/avx10_2-512-vcvt2ps2phx-2.c | 35 ++++++++++++------- > .../i386/avx10_2-512-vcvthf82ph-2.c | 27 ++++++++++---- > .../i386/avx10_2-512-vcvtne2ph2bf8-2.c | 25 ++++++++++--- > .../i386/avx10_2-512-vcvtne2ph2bf8s-2.c | 25 ++++++++++--- > .../i386/avx10_2-512-vcvtne2ph2hf8-2.c | 25 ++++++++++--- > .../i386/avx10_2-512-vcvtne2ph2hf8s-2.c | 25 ++++++++++--- > .../i386/avx10_2-512-vcvtneph2bf8-2.c | 29 ++++++++++----- > .../i386/avx10_2-512-vcvtneph2bf8s-2.c | 27 ++++++++++---- > .../i386/avx10_2-512-vcvtneph2hf8-2.c | 27 ++++++++++---- > .../i386/avx10_2-512-vcvtneph2hf8s-2.c | 27 ++++++++++---- > .../gcc.target/i386/avx512f-helper.h | 2 +- > 11 files changed, 209 insertions(+), 65 deletions(-) > > diff --git a/gcc/testsuite/gcc.target/i386/avx10_2-512-vcvt2ps2phx-2.c > b/gcc/testsuite/gcc.target/i386/avx10_2-512-vcvt2ps2phx-2.c > index 40dbe18abbe..5e355ae53d4 100644 > --- a/gcc/testsuite/gcc.target/i386/avx10_2-512-vcvt2ps2phx-2.c > +++ b/gcc/testsuite/gcc.target/i386/avx10_2-512-vcvt2ps2phx-2.c > @@ -10,24 +10,25 @@ > #include "avx10-helper.h" > #include <stdint.h> > > -#define SIZE_RES (AVX512F_LEN / 16) > +#define SIZE (AVX512F_LEN / 16) > +#include "avx512f-mask-type.h" > > static void > CALC (_Float16 *res_ref, float *src1, float *src2) { > float fp32; > int i; > - for (i = 0; i < SIZE_RES / 2; i++) > + for (i = 0; i < SIZE / 2; i++) > { > fp32 = (float) 2 * i + 7 + i * 0.5; > res_ref[i] = fp32; > src2[i] = fp32; > } > - for (i = SIZE_RES / 2; i < SIZE_RES; i++) > + for (i = SIZE / 2; i < SIZE; i++) > { > fp32 = (float)2 * i + 7 + i * 0.5; > res_ref[i] = fp32; > - src1[i - (SIZE_RES / 2)] = fp32; > + src1[i - (SIZE / 2)] = fp32; > } > } > > @@ -35,17 +36,27 @@ void > TEST (void) > { > int i; > - UNION_TYPE (AVX512F_LEN, h) res1; > + UNION_TYPE (AVX512F_LEN, h) res1, res2, res3; > UNION_TYPE (AVX512F_LEN, ) src1, src2; > - _Float16 res_ref[SIZE_RES]; > - float fp32; > - > - for (i = 0; i < SIZE_RES; i++) > - res1.a[i] = 5; > - > + MASK_TYPE mask = MASK_VALUE; > + _Float16 res_ref[SIZE]; > + > + for (i = 0; i < SIZE; i++) > + res2.a[i] = DEFAULT_VALUE; > + > CALC (res_ref, src1.a, src2.a); > - > + > res1.x = INTRINSIC (_cvtx2ps_ph) (src1.x, src2.x); > if (UNION_CHECK (AVX512F_LEN, h) (res1, res_ref)) > abort (); > + > + res2.x = INTRINSIC (_mask_cvtx2ps_ph) (res2.x, mask, src1.x, src2.x); > + MASK_MERGE (h) (res_ref, mask, SIZE); if (UNION_CHECK (AVX512F_LEN, > + h) (res2, res_ref)) > + abort (); > + > + res3.x = INTRINSIC (_maskz_cvtx2ps_ph) (mask, src1.x, src2.x); > + MASK_ZERO (h) (res_ref, mask, SIZE); if (UNION_CHECK (AVX512F_LEN, h) > + (res3, res_ref)) > + abort (); > } > diff --git a/gcc/testsuite/gcc.target/i386/avx10_2-512-vcvthf82ph-2.c > b/gcc/testsuite/gcc.target/i386/avx10_2-512-vcvthf82ph-2.c > index 6b9f07ff86a..1aa5daa6c58 100644 > --- a/gcc/testsuite/gcc.target/i386/avx10_2-512-vcvthf82ph-2.c > +++ b/gcc/testsuite/gcc.target/i386/avx10_2-512-vcvthf82ph-2.c > @@ -12,13 +12,14 @@ > #include "fp8-helper.h" > > #define SIZE_SRC (AVX512F_LEN_HALF / 8) -#define SIZE_RES (AVX512F_LEN > / 16) > +#define SIZE (AVX512F_LEN / 16) > +#include "avx512f-mask-type.h" > > void > CALC (_Float16 *r, unsigned char *s) > { > int i; > - for (i = 0; i < SIZE_RES; i++) > + for (i = 0; i < SIZE; i++) > r[i] = convert_hf8_to_fp16(s[i]); > } > > @@ -26,9 +27,10 @@ void > TEST (void) > { > int i,sign; > - UNION_TYPE (AVX512F_LEN, h) res; > + UNION_TYPE (AVX512F_LEN, h) res1, res2, res3; > UNION_TYPE (AVX512F_LEN_HALF, i_b) src; > - _Float16 res_ref[SIZE_RES]; > + MASK_TYPE mask = MASK_VALUE; > + _Float16 res_ref[SIZE]; > > sign = 1; > for (i = 0; i < SIZE_SRC; i++) > @@ -37,9 +39,22 @@ TEST (void) > sign = -sign; > } > > - res.x = INTRINSIC (_cvthf8_ph) (src.x); > + for (i = 0; i < SIZE; i++) > + res2.a[i] = DEFAULT_VALUE; > + > CALC(res_ref, src.a); > > - if (UNION_ROUGH_CHECK (AVX512F_LEN, h) (res, res_ref, 0.0009765625)) > + res1.x = INTRINSIC (_cvthf8_ph) (src.x); if (UNION_ROUGH_CHECK > + (AVX512F_LEN, h) (res1, res_ref, 0.0009765625)) > + abort (); > + > + res2.x = INTRINSIC (_mask_cvthf8_ph) (res2.x, mask, src.x); > + MASK_MERGE (h) (res_ref, mask, SIZE); if (UNION_ROUGH_CHECK > + (AVX512F_LEN, h) (res2, res_ref, 0.0009765625)) > + abort (); > + > + res3.x = INTRINSIC (_maskz_cvthf8_ph) (mask, src.x); MASK_ZERO (h) > + (res_ref, mask, SIZE); if (UNION_ROUGH_CHECK (AVX512F_LEN, h) (res3, > + res_ref, 0.0009765625)) > abort (); > } > diff --git a/gcc/testsuite/gcc.target/i386/avx10_2-512-vcvtne2ph2bf8-2.c > b/gcc/testsuite/gcc.target/i386/avx10_2-512-vcvtne2ph2bf8-2.c > index 96fa7c1634d..69d5ae2a9e0 100644 > --- a/gcc/testsuite/gcc.target/i386/avx10_2-512-vcvtne2ph2bf8-2.c > +++ b/gcc/testsuite/gcc.target/i386/avx10_2-512-vcvtne2ph2bf8-2.c > @@ -12,7 +12,8 @@ > #include "fp8-helper.h" > > #define SIZE_SRC (AVX512F_LEN / 16) > -#define SIZE_RES (AVX512F_LEN / 8) > +#define SIZE (AVX512F_LEN / 8) > +#include "avx512f-mask-type.h" > > void > CALC (unsigned char *r, _Float16 *s1, _Float16 *s2) @@ -24,7 +25,7 @@ > CALC (unsigned char *r, _Float16 *s1, _Float16 *s2) > hf8_bf8 = 1; > saturate = 0; > > - for (i = 0; i < SIZE_RES; i++) > + for (i = 0; i < SIZE; i++) > { > r[i] = 0; > if (i < SIZE_SRC) > @@ -45,9 +46,10 @@ void > TEST (void) > { > int i,sign; > - UNION_TYPE (AVX512F_LEN, i_b) res; > + UNION_TYPE (AVX512F_LEN, i_b) res1, res2, res3; > UNION_TYPE (AVX512F_LEN, h) src1, src2; > - unsigned char res_ref[SIZE_RES]; > + MASK_TYPE mask = MASK_VALUE; > + unsigned char res_ref[SIZE]; > > sign = 1; > for (i = 0; i < SIZE_SRC; i++) > @@ -57,9 +59,22 @@ TEST (void) > sign = -sign; > } > > - res.x = INTRINSIC (_cvtne2ph_pbf8) (src1.x, src2.x); > + for (i = 0; i < SIZE; i++) > + res2.a[i] = DEFAULT_VALUE; > + > CALC(res_ref, src1.a, src2.a); > > + res1.x = INTRINSIC (_cvtne2ph_pbf8) (src1.x, src2.x); if > + (UNION_CHECK (AVX512F_LEN, i_b) (res, res_ref)) > + abort (); > + > + res2.x = INTRINSIC (_mask_cvtne2ph_pbf8) (res2.x, mask, src1.x, > + src2.x); MASK_MERGE (h) (res_ref, mask, SIZE); if (UNION_CHECK > + (AVX512F_LEN, i_b) (res, res_ref)) > + abort (); > + > + res3.x = INTRINSIC (_maskz_cvtne2ph_pbf8) (mask, src1.x, src2.x); > + MASK_ZERO (h) (res_ref, mask, SIZE); > if (UNION_CHECK (AVX512F_LEN, i_b) (res, res_ref)) > abort (); > } > diff --git a/gcc/testsuite/gcc.target/i386/avx10_2-512-vcvtne2ph2bf8s-2.c > b/gcc/testsuite/gcc.target/i386/avx10_2-512-vcvtne2ph2bf8s-2.c > index cead411e178..fee2272c1d4 100644 > --- a/gcc/testsuite/gcc.target/i386/avx10_2-512-vcvtne2ph2bf8s-2.c > +++ b/gcc/testsuite/gcc.target/i386/avx10_2-512-vcvtne2ph2bf8s-2.c > @@ -12,7 +12,8 @@ > #include "fp8-helper.h" > > #define SIZE_SRC (AVX512F_LEN / 16) > -#define SIZE_RES (AVX512F_LEN / 8) > +#define SIZE (AVX512F_LEN / 8) > +#include "avx512f-mask-type.h" > > void > CALC (unsigned char *r, _Float16 *s1, _Float16 *s2) @@ -24,7 +25,7 @@ > CALC (unsigned char *r, _Float16 *s1, _Float16 *s2) > hf8_bf8 = 1; > saturate = 1; > > - for (i = 0; i < SIZE_RES; i++) > + for (i = 0; i < SIZE; i++) > { > r[i] = 0; > if (i < SIZE_SRC) > @@ -45,9 +46,10 @@ void > TEST (void) > { > int i,sign; > - UNION_TYPE (AVX512F_LEN, i_b) res; > + UNION_TYPE (AVX512F_LEN, i_b) res1, res2, res3; > UNION_TYPE (AVX512F_LEN, h) src1, src2; > - unsigned char res_ref[SIZE_RES]; > + MASK_TYPE mask = MASK_VALUE; > + unsigned char res_ref[SIZE]; > > sign = 1; > for (i = 0; i < SIZE_SRC; i++) > @@ -57,9 +59,22 @@ TEST (void) > sign = -sign; > } > > - res.x = INTRINSIC (_cvtnes2ph_pbf8) (src1.x, src2.x); > + for (i = 0; i < SIZE; i++) > + res2.a[i] = DEFAULT_VALUE; > + > CALC(res_ref, src1.a, src2.a); > > + res1.x = INTRINSIC (_cvtnes2ph_pbf8) (src1.x, src2.x); if > + (UNION_CHECK (AVX512F_LEN, i_b) (res, res_ref)) > + abort (); > + > + res2.x = INTRINSIC (_mask_cvtnes2ph_pbf8) (res2.x, mask, src1.x, > + src2.x); MASK_MERGE (h) (res_ref, mask, SIZE); if (UNION_CHECK > + (AVX512F_LEN, i_b) (res, res_ref)) > + abort (); > + > + res3.x = INTRINSIC (_maskz_cvtnes2ph_pbf8) (mask, src1.x, src2.x); > + MASK_ZERO (h) (res_ref, mask, SIZE); > if (UNION_CHECK (AVX512F_LEN, i_b) (res, res_ref)) > abort (); > } > diff --git a/gcc/testsuite/gcc.target/i386/avx10_2-512-vcvtne2ph2hf8-2.c > b/gcc/testsuite/gcc.target/i386/avx10_2-512-vcvtne2ph2hf8-2.c > index 6887b4085f5..73c09adf14e 100644 > --- a/gcc/testsuite/gcc.target/i386/avx10_2-512-vcvtne2ph2hf8-2.c > +++ b/gcc/testsuite/gcc.target/i386/avx10_2-512-vcvtne2ph2hf8-2.c > @@ -12,7 +12,8 @@ > #include "fp8-helper.h" > > #define SIZE_SRC (AVX512F_LEN / 16) > -#define SIZE_RES (AVX512F_LEN / 8) > +#define SIZE (AVX512F_LEN / 8) > +#include "avx512f-mask-type.h" > > void > CALC (unsigned char *r, _Float16 *s1, _Float16 *s2) @@ -24,7 +25,7 @@ > CALC (unsigned char *r, _Float16 *s1, _Float16 *s2) > hf8_bf8 = 0; > saturate = 0; > > - for (i = 0; i < SIZE_RES; i++) > + for (i = 0; i < SIZE; i++) > { > r[i] = 0; > if (i < SIZE_SRC) > @@ -45,9 +46,10 @@ void > TEST (void) > { > int i,sign; > - UNION_TYPE (AVX512F_LEN, i_b) res; > + UNION_TYPE (AVX512F_LEN, i_b) res1, res2, res3; > UNION_TYPE (AVX512F_LEN, h) src1, src2; > - unsigned char res_ref[SIZE_RES]; > + MASK_TYPE mask = MASK_VALUE; > + unsigned char res_ref[SIZE]; > > sign = 1; > for (i = 0; i < SIZE_SRC; i++) > @@ -57,9 +59,22 @@ TEST (void) > sign = -sign; > } > > - res.x = INTRINSIC (_cvtne2ph_phf8) (src1.x, src2.x); > + for (i = 0; i < SIZE; i++) > + res2.a[i] = DEFAULT_VALUE; > + > CALC(res_ref, src1.a, src2.a); > > + res1.x = INTRINSIC (_cvtne2ph_phf8) (src1.x, src2.x); if > + (UNION_CHECK (AVX512F_LEN, i_b) (res, res_ref)) > + abort (); > + > + res2.x = INTRINSIC (_mask_cvtne2ph_phf8) (res2.x, mask, src1.x, > + src2.x); MASK_MERGE (h) (res_ref, mask, SIZE); if (UNION_CHECK > + (AVX512F_LEN, i_b) (res, res_ref)) > + abort (); > + > + res3.x = INTRINSIC (_maskz_cvtne2ph_phf8) (mask, src1.x, src2.x); > + MASK_ZERO (h) (res_ref, mask, SIZE); > if (UNION_CHECK (AVX512F_LEN, i_b) (res, res_ref)) > abort (); > } > diff --git a/gcc/testsuite/gcc.target/i386/avx10_2-512-vcvtne2ph2hf8s-2.c > b/gcc/testsuite/gcc.target/i386/avx10_2-512-vcvtne2ph2hf8s-2.c > index 6637d5e726f..84a4140adcf 100644 > --- a/gcc/testsuite/gcc.target/i386/avx10_2-512-vcvtne2ph2hf8s-2.c > +++ b/gcc/testsuite/gcc.target/i386/avx10_2-512-vcvtne2ph2hf8s-2.c > @@ -12,7 +12,8 @@ > #include "fp8-helper.h" > > #define SIZE_SRC (AVX512F_LEN / 16) > -#define SIZE_RES (AVX512F_LEN / 8) > +#define SIZE (AVX512F_LEN / 8) > +#include "avx512f-mask-type.h" > > void > CALC (unsigned char *r, _Float16 *s1, _Float16 *s2) @@ -24,7 +25,7 @@ > CALC (unsigned char *r, _Float16 *s1, _Float16 *s2) > hf8_bf8 = 0; > saturate = 1; > > - for (i = 0; i < SIZE_RES; i++) > + for (i = 0; i < SIZE; i++) > { > r[i] = 0; > if (i < SIZE_SRC) > @@ -45,9 +46,10 @@ void > TEST (void) > { > int i,sign; > - UNION_TYPE (AVX512F_LEN, i_b) res; > + UNION_TYPE (AVX512F_LEN, i_b) res1, res2, res3; > UNION_TYPE (AVX512F_LEN, h) src1, src2; > - unsigned char res_ref[SIZE_RES]; > + MASK_TYPE mask = MASK_VALUE; > + unsigned char res_ref[SIZE]; > > sign = 1; > for (i = 0; i < SIZE_SRC; i++) > @@ -57,9 +59,22 @@ TEST (void) > sign *= -1; > } > > - res.x = INTRINSIC (_cvtnes2ph_phf8) (src1.x, src2.x); > + for (i = 0; i < SIZE; i++) > + res2.a[i] = DEFAULT_VALUE; > + > CALC(res_ref, src1.a, src2.a); > > + res1.x = INTRINSIC (_cvtnes2ph_phf8) (src1.x, src2.x); if > + (UNION_CHECK (AVX512F_LEN, i_b) (res, res_ref)) > + abort (); > + > + res2.x = INTRINSIC (_mask_cvtnes2ph_phf8) (res2.x, mask, src1.x, > + src2.x); MASK_MERGE (h) (res_ref, mask, SIZE); if (UNION_CHECK > + (AVX512F_LEN, i_b) (res, res_ref)) > + abort (); > + > + res3.x = INTRINSIC (_maskz_cvtnes2ph_phf8) (mask, src1.x, src2.x); > + MASK_ZERO (h) (res_ref, mask, SIZE); > if (UNION_CHECK (AVX512F_LEN, i_b) (res, res_ref)) > abort (); > } > diff --git a/gcc/testsuite/gcc.target/i386/avx10_2-512-vcvtneph2bf8-2.c > b/gcc/testsuite/gcc.target/i386/avx10_2-512-vcvtneph2bf8-2.c > index 253b8424ee2..9c62d41da44 100644 > --- a/gcc/testsuite/gcc.target/i386/avx10_2-512-vcvtneph2bf8-2.c > +++ b/gcc/testsuite/gcc.target/i386/avx10_2-512-vcvtneph2bf8-2.c > @@ -6,15 +6,14 @@ > #define AVX10_2 > #define AVX10_2_512 > #define AVX10_512BIT > -#define AVX512F_LEN 512 > -#define AVX512F_LEN_HALF 256 > #endif > > #include "avx10-helper.h" > #include "fp8-helper.h" > > #define SIZE_SRC (AVX512F_LEN / 16) > -#define SIZE_RES (AVX512F_LEN_HALF / 8) > +#define SIZE (AVX512F_LEN_HALF / 8) > +#include "avx512f-mask-type.h" > > void > CALC (unsigned char *r, _Float16 *s) > @@ -24,7 +23,7 @@ CALC (unsigned char *r, _Float16 *s) > hf8_bf8 = 1; > saturate = 0; > > - for (i = 0; i < SIZE_RES; i++) > + for (i = 0; i < SIZE; i++) > { > r[i] = 0; > if (i < SIZE_SRC) > @@ -39,9 +38,10 @@ void > TEST (void) > { > int i,sign; > - UNION_TYPE (AVX512F_LEN_HALF, i_b) res; > + UNION_TYPE (AVX512F_LEN_HALF, i_b) res1, res2, res3; > UNION_TYPE (AVX512F_LEN, h) src; > - unsigned char res_ref[SIZE_RES]; > + MASK_TYPE mask = MASK_VALUE; > + unsigned char res_ref[SIZE]; > > sign = 1; > for (i = 0; i < SIZE_SRC; i++) > @@ -50,9 +50,22 @@ TEST (void) > sign = -sign; > } > > - res.x = INTRINSIC (_cvtneph_pbf8) (src.x); > + for (i = 0; i < SIZE; i++) > + res2.a[i] = DEFAULT_VALUE; > + > CALC(res_ref, src.a); > - > + > + res1.x = INTRINSIC (_cvtneph_pbf8) (src.x); if (UNION_CHECK > + (AVX512F_LEN_HALF, i_b) (res, res_ref)) > + abort (); > + > + res2.x = INTRINSIC (_mask_cvtneph_pbf8) (res2.x, mask, src.x); > + MASK_MERGE (h) (res_ref, mask, SIZE); if (UNION_CHECK > + (AVX512F_LEN_HALF, i_b) (res, res_ref)) > + abort (); > + > + res3.x = INTRINSIC (_maskz_cvtneph_pbf8) (mask, src.x); MASK_ZERO > + (h) (res_ref, mask, SIZE); > if (UNION_CHECK (AVX512F_LEN_HALF, i_b) (res, res_ref)) > abort (); > } > diff --git a/gcc/testsuite/gcc.target/i386/avx10_2-512-vcvtneph2bf8s-2.c > b/gcc/testsuite/gcc.target/i386/avx10_2-512-vcvtneph2bf8s-2.c > index b7f9944f1c9..00e32500767 100644 > --- a/gcc/testsuite/gcc.target/i386/avx10_2-512-vcvtneph2bf8s-2.c > +++ b/gcc/testsuite/gcc.target/i386/avx10_2-512-vcvtneph2bf8s-2.c > @@ -12,7 +12,8 @@ > #include "fp8-helper.h" > > #define SIZE_SRC (AVX512F_LEN / 16) > -#define SIZE_RES (AVX512F_LEN_HALF / 8) > +#define SIZE (AVX512F_LEN_HALF / 8) > +#include "avx512f-mask-type.h" > > void > CALC (unsigned char *r, _Float16 *s) > @@ -22,7 +23,7 @@ CALC (unsigned char *r, _Float16 *s) > hf8_bf8 = 1; > saturate = 1; > > - for (i = 0; i < SIZE_RES; i++) > + for (i = 0; i < SIZE; i++) > { > r[i] = 0; > if (i < SIZE_SRC) > @@ -37,9 +38,10 @@ void > TEST (void) > { > int i,sign; > - UNION_TYPE (AVX512F_LEN_HALF, i_b) res; > + UNION_TYPE (AVX512F_LEN_HALF, i_b) res1, res2, res3; > UNION_TYPE (AVX512F_LEN, h) src; > - unsigned char res_ref[SIZE_RES]; > + MASK_TYPE mask = MASK_VALUE; > + unsigned char res_ref[SIZE]; > > sign = 1; > for (i = 0; i < SIZE_SRC; i++) > @@ -48,9 +50,22 @@ TEST (void) > sign = -sign; > } > > - res.x = INTRINSIC (_cvtnesph_pbf8) (src.x); > + for (i = 0; i < SIZE; i++) > + res2.a[i] = DEFAULT_VALUE; > + > CALC(res_ref, src.a); > - > + > + res1.x = INTRINSIC (_cvtnesph_pbf8) (src.x); if (UNION_CHECK > + (AVX512F_LEN_HALF, i_b) (res, res_ref)) > + abort (); > + > + res2.x = INTRINSIC (_mask_cvtnesph_pbf8) (res2.x, mask, src.x); > + MASK_MERGE (h) (res_ref, mask, SIZE); if (UNION_CHECK > + (AVX512F_LEN_HALF, i_b) (res, res_ref)) > + abort (); > + > + res3.x = INTRINSIC (_maskz_cvtnesph_pbf8) (mask, src.x); MASK_ZERO > + (h) (res_ref, mask, SIZE); > if (UNION_CHECK (AVX512F_LEN_HALF, i_b) (res, res_ref)) > abort (); > } > diff --git a/gcc/testsuite/gcc.target/i386/avx10_2-512-vcvtneph2hf8-2.c > b/gcc/testsuite/gcc.target/i386/avx10_2-512-vcvtneph2hf8-2.c > index 75f1292a33c..5bb008988f8 100644 > --- a/gcc/testsuite/gcc.target/i386/avx10_2-512-vcvtneph2hf8-2.c > +++ b/gcc/testsuite/gcc.target/i386/avx10_2-512-vcvtneph2hf8-2.c > @@ -12,7 +12,8 @@ > #include "fp8-helper.h" > > #define SIZE_SRC (AVX512F_LEN / 16) > -#define SIZE_RES (AVX512F_LEN_HALF / 8) > +#define SIZE (AVX512F_LEN_HALF / 8) > +#include "avx512f-mask-type.h" > > void > CALC (unsigned char *r, _Float16 *s) > @@ -22,7 +23,7 @@ CALC (unsigned char *r, _Float16 *s) > hf8_bf8 = 0; > saturate = 0; > > - for (i = 0; i < SIZE_RES; i++) > + for (i = 0; i < SIZE; i++) > { > r[i] = 0; > if (i < SIZE_SRC) > @@ -37,9 +38,10 @@ void > TEST (void) > { > int i,sign; > - UNION_TYPE (AVX512F_LEN_HALF, i_b) res; > + UNION_TYPE (AVX512F_LEN_HALF, i_b) res1, res2, res3; > UNION_TYPE (AVX512F_LEN, h) src; > - unsigned char res_ref[SIZE_RES]; > + MASK_TYPE mask = MASK_VALUE; > + unsigned char res_ref[SIZE]; > > sign = 1; > for (i = 0; i < SIZE_SRC; i++) > @@ -48,9 +50,22 @@ TEST (void) > sign = -sign; > } > > - res.x = INTRINSIC (_cvtneph_phf8) (src.x); > + for (i = 0; i < SIZE; i++) > + res2.a[i] = DEFAULT_VALUE; > + > CALC(res_ref, src.a); > - > + > + res1.x = INTRINSIC (_cvtneph_phf8) (src.x); if (UNION_CHECK > + (AVX512F_LEN_HALF, i_b) (res, res_ref)) > + abort (); > + > + res2.x = INTRINSIC (_mask_cvtneph_phf8) (res2.x, mask, src.x); > + MASK_MERGE (h) (res_ref, mask, SIZE); if (UNION_CHECK > + (AVX512F_LEN_HALF, i_b) (res, res_ref)) > + abort (); > + > + res3.x = INTRINSIC (_maskz_cvtneph_phf8) (mask, src.x); MASK_ZERO > + (h) (res_ref, mask, SIZE); > if (UNION_CHECK (AVX512F_LEN_HALF, i_b) (res, res_ref)) > abort (); > } > diff --git a/gcc/testsuite/gcc.target/i386/avx10_2-512-vcvtneph2hf8s-2.c > b/gcc/testsuite/gcc.target/i386/avx10_2-512-vcvtneph2hf8s-2.c > index b0f3cb07019..3d2d39602bc 100644 > --- a/gcc/testsuite/gcc.target/i386/avx10_2-512-vcvtneph2hf8s-2.c > +++ b/gcc/testsuite/gcc.target/i386/avx10_2-512-vcvtneph2hf8s-2.c > @@ -12,7 +12,8 @@ > #include "fp8-helper.h" > > #define SIZE_SRC (AVX512F_LEN / 16) > -#define SIZE_RES (AVX512F_LEN_HALF / 8) > +#define SIZE (AVX512F_LEN_HALF / 8) > +#include "avx512f-mask-type.h" > > void > CALC (unsigned char *r, _Float16 *s) > @@ -22,7 +23,7 @@ CALC (unsigned char *r, _Float16 *s) > hf8_bf8 = 0; > saturate = 1; > > - for (i = 0; i < SIZE_RES; i++) > + for (i = 0; i < SIZE; i++) > { > r[i] = 0; > if (i < SIZE_SRC) > @@ -37,9 +38,10 @@ void > TEST (void) > { > int i,sign; > - UNION_TYPE (AVX512F_LEN_HALF, i_b) res; > + UNION_TYPE (AVX512F_LEN_HALF, i_b) res1, res2, res3; > UNION_TYPE (AVX512F_LEN, h) src; > - unsigned char res_ref[SIZE_RES]; > + MASK_TYPE mask = MASK_VALUE; > + unsigned char res_ref[SIZE]; > > sign = 1; > for (i = 0; i < SIZE_SRC; i++) > @@ -48,9 +50,22 @@ TEST (void) > sign = -sign; > } > > - res.x = INTRINSIC (_cvtnesph_phf8) (src.x); > + for (i = 0; i < SIZE; i++) > + res2.a[i] = DEFAULT_VALUE; > + > CALC(res_ref, src.a); > - > + > + res1.x = INTRINSIC (_cvtnesph_phf8) (src.x); if (UNION_CHECK > + (AVX512F_LEN_HALF, i_b) (res, res_ref)) > + abort (); > + > + res2.x = INTRINSIC (_mask_cvtnesph_phf8) (res2.x, mask, src.x); > + MASK_MERGE (h) (res_ref, mask, SIZE); if (UNION_CHECK > + (AVX512F_LEN_HALF, i_b) (res, res_ref)) > + abort (); > + > + res3.x = INTRINSIC (_maskz_cvtnesph_phf8) (mask, src.x); MASK_ZERO > + (h) (res_ref, mask, SIZE); > if (UNION_CHECK (AVX512F_LEN_HALF, i_b) (res, res_ref)) > abort (); > } > diff --git a/gcc/testsuite/gcc.target/i386/avx512f-helper.h > b/gcc/testsuite/gcc.target/i386/avx512f-helper.h > index 21f691b8441..41f09e36c83 100644 > --- a/gcc/testsuite/gcc.target/i386/avx512f-helper.h > +++ b/gcc/testsuite/gcc.target/i386/avx512f-helper.h > @@ -97,7 +97,7 @@ MAKE_MASK_ZERO(bf16_bf, __bf16) > /* Function which calculates result. */ #define CALC EVAL(calc_, > AVX512F_LEN,) > > -#if !defined(AVX512VL) || defined(AVX10_512) > +#if !defined(AVX512VL) || defined(AVX10_512BIT) > #define AVX512F_LEN 512 > #define AVX512F_LEN_HALF 256 > #endif > -- > 2.31.1