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