|
| 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=CHECK |
| 2 | + |
| 3 | +struct 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" } |
0 commit comments