/* { dg-do run { target { ! ia32 } } } */ /* { dg-require-effective-target amx_tile } */ /* { dg-options "-O2 -mamx-tile " } */ #include #define DO_TEST test_amx_tile void test_amx_tile (); #include "amx-check.h" void test_amx_tile () { __tilecfg_u cfg_src, cfg_dst; __tile reg_src1, reg_src2, reg_ref; /* check tile config load & store. */ init_tile_config (&cfg_src); _tile_storeconfig (cfg_dst.a); if (!check_tile_config (&cfg_src, &cfg_dst)) abort (); /* check tile register load & store. */ init_tile_reg_and_src (1, reg_src1); _tile_stored (1, reg_ref.buf, _STRIDE); if (!check_tile_register (®_ref, ®_src1)) abort (); /* check tile stream load instruction */ init_tile_src (2, ®_src2, NULL); _tile_stream_loadd (2, reg_src2.buf, _STRIDE); _tile_stored (2, reg_ref.buf, _STRIDE); if (!check_tile_register (®_ref, ®_src2)) abort (); /* check tile register zeroing */ zero_tile_src (®_src2); _tile_zero (2); _tile_stored (2, reg_ref.buf, _STRIDE); if (!check_tile_register (®_ref, ®_src2)) abort (); /* check tile cfg zeroing */ memset (cfg_dst.a, 0, sizeof(__tilecfg)); _tile_release (); _tile_storeconfig (cfg_src.a); if (!check_tile_config (&cfg_src, &cfg_dst)) abort (); }