Lines Matching defs:secondPloop
42 ParallelOp secondPloop) {
43 if (firstPloop.getNumLoops() != secondPloop.getNumLoops())
52 secondPloop.getLowerBound()) &&
54 secondPloop.getUpperBound()) &&
55 matchOperands(firstPloop.getStep(), secondPloop.getStep());
62 ParallelOp firstPloop, ParallelOp secondPloop,
71 auto walkResult = secondPloop.getBody()->walk([&](memref::LoadOp load) {
73 // Stop if the memref is defined in secondPloop body. Careful alias analysis
99 // Check that the load indices of secondPloop coincide with store indices of
139 verifyDependencies(ParallelOp firstPloop, ParallelOp secondPloop,
143 firstPloop, secondPloop, firstToSecondPloopIndices, mayAlias))
147 secondToFirstPloopIndices.map(secondPloop.getBody()->getArguments(),
150 secondPloop, firstPloop, secondToFirstPloopIndices, mayAlias));
153 static bool isFusionLegal(ParallelOp firstPloop, ParallelOp secondPloop,
157 !hasNestedParallelOp(secondPloop) &&
158 equalIterationSpaces(firstPloop, secondPloop) &&
159 succeeded(verifyDependencies(firstPloop, secondPloop,
163 /// Prepends operations of firstPloop's body into secondPloop's body.
164 /// Updates secondPloop with new loop.
165 static void fuseIfLegal(ParallelOp firstPloop, ParallelOp &secondPloop,
169 Block *block2 = secondPloop.getBody();
173 if (!isFusionLegal(firstPloop, secondPloop, firstToSecondPloopIndices,
181 if (!dom.properlyDominates(secondPloop, user, /*enclosingOpOk*/ false))
185 ValueRange inits2 = secondPloop.getInitVals();
191 b.setInsertionPoint(secondPloop);
193 secondPloop.getLoc(), secondPloop.getLowerBound(),
194 secondPloop.getUpperBound(), secondPloop.getStep(), newInitVars);
225 secondPloop.replaceAllUsesWith(results.take_back(inits2.size()));
230 secondPloop.erase();
231 secondPloop = newSecondPloop;