[llvm-commits] [llvm] r62504 - in /llvm/trunk: lib/Target/X86/X86ISelLowering.cpp test/CodeGen/X86/uint_to_fp.ll

Evan Cheng evan.cheng at apple.com
Mon Jan 19 00:08:23 PST 2009


Author: evancheng
Date: Mon Jan 19 02:08:22 2009
New Revision: 62504

URL: http://llvm.org/viewvc/llvm-project?rev=62504&view=rev
Log:
Now not UINT_TO_FP is legal (it's marked custom), dag combiner won't
optimize it to a SINT_TO_FP when the sign bit is known zero. X86 isel should perform the optimization itself.

Modified:
    llvm/trunk/lib/Target/X86/X86ISelLowering.cpp
    llvm/trunk/test/CodeGen/X86/uint_to_fp.ll

Modified: llvm/trunk/lib/Target/X86/X86ISelLowering.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/X86ISelLowering.cpp?rev=62504&r1=62503&r2=62504&view=diff

==============================================================================
--- llvm/trunk/lib/Target/X86/X86ISelLowering.cpp (original)
+++ llvm/trunk/lib/Target/X86/X86ISelLowering.cpp Mon Jan 19 02:08:22 2009
@@ -4884,8 +4884,15 @@
 }
 
 SDValue X86TargetLowering::LowerUINT_TO_FP(SDValue Op, SelectionDAG &DAG) {
-  MVT SrcVT = Op.getOperand(0).getValueType();
+  SDValue N0 = Op.getOperand(0);
 
+  // Now not UINT_TO_FP is legal (it's marked custom), dag combiner won't
+  // optimize it to a SINT_TO_FP when the sign bit is known zero. Perform
+  // the optimization here.
+  if (DAG.SignBitIsZero(N0))
+    return DAG.getNode(ISD::SINT_TO_FP, Op.getValueType(), N0);
+
+  MVT SrcVT = N0.getValueType();
   if (SrcVT == MVT::i64) {
     // We only handle SSE2 f64 target here; caller can handle the rest.
     if (Op.getValueType() != MVT::f64 || !X86ScalarSSEf64)

Modified: llvm/trunk/test/CodeGen/X86/uint_to_fp.ll
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/uint_to_fp.ll?rev=62504&r1=62503&r2=62504&view=diff

==============================================================================
--- llvm/trunk/test/CodeGen/X86/uint_to_fp.ll (original)
+++ llvm/trunk/test/CodeGen/X86/uint_to_fp.ll Mon Jan 19 02:08:22 2009
@@ -1,4 +1,5 @@
 ; RUN: llvm-as < %s | llc -march=x86 -mcpu=yonah | not grep {sub.*esp}
+; RUN: llvm-as < %s | llc -march=x86 -mcpu=yonah | grep cvtsi2ss
 ; rdar://6034396
 
 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"





More information about the llvm-commits mailing list