Properly support v8i8 and v4i16 types. It now converts them to v2i32 for
[oota-llvm.git] / lib / Target / X86 / X86ISelLowering.cpp
index b017e2a7460c712c228f1d203666174eb6171b88..9bcff7acb1658ef5ce23aef5493c33ecb84fc585 100644 (file)
@@ -327,9 +327,12 @@ X86TargetLowering::X86TargetLowering(TargetMachine &TM)
     addRegisterClass(MVT::v2i32, X86::VR64RegisterClass);
 
     // FIXME: add MMX packed arithmetics
-    setOperationAction(ISD::LOAD,             MVT::v8i8,  Legal);
-    setOperationAction(ISD::LOAD,             MVT::v4i16, Legal);
+    setOperationAction(ISD::LOAD,             MVT::v8i8,  Promote);
+    AddPromotedToType (ISD::LOAD,             MVT::v8i8,  MVT::v2i32);
+    setOperationAction(ISD::LOAD,             MVT::v4i16, Promote);
+    AddPromotedToType (ISD::LOAD,             MVT::v4i16, MVT::v2i32);
     setOperationAction(ISD::LOAD,             MVT::v2i32, Legal);
+
     setOperationAction(ISD::BUILD_VECTOR,     MVT::v8i8,  Expand);
     setOperationAction(ISD::BUILD_VECTOR,     MVT::v4i16, Expand);
     setOperationAction(ISD::BUILD_VECTOR,     MVT::v2i32, Expand);