diff options
author | Sjoerd Meijer <sjoerd.meijer@arm.com> | 2018-02-16 16:01:08 +0000 |
---|---|---|
committer | Sjoerd Meijer <sjoerd.meijer@arm.com> | 2018-02-16 16:01:08 +0000 |
commit | e4d319b99ad65f030551e6531888ea00ffcb1e28 (patch) | |
tree | b8588d5e2649bba6c41512cc5ffe944f618ffd21 /test/CodeGen/builtins-arm.c | |
parent | 95f8295f513508b2e148108902049f79ae285d0f (diff) | |
download | clang-e4d319b99ad65f030551e6531888ea00ffcb1e28.tar.gz |
[ARM] Add tests for the vcvtr builtins
This adds Sema and Codegen tests for the vcvtr builtins
(because they were missing).
Differential Revision: https://reviews.llvm.org/D43372
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@325351 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/CodeGen/builtins-arm.c')
-rw-r--r-- | test/CodeGen/builtins-arm.c | 60 |
1 files changed, 38 insertions, 22 deletions
diff --git a/test/CodeGen/builtins-arm.c b/test/CodeGen/builtins-arm.c index e04349f1a3..020f2b4dc5 100644 --- a/test/CodeGen/builtins-arm.c +++ b/test/CodeGen/builtins-arm.c @@ -8,69 +8,85 @@ void *f0() } void f1(char *a, char *b) { + // CHECK: call {{.*}} @__clear_cache __clear_cache(a,b); } -// CHECK: call {{.*}} @__clear_cache +float test_vcvtrf0(float f) { + // CHECK: call float @llvm.arm.vcvtr.f32(float %f) + return __builtin_arm_vcvtr_f(f, 0); +} + +float test_vcvtrf1(float f) { + // CHECK: call float @llvm.arm.vcvtru.f32(float %f) + return __builtin_arm_vcvtr_f(f, 1); +} + +double test_vcvtrd0(double d) { + // CHECK: call float @llvm.arm.vcvtr.f64(double %d) + return __builtin_arm_vcvtr_d(d, 0); +} + +double test_vcvtrd1(double d) { + // call float @llvm.arm.vcvtru.f64(double %d) + return __builtin_arm_vcvtr_d(d, 1); +} void test_eh_return_data_regno() { + // CHECK: store volatile i32 0 + // CHECK: store volatile i32 1 volatile int res; - res = __builtin_eh_return_data_regno(0); // CHECK: store volatile i32 0 - res = __builtin_eh_return_data_regno(1); // CHECK: store volatile i32 1 + res = __builtin_eh_return_data_regno(0); + res = __builtin_eh_return_data_regno(1); } void nop() { + // CHECK: call {{.*}} @llvm.arm.hint(i32 0) __builtin_arm_nop(); } -// CHECK: call {{.*}} @llvm.arm.hint(i32 0) - void yield() { + // CHECK: call {{.*}} @llvm.arm.hint(i32 1) __builtin_arm_yield(); } -// CHECK: call {{.*}} @llvm.arm.hint(i32 1) - void wfe() { + // CHECK: call {{.*}} @llvm.arm.hint(i32 2) __builtin_arm_wfe(); } -// CHECK: call {{.*}} @llvm.arm.hint(i32 2) - void wfi() { + // CHECK: call {{.*}} @llvm.arm.hint(i32 3) __builtin_arm_wfi(); } -// CHECK: call {{.*}} @llvm.arm.hint(i32 3) - void sev() { + // CHECK: call {{.*}} @llvm.arm.hint(i32 4) __builtin_arm_sev(); } -// CHECK: call {{.*}} @llvm.arm.hint(i32 4) - void sevl() { + // CHECK: call {{.*}} @llvm.arm.hint(i32 5) __builtin_arm_sevl(); } -// CHECK: call {{.*}} @llvm.arm.hint(i32 5) - void dbg() { + // CHECK: call {{.*}} @llvm.arm.dbg(i32 0) __builtin_arm_dbg(0); } -// CHECK: call {{.*}} @llvm.arm.dbg(i32 0) - void test_barrier() { - __builtin_arm_dmb(1); //CHECK: call {{.*}} @llvm.arm.dmb(i32 1) - __builtin_arm_dsb(2); //CHECK: call {{.*}} @llvm.arm.dsb(i32 2) - __builtin_arm_isb(3); //CHECK: call {{.*}} @llvm.arm.isb(i32 3) + //CHECK: call {{.*}} @llvm.arm.dmb(i32 1) + //CHECK: call {{.*}} @llvm.arm.dsb(i32 2) + //CHECK: call {{.*}} @llvm.arm.isb(i32 3) + __builtin_arm_dmb(1); + __builtin_arm_dsb(2); + __builtin_arm_isb(3); } -// CHECK: call {{.*}} @llvm.bitreverse.i32(i32 %a) - unsigned rbit(unsigned a) { + // CHECK: call {{.*}} @llvm.bitreverse.i32(i32 %a) return __builtin_arm_rbit(a); } |