Fix the remaining bugs in the vector expansion rework I commited yesterday.
authorChris Lattner <sabre@nondot.org>
Sun, 19 Mar 2006 00:07:49 +0000 (00:07 +0000)
committerChris Lattner <sabre@nondot.org>
Sun, 19 Mar 2006 00:07:49 +0000 (00:07 +0000)
This fixes CodeGen/Generic/vector.ll

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

lib/CodeGen/SelectionDAG/LegalizeDAG.cpp

index 5de11ff00ceeae7c9e7fcdb6426b594d762fe16a..b4b607db3e7c75eca60cf2a91bdc70ca4374c070 100644 (file)
@@ -407,7 +407,7 @@ void SelectionDAGLegalize::HandleOp(SDOperand Op) {
         // Otherwise, this is a multiple element vector that isn't supported.
         // Split it in half and legalize both parts.
         SDOperand X, Y;
-        ExpandOp(Op, X, Y);
+        SplitVectorOp(Op, X, Y);
       }
     }
     break;
@@ -4006,6 +4006,7 @@ void SelectionDAGLegalize::SplitVectorOp(SDOperand Op, SDOperand &Lo,
   }
   
   switch (Node->getOpcode()) {
+  default: assert(0 && "Unknown vector operation!");
   case ISD::VConstant: {
     std::vector<SDOperand> LoOps(Node->op_begin(), Node->op_begin()+NewNumElts);
     LoOps.push_back(NewNumEltsNode);
@@ -4098,10 +4099,10 @@ SDOperand SelectionDAGLegalize::PackVectorOp(SDOperand Op,
                          PackVectorOp(Node->getOperand(1), NewVT));
     break;
   case ISD::VLOAD: {
-    SDOperand Ch = LegalizeOp(Node->getOperand(2));   // Legalize the chain.
-    SDOperand Ptr = LegalizeOp(Node->getOperand(3));  // Legalize the pointer.
+    SDOperand Ch = LegalizeOp(Node->getOperand(0));   // Legalize the chain.
+    SDOperand Ptr = LegalizeOp(Node->getOperand(1));  // Legalize the pointer.
     
-    Result = DAG.getLoad(NewVT, Ch, Ptr, Node->getOperand(4));
+    Result = DAG.getLoad(NewVT, Ch, Ptr, Node->getOperand(2));
     
     // Remember that we legalized the chain.
     AddLegalizedOperand(Op.getValue(1), LegalizeOp(Result.getValue(1)));