Lines Matching refs:bbArg
220 SmallVector<BlockArgument> TileLoopNest::getTiedBBArgs(BlockArgument bbArg) { in getTiedBBArgs() argument
221 assert(bbArg && "expect the block argument to be non-zero"); in getTiedBBArgs()
226 if (bbArg.getOwner()->getParentOp() != tileLoop) in getTiedBBArgs()
228 bbArgs.push_back(bbArg); in getTiedBBArgs()
229 OpOperand *iterArg = &tileLoop.getOpOperandForRegionIterArg(bbArg); in getTiedBBArgs()
230 bbArg = iterArg->get().dyn_cast<BlockArgument>(); in getTiedBBArgs()
237 OpOperand *TileLoopNest::getTiedIterArg(BlockArgument bbArg) { in getTiedIterArg() argument
239 SmallVector<BlockArgument> bbArgs = getTiedBBArgs(bbArg); in getTiedIterArg()
245 bool TileLoopNest::hasOtherUses(BlockArgument bbArg, in hasOtherUses() argument
250 for (Operation *op : bbArg.getUsers()) { in hasOtherUses()
269 SmallVector<BlockArgument> bbArgs = getTiedBBArgs(bbArg); in hasOtherUses()
270 return !all_of(bbArgs, [&](BlockArgument bbArg) { in hasOtherUses() argument
271 return bbArg.hasOneUse() || bbArg == bbArgs.back(); in hasOtherUses()
355 BlockArgument bbArg = consumerOp.getTiedBlockArgument(consumerOpOperand); in fuseProducer() local
356 if (bbArg.getUses().empty()) in fuseProducer()
362 if (auto bbArg = sliceOp.getSource().dyn_cast<BlockArgument>()) { in fuseProducer() local
363 iterArg = getTiedIterArg(bbArg); in fuseProducer()
365 if (!iterArg || hasOtherUses(bbArg, sliceOp)) in fuseProducer()