tiny.choir.ir.rewrite.DialectCanonicalizationInterface
Defined in ir.rewrite.
API (6)
Actions
Public operations.
Types and contracts
Public types and contracts.
Values and defaults
Public values and defaults.
Source
Source: lib/choir/src/core/rewrite/canonicalization.zig:8
zig
pub const DialectCanonicalizationInterface = struct { pub const interface_name = "choir.pass.dialect_canonicalization"; pub const id: ir.InterfaceId = ir.interfaceId(interface_name); pub const VTable = struct { patterns: []const rewrite.RewritePattern, }; fn entry(vtable: *const VTable) ir.InterfaceEntry { return .{ .id = id, .vtable = vtable }; } pub fn vtableFor( comptime dialect_name: []const u8, comptime patterns: []const rewrite.RewritePattern, ) *const VTable { for (patterns, 0..) |pattern, index| { const separator = std.mem.indexOfScalar(u8, pattern.spec.root_op_name, '.') orelse @compileError("dialect canonicalization pattern root requires a dialect namespace"); if (!std.mem.eql(u8, pattern.spec.root_op_name[0..separator], dialect_name)) { @compileError("dialect canonicalization pattern root must belong to its dialect"); } if (pattern.spec.benefit <= builtin_pattern_benefit or pattern.spec.benefit >= fold_pattern_benefit) { @compileError("dialect canonicalization pattern benefit must remain between builtin and fold tiers"); } for (patterns[0..index]) |previous| { if (!std.mem.eql(u8, previous.spec.root_op_name, pattern.spec.root_op_name)) continue; if (previous.spec.benefit < pattern.spec.benefit) { @compileError("dialect canonicalization patterns must descend by benefit per root"); } } } return &.{ .patterns = patterns }; } pub fn entryFor( comptime dialect_name: []const u8, comptime patterns: []const rewrite.RewritePattern, ) ir.InterfaceEntry { return entry(vtableFor(dialect_name, patterns)); } pub fn fromOpaque(ptr: *const anyopaque) *const VTable { return @ptrCast(@alignCast(ptr)); }};Source: lib/choir/src/core/rewrite/root.zig:24
zig
pub const DialectCanonicalizationInterface = canonicalization_mod.DialectCanonicalizationInterface;Also reachable as
backends.wasm.emission.module_encoding.common.ir.rewrite.DialectCanonicalizationInterface.
Audit
| Definitions | 7 |
|---|---|
| Public names | 14 |
| Members | 1 |
| Version | 26.7.0 |
| Revision | daab053ee433 |