| // RUN: %clang_cc1 -triple aarch64-eabi -target-feature +tme -S -emit-llvm %s -o - | FileCheck %s |
| // RUN: %clang_cc1 -DUSE_ACLE -triple aarch64-eabi -target-feature +tme -S -emit-llvm %s -o - | FileCheck %s |
| |
| #define A -1 |
| constexpr int f() { return 65536; } |
| |
| #ifdef USE_ACLE |
| #include "arm_acle.h" |
| void test_tme_funcs() { |
| __tstart(); |
| (void)__ttest(); |
| __tcommit(); |
| __tcancel(0x789a); |
| __tcancel(f() + A); |
| } |
| #else |
| void test_tme_funcs() { |
| __builtin_arm_tstart(); |
| (void)__builtin_arm_ttest(); |
| __builtin_arm_tcommit(); |
| __builtin_arm_tcancel(0x789a); |
| __builtin_arm_tcancel(f() + A); |
| } |
| #endif |
| // CHECK: call i64 @llvm.aarch64.tstart() |
| // CHECK: call i64 @llvm.aarch64.ttest() |
| // CHECK: call void @llvm.aarch64.tcommit() |
| // CHECK: call void @llvm.aarch64.tcancel(i64 30874) |
| // CHECK: call void @llvm.aarch64.tcancel(i64 65535) |
| |
| // CHECK: declare i64 @llvm.aarch64.tstart() #1 |
| // CHECK: declare i64 @llvm.aarch64.ttest() #1 |
| // CHECK: declare void @llvm.aarch64.tcommit() #1 |
| // CHECK: declare void @llvm.aarch64.tcancel(i64 immarg) #1 |
| |
| #ifdef __ARM_FEATURE_TME |
| extern "C" void arm_feature_tme_defined() {} |
| #endif |
| // CHECK: define void @arm_feature_tme_defined() |
| |
| // CHECK: attributes #1 = { nounwind } |
| |