1c72a751dSPhoebe Wang // RUN: %clang_cc1 %s -ffreestanding -triple=x86_64-unknown-unknown \ 2c72a751dSPhoebe Wang // RUN: -target-feature +amx-int8 -target-feature +amx-bf16 -target-feature +amx-transpose \ 3*813f7c38SPhoebe Wang // RUN: -target-feature +avx512f -target-feature +amx-fp16 -target-feature +amx-complex -verify 4c72a751dSPhoebe Wang 5c72a751dSPhoebe Wang #include <immintrin.h> 6c72a751dSPhoebe Wang #include <stddef.h> 7c72a751dSPhoebe Wang 8c72a751dSPhoebe Wang // Transpose 9c72a751dSPhoebe Wang void test_tile_2rpntlvwz0(const void *A, size_t B) { 10c72a751dSPhoebe Wang _tile_2rpntlvwz0(8, A, B); // expected-error {{argument value 8 is outside the valid range [0, 7]}} 11c72a751dSPhoebe Wang } 12c72a751dSPhoebe Wang 13c72a751dSPhoebe Wang void test_tile_2rpntlvwz0t1(const void *A, size_t B) { 14c72a751dSPhoebe Wang _tile_2rpntlvwz0t1(8, A, B); // expected-error {{argument value 8 is outside the valid range [0, 7]}} 15c72a751dSPhoebe Wang } 16c72a751dSPhoebe Wang 17c72a751dSPhoebe Wang void test_tile_2rpntlvwz1(const void *A, size_t B) { 18c72a751dSPhoebe Wang _tile_2rpntlvwz1(8, A, B); // expected-error {{argument value 8 is outside the valid range [0, 7]}} 19c72a751dSPhoebe Wang } 20c72a751dSPhoebe Wang 21c72a751dSPhoebe Wang void test_tile_2rpntlvwz1t1(const void *A, size_t B) { 22c72a751dSPhoebe Wang _tile_2rpntlvwz1t1(8, A, B); // expected-error {{argument value 8 is outside the valid range [0, 7]}} 23c72a751dSPhoebe Wang } 24c72a751dSPhoebe Wang 25*813f7c38SPhoebe Wang void test_tile_tdpbf16ps() 26*813f7c38SPhoebe Wang { 27*813f7c38SPhoebe Wang _tile_tdpbf16ps(8, 2, 3); // expected-error {{argument value 8 is outside the valid range [0, 7]}} 28*813f7c38SPhoebe Wang _tile_tdpbf16ps(1, 8, 3); // expected-error {{argument value 8 is outside the valid range [0, 7]}} 29*813f7c38SPhoebe Wang _tile_tdpbf16ps(1, 2, 8); // expected-error {{argument value 8 is outside the valid range [0, 7]}} 30*813f7c38SPhoebe Wang _tile_tdpbf16ps(1, 1, 3); // expected-error {{tile arguments must refer to different tiles}} 31*813f7c38SPhoebe Wang _tile_tdpbf16ps(1, 2, 1); // expected-error {{tile arguments must refer to different tiles}} 32*813f7c38SPhoebe Wang _tile_tdpbf16ps(1, 2, 2); // expected-error {{tile arguments must refer to different tiles}} 33*813f7c38SPhoebe Wang } 34*813f7c38SPhoebe Wang 35*813f7c38SPhoebe Wang void test_tile_tdpfp16ps() 36*813f7c38SPhoebe Wang { 37*813f7c38SPhoebe Wang _tile_tdpfp16ps(8, 5, 6); // expected-error {{argument value 8 is outside the valid range [0, 7]}} 38*813f7c38SPhoebe Wang _tile_tdpfp16ps(1, 8, 6); // expected-error {{argument value 8 is outside the valid range [0, 7]}} 39*813f7c38SPhoebe Wang _tile_tdpfp16ps(1, 5, 8); // expected-error {{argument value 8 is outside the valid range [0, 7]}} 40*813f7c38SPhoebe Wang _tile_tdpfp16ps(1, 1, 3); // expected-error {{tile arguments must refer to different tiles}} 41*813f7c38SPhoebe Wang _tile_tdpfp16ps(1, 2, 1); // expected-error {{tile arguments must refer to different tiles}} 42*813f7c38SPhoebe Wang _tile_tdpfp16ps(1, 2, 2); // expected-error {{tile arguments must refer to different tiles}} 43*813f7c38SPhoebe Wang } 44*813f7c38SPhoebe Wang 45c72a751dSPhoebe Wang void test_tile_transposed() 46c72a751dSPhoebe Wang { 47c72a751dSPhoebe Wang _tile_transposed(8, 2); // expected-error {{argument value 8 is outside the valid range [0, 7]}} 48c72a751dSPhoebe Wang _tile_transposed(1, 8); // expected-error {{argument value 8 is outside the valid range [0, 7]}} 49c72a751dSPhoebe Wang } 50*813f7c38SPhoebe Wang 51*813f7c38SPhoebe Wang void test_tile_tcmmimfp16ps() { 52*813f7c38SPhoebe Wang _tile_tcmmimfp16ps(16, 2, 3); // expected-error {{argument value 16 is outside the valid range [0, 7]}} 53*813f7c38SPhoebe Wang _tile_tcmmimfp16ps(1, 26, 3); // expected-error {{argument value 26 is outside the valid range [0, 7]}} 54*813f7c38SPhoebe Wang _tile_tcmmimfp16ps(1, 2, 36); // expected-error {{argument value 36 is outside the valid range [0, 7]}} 55*813f7c38SPhoebe Wang _tile_tcmmimfp16ps(1, 1, 3); // expected-error {{tile arguments must refer to different tiles}} 56*813f7c38SPhoebe Wang } 57*813f7c38SPhoebe Wang 58*813f7c38SPhoebe Wang void test_tile_tcmmrlfp16ps() { 59*813f7c38SPhoebe Wang _tile_tcmmrlfp16ps(16, 2, 3); // expected-error {{argument value 16 is outside the valid range [0, 7]}} 60*813f7c38SPhoebe Wang _tile_tcmmrlfp16ps(1, 26, 3); // expected-error {{argument value 26 is outside the valid range [0, 7]}} 61*813f7c38SPhoebe Wang _tile_tcmmrlfp16ps(1, 2, 36); // expected-error {{argument value 36 is outside the valid range [0, 7]}} 62*813f7c38SPhoebe Wang _tile_tcmmrlfp16ps(1, 1, 3); // expected-error {{tile arguments must refer to different tiles}} 63*813f7c38SPhoebe Wang } 64*813f7c38SPhoebe Wang 65*813f7c38SPhoebe Wang void test_tile_conjtcmmimfp16ps() { 66*813f7c38SPhoebe Wang _tile_conjtcmmimfp16ps(16, 2, 3); // expected-error {{argument value 16 is outside the valid range [0, 7]}} 67*813f7c38SPhoebe Wang _tile_conjtcmmimfp16ps(1, 26, 3); // expected-error {{argument value 26 is outside the valid range [0, 7]}} 68*813f7c38SPhoebe Wang _tile_conjtcmmimfp16ps(1, 2, 36); // expected-error {{argument value 36 is outside the valid range [0, 7]}} 69*813f7c38SPhoebe Wang _tile_conjtcmmimfp16ps(1, 2, 1); // expected-error {{tile arguments must refer to different tiles}} 70*813f7c38SPhoebe Wang } 71*813f7c38SPhoebe Wang 72*813f7c38SPhoebe Wang void test_tile_conjtfp16() { 73*813f7c38SPhoebe Wang _tile_conjtfp16(16, 2); // expected-error {{argument value 16 is outside the valid range [0, 7]}} 74*813f7c38SPhoebe Wang _tile_conjtfp16(1, 26); // expected-error {{argument value 26 is outside the valid range [0, 7]}} 75*813f7c38SPhoebe Wang } 76