From 959fb88949e147a90f0d970407df4b6bd6c57ed7 Mon Sep 17 00:00:00 2001 From: Bill Wendling Date: Sat, 17 Jan 2009 07:42:44 +0000 Subject: [PATCH] Testcase for last commit. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@62418 91177308-0d34-0410-b5e6-96231b3b80d8 --- test/CodeGen/X86/2009-01-16-UIntToFP.ll | 31 +++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 test/CodeGen/X86/2009-01-16-UIntToFP.ll diff --git a/test/CodeGen/X86/2009-01-16-UIntToFP.ll b/test/CodeGen/X86/2009-01-16-UIntToFP.ll new file mode 100644 index 00000000000..6de11c94794 --- /dev/null +++ b/test/CodeGen/X86/2009-01-16-UIntToFP.ll @@ -0,0 +1,31 @@ +; RUN: llvm-as < %s | llc -march=x86 +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" + +define hidden float @__floatundisf(i64 %u) nounwind readnone { +entry: + %0 = icmp ugt i64 %u, 9007199254740991 ; [#uses=1] + br i1 %0, label %bb, label %bb2 + +bb: ; preds = %entry + %1 = and i64 %u, 2047 ; [#uses=1] + %2 = icmp eq i64 %1, 0 ; [#uses=1] + br i1 %2, label %bb2, label %bb1 + +bb1: ; preds = %bb + %3 = or i64 %u, 2048 ; [#uses=1] + %4 = and i64 %3, -2048 ; [#uses=1] + br label %bb2 + +bb2: ; preds = %bb1, %bb, %entry + %u_addr.0 = phi i64 [ %4, %bb1 ], [ %u, %entry ], [ %u, %bb ] ; [#uses=2] + %5 = lshr i64 %u_addr.0, 32 ; [#uses=1] + %6 = trunc i64 %5 to i32 ; [#uses=1] + %7 = uitofp i32 %6 to double ; [#uses=1] + %8 = mul double %7, 0x41F0000000000000 ; [#uses=1] + %9 = trunc i64 %u_addr.0 to i32 ; [#uses=1] + %10 = uitofp i32 %9 to double ; [#uses=1] + %11 = add double %10, %8 ; [#uses=1] + %12 = fptrunc double %11 to float ; [#uses=1] + ret float %12 +}