If SSE3 is available, promote FP_TO_UINT i32 to FP_TO_SINT i64 to take
authorEvan Cheng <evan.cheng@apple.com>
Sat, 18 Feb 2006 07:26:17 +0000 (07:26 +0000)
committerEvan Cheng <evan.cheng@apple.com>
Sat, 18 Feb 2006 07:26:17 +0000 (07:26 +0000)
advantage of fisttpll.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@26288 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Target/X86/X86ISelLowering.cpp

index aa48d09fd41d5fde5ec5e239e2bfea94db243992..7c84850683ed445e7cf100826f11b73b1239c4ac 100644 (file)
@@ -101,12 +101,13 @@ X86TargetLowering::X86TargetLowering(TargetMachine &TM)
   setOperationAction(ISD::FP_TO_UINT       , MVT::i8   , Promote);
   setOperationAction(ISD::FP_TO_UINT       , MVT::i16  , Promote);
 
-  if (X86ScalarSSE)
+  if (X86ScalarSSE && !Subtarget->hasSSE3())
     // Expand FP_TO_UINT into a select.
     // FIXME: We would like to use a Custom expander here eventually to do
     // the optimal thing for SSE vs. the default expansion in the legalizer.
     setOperationAction(ISD::FP_TO_UINT     , MVT::i32  , Expand);
   else
+    // With SSE3 we can use fisttpll to convert to a signed i64.
     setOperationAction(ISD::FP_TO_UINT     , MVT::i32  , Promote);
 
   setOperationAction(ISD::BIT_CONVERT      , MVT::f32  , Expand);