79 lines · plain
1; RUN: llc -mtriple=arm-eabi -float-abi=soft -mattr=+vfp2 %s -o - | FileCheck %s2 3define float @f(i32 %a) {4;CHECK-LABEL: f:5;CHECK: vmov6;CHECK-NEXT: vcvt.f32.s327;CHECK-NEXT: vmov8entry:9 %tmp = sitofp i32 %a to float ; <float> [#uses=1]10 ret float %tmp11}12 13define double @g(i32 %a) {14;CHECK-LABEL: g:15;CHECK: vmov16;CHECK-NEXT: vcvt.f64.s3217;CHECK-NEXT: vmov18entry:19 %tmp = sitofp i32 %a to double ; <double> [#uses=1]20 ret double %tmp21}22 23define double @uint_to_double(i32 %a) {24;CHECK-LABEL: uint_to_double:25;CHECK: vmov26;CHECK-NEXT: vcvt.f64.u3227;CHECK-NEXT: vmov28entry:29 %tmp = uitofp i32 %a to double ; <double> [#uses=1]30 ret double %tmp31}32 33define float @uint_to_float(i32 %a) {34;CHECK-LABEL: uint_to_float:35;CHECK: vmov36;CHECK-NEXT: vcvt.f32.u3237;CHECK-NEXT: vmov38entry:39 %tmp = uitofp i32 %a to float ; <float> [#uses=1]40 ret float %tmp41}42 43define double @h(ptr %v) {44;CHECK-LABEL: h:45;CHECK: vldr46;CHECK-NEXT: vmov47entry:48 %tmp = load double, ptr %v ; <double> [#uses=1]49 ret double %tmp50}51 52define float @h2() {53;CHECK-LABEL: h2:54;CHECK: mov r0, #106535321655entry:56 ret float 1.000000e+0057}58 59define double @f2(double %a) {60;CHECK-LABEL: f2:61;CHECK-NOT: vmov62 ret double %a63}64 65define void @f3() {66;CHECK-LABEL: f3:67;CHECK-NOT: vmov68;CHECK: f469entry:70 %tmp = call double @f5( ) ; <double> [#uses=1]71 call void @f4( double %tmp )72 ret void73}74 75declare void @f4(double)76 77declare double @f5()78 79