From a19aca8afbf141bb550e9040135cc46387ce7f73 Mon Sep 17 00:00:00 2001 From: Haochen Jiang Date: Thu, 23 Jan 2025 09:51:54 +0800 Subject: i386: Enhance AMX tests After Binutils got changed, the previous usage on intrin will raise warning for assembler. We need to change that. Besides that, there are separate issues for both AMX-MOVRS and AMX-TRANSPOSE. For AMX-MOVRS, t2rpntlvwrs tests wrongly used AMX-TRANSPOSE intrins in test. Since the only difference between them is the "rs" hint, it won't change result. For AMX-TRANSPOSE, "t1" hint test is missing. This patch fixed both of them. Also changing AMX-MOVRS test file name to make it match with other AMX tests. gcc/testsuite/ChangeLog: PR target/118270 PR target/118609 * gcc.target/i386/amxmovrs-t2rpntlvw-2.c: Move to... * gcc.target/i386/amxmovrs-2rpntlvwrs-2.c: ...here. * gcc.target/i386/amxtranspose-2rpntlvw-2.c: Add "t1" hint test. --- .../gcc.target/i386/amxmovrs-2rpntlvwrs-2.c | 58 ++++++++++++++++++++++ .../gcc.target/i386/amxmovrs-t2rpntlvw-2.c | 58 ---------------------- .../gcc.target/i386/amxtranspose-2rpntlvw-2.c | 21 ++++++-- 3 files changed, 75 insertions(+), 62 deletions(-) create mode 100644 gcc/testsuite/gcc.target/i386/amxmovrs-2rpntlvwrs-2.c delete mode 100644 gcc/testsuite/gcc.target/i386/amxmovrs-t2rpntlvw-2.c (limited to 'gcc') diff --git a/gcc/testsuite/gcc.target/i386/amxmovrs-2rpntlvwrs-2.c b/gcc/testsuite/gcc.target/i386/amxmovrs-2rpntlvwrs-2.c new file mode 100644 index 0000000..0093ef7 --- /dev/null +++ b/gcc/testsuite/gcc.target/i386/amxmovrs-2rpntlvwrs-2.c @@ -0,0 +1,58 @@ +/* { dg-do run { target { ! ia32 } } } */ +/* { dg-require-effective-target amx_movrs } */ +/* { dg-require-effective-target amx_transpose } */ +/* { dg-require-effective-target avx512fp16 } */ +/* { dg-options "-O2 -mamx-movrs -mamx-transpose -mavx512fp16 -mavx512bf16" } */ +#define AMX_MOVRS +#define AMX_TRANSPOSE +#define DO_TEST test_amx_movrs_t2rpntlvwrs +void test_amx_movrs_t2rpntlvwrs (); +#include "amx-helper.h" + +#define init_pair_tile_reg_and_src_z_t(tmm_num, src, buffer, ztype, wtype) \ +{ \ + init_pair_tile_src (tmm_num, &src, buffer, ztype); \ + _tile_2rpntlvwz##ztype##rs##wtype (tmm_num, buffer, _STRIDE); \ +} + +void test_amx_movrs_t2rpntlvwrs () +{ + __tilecfg_u cfg; + __tilepair src; + __tile ref_0, ref_1; + uint8_t buffer[2048]; + int i; + + init_tile_config (&cfg); + + for (i = 0; i < 2048; i++) + buffer[i] = i % 256; + + /* Check t2rpntlvwz0rs. */ + init_pair_tile_reg_and_src_z_t (0, src, buffer, 0,); + _tile_stored (0, ref_0.buf, _STRIDE); + _tile_stored (1, ref_1.buf, _STRIDE); + if (!check_pair_tile_register (&ref_0, &ref_1, &src)) + abort (); + + /* Check t2rpntlvwz1rs. */ + init_pair_tile_reg_and_src_z_t (0, src, buffer, 1,); + _tile_stored (0, ref_0.buf, _STRIDE); + _tile_stored (1, ref_1.buf, _STRIDE); + if (!check_pair_tile_register (&ref_0, &ref_1, &src)) + abort (); + + /* Check t2rpntlvwz0t1rs. */ + init_pair_tile_reg_and_src_z_t (0, src, buffer, 0, t1); + _tile_stored (0, ref_0.buf, _STRIDE); + _tile_stored (1, ref_1.buf, _STRIDE); + if (!check_pair_tile_register (&ref_0, &ref_1, &src)) + abort (); + + /* Check t2rpntlvwz1t1rs. */ + init_pair_tile_reg_and_src_z_t (0, src, buffer, 1, t1); + _tile_stored (0, ref_0.buf, _STRIDE); + _tile_stored (1, ref_1.buf, _STRIDE); + if (!check_pair_tile_register (&ref_0, &ref_1, &src)) + abort (); +} diff --git a/gcc/testsuite/gcc.target/i386/amxmovrs-t2rpntlvw-2.c b/gcc/testsuite/gcc.target/i386/amxmovrs-t2rpntlvw-2.c deleted file mode 100644 index e38c6ea..0000000 --- a/gcc/testsuite/gcc.target/i386/amxmovrs-t2rpntlvw-2.c +++ /dev/null @@ -1,58 +0,0 @@ -/* { dg-do run { target { ! ia32 } } } */ -/* { dg-require-effective-target amx_movrs } */ -/* { dg-require-effective-target amx_transpose } */ -/* { dg-require-effective-target avx512fp16 } */ -/* { dg-options "-O2 -mamx-movrs -mamx-transpose -mavx512fp16 -mavx512bf16" } */ -#define AMX_MOVRS -#define AMX_TRANSPOSE -#define DO_TEST test_amx_movrs_t2rpntlvw -void test_amx_movrs_t2rpntlvw (); -#include "amx-helper.h" - -#define init_pair_tile_reg_and_src_z_t1(tmm_num, src, buffer, ztype, wtype)\ -{ \ - init_pair_tile_src (tmm_num, &src, buffer, ztype); \ - _tile_2rpntlvwz##ztype##wtype (tmm_num, buffer, _STRIDE);\ -} - -void test_amx_movrs_t2rpntlvw () -{ - __tilecfg_u cfg; - __tilepair src; - __tile ref_0, ref_1; - uint8_t buffer[2048]; - int i; - - init_tile_config (&cfg); - - for (i = 0; i < 2048; i++) - buffer[i] = i % 256; - - /* Check t2rpntlvwz0. */ - init_pair_tile_reg_and_src_z_t1 (0, src, buffer, 0,); - _tile_stored (0, ref_0.buf, _STRIDE); - _tile_stored (1, ref_1.buf, _STRIDE); - if (!check_pair_tile_register (&ref_0, &ref_1, &src)) - abort (); - - /* Check t2rpntlvwz1. */ - init_pair_tile_reg_and_src_z_t1 (1, src, buffer, 1,); - _tile_stored (0, ref_0.buf, _STRIDE); - _tile_stored (1, ref_1.buf, _STRIDE); - if (!check_pair_tile_register (&ref_0, &ref_1, &src)) - abort (); - - /* Check t2rpntlvwz0t1. */ - init_pair_tile_reg_and_src_z_t1 (0, src, buffer, 0, t1); - _tile_stored (0, ref_0.buf, _STRIDE); - _tile_stored (1, ref_1.buf, _STRIDE); - if (!check_pair_tile_register (&ref_0, &ref_1, &src)) - abort (); - - /* Check t2rpntlvwz1t1. */ - init_pair_tile_reg_and_src_z_t1 (1, src, buffer, 1, t1); - _tile_stored (0, ref_0.buf, _STRIDE); - _tile_stored (1, ref_1.buf, _STRIDE); - if (!check_pair_tile_register (&ref_0, &ref_1, &src)) - abort (); -} diff --git a/gcc/testsuite/gcc.target/i386/amxtranspose-2rpntlvw-2.c b/gcc/testsuite/gcc.target/i386/amxtranspose-2rpntlvw-2.c index 3b1c870..2d01827 100644 --- a/gcc/testsuite/gcc.target/i386/amxtranspose-2rpntlvw-2.c +++ b/gcc/testsuite/gcc.target/i386/amxtranspose-2rpntlvw-2.c @@ -5,10 +5,10 @@ #define DO_TEST test_amx_transpose_t2rpntlvw void test_amx_transpose_t2rpntlvw (); #include "amx-helper.h" -#define init_pair_tile_reg_and_src_z(tmm_num, src, buffer, ztype) \ +#define init_pair_tile_reg_and_src_z_t(tmm_num, src, buffer, ztype, wtype) \ { \ init_pair_tile_src (tmm_num, &src, buffer, ztype); \ - _tile_2rpntlvwz##ztype (tmm_num, buffer, _STRIDE); \ + _tile_2rpntlvwz##ztype##wtype (tmm_num, buffer, _STRIDE); \ } void test_amx_transpose_t2rpntlvw () @@ -25,17 +25,30 @@ void test_amx_transpose_t2rpntlvw () buffer[i] = i % 256; /* Check t2rpntlvwz0. */ - init_pair_tile_reg_and_src_z (0, src, buffer, 0); + init_pair_tile_reg_and_src_z_t (0, src, buffer, 0,); _tile_stored (0, ref_0.buf, _STRIDE); _tile_stored (1, ref_1.buf, _STRIDE); if (!check_pair_tile_register (&ref_0, &ref_1, &src)) abort (); /* Check t2rpntlvwz1. */ - init_pair_tile_reg_and_src_z (1, src, buffer, 1); + init_pair_tile_reg_and_src_z_t (0, src, buffer, 1,); _tile_stored (0, ref_0.buf, _STRIDE); _tile_stored (1, ref_1.buf, _STRIDE); if (!check_pair_tile_register (&ref_0, &ref_1, &src)) abort (); + /* Check t2rpntlvwz0t1. */ + init_pair_tile_reg_and_src_z_t (0, src, buffer, 0, t1); + _tile_stored (0, ref_0.buf, _STRIDE); + _tile_stored (1, ref_1.buf, _STRIDE); + if (!check_pair_tile_register (&ref_0, &ref_1, &src)) + abort (); + + /* Check t2rpntlvwz1t1. */ + init_pair_tile_reg_and_src_z_t (0, src, buffer, 1, t1); + _tile_stored (0, ref_0.buf, _STRIDE); + _tile_stored (1, ref_1.buf, _STRIDE); + if (!check_pair_tile_register (&ref_0, &ref_1, &src)) + abort (); } -- cgit v1.1