Skip to documentation
SLOP

tiny.choir.ir.rewrite.DialectCanonicalizationInterface

Reference 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.

No direct callersNo direct callsir.rewriteDialectCanonicalizationInterface
Static calls · unresolved targets: unknown · external targets: unknown.

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;
Called byCallsNo direct callersprivate sourcelib.choir.src.core.rewrite.canonicalization.D...entryir.rewrite.DialectCanonicalizationInterfacevtableForir.rewrite.DialectCanonicalizationInterfaceentryFor
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callsir.rewrite.DialectCanonicalizationInterfaceentryForir.rewrite.DialectCanonicalizationInterfacevtableFor
Static calls · unresolved targets: 0 · external targets: 0.

Also reachable as

backends.wasm.emission.module_encoding.common.ir.rewrite.DialectCanonicalizationInterface.

Audit

Definitions7
Public names14
Members1
Version26.7.0
Revisiondaab053ee433