lib/choir/src/eval/rewrite.zig

daab053ee43316e1809a84551d573ddd1e5bf3d2

 1 const std = @import("std");
 2 const ir = @import("../core/root.zig");
 3 const rewrite = ir.rewrite;
 4 
 5 pub const RewriteBuilder = struct {
 6     rewriter: rewrite.PatternRewriter,
 7     root: *ir.Operation,
 8 
 9     pub fn init(
10         allocator: std.mem.Allocator,
11         ctx: *ir.Context,
12         root: *ir.Operation,
13     ) RewriteBuilder {
14         return .{
15             .rewriter = rewrite.PatternRewriter.init(allocator, ctx),
16             .root = root,
17         };
18     }
19 
20     pub fn deinit(self: *RewriteBuilder) void {
21         self.rewriter.deinit();
22     }
23 
24     pub fn finalize(self: *RewriteBuilder) void {
25         self.rewriter.finalize(self.root);
26     }
27 
28     pub fn setInsertionPointBefore(self: *RewriteBuilder, op: *ir.Operation) void {
29         self.rewriter.setInsertionPointBefore(op);
30     }
31 
32     pub fn setInsertionPointAfter(self: *RewriteBuilder, op: *ir.Operation) void {
33         self.rewriter.setInsertionPointAfter(op);
34     }
35 
36     pub fn hasInsertionPoint(self: *const RewriteBuilder) bool {
37         return self.rewriter.hasInsertionPoint();
38     }
39 
40     pub fn create(self: *RewriteBuilder, state: ir.Operation.State) !*ir.Operation {
41         return self.rewriter.create(state);
42     }
43 
44     pub fn replaceOp(self: *RewriteBuilder, op: *ir.Operation, new_values: []const *ir.Value) !void {
45         try self.rewriter.replaceOp(op, new_values);
46     }
47 
48     pub fn replaceOpWithValue(self: *RewriteBuilder, op: *ir.Operation, new_value: *ir.Value) !void {
49         try self.rewriter.replaceOpWithValue(op, new_value);
50     }
51 
52     pub fn eraseOp(self: *RewriteBuilder, op: *ir.Operation) !void {
53         try self.rewriter.eraseOp(op);
54     }
55 
56     pub fn setAttr(self: *RewriteBuilder, op: *ir.Operation, key: []const u8, value: ir.Attribute) !void {
57         try self.rewriter.setAttr(op, key, value);
58     }
59 };