1 // RUN: %clang_cc1 -triple aarch64-none-linux-gnu -target-feature +bf16 -target-feature +sme -target-feature +sme2 \
2 // RUN: -disable-O0-optnone -Werror -emit-llvm -o - %s \
3 // RUN: | opt -S -passes=mem2reg \
4 // RUN: | opt -S -passes=inline \
7 // Test the attributes for ZT0 and their mappings to LLVM IR.
11 // CHECK-LABEL: @in_zt0()
12 // CHECK-SAME: #[[ZT0_IN:[0-9]+]]
13 void in_zt0() __arm_in("zt0") { }
15 // CHECK-LABEL: @out_zt0()
16 // CHECK-SAME: #[[ZT0_OUT:[0-9]+]]
17 void out_zt0() __arm_out("zt0") { }
19 // CHECK-LABEL: @inout_zt0()
20 // CHECK-SAME: #[[ZT0_INOUT:[0-9]+]]
21 void inout_zt0() __arm_inout("zt0") { }
23 // CHECK-LABEL: @preserves_zt0()
24 // CHECK-SAME: #[[ZT0_PRESERVED:[0-9]+]]
25 void preserves_zt0() __arm_preserves("zt0") { }
27 // CHECK-LABEL: @new_zt0()
28 // CHECK-SAME: #[[ZT0_NEW:[0-9]+]]
29 __arm_new("zt0") void new_zt0() { }
31 // CHECK-LABEL: @in_za_zt0()
32 // CHECK-SAME: #[[ZA_ZT0_IN:[0-9]+]]
33 void in_za_zt0() __arm_in("za", "zt0") { }
35 // CHECK-LABEL: @out_za_zt0()
36 // CHECK-SAME: #[[ZA_ZT0_OUT:[0-9]+]]
37 void out_za_zt0() __arm_out("za", "zt0") { }
39 // CHECK-LABEL: @inout_za_zt0()
40 // CHECK-SAME: #[[ZA_ZT0_INOUT:[0-9]+]]
41 void inout_za_zt0() __arm_inout("za", "zt0") { }
43 // CHECK-LABEL: @preserves_za_zt0()
44 // CHECK-SAME: #[[ZA_ZT0_PRESERVED:[0-9]+]]
45 void preserves_za_zt0() __arm_preserves("za", "zt0") { }
47 // CHECK-LABEL: @new_za_zt0()
48 // CHECK-SAME: #[[ZA_ZT0_NEW:[0-9]+]]
49 __arm_new("za", "zt0") void new_za_zt0() { }
53 // CHECK: attributes #[[ZT0_IN]] = {{{.*}} "aarch64_in_zt0" {{.*}}}
54 // CHECK: attributes #[[ZT0_OUT]] = {{{.*}} "aarch64_out_zt0" {{.*}}}
55 // CHECK: attributes #[[ZT0_INOUT]] = {{{.*}} "aarch64_inout_zt0" {{.*}}}
56 // CHECK: attributes #[[ZT0_PRESERVED]] = {{{.*}} "aarch64_preserves_zt0" {{.*}}}
57 // CHECK: attributes #[[ZT0_NEW]] = {{{.*}} "aarch64_new_zt0" {{.*}}}