X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=test%2FCodeGen%2FARM%2Ffp.ll;h=cc47e3baddad7f14da1a77f821fa983fa9272660;hb=f12a12cd25602e8447aeb3d49313bed3f29a2c68;hp=313e83f2566812f49bd902f730b267056234f698;hpb=a284584352df145da085b11db7891b67c0f09430;p=oota-llvm.git diff --git a/test/CodeGen/ARM/fp.ll b/test/CodeGen/ARM/fp.ll index 313e83f2566..cc47e3badda 100644 --- a/test/CodeGen/ARM/fp.ll +++ b/test/CodeGen/ARM/fp.ll @@ -1,30 +1,78 @@ -; RUN: llvm-as < %s | llc -march=arm && -; RUN: llvm-as < %s | llc -march=arm | grep fmsr | wc -l | grep 2 && -; RUN: llvm-as < %s | llc -march=arm | grep fsitos && -; RUN: llvm-as < %s | llc -march=arm | grep fmrs && -; RUN: llvm-as < %s | llc -march=arm | grep fsitod && -; RUN: llvm-as < %s | llc -march=arm | grep fmrrd | wc -l | grep 2 && -; RUN: llvm-as < %s | llc -march=arm | grep fmdrr | wc -l | grep 1 && -; RUN: llvm-as < %s | llc -march=arm | grep flds && -; RUN: llvm-as < %s | llc -march=arm | grep ".word.*1065353216" - -float %f(int %a) { +; RUN: llc -mtriple=arm-eabi -float-abi=soft -mattr=+vfp2 %s -o - | FileCheck %s + +define float @f(i32 %a) { +;CHECK-LABEL: f: +;CHECK: vmov +;CHECK-NEXT: vcvt.f32.s32 +;CHECK-NEXT: vmov +entry: + %tmp = sitofp i32 %a to float ; [#uses=1] + ret float %tmp +} + +define double @g(i32 %a) { +;CHECK-LABEL: g: +;CHECK: vmov +;CHECK-NEXT: vcvt.f64.s32 +;CHECK-NEXT: vmov +entry: + %tmp = sitofp i32 %a to double ; [#uses=1] + ret double %tmp +} + +define double @uint_to_double(i32 %a) { +;CHECK-LABEL: uint_to_double: +;CHECK: vmov +;CHECK-NEXT: vcvt.f64.u32 +;CHECK-NEXT: vmov +entry: + %tmp = uitofp i32 %a to double ; [#uses=1] + ret double %tmp +} + +define float @uint_to_float(i32 %a) { +;CHECK-LABEL: uint_to_float: +;CHECK: vmov +;CHECK-NEXT: vcvt.f32.u32 +;CHECK-NEXT: vmov entry: - %tmp = cast int %a to float ; [#uses=1] - ret float %tmp + %tmp = uitofp i32 %a to float ; [#uses=1] + ret float %tmp } -double %g(int %a) { +define double @h(double* %v) { +;CHECK-LABEL: h: +;CHECK: vldr +;CHECK-NEXT: vmov entry: - %tmp = cast int %a to double ; [#uses=1] + %tmp = load double, double* %v ; [#uses=1] ret double %tmp } -float %h() { +define float @h2() { +;CHECK-LABEL: h2: +;CHECK: mov r0, #1065353216 entry: ret float 1.000000e+00 } -double %f2(double %a) { +define double @f2(double %a) { +;CHECK-LABEL: f2: +;CHECK-NOT: vmov ret double %a } + +define void @f3() { +;CHECK-LABEL: f3: +;CHECK-NOT: vmov +;CHECK: f4 +entry: + %tmp = call double @f5( ) ; [#uses=1] + call void @f4( double %tmp ) + ret void +} + +declare void @f4(double) + +declare double @f5() +