builtins-arm64.c revision 176edba5311f6eff0cad2631449885ddf4fbc9ea
1651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// RUN: %clang_cc1 -triple arm64-apple-ios -O3 -emit-llvm -o - %s | FileCheck %s 2651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines 3651f13cea278ec967336033dd032faef0e9fc2ecStephen Hinesvoid f0(void *a, void *b) { 4651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines __clear_cache(a,b); 5651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines// CHECK: call {{.*}} @__clear_cache 6651f13cea278ec967336033dd032faef0e9fc2ecStephen Hines} 7c568f1e98938584c0ef0b12ae5018ff7d90a4072Stephen Hines 8c568f1e98938584c0ef0b12ae5018ff7d90a4072Stephen Hines// CHECK: call {{.*}} @llvm.aarch64.rbit.i32(i32 %a) 9c568f1e98938584c0ef0b12ae5018ff7d90a4072Stephen Hinesunsigned rbit(unsigned a) { 10c568f1e98938584c0ef0b12ae5018ff7d90a4072Stephen Hines return __builtin_arm_rbit(a); 11c568f1e98938584c0ef0b12ae5018ff7d90a4072Stephen Hines} 12c568f1e98938584c0ef0b12ae5018ff7d90a4072Stephen Hines 13c568f1e98938584c0ef0b12ae5018ff7d90a4072Stephen Hines// CHECK: call {{.*}} @llvm.aarch64.rbit.i64(i64 %a) 14c568f1e98938584c0ef0b12ae5018ff7d90a4072Stephen Hinesunsigned long long rbit64(unsigned long long a) { 15c568f1e98938584c0ef0b12ae5018ff7d90a4072Stephen Hines return __builtin_arm_rbit64(a); 16c568f1e98938584c0ef0b12ae5018ff7d90a4072Stephen Hines} 17176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines 18176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hinesvoid hints() { 19176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines __builtin_arm_nop(); //CHECK: call {{.*}} @llvm.aarch64.hint(i32 0) 20176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines __builtin_arm_yield(); //CHECK: call {{.*}} @llvm.aarch64.hint(i32 1) 21176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines __builtin_arm_wfe(); //CHECK: call {{.*}} @llvm.aarch64.hint(i32 2) 22176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines __builtin_arm_wfi(); //CHECK: call {{.*}} @llvm.aarch64.hint(i32 3) 23176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines __builtin_arm_sev(); //CHECK: call {{.*}} @llvm.aarch64.hint(i32 4) 24176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines __builtin_arm_sevl(); //CHECK: call {{.*}} @llvm.aarch64.hint(i32 5) 25176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines} 26176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines 27176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hinesvoid barriers() { 28176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines __builtin_arm_dmb(1); //CHECK: call {{.*}} @llvm.aarch64.dmb(i32 1) 29176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines __builtin_arm_dsb(2); //CHECK: call {{.*}} @llvm.aarch64.dsb(i32 2) 30176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines __builtin_arm_isb(3); //CHECK: call {{.*}} @llvm.aarch64.isb(i32 3) 31176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines} 32176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines 33176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hinesvoid prefetch() { 34176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines __builtin_arm_prefetch(0, 1, 2, 0, 1); // pstl3keep 35176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK: call {{.*}} @llvm.prefetch(i8* null, i32 1, i32 1, i32 1) 36176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines 37176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines __builtin_arm_prefetch(0, 0, 0, 1, 1); // pldl1keep 38176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK: call {{.*}} @llvm.prefetch(i8* null, i32 0, i32 0, i32 1) 39176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines 40176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines __builtin_arm_prefetch(0, 0, 0, 1, 1); // pldl1strm 41176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK: call {{.*}} @llvm.prefetch(i8* null, i32 0, i32 0, i32 1) 42176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines 43176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines __builtin_arm_prefetch(0, 0, 0, 0, 0); // plil1keep 44176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines// CHECK: call {{.*}} @llvm.prefetch(i8* null, i32 0, i32 3, i32 0) 45176edba5311f6eff0cad2631449885ddf4fbc9eaStephen Hines} 46