1c72a751dSPhoebe Wang // RUN: %clang_cc1 %s -ffreestanding -triple=x86_64-unknown-unknown -target-feature +amx-transpose \ 2*813f7c38SPhoebe Wang // RUN: -target-feature +amx-bf16 -target-feature +amx-fp16 -target-feature +amx-complex \ 3c72a751dSPhoebe Wang // RUN: -target-feature +avx512f -emit-llvm -o - -Wall -Werror -pedantic -Wno-gnu-statement-expression| FileCheck %s 4c72a751dSPhoebe Wang 5c72a751dSPhoebe Wang #include <immintrin.h> 6c72a751dSPhoebe Wang #include <stddef.h> 7c72a751dSPhoebe Wang 8c72a751dSPhoebe Wang void test_tile_2rpntlvwz0(const void *A, size_t B) { 9c72a751dSPhoebe Wang // CHECK-LABEL: @test_tile_2rpntlvwz0 10c72a751dSPhoebe Wang // CHECK: call void @llvm.x86.t2rpntlvwz0(i8 1, ptr %{{.*}}, i64 %{{.*}}) 11c72a751dSPhoebe Wang _tile_2rpntlvwz0(1, A, B); 12c72a751dSPhoebe Wang } 13c72a751dSPhoebe Wang 14c72a751dSPhoebe Wang void test_tile_2rpntlvwz0t1(const void *A, size_t B) { 15c72a751dSPhoebe Wang // CHECK-LABEL: @test_tile_2rpntlvwz0t1 16c72a751dSPhoebe Wang // CHECK: call void @llvm.x86.t2rpntlvwz0t1(i8 1, ptr %{{.*}}, i64 %{{.*}}) 17c72a751dSPhoebe Wang _tile_2rpntlvwz0t1(1, A, B); 18c72a751dSPhoebe Wang } 19c72a751dSPhoebe Wang 20c72a751dSPhoebe Wang void test_tile_2rpntlvwz1(const void *A, size_t B) { 21c72a751dSPhoebe Wang // CHECK-LABEL: @test_tile_2rpntlvwz1 22c72a751dSPhoebe Wang // CHECK: call void @llvm.x86.t2rpntlvwz1(i8 1, ptr %{{.*}}, i64 %{{.*}}) 23c72a751dSPhoebe Wang _tile_2rpntlvwz1(1, A, B); 24c72a751dSPhoebe Wang } 25c72a751dSPhoebe Wang 26c72a751dSPhoebe Wang void test_tile_2rpntlvwz1t1(const void *A, size_t B) { 27c72a751dSPhoebe Wang // CHECK-LABEL: @test_tile_2rpntlvwz1t1 28c72a751dSPhoebe Wang // CHECK: call void @llvm.x86.t2rpntlvwz1t1(i8 1, ptr %{{.*}}, i64 %{{.*}}) 29c72a751dSPhoebe Wang _tile_2rpntlvwz1t1(1, A, B); 30c72a751dSPhoebe Wang } 31c72a751dSPhoebe Wang 32c72a751dSPhoebe Wang void test_tile_transposed(void) 33c72a751dSPhoebe Wang { 34c72a751dSPhoebe Wang // CHECK-LABEL: @test_tile_transposed 35c72a751dSPhoebe Wang // CHECK: call void @llvm.x86.ttransposed(i8 1, i8 2) 36c72a751dSPhoebe Wang _tile_transposed(1, 2); 37c72a751dSPhoebe Wang } 38*813f7c38SPhoebe Wang 39*813f7c38SPhoebe Wang void test_tile_tdpbf16ps(void) 40*813f7c38SPhoebe Wang { 41*813f7c38SPhoebe Wang // CHECK-LABEL: @test_tile_tdpbf16ps 42*813f7c38SPhoebe Wang // CHECK: call void @llvm.x86.ttdpbf16ps(i8 1, i8 2, i8 3) 43*813f7c38SPhoebe Wang _tile_tdpbf16ps(1, 2, 3); 44*813f7c38SPhoebe Wang } 45*813f7c38SPhoebe Wang 46*813f7c38SPhoebe Wang void test_tile_tdpfp16ps(void) 47*813f7c38SPhoebe Wang { 48*813f7c38SPhoebe Wang // CHECK-LABEL: @test_tile_tdpfp16ps 49*813f7c38SPhoebe Wang // CHECK: call void @llvm.x86.ttdpfp16ps(i8 4, i8 5, i8 6) 50*813f7c38SPhoebe Wang _tile_tdpfp16ps(4, 5, 6); 51*813f7c38SPhoebe Wang } 52*813f7c38SPhoebe Wang 53*813f7c38SPhoebe Wang void test_tile_tcmmimfp16ps(void) { 54*813f7c38SPhoebe Wang // CHECK-LABEL: @test_tile_tcmmimfp16ps 55*813f7c38SPhoebe Wang // CHECK: call void @llvm.x86.ttcmmimfp16ps(i8 1, i8 2, i8 3) 56*813f7c38SPhoebe Wang _tile_tcmmimfp16ps(1, 2, 3); 57*813f7c38SPhoebe Wang } 58*813f7c38SPhoebe Wang 59*813f7c38SPhoebe Wang void test_tile_tcmmrlfp16ps(void) { 60*813f7c38SPhoebe Wang // CHECK-LABEL: @test_tile_tcmmrlfp16ps 61*813f7c38SPhoebe Wang // CHECK: call void @llvm.x86.ttcmmrlfp16ps(i8 1, i8 2, i8 3) 62*813f7c38SPhoebe Wang _tile_tcmmrlfp16ps(1, 2, 3); 63*813f7c38SPhoebe Wang } 64*813f7c38SPhoebe Wang 65*813f7c38SPhoebe Wang void test_tile_conjtcmmimfp16ps(void) { 66*813f7c38SPhoebe Wang // CHECK-LABEL: @test_tile_conjtcmmimfp16ps 67*813f7c38SPhoebe Wang // CHECK: call void @llvm.x86.tconjtcmmimfp16ps(i8 1, i8 2, i8 3) 68*813f7c38SPhoebe Wang _tile_conjtcmmimfp16ps(1, 2, 3); 69*813f7c38SPhoebe Wang } 70*813f7c38SPhoebe Wang 71*813f7c38SPhoebe Wang void test_tile_conjtfp16(void) { 72*813f7c38SPhoebe Wang // CHECK-LABEL: @test_tile_conjtfp16 73*813f7c38SPhoebe Wang // CHECK: call void @llvm.x86.tconjtfp16(i8 1, i8 2) 74*813f7c38SPhoebe Wang _tile_conjtfp16(1, 2); 75*813f7c38SPhoebe Wang } 76