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