Lines Matching refs:sibNode
1726 auto *sibNode = mdg->getNode(sibId); in fuseWithSiblingNodes() local
1729 assert(sibNode->op->getBlock() == dstNode->op->getBlock()); in fuseWithSiblingNodes()
1731 sibNode->op->isBeforeInBlock(dstNode->op) in fuseWithSiblingNodes()
1732 ? mdg->getFusedLoopNestInsertionPoint(sibNode->id, dstNode->id) in fuseWithSiblingNodes()
1733 : mdg->getFusedLoopNestInsertionPoint(dstNode->id, sibNode->id); in fuseWithSiblingNodes()
1741 sibNode->getLoadOpsForMemref(memref, &sibLoadOpInsts); in fuseWithSiblingNodes()
1745 assert(!sibNode->stores.empty()); in fuseWithSiblingNodes()
1747 auto *sibStoreOpInst = sibNode->stores.back(); in fuseWithSiblingNodes()
1756 auto sibAffineForOp = cast<AffineForOp>(sibNode->op); in fuseWithSiblingNodes()
1803 updateStateAfterSiblingFusion(sibNode, dstNode); in fuseWithSiblingNodes()
1816 auto canFuseWithSibNode = [&](Node *sibNode, Value memref) { in findSiblingNodeToFuse() argument
1819 if (sibNode->getLoadOpCount(memref) != 1) in findSiblingNodeToFuse()
1823 if (mdg->hasDependencePath(sibNode->id, dstNode->id) || in findSiblingNodeToFuse()
1824 mdg->hasDependencePath(dstNode->id, sibNode->id)) in findSiblingNodeToFuse()
1829 sibNode->getLoadAndStoreMemrefSet(&loadAndStoreMemrefSet); in findSiblingNodeToFuse()
1831 return mdg->getIncomingMemRefAccesses(sibNode->id, memref) > 0; in findSiblingNodeToFuse()
1837 for (auto *storeOpInst : sibNode->stores) { in findSiblingNodeToFuse()
1846 if (hasNonAffineUsersOnThePath(dstNode->id, sibNode->id, mdg) || in findSiblingNodeToFuse()
1847 hasNonAffineUsersOnThePath(sibNode->id, dstNode->id, mdg)) in findSiblingNodeToFuse()
1863 Node *sibNode = mdg->getForOpNode(loops[0]); in findSiblingNodeToFuse() local
1864 assert(sibNode != nullptr); in findSiblingNodeToFuse()
1866 if (sibNode->id == dstNode->id) in findSiblingNodeToFuse()
1869 if (visitedSibNodeIds->count(sibNode->id) > 0) in findSiblingNodeToFuse()
1876 if (canFuseWithSibNode(sibNode, memref)) { in findSiblingNodeToFuse()
1877 visitedSibNodeIds->insert(sibNode->id); in findSiblingNodeToFuse()
1878 idAndMemrefToFuse->first = sibNode->id; in findSiblingNodeToFuse()
1910 auto *sibNode = mdg->getNode(sibNodeId); in findSiblingNodeToFuse() local
1911 if (!isa<AffineForOp>(sibNode->op)) in findSiblingNodeToFuse()
1914 if (canFuseWithSibNode(sibNode, outEdge.value)) { in findSiblingNodeToFuse()
1933 void updateStateAfterSiblingFusion(Node *sibNode, Node *dstNode) { in updateStateAfterSiblingFusion()
1935 mdg->updateEdges(sibNode->id, dstNode->id); in updateStateAfterSiblingFusion()
1948 if (mdg->getOutEdgeCount(sibNode->id) == 0) { in updateStateAfterSiblingFusion()
1949 Operation *op = sibNode->op; in updateStateAfterSiblingFusion()
1950 mdg->removeNode(sibNode->id); in updateStateAfterSiblingFusion()