Skip to documentation
SLOP

tiny.choir.ir

Reference tiny.choir ir

Defined in tiny.choir.

API (108)

Actions

Public operations.

Types and contracts

Public types and contracts.

Namespaces

Public namespaces.

Values and defaults

Public values and defaults.

No direct callersNo direct callstiny.choirir
Static calls · unresolved targets: unknown · external targets: unknown.

Source

Source: lib/choir/src/core/mapping.zig:6

zig
pub const Mapping = struct {    allocator: std.mem.Allocator,    values: std.AutoHashMapUnmanaged(*const Value, *Value) = .{},    blocks: std.AutoHashMapUnmanaged(*const Block, *Block) = .{},    operations: std.AutoHashMapUnmanaged(*const Operation, *Operation) = .{},    pub fn init(allocator: std.mem.Allocator) Mapping {        return .{ .allocator = allocator };    }    pub fn deinit(self: *Mapping) void {        self.values.deinit(self.allocator);        self.blocks.deinit(self.allocator);        self.operations.deinit(self.allocator);    }    pub fn mapValue(self: *Mapping, source: *const Value, dest: *Value) !void {        try self.values.put(self.allocator, source, dest);    }    pub fn lookupValue(self: *const Mapping, source: *const Value) ?*Value {        return self.values.get(source);    }    pub fn lookupOrDefaultValue(self: *const Mapping, source: *Value) *Value {        return self.lookupValue(source) orelse source;    }    pub fn mapBlock(self: *Mapping, source: *const Block, dest: *Block) !void {        try self.blocks.put(self.allocator, source, dest);    }    pub fn lookupBlock(self: *const Mapping, source: *const Block) ?*Block {        return self.blocks.get(source);    }    pub fn lookupOrDefaultBlock(self: *const Mapping, source: *Block) *Block {        return self.lookupBlock(source) orelse source;    }    pub fn mapOperation(self: *Mapping, source: *const Operation, dest: *Operation) !void {        try self.operations.put(self.allocator, source, dest);    }    pub fn lookupOperation(self: *const Mapping, source: *const Operation) ?*Operation {        return self.operations.get(source);    }    pub fn lookupOrDefaultOperation(self: *const Mapping, source: *Operation) *Operation {        return self.lookupOperation(source) orelse source;    }};

Source: lib/choir/src/core/operation/storage.zig:21

zig
pub const Storage = struct {    pub const claim: alloc_phase.capacity.Declaration = .{        .source = .{            .id = "choir.operation_fixed_storage",            .kind = .phase_static,            .limit_source = .caller,            .storage = .{                .covered = &.{                    .{                        .id = "one_exact_operation_header_with_context_tracking_li_8dbfeaab8a9b",                        .lifetime = .steady,                        .detail = "one exact Operation header with context tracking links and initial structural region",                    },                    .{                        .id = "initial_operand_values_result_types_use_records_val_dfde1e9abc4c",                        .lifetime = .steady,                        .detail = "initial operand values, result types, use records, values, regions, and successors",                    },                    .{                        .id = "exact_registered_property_bytes_embedded_in_the_str_4e71d9c026ef",                        .lifetime = .steady,                        .detail = "exact registered property bytes embedded in the structural region",                    },                },                .excluded = &.{                    "attributes, nested property allocations, blocks, and region contents",                    "later operand and successor replacement spill storage",                    "profiling instrumentation and allocator implementation state",                },            },            .capacity = .{                .inputs = &.{},                .type_selectors = &.{},                .nodes = &.{                    .{ .constant = 0 },                },                .assertions = &.{.{                    .scope = .closure_total,                    .measure = .retained,                    .relation = .exact,                    .expression = 0,                }},            },            .overload = .{                .kind = .reject_before_seal,                .detail = "capacity arithmetic or allocation failure returns before the Operation header is initialized or storage is sealed",            },            .risks = .{                .transitive = .{                    .status = .open,                    .detail = "the parent mutable Operation retains allocator authority for explicitly excluded attributes, nested owners, and later spills",                },                .foreign = .{                    .status = .open,                    .detail = "dialect property hooks may traverse state outside the embedded property byte region",                },            },            .obligations = &.{                .{ .key = "choir_operation_storage_capacity", .role = .capacity_model },                .{ .key = "choir_operation_storage_acquisition", .role = .custom },                .{ .key = "choir_operation_storage_boundary", .role = .overload },                .{ .key = "choir_operation_storage_oom", .role = .overload },                .{ .key = "choir_operation_storage_integration", .role = .custom },                .{ .key = "choir_operation_tracking_static", .role = .custom },                .{ .key = "choir_operation_storage_spill", .role = .custom },            },        },        .bindings = .{            .owner = @This(),            .seal = .{                .family = alloc_phase.capacity.selector(@This().activate),                .premise = .{                    .class = .checked_semantic_fact,                    .authority = .checker,                },            },            .teardown = .{                .family = alloc_phase.capacity.selector(@This().deinit),                .premise = .{                    .class = .checked_semantic_fact,                    .authority = .checker,                },            },        },    };    pub const Segment = struct {        count: usize,        element_bytes: usize,        alignment: std.mem.Alignment,    };    pub const Limits = struct {        segments: [segment_count]Segment,    };    pub const Capacity = struct {        total_bytes: usize,        allocation_alignment: std.mem.Alignment,        pub fn derive(limits: Limits) error{CapacityOverflow}!Capacity {            var cursor: usize = 0;            var alignment: usize = 1;            for (limits.segments) |segment| {                const bytes = std.math.mul(                    usize,                    segment.count,                    segment.element_bytes,                ) catch return error.CapacityOverflow;                _ = try placeBytes(                    bytes,                    segment.alignment.toByteUnits(),                    &cursor,                    &alignment,                );            }            return .{                .total_bytes = cursor,                .allocation_alignment = .fromByteUnits(alignment),            };        }    };    phase: alloc_phase.capacity.Phase,    capacity: Capacity,    bytes: [*]u8,    pub fn init(allocator: Allocator, limits: Limits) !Storage {        const capacity = try Capacity.derive(limits);        const bytes = allocator.rawAlloc(            capacity.total_bytes,            capacity.allocation_alignment,            @returnAddress(),        ) orelse return error.OutOfMemory;        return .{            .phase = .initialization,            .capacity = capacity,            .bytes = bytes,        };    }    pub fn activate(self: *Storage) void {        std.debug.assert(self.phase == .initialization);        self.phase = .steady;    }    pub fn status(self: *const Storage) alloc_phase.capacity.Phase {        return self.phase;    }    pub fn deinit(self: *Storage, allocator: Allocator) void {        std.debug.assert(self.phase != .teardown);        self.phase = .teardown;        var handle = self.storageHandle();        handle.deinit(allocator);        self.* = undefined;    }    fn storageHandle(self: *const Storage) Handle {        return .{            .bytes = self.bytes,            .len = self.capacity.total_bytes,            .alignment = self.capacity.allocation_alignment,        };    }};

Source: lib/choir/src/core/value.zig:214

zig
pub const OpOperand = struct {    value: *Value,    owner: *anyopaque,    operand_number: u32,    operand_value_slot: ?**Value,    next_use: ?*OpOperand,    back: ?*?*OpOperand = null,    pub fn attach(self: *OpOperand) void {        self.value.addUse(self);    }    pub fn detach(self: *OpOperand) void {        const back = self.back orelse return;        back.* = self.next_use;        if (self.next_use) |next| {            next.back = back;        }        self.back = null;        self.next_use = null;    }    pub fn setValue(self: *OpOperand, new_value: *Value) void {        if (self.value == new_value) return;        self.detach();        self.value = new_value;        self.attach();        if (self.operand_value_slot) |slot| {            slot.* = new_value;        }    }};
Called byCallsNo direct callstest sourcelib.choir.src.core.mappingtest: mapping stores value block and ...private sourcelib.choir.src.core.operation.lifecycleMethodstest sourcelib.choir.src.core.testtest: operation clone records source ...test sourcelib.choir.src.core.testtest: region cloneInto remaps blocks ...ir.Mappingdeinit
Static calls · unresolved targets: 0 · external targets: 1.
Called byCallsNo direct callstest sourcelib.choir.src.core.mappingtest: mapping stores value block and ...private sourcelib.choir.src.core.operation.lifecycleMethodstest sourcelib.choir.src.core.testtest: operation clone records source ...test sourcelib.choir.src.core.testtest: region cloneInto remaps blocks ...ir.Mappinginit
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callsir.MappinglookupOrDefaultBlocktest sourcelib.choir.src.core.mappingtest: mapping stores value block and ...test sourcelib.choir.src.core.testtest: region cloneInto remaps blocks ...ir.MappinglookupBlock
Static calls · unresolved targets: 1 · external targets: 0.
Called byCallsNo direct callsir.MappinglookupOrDefaultOperationtest sourcelib.choir.src.core.mappingtest: mapping stores value block and ...test sourcelib.choir.src.core.testtest: operation clone records source ...test sourcelib.choir.src.core.testtest: region cloneInto remaps blocks ...ir.MappinglookupOperation
Static calls · unresolved targets: 1 · external targets: 0.
Called byCallstest sourcelib.choir.src.core.mappingtest: mapping stores value block and ...private sourcelib.choir.src.core.operation.lifecycleMethodsir.MappinglookupBlockir.MappinglookupOrDefaultBlock
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallstest sourcelib.choir.src.core.mappingtest: mapping stores value block and ...test sourcelib.choir.src.core.testtest: operation clone records source ...ir.MappinglookupOperationir.MappinglookupOrDefaultOperation
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallstest sourcelib.choir.src.core.mappingtest: mapping stores value block and ...private sourcelib.choir.src.core.operation.lifecycleMethodsir.MappinglookupValueir.MappinglookupOrDefaultValue
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callsir.MappinglookupOrDefaultValuetest sourcelib.choir.src.core.mappingtest: mapping stores value block and ...test sourcelib.choir.src.core.testtest: region cloneInto remaps blocks ...ir.MappinglookupValue
Static calls · unresolved targets: 1 · external targets: 0.
Called byCallsNo direct callstest sourcelib.choir.src.core.mappingtest: mapping stores value block and ...ir.MappingmapBlock
Static calls · unresolved targets: 1 · external targets: 0.
Called byCallsNo direct callstest sourcelib.choir.src.core.mappingtest: mapping stores value block and ...private sourcelib.choir.src.core.operation.lifecycleMethodsir.MappingmapOperation
Static calls · unresolved targets: 1 · external targets: 0.
Called byCallsNo direct callstest sourcelib.choir.src.core.mappingtest: mapping stores value block and ...private sourcelib.choir.src.core.operation.lifecycleMethodsir.MappingmapValue
Static calls · unresolved targets: 1 · external targets: 0.
Called byCallsprivate sourcelib.choir.src.core.operation.storagePairprivate sourcelib.choir.src.core.operation.storagePlanir.OperationFixedStorageinitprivate sourcelib.choir.src.core.operation.storageplaceBytesir.OperationFixedStorage.Capacityderive
Static calls · unresolved targets: 0 · external targets: 1.
Called byCallsprivate sourcelib.choir.src.core.operation.storagePlanprivate sourcelib.choir.src.core.operation.storage.StoragestorageHandleir.OperationFixedStoragedeinit
Static calls · unresolved targets: 0 · external targets: 1.
Called byCallsprivate sourcelib.choir.src.core.operation.storagePlanir.OperationFixedStorage.Capacityderiveprivate sourcelib.deadalloc.src.allocatorrawAllocir.OperationFixedStorageinit
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsir.OpOperandsetValueValueaddUseir.OpOperandattach
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callsir.OpOperandsetValueir.OpOperanddetach
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsNo direct callersir.OpOperandattachir.OpOperanddetachir.OpOperandsetValue
Static calls · unresolved targets: 0 · external targets: 0.

Source: lib/choir/src/core/root.zig

zig
pub const Type = @import("type.zig").Type;pub const attribute = @import("attribute.zig");pub const Attribute = attribute.Attribute;pub const NamedAttribute = attribute.NamedAttribute;pub const NamedAttributeList = attribute.NamedAttributeList;pub const builtin_attr_names = attribute.builtin_attr_names;pub const Value = @import("value.zig").Value;pub const OpOperand = @import("value.zig").OpOperand;pub const Mapping = @import("mapping.zig").Mapping;pub const cfg = @import("cfg.zig");pub const Operation = @import("operation/root.zig").Operation;pub const WalkOrder = Operation.WalkOrder;pub const WalkResult = Operation.WalkResult;pub const WalkOptions = Operation.WalkOptions;pub const equivalence = @import("equivalence.zig");pub const OperationEquivalence = equivalence.OperationEquivalence;pub const OperationBuilder = @import("builder.zig").OperationBuilder;pub const ops = @import("ops.zig");pub const Block = @import("block.zig").Block;pub const Region = @import("region.zig").Region;pub const Location = @import("location.zig").Location;pub const context = @import("context/root.zig");pub const Context = context.Context;pub const Dialect = context.Dialect;pub const symbols = @import("symbols.zig");pub const SymbolTable = symbols.SymbolTable;pub const SymbolTableError = symbols.SymbolTableError;pub const SymbolUse = symbols.SymbolUse;pub const SymbolUseRange = symbols.SymbolUseRange;pub const SymbolUserMap = symbols.SymbolUserMap;pub const format = @import("format.zig");pub const dump = @import("dump.zig");pub const parse = @import("parse.zig");pub const inspection = @import("inspection.zig");pub const traits = @import("traits.zig");pub const dialects = @import("dialects/root.zig");pub const types = @import("types.zig");pub const attrs = @import("attrs.zig");pub const threading = @import("threading.zig");pub const ThreadingOptions = threading.Options;pub const ThreadingExecutionState = threading.ExecutionState;pub const ThreadingExecutionGuard = threading.ExecutionGuard;pub const verify = @import("verify.zig");pub const VerifyError = verify.VerifyError;pub const VerifyOptions = verify.VerifyOptions;pub const VerifyOpInterface = verify.VerifyOpInterface;pub const VerifyRegionOpInterface = verify.VerifyRegionOpInterface;pub const verifyOperation = verify.verifyOperation;pub const verifyBlock = verify.verifyBlock;pub const verifyRegion = verify.verifyRegion;pub const verifyOperationStructure = verify.verifyOperationStructure;pub const verifyBlockStructure = verify.verifyBlockStructure;pub const verifyRegionStructure = verify.verifyRegionStructure;pub const verifyRegisteredOperationShape = verify.verifyRegisteredOperationShape;pub const verifyRegisteredOperationRequiredAttributes = verify.verifyRegisteredOperationRequiredAttributes;pub const verifyRegisteredOperationTypeConstraints = verify.verifyRegisteredOperationTypeConstraints;pub const verifyValue = verify.verifyValue;pub const regionKind = verify.regionKind;pub const regionMayHaveSSADominance = verify.regionMayHaveSSADominance;pub const interfaces = @import("interfaces/root.zig");pub const InterfaceId = interfaces.InterfaceId;pub const InterfaceEntry = interfaces.InterfaceEntry;pub const OperationTraits = interfaces.OperationTraits;pub const RegionKind = interfaces.RegionKind;pub const RegionKindInterface = interfaces.RegionKindInterface;pub const CountRange = interfaces.CountRange;pub const OperationShape = interfaces.OperationShape;pub const OperationTypeConstraint = interfaces.OperationTypeConstraint;pub const TraitId = interfaces.TraitId;pub const OperationInfo = interfaces.OperationInfo;pub const OperationPropertiesModel = interfaces.OperationPropertiesModel;pub const singleAttributePropertiesModel = interfaces.singleAttributePropertiesModel;pub const OperationRegistry = interfaces.OperationRegistry;pub const TypeInfo = interfaces.TypeInfo;pub const TypeRegistry = interfaces.TypeRegistry;pub const AttributeRegistry = interfaces.AttributeRegistry;pub const TraitEntry = interfaces.TraitEntry;pub const TraitRegistry = interfaces.TraitRegistry;pub const TraitVTable = interfaces.TraitVTable;pub const interfaceId = interfaces.interfaceId;pub const interfaceIdRuntime = interfaces.interfaceIdRuntime;pub const traitId = interfaces.traitId;pub const traitIdRuntime = interfaces.traitIdRuntime;pub const OperationFixedStorage = @import("operation/root.zig").OperationFixedStorage;pub const rewrite = @import("rewrite/root.zig");

Source: lib/choir/src/root.zig:13

zig
pub const ir = @import("core/root.zig");

Also reachable as

backends.wasm.emission.module_encoding.common.ir.

Audit

Definitions27
Public names54
Members19
Version26.7.0
Revisiondaab053ee433