Lines Matching refs:Lane
1389 OperandData &getData(unsigned OpIdx, unsigned Lane) { in getData() argument
1390 return OpsVec[OpIdx][Lane]; in getData()
1394 const OperandData &getData(unsigned OpIdx, unsigned Lane) const { in getData()
1395 return OpsVec[OpIdx][Lane]; in getData()
1402 for (unsigned Lane = 0, NumLanes = getNumLanes(); Lane != NumLanes; in clearUsed() local
1403 ++Lane) in clearUsed()
1404 OpsVec[OpIdx][Lane].IsUsed = false; in clearUsed()
1408 void swap(unsigned OpIdx1, unsigned OpIdx2, unsigned Lane) { in swap() argument
1409 std::swap(OpsVec[OpIdx1][Lane], OpsVec[OpIdx2][Lane]); in swap()
1421 int getSplatScore(unsigned Lane, unsigned OpIdx, unsigned Idx) const { in getSplatScore() argument
1422 Value *IdxLaneV = getData(Idx, Lane).V; in getSplatScore()
1423 if (!isa<Instruction>(IdxLaneV) || IdxLaneV == getData(OpIdx, Lane).V) in getSplatScore()
1427 if (Ln == Lane) in getSplatScore()
1437 Value *OpIdxLaneV = getData(OpIdx, Lane).V; in getSplatScore()
1453 int getExternalUseScore(unsigned Lane, unsigned OpIdx, unsigned Idx) const { in getExternalUseScore() argument
1454 Value *IdxLaneV = getData(Idx, Lane).V; in getExternalUseScore()
1455 Value *OpIdxLaneV = getData(OpIdx, Lane).V; in getExternalUseScore()
1483 int Lane, unsigned OpIdx, unsigned Idx, in getLookAheadScore() argument
1493 int SplatScore = getSplatScore(Lane, OpIdx, Idx); in getLookAheadScore()
1506 Score += getExternalUseScore(Lane, OpIdx, Idx); in getLookAheadScore()
1524 Optional<unsigned> getBestOperand(unsigned OpIdx, int Lane, int LastLane, in getBestOperand() argument
1538 bool OpIdxAPO = getData(OpIdx, Lane).APO; in getBestOperand()
1548 BestScoresPerLanes.try_emplace(std::make_pair(OpIdx, Lane), 0) in getBestOperand()
1559 OperandData &OpData = getData(Idx, Lane); in getBestOperand()
1578 bool LeftToRight = Lane > LastLane; in getBestOperand()
1581 int Score = getLookAheadScore(OpLeft, OpRight, MainAltOps, Lane, in getBestOperand()
1586 BestScoresPerLanes[std::make_pair(OpIdx, Lane)] = Score; in getBestOperand()
1600 getData(*BestOp.Idx, Lane).IsUsed = IsUsed; in getBestOperand()
1625 unsigned Lane = I - 1; in getBestLaneToStartReordering() local
1627 getMaxNumOperandsThatCanBeReordered(Lane); in getBestLaneToStartReordering()
1634 HashMap[NumFreeOpsHash.Hash] = std::make_pair(1, Lane); in getBestLaneToStartReordering()
1640 HashMap[NumFreeOpsHash.Hash] = std::make_pair(1, Lane); in getBestLaneToStartReordering()
1645 HashMap[NumFreeOpsHash.Hash] = std::make_pair(1, Lane); in getBestLaneToStartReordering()
1683 OperandsOrderData getMaxNumOperandsThatCanBeReordered(unsigned Lane) const { in getMaxNumOperandsThatCanBeReordered()
1701 const OperandData &OpData = getData(OpIdx, Lane); in getMaxNumOperandsThatCanBeReordered()
1744 for (unsigned Lane = 0; Lane != NumLanes; ++Lane) { in appendOperandsOfVL() local
1745 assert(isa<Instruction>(VL[Lane]) && "Expected instruction"); in appendOperandsOfVL()
1756 bool IsInverseOperation = !isCommutative(cast<Instruction>(VL[Lane])); in appendOperandsOfVL()
1758 OpsVec[OpIdx][Lane] = {cast<Instruction>(VL[Lane])->getOperand(OpIdx), in appendOperandsOfVL()
1771 Value *getValue(unsigned OpIdx, unsigned Lane) const { in getValue()
1772 return getData(OpIdx, Lane).V; in getValue()
1784 bool shouldBroadcast(Value *Op, unsigned OpIdx, unsigned Lane) { in shouldBroadcast() argument
1785 bool OpAPO = getData(OpIdx, Lane).APO; in shouldBroadcast()
1787 if (Ln == Lane) in shouldBroadcast()
1822 for (unsigned Lane = 0, Lanes = getNumLanes(); Lane != Lanes; ++Lane) in getVL() local
1823 OpVL[Lane] = OpsVec[OpIdx][Lane].V; in getVL()
1924 int Lane = FirstLane + Direction * Distance; in reorder() local
1925 if (Lane < 0 || Lane >= (int)NumLanes) in reorder()
1927 int LastLane = Lane - Direction; in reorder()
1934 OpIdx, Lane, LastLane, ReorderingModes, MainAltOps[OpIdx]); in reorder()
1941 swap(OpIdx, *BestIdx, Lane); in reorder()
1950 OperandData &AltOp = getData(OpIdx, Lane); in reorder()
2345 for (unsigned Lane = 0; Lane != NumLanes; ++Lane) { in setOperandsInOrder() local
2346 auto *I = cast<Instruction>(Scalars[Lane]); in setOperandsInOrder()
2349 Operands[OpIdx][Lane] = I->getOperand(OpIdx); in setOperandsInOrder()
2617 : Scalar(S), User(U), Lane(L) {} in ExternalUser()
2626 int Lane; member
2985 int Lane = std::distance(TE->Scalars.begin(), in schedule() local
2987 assert(Lane >= 0 && "Lane not set"); in schedule()
3004 if (auto *I = dyn_cast<Instruction>(TE->getOperand(OpIdx)[Lane])) in schedule()
3431 unsigned Lane = in findReusedOrderedScalars() local
3433 if (Lane >= NumScalars) in findReusedOrderedScalars()
3435 if (CurrentOrder[Lane] != NumScalars) { in findReusedOrderedScalars()
3436 if (Lane != I) in findReusedOrderedScalars()
3438 UsedPositions.reset(CurrentOrder[Lane]); in findReusedOrderedScalars()
3442 CurrentOrder[Lane] = I; in findReusedOrderedScalars()
3748 for (unsigned Lane : seq<unsigned>(0, TE->Scalars.size())) in reorderTopToBottom() local
3749 if (cast<Instruction>(TE->Scalars[Lane])->getOpcode() == Opcode1) in reorderTopToBottom()
3750 OpcodeMask.set(Lane); in reorderTopToBottom()
4235 for (int Lane = 0, LE = Entry->Scalars.size(); Lane != LE; ++Lane) { in buildExternalUses() local
4236 Value *Scalar = Entry->Scalars[Lane]; in buildExternalUses()
4243 << Lane << " from " << *Scalar << ".\n"); in buildExternalUses()
4277 << Lane << " from " << *Scalar << ".\n"); in buildExternalUses()
4287 for (unsigned Lane : seq<unsigned>(0, TE->Scalars.size())) { in collectUserStores() local
4288 Value *V = TE->Scalars[Lane]; in collectUserStores()
4308 if (StoresVec.size() > Lane) in collectUserStores()
7132 Mask[InIdx] = EU.Lane; in getTreeCost()
7150 VecTy, EU.Lane); in getTreeCost()
7153 TTI->getVectorInstrCost(Instruction::ExtractElement, VecTy, EU.Lane); in getTreeCost()
8493 Value *Lane = Builder.getInt32(ExternalUse.Lane); in vectorizeTree() local
8502 Ex = Builder.CreateExtractElement(Vec, Lane); in vectorizeTree()
8600 Mask[Idx] = ExternalUse.Lane; in vectorizeTree()
8869 for (int Lane = 0, LE = Entry->Scalars.size(); Lane != LE; ++Lane) { in vectorizeTree() local
8870 Value *Scalar = Entry->Scalars[Lane]; in vectorizeTree()