Lines Matching refs:consumer
68 static bool areElementwiseOpsFusable(GenericOp producer, GenericOp consumer, in areElementwiseOpsFusable() argument
71 if (!producer.hasTensorSemantics() || !consumer.hasTensorSemantics()) in areElementwiseOpsFusable()
81 if (!consumer.isInputTensor(consumerOpOperand)) in areElementwiseOpsFusable()
86 AffineMap consumerIndexMap = consumer.getTiedIndexingMap(consumerOpOperand); in areElementwiseOpsFusable()
105 if ((consumer.getNumReductionLoops())) { in areElementwiseOpsFusable()
106 BitVector coveredDims(consumer.getNumLoops(), false); in areElementwiseOpsFusable()
115 llvm::zip(consumer->getOperands(), consumer.getIndexingMapsArray())) { in areElementwiseOpsFusable()
144 auto consumer = cast<GenericOp>(consumerOpOperand->getOwner()); in generateFusedElementwiseOpRegion() local
147 Block &consumerBlock = consumer->getRegion(0).front(); in generateFusedElementwiseOpRegion()
159 std::max(producer.getNumLoops(), consumer.getNumLoops()); in generateFusedElementwiseOpRegion()
175 assert(consumer.isInputTensor(consumerOpOperand) && in generateFusedElementwiseOpRegion()
203 .take_front(consumer.getNumInputs()) in generateFusedElementwiseOpRegion()
208 consumerBlock.getArguments().take_back(consumer.getNumOutputs())) in generateFusedElementwiseOpRegion()
253 auto consumer = cast<GenericOp>(consumerOpOperand->getOwner()); in fuseElementwiseOpsImpl() local
254 if (!areElementwiseOpsFusable(producer, consumer, consumerOpOperand) || in fuseElementwiseOpsImpl()
259 assert(consumer.isInputTensor(consumerOpOperand) && in fuseElementwiseOpsImpl()
266 consumer->getNumOperands()); in fuseElementwiseOpsImpl()
268 consumer->getNumOperands()); in fuseElementwiseOpsImpl()
271 SmallVector<OpOperand *> consumerInputs = consumer.getInputOperands(); in fuseElementwiseOpsImpl()
277 fusedIndexMaps.push_back(consumer.getTiedIndexingMap(opOperand)); in fuseElementwiseOpsImpl()
288 consumer.getTiedIndexingMap(consumerOpOperand)); in fuseElementwiseOpsImpl()
299 consumer.getTiedIndexingMap(consumerOpOperand)); in fuseElementwiseOpsImpl()
307 fusedIndexMaps.push_back(consumer.getTiedIndexingMap(opOperand)); in fuseElementwiseOpsImpl()
310 for (OpOperand *opOperand : consumer.getOutputOperands()) in fuseElementwiseOpsImpl()
311 fusedIndexMaps.push_back(consumer.getTiedIndexingMap(opOperand)); in fuseElementwiseOpsImpl()
317 SmallVector<Value> consumerOutputs = consumer.getOutputOperands(); in fuseElementwiseOpsImpl()
319 consumer.getLoc(), consumer->getResultTypes(), in fuseElementwiseOpsImpl()
323 consumer.iterator_types(), in fuseElementwiseOpsImpl()
337 consumer.getTiedIndexingMap(consumerOpOperand); in fuseElementwiseOpsImpl()
349 consumerOpOperand, consumer.getNumLoops()); in fuseElementwiseOpsImpl()
1716 const OpOperand &consumer) { in runOnOperation() argument