In LowerEXTRACT_VECTOR_ELT, force an i32 value type for PEXTWR instead of
authorKen Dyck <ken.dyck@onsemi.com>
Thu, 17 Dec 2009 15:31:52 +0000 (15:31 +0000)
committerKen Dyck <ken.dyck@onsemi.com>
Thu, 17 Dec 2009 15:31:52 +0000 (15:31 +0000)
incrementing the simple value type of the 16-bit type, which would give the
wrong type if an intemediate MVT (such as i24) were introduced.

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

lib/Target/X86/X86ISelLowering.cpp

index aa6967ab43b803fcb1ea97dee1960988285791bb..fb5b4ccd41386e4bacce7af133484fb60ef102e6 100644 (file)
@@ -4584,7 +4584,7 @@ X86TargetLowering::LowerEXTRACT_VECTOR_ELT(SDValue Op, SelectionDAG &DAG) {
                                                  MVT::v4i32, Vec),
                                      Op.getOperand(1)));
     // Transform it so it match pextrw which produces a 32-bit result.
-    EVT EltVT = (MVT::SimpleValueType)(VT.getSimpleVT().SimpleTy+1);
+    EVT EltVT = MVT::i32;
     SDValue Extract = DAG.getNode(X86ISD::PEXTRW, dl, EltVT,
                                     Op.getOperand(0), Op.getOperand(1));
     SDValue Assert  = DAG.getNode(ISD::AssertZext, dl, EltVT, Extract,