[ARM] When a bitcast is about to be turned into a VMOVDRR, try to combine it
[oota-llvm.git] / test / CodeGen / ARM / cse-libcalls.ll
index 4f4091af4837c4fa449ecb2a27837e460f224fb1..1255ec5a78f13cac57b4878d02b9fc87281129b6 100644 (file)
@@ -1,12 +1,16 @@
-; RUN: llvm-as < %s | llc -march=arm | grep {bl.\*__ltdf} | count 1
+; RUN: llc < %s -march=arm | FileCheck %s
+
 target datalayout = "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128"
 target triple = "i386-apple-darwin8"
 
 ; Without CSE of libcalls, there are two calls in the output instead of one.
 
-define i32 @u_f_nonbon(double %lambda) nounwind {
+; CHECK: bl ___ltdf
+; CHECK-NOT: bl ___ltdf
+
+define double @u_f_nonbon(double %lambda) nounwind {
 entry:
-       %tmp19.i.i = load double* null, align 4         ; <double> [#uses=2]
+       %tmp19.i.i = load double, double* null, align 4         ; <double> [#uses=2]
        %tmp6.i = fcmp olt double %tmp19.i.i, 1.000000e+00              ; <i1> [#uses=1]
        %dielectric.0.i = select i1 %tmp6.i, double 1.000000e+00, double %tmp19.i.i             ; <double> [#uses=1]
        %tmp10.i4 = fdiv double 0x4074C2D71F36262D, %dielectric.0.i             ; <double> [#uses=1]
@@ -26,5 +30,5 @@ bb502.loopexit.i:             ; preds = %bb28.i
        br i1 false, label %bb.nph53.i, label %bb508.i
 
 bb508.i:               ; preds = %bb502.loopexit.i, %entry
-       ret i32 1
+       ret double %tmp10.i4
 }