26 LogicalResult matchAndRewrite(tosa::VariableOp op,
29 auto newVariable = mlir::ml_program::GlobalOp::create(
30 rewriter, op.getLoc(), op.getName(), variableType,
true,
31 op.getInitialValueAttr(),
nullptr);
32 newVariable.setPrivate();
33 rewriter.replaceOp(op, newVariable);
38 class VariableWriteOpConverter
43 LogicalResult matchAndRewrite(tosa::VariableWriteOp op,
45 auto globalSymbolRef =
47 auto newVariableWrite = ml_program::GlobalStoreOp::create(
48 rewriter, op.getLoc(), globalSymbolRef, op.getInput1());
49 rewriter.replaceOp(op, newVariableWrite);
54 class VariableReadOpConverter :
public OpRewritePattern<tosa::VariableReadOp> {
58 LogicalResult matchAndRewrite(tosa::VariableReadOp op,
60 auto globalSymbolRef =
62 auto newVariableRead = ml_program::GlobalLoadOp::create(
63 rewriter, op.getLoc(), op.getType(), globalSymbolRef);
64 rewriter.replaceOp(op, newVariableRead);
74 patterns->add<VariableOpConverter, VariableWriteOpConverter,
75 VariableReadOpConverter>(
patterns->getContext());
A special type of RewriterBase that coordinates the application of a rewrite pattern on the current I...
RankedTensorType getVariableType(VariableOp variableOp)
void populateTosaToMLProgramConversionPatterns(RewritePatternSet *patterns)
Include the generated interface declarations.
const FrozenRewritePatternSet & patterns
auto get(MLIRContext *context, Ts &&...params)
Helper method that injects context only if needed, this helps unify some of the attribute constructio...
OpRewritePattern is a wrapper around RewritePattern that allows for matching and rewriting against an...