From e526962fc59d38b4b0f671717df7657b8e0d8baa Mon Sep 17 00:00:00 2001 From: Dale Johannesen Date: Sat, 20 Oct 2007 00:07:52 +0000 Subject: [PATCH] Fix a few places vector operations were not getting the operand's type from the right place. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@43195 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/CodeGen/SelectionDAG/LegalizeDAG.cpp | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp b/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp index 336cecbd2b6..5998bc03f4e 100644 --- a/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp +++ b/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp @@ -1919,8 +1919,9 @@ SDOperand SelectionDAGLegalize::LegalizeOp(SDOperand Op) { Result = LegalizeOp(Result); } else { SDNode *InVal = Tmp2.Val; - unsigned NumElems = MVT::getVectorNumElements(InVal->getValueType(0)); - MVT::ValueType EVT = MVT::getVectorElementType(InVal->getValueType(0)); + int InIx = Tmp2.ResNo; + unsigned NumElems = MVT::getVectorNumElements(InVal->getValueType(InIx)); + MVT::ValueType EVT = MVT::getVectorElementType(InVal->getValueType(InIx)); // Figure out if there is a simple type corresponding to this Vector // type. If so, convert to the vector type. @@ -2114,8 +2115,9 @@ SDOperand SelectionDAGLegalize::LegalizeOp(SDOperand Op) { // in the high half of the vector. if (MVT::isVector(ST->getValue().getValueType())) { SDNode *InVal = ST->getValue().Val; - unsigned NumElems = MVT::getVectorNumElements(InVal->getValueType(0)); - MVT::ValueType EVT = MVT::getVectorElementType(InVal->getValueType(0)); + int InIx = ST->getValue().ResNo; + unsigned NumElems = MVT::getVectorNumElements(InVal->getValueType(InIx)); + MVT::ValueType EVT = MVT::getVectorElementType(InVal->getValueType(InIx)); // Figure out if there is a simple type corresponding to this Vector // type. If so, convert to the vector type. @@ -3260,8 +3262,9 @@ SDOperand SelectionDAGLegalize::LegalizeOp(SDOperand Op) { // The input has to be a vector type, we have to either scalarize it, pack // it, or convert it based on whether the input vector type is legal. SDNode *InVal = Node->getOperand(0).Val; - unsigned NumElems = MVT::getVectorNumElements(InVal->getValueType(0)); - MVT::ValueType EVT = MVT::getVectorElementType(InVal->getValueType(0)); + int InIx = Node->getOperand(0).ResNo; + unsigned NumElems = MVT::getVectorNumElements(InVal->getValueType(InIx)); + MVT::ValueType EVT = MVT::getVectorElementType(InVal->getValueType(InIx)); // Figure out if there is a simple type corresponding to this Vector // type. If so, convert to the vector type.