Lines Matching defs:forOp
46 if (auto forOp = dyn_cast<scf::ForOp>(op)) {
47 forOp.getInductionVar().printAsOperand(dbgs(), state);
48 dbgs() << " @ " << forOp.getOperation();
353 for (scf::ForOp forOp : llvm::reverse(reverseEnclosingLoops))
354 if (backwardSlice.contains(forOp))
355 packingLoops.push_back(forOp);
420 if (auto forOp = dyn_cast<scf::ForOp>(op)) {
421 if (!hasIndexResult(op) && indexEdges.contains(forOp.getInductionVar())) {
466 for (auto forOp : packingLoops) {
467 // Compute an upper bound `ubVal` for the upper bound of `forOp`.
469 rewriter, loc, presburger::BoundType::UB, forOp.getUpperBound(),
472 if (v == forOp.getUpperBound())
487 // TODO: instead of using the lower bound of `forOp` directly, implement a
494 ValueRange{forOp.getLowerBound(), ubVal,
495 cast<scf::ForOp>(forOp).getStep()});
512 /// [`outer`, `forOp`].
515 scf::ForOp forOp) {
516 MLIRContext *ctx = forOp->getContext();
520 if (!isDefinedOutsideOrConstant(outer, forOp.getLowerBound()) ||
521 !isDefinedOutsideOrConstant(outer, forOp.getStep()))
523 Value ivVal = forOp.getInductionVar(), lbVal = forOp.getLowerBound(),
524 stepVal = forOp.getStep();
525 auto loc = forOp->getLoc();
557 auto forOp = dyn_cast<scf::ForOp>(bbArg.getOwner()->getParentOp());
558 if (!forOp)
560 if (forOp != outerLoop && !outerLoop->isAncestor(forOp))
562 OpOperand &operand = *forOp.getTiedLoopInit(bbArg);
581 auto forOp = dyn_cast<scf::ForOp>(op);
582 if (!forOp) {
591 loc, bvm.lookupOrDefault(forOp.getLowerBound()),
592 bvm.lookupOrDefault(forOp.getUpperBound()),
593 bvm.lookupOrDefault(forOp.getStep()), hoistedPackedTensor);
596 bvm.map(forOp.getInductionVar(), clonedForOp.getInductionVar());
597 bvm.map(forOp.getRegionIterArgs(), clonedForOp.getRegionIterArgs());
598 bvm.map(forOp.getResults(), clonedForOp.getResults());
657 auto forOp = scf::getForInductionVarOwner(iv);
658 rewriter.setInsertionPointToEnd(&forOp.getRegion().front());
660 valueToYield = forOp.getResult(0);
768 /// If the original consumer of `outerSliceOp` was a `forOp` (i.e. through an
792 /// %2 = tensor.extract_slice %forOp
799 tensor::ExtractSliceOp outerSliceOp, scf::ForOp forOp) {
800 LLVM_DEBUG(DBGS() << "Start padThroughLoopIterArg on: " << forOp << "\n");
805 if (use.getOwner() == forOp) {
814 unsigned iterArgNumber = forOp.getTiedLoopResult(pUse).getResultNumber();
815 auto yieldingExtractSliceOp = forOp.getYieldedValues()[iterArgNumber]
827 SmallVector<Value> initArgs = forOp.getInitArgs();
829 SmallVector<Value> yieldOperands = llvm::to_vector(forOp.getYieldedValues());
838 rewriter.setInsertionPointAfter(forOp);
843 rewriter.replaceAllUsesWith(forOp.getResult(iterArgNumber), extracted);
845 scf::ForOp newForOp = cast<scf::ForOp>(*forOp.replaceWithAdditionalYields(
856 << " of forOp, giving us: " << extracted << "\n");
923 // If the consumer of `padOp` was a `forOp`, propagate through iter args.
924 scf::ForOp forOp = analysis.padConsumingForOp;
925 if (forOp) {
927 analysis.sliceOp, forOp);