Lines Matching refs:Block

133 getMutableSuccessorOperands(Block *block, unsigned successorIndex) {  in getMutableSuccessorOperands()
142 static OperandRange getSuccessorOperands(Block *block, in getSuccessorOperands()
149 static void addBlockArgumentsFromOther(Block *block, Block *other) { in addBlockArgumentsFromOther()
160 Block *fromBlock;
166 Edge(Block *fromBlock, unsigned int successorIndex) in Edge()
170 Block *getFromBlock() const { return fromBlock; } in getFromBlock()
173 Block *getSuccessor() const { in getSuccessor()
179 void setSuccessor(Block *block) const { in setSuccessor()
227 static EdgeMultiplexer create(Location loc, ArrayRef<Block *> entryBlocks, in create()
233 auto *multiplexerBlock = new Block;
241 llvm::SmallMapVector<Block *, unsigned, 4> blockArgMapping;
242 for (Block *entryBlock : entryBlocks) {
266 Block *getMultiplexerBlock() const { return multiplexerBlock; } in getMultiplexerBlock()
327 const SmallPtrSetImpl<Block *> &excluded = SmallPtrSet<Block *, 1>{}) {
333 SmallVector<Block *> caseDestinations;
352 Block *defaultDest = caseDestinations.pop_back_val();
364 Block *multiplexerBlock;
375 llvm::SmallMapVector<Block *, unsigned, 4> blockArgMapping;
381 EdgeMultiplexer(Block *multiplexerBlock, in EdgeMultiplexer()
384 llvm::SmallMapVector<Block *, unsigned, 4> &&entries, in EdgeMultiplexer() argument
435 Block *exitBlock = iter->second; in combineExit()
437 exitBlock = new Block; in combineExit()
464 llvm::SmallDenseMap<Operation *, Block *, 4, ReturnLikeOpEquivalence>
473 static auto successorEdges(Block *block) { in successorEdges()
480 calculateCycleEdges(const llvm::SmallSetVector<Block *, 4> &cycles) { in calculateCycleEdges() argument
482 SmallPtrSet<Block *, 8> entryBlocks; in calculateCycleEdges()
486 for (Block *block : cycles) { in calculateCycleEdges()
504 for (Block *block : cycles) { in calculateCycleEdges()
545 Block *latch;
549 Block *exitBlock;
569 SmallVector<Block *> successors; in createSingleExitingLatch()
581 auto *exitBlock = new Block; in createSingleExitingLatch()
585 Block *loopHeader = backEdges.front().getSuccessor(); in createSingleExitingLatch()
620 SmallPtrSet<Block *, 1> excluded = {loopHeader}; in createSingleExitingLatch()
658 transformToReduceLoop(Block *loopHeader, Block *exitBlock, in transformToReduceLoop()
659 const llvm::SmallSetVector<Block *, 4> &loopBlocks, in transformToReduceLoop() argument
662 Block *latch = exitBlock->getSinglePredecessor(); in transformToReduceLoop()
706 for (Block *loopBlock : loopBlocks) { in transformToReduceLoop()
710 llvm::SmallDenseMap<Block *, bool> dominanceCache; in transformToReduceLoop()
712 auto loopBlockDominates = [&](Block *block) { in transformToReduceLoop()
726 Block *currBlock = use.getOwner()->getBlock(); in transformToReduceLoop()
747 llvm::any_of(latch->getPredecessors(), [&](Block *pred) { in transformToReduceLoop()
803 static FailureOr<SmallVector<Block *>> transformCyclesToSCFLoops( in transformCyclesToSCFLoops()
804 Block *regionEntry, function_ref<Value(unsigned)> getSwitchValue, in transformCyclesToSCFLoops()
807 SmallVector<Block *> newSubRegions; in transformCyclesToSCFLoops()
817 llvm::SmallSetVector<Block *, 4> cycleBlockSet(scc->begin(), scc->end()); in transformCyclesToSCFLoops()
821 Block *loopHeader = edges.entryEdges.front().getSuccessor(); in transformCyclesToSCFLoops()
846 Block *latchBlock = loopProperties->latch; in transformCyclesToSCFLoops()
847 Block *exitBlock = loopProperties->exitBlock; in transformCyclesToSCFLoops()
857 auto *newLoopParentBlock = new Block; in transformCyclesToSCFLoops()
865 for (Block *block : cycleBlockSet) in transformCyclesToSCFLoops()
905 ArrayRef<Block *> branchRegion, Block *continuation, in createSingleExitBranchRegion()
906 SmallVectorImpl<std::pair<Block *, SmallVector<Value>>> &createdEmptyBlocks, in createSingleExitBranchRegion() argument
908 Block *singleExitBlock = nullptr; in createSingleExitBranchRegion()
912 for (Block *block : branchRegion) { in createSingleExitBranchRegion()
925 singleExitBlock = new Block; in createSingleExitBranchRegion()
943 static bool isRegionExitBlock(Block *block) { in isRegionExitBlock()
950 static FailureOr<SmallVector<Block *>> transformToStructuredCFBranches( in transformToStructuredCFBranches()
951 Block *regionEntry, function_ref<Value(unsigned)> getSwitchValue, in transformToStructuredCFBranches()
956 return SmallVector<Block *>{}; in transformToStructuredCFBranches()
960 Block *successor = regionEntry->getSuccessor(0); in transformToStructuredCFBranches()
969 return SmallVector<Block *>{regionEntry}; in transformToStructuredCFBranches()
976 SmallPtrSet<Block *, 8> notContinuation; in transformToStructuredCFBranches()
978 SmallVector<SmallVector<Block *>> successorBranchRegions( in transformToStructuredCFBranches()
1071 for (Block *block : branchRegion) { in transformToStructuredCFBranches()
1099 Block *continuation = llvm::find_singleton<Block>( in transformToStructuredCFBranches()
1118 return SmallVector<Block *>{regionEntry}; in transformToStructuredCFBranches()
1121 SmallVector<Block *> newSubRegions; in transformToStructuredCFBranches()
1124 SmallVector<std::pair<Block *, SmallVector<Value>>> createdEmptyBlocks; in transformToStructuredCFBranches()
1135 new Block, llvm::to_vector(entryEdge.getSuccessorOperands())); in transformToStructuredCFBranches()
1145 Block *subRegionEntryBlock = &conditionalRegion.front(); in transformToStructuredCFBranches()
1218 for (Block &block : region.getBlocks()) { in createSingleExitBlocksForReturnLike()
1230 for (Block &block : region.getBlocks()) in checkTransformationPreconditions()
1323 SmallVector<Block *> workList = {&region.front()}; in transformCFGToSCF()
1325 Block *current = workList.pop_back_val(); in transformCFGToSCF()
1329 FailureOr<SmallVector<Block *>> newRegions = in transformCFGToSCF()