https://gcc.gnu.org/g:a19aca8afbf141bb550e9040135cc46387ce7f73
commit r15-7132-ga19aca8afbf141bb550e9040135cc46387ce7f73 Author: Haochen Jiang <haochen.ji...@intel.com> Date: Thu Jan 23 09:51:54 2025 +0800 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. Diff: --- ...movrs-t2rpntlvw-2.c => amxmovrs-2rpntlvwrs-2.c} | 30 +++++++++++----------- .../gcc.target/i386/amxtranspose-2rpntlvw-2.c | 21 ++++++++++++--- 2 files changed, 32 insertions(+), 19 deletions(-) diff --git a/gcc/testsuite/gcc.target/i386/amxmovrs-t2rpntlvw-2.c b/gcc/testsuite/gcc.target/i386/amxmovrs-2rpntlvwrs-2.c similarity index 62% rename from gcc/testsuite/gcc.target/i386/amxmovrs-t2rpntlvw-2.c rename to gcc/testsuite/gcc.target/i386/amxmovrs-2rpntlvwrs-2.c index e38c6ea277ad..0093ef7883f1 100644 --- a/gcc/testsuite/gcc.target/i386/amxmovrs-t2rpntlvw-2.c +++ b/gcc/testsuite/gcc.target/i386/amxmovrs-2rpntlvwrs-2.c @@ -5,17 +5,17 @@ /* { 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 (); +#define DO_TEST test_amx_movrs_t2rpntlvwrs +void test_amx_movrs_t2rpntlvwrs (); #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);\ +#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_t2rpntlvw () +void test_amx_movrs_t2rpntlvwrs () { __tilecfg_u cfg; __tilepair src; @@ -28,29 +28,29 @@ void test_amx_movrs_t2rpntlvw () for (i = 0; i < 2048; i++) buffer[i] = i % 256; - /* Check t2rpntlvwz0. */ - init_pair_tile_reg_and_src_z_t1 (0, src, buffer, 0,); + /* 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 t2rpntlvwz1. */ - init_pair_tile_reg_and_src_z_t1 (1, src, buffer, 1,); + /* 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 t2rpntlvwz0t1. */ - init_pair_tile_reg_and_src_z_t1 (0, src, buffer, 0, t1); + /* 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 t2rpntlvwz1t1. */ - init_pair_tile_reg_and_src_z_t1 (1, src, buffer, 1, t1); + /* 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)) diff --git a/gcc/testsuite/gcc.target/i386/amxtranspose-2rpntlvw-2.c b/gcc/testsuite/gcc.target/i386/amxtranspose-2rpntlvw-2.c index 3b1c8701237e..2d018276af9f 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 (); }