brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.8 KiB · ee784c8 Raw
38 lines · cpp
1// RUN: %clang_cc1 -triple aarch64 -target-feature +sme -target-feature +sme2 -x c++ -std=c++20  -emit-llvm -o - %s | FileCheck %s --check-prefixes=CHECK2 3struct TestStruct;4 5__arm_new("za", "zt0") void test(TestStruct& TS,6  void (TestStruct::*streaming_member_ptr)() __arm_streaming,7  void (TestStruct::*streaming_compat_member)() __arm_streaming_compatible,8  void (TestStruct::*arm_in_member)() __arm_in("za", "zt0"),9  void (TestStruct::*arm_inout_member)() __arm_inout("za", "zt0"),10  void (TestStruct::*arm_preserves_member)() __arm_preserves("za", "zt0"),11  void (TestStruct::*arm_agnostic_member)() __arm_agnostic("sme_za_state")) {12 13  // CHECK: call void %{{.*}} [[STREAMING_MEMBER_CALL_ATTRS:#.+]]14  (TS.*streaming_member_ptr)();15 16  // CHECK: call void %{{.*}} [[STREAMING_COMPAT_MEMBER_CALL_ATTRS:#.+]]17  (TS.*streaming_compat_member)();18 19  // CHECK: call void %{{.*}} [[ARM_IN_MEMBER_CALL_ATTRS:#.+]]20  (TS.*arm_in_member)();21 22  // CHECK: call void %{{.*}} [[ARM_INOUT_MEMBER_CALL_ATTRS:#.+]]23  (TS.*arm_inout_member)();24 25  // CHECK: call void %{{.*}} [[ARM_PRESERVES_MEMBER_CALL_ATTRS:#.+]]26  (TS.*arm_preserves_member)();27 28  // CHECK: call void %{{.*}} [[ARM_AGNOSTIC_MEMBER_CALL_ATTRS:#.+]]29  (TS.*arm_agnostic_member)();30}31 32// CHECK: attributes [[STREAMING_MEMBER_CALL_ATTRS]] = { "aarch64_pstate_sm_enabled" }33// CHECK: attributes [[STREAMING_COMPAT_MEMBER_CALL_ATTRS]] = { "aarch64_pstate_sm_compatible" }34// CHECK: attributes [[ARM_IN_MEMBER_CALL_ATTRS]] = { "aarch64_in_za" "aarch64_in_zt0" }35// CHECK: attributes [[ARM_INOUT_MEMBER_CALL_ATTRS]] = { "aarch64_inout_za" "aarch64_inout_zt0" }36// CHECK: attributes [[ARM_PRESERVES_MEMBER_CALL_ATTRS]] = { "aarch64_preserves_za" "aarch64_preserves_zt0" }37// CHECK: attributes [[ARM_AGNOSTIC_MEMBER_CALL_ATTRS]] = { "aarch64_za_state_agnostic" }38