58 lines · cpp
1// RUN: %clang_cc1 -triple aarch64-none-linux-gnu -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 \5// RUN: | FileCheck %s6 7// Test the attributes for ZT0 and their mappings to LLVM IR.8 9extern "C" {10 11// CHECK-LABEL: @in_zt0()12// CHECK-SAME: #[[ZT0_IN:[0-9]+]]13void in_zt0() __arm_in("zt0") { }14 15// CHECK-LABEL: @out_zt0()16// CHECK-SAME: #[[ZT0_OUT:[0-9]+]]17void out_zt0() __arm_out("zt0") { }18 19// CHECK-LABEL: @inout_zt0()20// CHECK-SAME: #[[ZT0_INOUT:[0-9]+]]21void inout_zt0() __arm_inout("zt0") { }22 23// CHECK-LABEL: @preserves_zt0()24// CHECK-SAME: #[[ZT0_PRESERVED:[0-9]+]]25void preserves_zt0() __arm_preserves("zt0") { }26 27// CHECK-LABEL: @new_zt0()28// CHECK-SAME: #[[ZT0_NEW:[0-9]+]]29__arm_new("zt0") void new_zt0() { }30 31// CHECK-LABEL: @in_za_zt0()32// CHECK-SAME: #[[ZA_ZT0_IN:[0-9]+]]33void in_za_zt0() __arm_in("za", "zt0") { }34 35// CHECK-LABEL: @out_za_zt0()36// CHECK-SAME: #[[ZA_ZT0_OUT:[0-9]+]]37void out_za_zt0() __arm_out("za", "zt0") { }38 39// CHECK-LABEL: @inout_za_zt0()40// CHECK-SAME: #[[ZA_ZT0_INOUT:[0-9]+]]41void inout_za_zt0() __arm_inout("za", "zt0") { }42 43// CHECK-LABEL: @preserves_za_zt0()44// CHECK-SAME: #[[ZA_ZT0_PRESERVED:[0-9]+]]45void preserves_za_zt0() __arm_preserves("za", "zt0") { }46 47// CHECK-LABEL: @new_za_zt0()48// CHECK-SAME: #[[ZA_ZT0_NEW:[0-9]+]]49__arm_new("za", "zt0") void new_za_zt0() { }50 51}52 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" {{.*}}}58