[Mlir-commits] [mlir] [mlir][SCF] Bufferize scf.index_switch (PR #67666)
Martin Erhart
llvmlistbot at llvm.org
Thu Sep 28 06:12:13 PDT 2023
================
@@ -295,6 +295,117 @@ struct IfOpInterface
}
};
+/// Bufferization of scf.index_switch. Replace with a new scf.index_switch that
+/// yields memrefs.
+struct IndexSwitchOpInterface
+ : public BufferizableOpInterface::ExternalModel<IndexSwitchOpInterface,
+ scf::IndexSwitchOp> {
+ AliasingOpOperandList
+ getAliasingOpOperands(Operation *op, Value value,
+ const AnalysisState &state) const {
+ // IndexSwitchOps do not have tensor OpOperands. The yielded value can be
+ // any SSA. This is similar to IfOps.
+ auto switchOp = cast<scf::IndexSwitchOp>(op);
+ int64_t resultNum = cast<OpResult>(value).getResultNumber();
+ AliasingOpOperandList result;
+ for (int64_t i = 0, numCases = switchOp.getNumCases(); i < numCases; ++i) {
+ auto yieldOp =
+ cast<scf::YieldOp>(switchOp.getCaseBlock(i).getTerminator());
+ result.addAlias(AliasingOpOperand(&yieldOp->getOpOperand(resultNum),
+ BufferRelation::Equivalent,
+ /*isDefinite=*/false));
+ }
----------------
maerhart wrote:
Don't we have to consider the default region as well?
https://github.com/llvm/llvm-project/pull/67666
More information about the Mlir-commits
mailing list