aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorHaochen Jiang <haochen.jiang@intel.com>2024-11-22 15:57:47 +0800
committerHaochen Jiang <haochen.jiang@intel.com>2024-11-26 14:06:28 +0800
commitefb1d2e2368e60da3c691ee3cb510ee690d1fa2a (patch)
tree085de8d42abb9ac83d10680441bb0dcb108557ec /gcc
parent980929bdb80f1a1490caab5acc6d9740e0f9b539 (diff)
downloadgcc-efb1d2e2368e60da3c691ee3cb510ee690d1fa2a.zip
gcc-efb1d2e2368e60da3c691ee3cb510ee690d1fa2a.tar.gz
gcc-efb1d2e2368e60da3c691ee3cb510ee690d1fa2a.tar.bz2
i386/testsuite: Correct AVX10.2 FP8 test mask usage
Under FP8, we should not use AVX512F_LEN_HALF to get the mask size since it will get 16 instead of 8 and drop into wrong if condition. Correct the usage for vcvtneph2[b,h]f8[,s] runtime test. gcc/testsuite/ChangeLog: * gcc.target/i386/avx10_2-512-vcvtneph2bf8-2.c: Correct 128bit mask usage. * 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.
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/gcc.target/i386/avx10_2-512-vcvtneph2bf8-2.c25
-rw-r--r--gcc/testsuite/gcc.target/i386/avx10_2-512-vcvtneph2bf8s-2.c25
-rw-r--r--gcc/testsuite/gcc.target/i386/avx10_2-512-vcvtneph2hf8-2.c23
-rw-r--r--gcc/testsuite/gcc.target/i386/avx10_2-512-vcvtneph2hf8s-2.c23
4 files changed, 58 insertions, 38 deletions
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 d5ba911..96ca7e8 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
@@ -11,8 +11,8 @@
#include "avx10-helper.h"
#include "fp8-helper.h"
-#define SIZE_SRC (AVX512F_LEN / 16)
-#define SIZE (AVX512F_LEN_HALF / 8)
+#define SIZE (AVX512F_LEN / 16)
+#define SIZE_DST (AVX512F_LEN_HALF / 8)
#include "avx512f-mask-type.h"
void
@@ -23,14 +23,14 @@ CALC (unsigned char *r, _Float16 *s)
hf8_bf8 = 1;
saturate = 0;
- for (i = 0; i < SIZE; i++)
+ for (i = 0; i < SIZE_DST; i++)
{
r[i] = 0;
- if (i < SIZE_SRC)
- {
- Float16Union usrc = {.f16 = s[i]};
- r[i] = convert_fp16_to_fp8(usrc.f16, 0, hf8_bf8, saturate);
- }
+ if (i < SIZE)
+ {
+ Float16Union usrc = {.f16 = s[i]};
+ r[i] = convert_fp16_to_fp8(usrc.f16, 0, hf8_bf8, saturate);
+ }
}
}
@@ -41,17 +41,22 @@ TEST (void)
UNION_TYPE (AVX512F_LEN_HALF, i_b) res1, res2, res3;
UNION_TYPE (AVX512F_LEN, h) src;
MASK_TYPE mask = MASK_VALUE;
- unsigned char res_ref[SIZE];
+ unsigned char res_ref[SIZE_DST];
sign = 1;
- for (i = 0; i < SIZE_SRC; i++)
+ for (i = 0; i < SIZE; i++)
{
src.a[i] = (_Float16)(sign * (2.5 * (1 << (i % 3))));
sign = -sign;
}
+#if AVX512F_LEN > 128
+ for (i = 0; i < SIZE_DST; i++)
+ res2.a[i] = DEFAULT_VALUE;
+#else
for (i = 0; i < SIZE; i++)
res2.a[i] = DEFAULT_VALUE;
+#endif
CALC(res_ref, src.a);
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 49e170a..c458f1e 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
@@ -11,8 +11,8 @@
#include "avx10-helper.h"
#include "fp8-helper.h"
-#define SIZE_SRC (AVX512F_LEN / 16)
-#define SIZE (AVX512F_LEN_HALF / 8)
+#define SIZE (AVX512F_LEN / 16)
+#define SIZE_DST (AVX512F_LEN_HALF / 8)
#include "avx512f-mask-type.h"
void
@@ -23,14 +23,14 @@ CALC (unsigned char *r, _Float16 *s)
hf8_bf8 = 1;
saturate = 1;
- for (i = 0; i < SIZE; i++)
+ for (i = 0; i < SIZE_DST; i++)
{
r[i] = 0;
- if (i < SIZE_SRC)
- {
- Float16Union usrc = {.f16 = s[i]};
- r[i] = convert_fp16_to_fp8(usrc.f16, 0, hf8_bf8, saturate);
- }
+ if (i < SIZE)
+ {
+ Float16Union usrc = {.f16 = s[i]};
+ r[i] = convert_fp16_to_fp8(usrc.f16, 0, hf8_bf8, saturate);
+ }
}
}
@@ -41,17 +41,22 @@ TEST (void)
UNION_TYPE (AVX512F_LEN_HALF, i_b) res1, res2, res3;
UNION_TYPE (AVX512F_LEN, h) src;
MASK_TYPE mask = MASK_VALUE;
- unsigned char res_ref[SIZE];
+ unsigned char res_ref[SIZE_DST];
sign = 1;
- for (i = 0; i < SIZE_SRC; i++)
+ for (i = 0; i < SIZE; i++)
{
src.a[i] = (_Float16)(sign * (2.5 * (1 << (i % 3))));
sign = -sign;
}
+#if AVX512F_LEN > 128
+ for (i = 0; i < SIZE_DST; i++)
+ res2.a[i] = DEFAULT_VALUE;
+#else
for (i = 0; i < SIZE; i++)
res2.a[i] = DEFAULT_VALUE;
+#endif
CALC(res_ref, src.a);
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 f481b72..cb9cdbb 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
@@ -11,8 +11,8 @@
#include "avx10-helper.h"
#include "fp8-helper.h"
-#define SIZE_SRC (AVX512F_LEN / 16)
-#define SIZE (AVX512F_LEN_HALF / 8)
+#define SIZE (AVX512F_LEN / 16)
+#define SIZE_DST (AVX512F_LEN_HALF / 8)
#include "avx512f-mask-type.h"
void
@@ -23,14 +23,14 @@ CALC (unsigned char *r, _Float16 *s)
hf8_bf8 = 0;
saturate = 0;
- for (i = 0; i < SIZE; i++)
+ for (i = 0; i < SIZE_DST; i++)
{
r[i] = 0;
- if (i < SIZE_SRC)
- {
- Float16Union usrc = {.f16 = s[i]};
- r[i] = convert_fp16_to_fp8(usrc.f16, 0, hf8_bf8, saturate);
- }
+ if (i < SIZE)
+ {
+ Float16Union usrc = {.f16 = s[i]};
+ r[i] = convert_fp16_to_fp8(usrc.f16, 0, hf8_bf8, saturate);
+ }
}
}
@@ -44,14 +44,19 @@ TEST (void)
unsigned char res_ref[SIZE];
sign = 1;
- for (i = 0; i < SIZE_SRC; i++)
+ for (i = 0; i < SIZE; i++)
{
src.a[i] = (_Float16)(sign * (2.5 * (1 << (i % 3))));
sign = -sign;
}
+#if AVX512F_LEN > 128
+ for (i = 0; i < SIZE_DST; i++)
+ res2.a[i] = DEFAULT_VALUE;
+#else
for (i = 0; i < SIZE; i++)
res2.a[i] = DEFAULT_VALUE;
+#endif
CALC(res_ref, src.a);
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 4782b03..4827af4 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
@@ -11,8 +11,8 @@
#include "avx10-helper.h"
#include "fp8-helper.h"
-#define SIZE_SRC (AVX512F_LEN / 16)
-#define SIZE (AVX512F_LEN_HALF / 8)
+#define SIZE (AVX512F_LEN / 16)
+#define SIZE_DST (AVX512F_LEN_HALF / 8)
#include "avx512f-mask-type.h"
void
@@ -23,14 +23,14 @@ CALC (unsigned char *r, _Float16 *s)
hf8_bf8 = 0;
saturate = 1;
- for (i = 0; i < SIZE; i++)
+ for (i = 0; i < SIZE_DST; i++)
{
r[i] = 0;
- if (i < SIZE_SRC)
- {
- Float16Union usrc = {.f16 = s[i]};
- r[i] = convert_fp16_to_fp8(usrc.f16, 0, hf8_bf8, saturate);
- }
+ if (i < SIZE)
+ {
+ Float16Union usrc = {.f16 = s[i]};
+ r[i] = convert_fp16_to_fp8(usrc.f16, 0, hf8_bf8, saturate);
+ }
}
}
@@ -44,14 +44,19 @@ TEST (void)
unsigned char res_ref[SIZE];
sign = 1;
- for (i = 0; i < SIZE_SRC; i++)
+ for (i = 0; i < SIZE; i++)
{
src.a[i] = (_Float16)(sign * (2.5 * (1 << (i % 3))));
sign = -sign;
}
+#if AVX512F_LEN > 128
+ for (i = 0; i < SIZE_DST; i++)
+ res2.a[i] = DEFAULT_VALUE;
+#else
for (i = 0; i < SIZE; i++)
res2.a[i] = DEFAULT_VALUE;
+#endif
CALC(res_ref, src.a);