23struct VirtualRegisterConstantifier :
public OpReduction<VirtualRegisterOp> {
24 LogicalResult
rewrite(VirtualRegisterOp op)
override {
25 if (op.getAllowedRegs().getAllowedRegs().empty())
28 OpBuilder builder(op);
29 auto constReg = ConstantOp::create(builder, op.getLoc(),
30 op.getAllowedRegs().getAllowedRegs()[0]);
31 op.getResult().replaceAllUsesWith(constReg);
36 std::string
getName()
const override {
37 return "rtg-virtual-register-constantifier";
47void RTGReducePatternDialectInterface::populateReducePatterns(
54 patterns.add<VirtualRegisterConstantifier, 2>();
57void rtg::registerReducePatternDialectInterface(
58 mlir::DialectRegistry ®istry) {
59 registry.addExtension(+[](MLIRContext *ctx, RTGDialect *dialect) {
The InstanceGraph op interface, see InstanceGraphInterface.td for more details.
A reduction pattern for a specific operation.
virtual LogicalResult rewrite(OpTy op)
virtual std::string getName() const =0
Return a human-readable name for this reduction pattern.
A dialect interface to provide reduction patterns to a reducer tool.