Lines Matching defs:transferRead
172 static bool noAliasingUseInLoop(vector::TransferReadOp transferRead,
174 Value source = transferRead.getSource();
249 root->walk([&](vector::TransferReadOp transferRead) {
250 if (!isa<MemRefType>(transferRead.getShapedType()))
254 << *transferRead.getOperation() << "\n");
255 auto loop = dyn_cast<LoopLikeOpInterface>(transferRead->getParentOp());
256 LLVM_DEBUG(DBGS() << "Parent op: " << *transferRead->getParentOp()
267 LLVM_DEBUG(DBGS() << "Candidate read: " << *transferRead.getOperation()
271 getForwardSlice(transferRead.getOperation(), &forwardSlice);
274 // `transferRead` that operates on the same memref.
279 candidateWrite.getSource() != transferRead.getSource())
285 for (auto operand : transferRead.getOperands())
294 if (noAliasingUseInLoop(transferRead, loop))
295 loop.moveOutOfLoop(transferRead);
310 if (transferRead.getIndices() != transferWrite.getIndices() ||
311 transferRead.getVectorType() != transferWrite.getVectorType() ||
312 transferRead.getPermutationMap() != transferWrite.getPermutationMap())
315 auto *source = transferRead.getSource().getDefiningOp();
326 if (!dom.properlyDominates(transferRead.getOperation(), transferWrite))
328 for (auto &use : transferRead.getSource().getUses()) {
331 if (use.getOwner() == transferRead.getOperation() ||
350 // transferRead/transferWrite operations.
356 loop.moveOutOfLoop(transferRead);
362 IRRewriter rewriter(transferRead.getContext());
369 rewriter, transferRead.getVector(),