Skip to content

Commit

Permalink
[mlir] Move supplemental patterns before op replacement (#66959)
Browse files Browse the repository at this point in the history
This moves the C++ code generated from supplemental patterns before op
replacement. It is necessary if the supllemental patterns need to access
the source op.
  • Loading branch information
jcai19 committed Sep 21, 2023
1 parent a1584dd commit 7421040
Showing 1 changed file with 14 additions and 11 deletions.
25 changes: 14 additions & 11 deletions mlir/tools/mlir-tblgen/RewriterGen.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1173,9 +1173,22 @@ void PatternEmitter::emitRewriteLogic() {
os << val << ";\n";
}

auto processSupplementalPatterns = [&]() {
int numSupplementalPatterns = pattern.getNumSupplementalPatterns();
for (int i = 0, offset = -numSupplementalPatterns;
i < numSupplementalPatterns; ++i) {
DagNode resultTree = pattern.getSupplementalPattern(i);
auto val = handleResultPattern(resultTree, offset++, 0);
if (resultTree.isNativeCodeCall() &&
resultTree.getNumReturnsOfNativeCode() == 0)
os << val << ";\n";
}
};

if (numExpectedResults == 0) {
assert(replStartIndex >= numResultPatterns &&
"invalid auxiliary vs. replacement pattern division!");
processSupplementalPatterns();
// No result to replace. Just erase the op.
os << "rewriter.eraseOp(op0);\n";
} else {
Expand All @@ -1197,20 +1210,10 @@ void PatternEmitter::emitRewriteLogic() {
" tblgen_repl_values.push_back(v);\n}\n",
"\n");
}
processSupplementalPatterns();
os << "\nrewriter.replaceOp(op0, tblgen_repl_values);\n";
}

// Process supplemtal patterns.
int numSupplementalPatterns = pattern.getNumSupplementalPatterns();
for (int i = 0, offset = -numSupplementalPatterns;
i < numSupplementalPatterns; ++i) {
DagNode resultTree = pattern.getSupplementalPattern(i);
auto val = handleResultPattern(resultTree, offset++, 0);
if (resultTree.isNativeCodeCall() &&
resultTree.getNumReturnsOfNativeCode() == 0)
os << val << ";\n";
}

LLVM_DEBUG(llvm::dbgs() << "--- done emitting rewrite logic ---\n");
}

Expand Down

0 comments on commit 7421040

Please sign in to comment.