If we have ScalarSSE, we can select bitconvert into single instructions.

This compiles bitcast.ll:test3/test4 into:

_test3:
        movd %xmm0, %eax
        ret
_test4:
        movd %edi, %xmm0
        ret

llvm-svn: 32230
diff --git a/llvm/lib/Target/X86/X86ISelLowering.cpp b/llvm/lib/Target/X86/X86ISelLowering.cpp
index 13d606b..c139dd2 100644
--- a/llvm/lib/Target/X86/X86ISelLowering.cpp
+++ b/llvm/lib/Target/X86/X86ISelLowering.cpp
@@ -145,8 +145,10 @@
   }
 
   // TODO: when we have SSE, these could be more efficient, by using movd/movq.
-  setOperationAction(ISD::BIT_CONVERT      , MVT::f32  , Expand);
-  setOperationAction(ISD::BIT_CONVERT      , MVT::i32  , Expand);
+  if (!X86ScalarSSE) {
+    setOperationAction(ISD::BIT_CONVERT      , MVT::f32  , Expand);
+    setOperationAction(ISD::BIT_CONVERT      , MVT::i32  , Expand);
+  }
   if (Subtarget->is64Bit()) {
     setOperationAction(ISD::BIT_CONVERT      , MVT::f64  , Expand);
     setOperationAction(ISD::BIT_CONVERT      , MVT::i64  , Expand);