summaryrefslogtreecommitdiff
path: root/test/CodeGen/builtins-arm64.c
diff options
context:
space:
mode:
Diffstat (limited to 'test/CodeGen/builtins-arm64.c')
-rw-r--r--test/CodeGen/builtins-arm64.c31
1 files changed, 31 insertions, 0 deletions
diff --git a/test/CodeGen/builtins-arm64.c b/test/CodeGen/builtins-arm64.c
new file mode 100644
index 000000000000..cfa118122793
--- /dev/null
+++ b/test/CodeGen/builtins-arm64.c
@@ -0,0 +1,31 @@
+// RUN: %clang_cc1 -triple arm64-apple-ios -O3 -emit-llvm -o - %s | FileCheck %s
+
+void f0(void *a, void *b) {
+ __clear_cache(a,b);
+// CHECK: call {{.*}} @__clear_cache
+}
+
+// CHECK: call {{.*}} @llvm.aarch64.rbit.i32(i32 %a)
+unsigned rbit(unsigned a) {
+ return __builtin_arm_rbit(a);
+}
+
+// CHECK: call {{.*}} @llvm.aarch64.rbit.i64(i64 %a)
+unsigned long long rbit64(unsigned long long a) {
+ return __builtin_arm_rbit64(a);
+}
+
+void hints() {
+ __builtin_arm_nop(); //CHECK: call {{.*}} @llvm.aarch64.hint(i32 0)
+ __builtin_arm_yield(); //CHECK: call {{.*}} @llvm.aarch64.hint(i32 1)
+ __builtin_arm_wfe(); //CHECK: call {{.*}} @llvm.aarch64.hint(i32 2)
+ __builtin_arm_wfi(); //CHECK: call {{.*}} @llvm.aarch64.hint(i32 3)
+ __builtin_arm_sev(); //CHECK: call {{.*}} @llvm.aarch64.hint(i32 4)
+ __builtin_arm_sevl(); //CHECK: call {{.*}} @llvm.aarch64.hint(i32 5)
+}
+
+void barriers() {
+ __builtin_arm_dmb(1); //CHECK: call {{.*}} @llvm.aarch64.dmb(i32 1)
+ __builtin_arm_dsb(2); //CHECK: call {{.*}} @llvm.aarch64.dsb(i32 2)
+ __builtin_arm_isb(3); //CHECK: call {{.*}} @llvm.aarch64.isb(i32 3)
+}