xref: /llvm-project/clang/test/CodeGen/X86/amx_transpose.c (revision 813f7c3820d00349fe23bfc6ba26159764541540)
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