Stephen Hines | 651f13c | 2014-04-23 16:59:28 -0700 | [diff] [blame] | 1 | // RUN: %clang_cc1 -triple arm64-apple-ios -O3 -emit-llvm -o - %s | FileCheck %s |
| 2 | |
| 3 | void f0(void *a, void *b) { |
| 4 | __clear_cache(a,b); |
| 5 | // CHECK: call {{.*}} @__clear_cache |
| 6 | } |
Stephen Hines | c568f1e | 2014-07-21 00:47:37 -0700 | [diff] [blame] | 7 | |
| 8 | // CHECK: call {{.*}} @llvm.aarch64.rbit.i32(i32 %a) |
| 9 | unsigned rbit(unsigned a) { |
| 10 | return __builtin_arm_rbit(a); |
| 11 | } |
| 12 | |
| 13 | // CHECK: call {{.*}} @llvm.aarch64.rbit.i64(i64 %a) |
| 14 | unsigned long long rbit64(unsigned long long a) { |
| 15 | return __builtin_arm_rbit64(a); |
| 16 | } |
Stephen Hines | 176edba | 2014-12-01 14:53:08 -0800 | [diff] [blame] | 17 | |
| 18 | void hints() { |
| 19 | __builtin_arm_nop(); //CHECK: call {{.*}} @llvm.aarch64.hint(i32 0) |
| 20 | __builtin_arm_yield(); //CHECK: call {{.*}} @llvm.aarch64.hint(i32 1) |
| 21 | __builtin_arm_wfe(); //CHECK: call {{.*}} @llvm.aarch64.hint(i32 2) |
| 22 | __builtin_arm_wfi(); //CHECK: call {{.*}} @llvm.aarch64.hint(i32 3) |
| 23 | __builtin_arm_sev(); //CHECK: call {{.*}} @llvm.aarch64.hint(i32 4) |
| 24 | __builtin_arm_sevl(); //CHECK: call {{.*}} @llvm.aarch64.hint(i32 5) |
| 25 | } |
| 26 | |
| 27 | void barriers() { |
| 28 | __builtin_arm_dmb(1); //CHECK: call {{.*}} @llvm.aarch64.dmb(i32 1) |
| 29 | __builtin_arm_dsb(2); //CHECK: call {{.*}} @llvm.aarch64.dsb(i32 2) |
| 30 | __builtin_arm_isb(3); //CHECK: call {{.*}} @llvm.aarch64.isb(i32 3) |
| 31 | } |
| 32 | |
| 33 | void prefetch() { |
| 34 | __builtin_arm_prefetch(0, 1, 2, 0, 1); // pstl3keep |
| 35 | // CHECK: call {{.*}} @llvm.prefetch(i8* null, i32 1, i32 1, i32 1) |
| 36 | |
| 37 | __builtin_arm_prefetch(0, 0, 0, 1, 1); // pldl1keep |
| 38 | // CHECK: call {{.*}} @llvm.prefetch(i8* null, i32 0, i32 0, i32 1) |
| 39 | |
| 40 | __builtin_arm_prefetch(0, 0, 0, 1, 1); // pldl1strm |
| 41 | // CHECK: call {{.*}} @llvm.prefetch(i8* null, i32 0, i32 0, i32 1) |
| 42 | |
| 43 | __builtin_arm_prefetch(0, 0, 0, 0, 0); // plil1keep |
| 44 | // CHECK: call {{.*}} @llvm.prefetch(i8* null, i32 0, i32 3, i32 0) |
| 45 | } |