Author: sampo Date: Mon Jan 28 20:24:00 2008 New Revision: 46486 URL: http://llvm.org/viewvc/llvm-project?rev=46486&view=rev Log: Properly expand extract-element for non-power-of-2 codegen
Modified: llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp Modified: llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp?rev=46486&r1=46485&r2=46486&view=diff ============================================================================== --- llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp (original) +++ llvm/trunk/lib/CodeGen/SelectionDAG/LegalizeDAG.cpp Mon Jan 28 20:24:00 2008 @@ -4405,14 +4405,15 @@ // This must be an access of the only element. Return it. Op = ScalarizeVectorOp(Vec); } else if (!TLI.isTypeLegal(TVT) && isa<ConstantSDNode>(Idx)) { + unsigned NumLoElts = 1 << Log2_32(NumElems-1); ConstantSDNode *CIdx = cast<ConstantSDNode>(Idx); SDOperand Lo, Hi; SplitVectorOp(Vec, Lo, Hi); - if (CIdx->getValue() < NumElems/2) { + if (CIdx->getValue() < NumLoElts) { Vec = Lo; } else { Vec = Hi; - Idx = DAG.getConstant(CIdx->getValue() - NumElems/2, + Idx = DAG.getConstant(CIdx->getValue() - NumLoElts, Idx.getValueType()); } _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits