Lines Matching refs:genericOp

86   LogicalResult matchAndRewrite(GenericOp genericOp,
92 GenericOp createPeeledGenericOp(GenericOp genericOp,
97 GenericOp createResidualGenericOp(GenericOp genericOp,
143 DecomposeLinalgOp::createPeeledGenericOp(GenericOp genericOp, in createPeeledGenericOp() argument
145 Block *body = genericOp.getBody(); in createPeeledGenericOp()
148 genericOp.getIndexingMapsArray(); in createPeeledGenericOp()
152 Location loc = genericOp.getLoc(); in createPeeledGenericOp()
153 SmallVector<OpFoldResult> domain = getGenericOpLoopRange(rewriter, genericOp); in createPeeledGenericOp()
170 genericOp.getResult(use.getOperandNumber()).cast<OpResult>(); in createPeeledGenericOp()
172 genericOp.getTiedIndexingMapForResult(genericOpResult); in createPeeledGenericOp()
179 genericOp.getResult(firstUseInYield->getOperandNumber()) in createPeeledGenericOp()
181 return genericOp.getTiedIndexingMapForResult(genericOpResult); in createPeeledGenericOp()
196 SmallVector<Value> outsOperands = genericOp.getOutputOperands(); in createPeeledGenericOp()
198 SmallVector<Type> resultTypes = llvm::to_vector(genericOp.getResultTypes()); in createPeeledGenericOp()
203 loc, resultTypes, genericOp.inputs(), outsOperands, indexingMapAttr, in createPeeledGenericOp()
204 genericOp.iterator_types(), /*doc=*/nullptr, /*libraryCall=*/nullptr, in createPeeledGenericOp()
209 DecomposeLinalgOp::createResidualGenericOp(GenericOp genericOp, in createResidualGenericOp() argument
215 llvm::map_range(genericOp.getInputOperands(), in createResidualGenericOp()
217 unsigned origNumResults = genericOp.getNumResults(); in createResidualGenericOp()
228 llvm::map_range(genericOp.getInputOperands(), [&](OpOperand *operand) { in createResidualGenericOp()
229 return genericOp.getTiedIndexingMap(operand); in createResidualGenericOp()
236 for (OpOperand *outOperand : genericOp.getOutputOperands()) in createResidualGenericOp()
237 indexingMaps.push_back(genericOp.getTiedIndexingMap(outOperand)); in createResidualGenericOp()
241 genericOp->getLoc(), genericOp->getResultTypes(), in createResidualGenericOp()
242 residualGenericOpOperands, genericOp.outputs(), indexingMapAttr, in createResidualGenericOp()
243 genericOp.iterator_types(), /*doc=*/nullptr, /*libraryCall=*/nullptr, in createResidualGenericOp()
248 DecomposeLinalgOp::matchAndRewrite(GenericOp genericOp, in matchAndRewrite() argument
251 if (genericOp.getNumParallelLoops() != genericOp.getNumLoops()) { in matchAndRewrite()
252 return rewriter.notifyMatchFailure(genericOp, in matchAndRewrite()
259 if (!genericOp.hasTensorSemantics()) { in matchAndRewrite()
261 genericOp, "only operations with tensor semantics are handled"); in matchAndRewrite()
267 if (llvm::any_of(genericOp.getOutputOperands(), [&](OpOperand *outOperand) { in matchAndRewrite()
268 return genericOp.payloadUsesValueFromOperand(outOperand); in matchAndRewrite()
271 genericOp, "unhandled decomposition of generic op with use of out " in matchAndRewrite()
275 if (llvm::any_of(genericOp.getOutputOperands(), [&](OpOperand *outOperand) { in matchAndRewrite()
276 return !genericOp.getTiedIndexingMap(outOperand).isPermutation(); in matchAndRewrite()
279 genericOp, "unhandled decomposition of generic op with out operand not " in matchAndRewrite()
284 Block *body = genericOp.getBody(); in matchAndRewrite()
286 return rewriter.notifyMatchFailure(genericOp, in matchAndRewrite()
298 GenericOp peeledGenericOp = createPeeledGenericOp(genericOp, rewriter); in matchAndRewrite()
300 createResidualGenericOp(genericOp, peeledGenericOp, rewriter); in matchAndRewrite()
325 getZero(rewriter, genericOp.getLoc(), origYield.getType())); in matchAndRewrite()
331 rewriter.create<YieldOp>(genericOp.getLoc(), yieldedVals); in matchAndRewrite()
336 unsigned origNumInputs = genericOp.getNumInputs(); in matchAndRewrite()
338 llvm::enumerate(genericOp.getBody()->getArguments())) { in matchAndRewrite()
384 rewriter.replaceOp(genericOp, replacements); in matchAndRewrite()