Skip to documentation
SLOP

tiny.choir.ir.dialects.segments

Reference tiny.choir ir dialects segments

Defined in ir.dialects.

API (5)

Actions

Public operations.

Values and defaults

Public values and defaults.

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

Source

Source: lib/choir/src/core/dialects/spec.zig:844

zig
pub const segments = struct {    pub const operand_attribute_name = "operand_segment_sizes";    pub const result_attribute_name = "result_segment_sizes";    pub fn operands(comptime values: anytype) interfaces.OperationSegmentSpec {        return sized(operand_attribute_name, values);    }    pub fn results(comptime values: anytype) interfaces.OperationSegmentSpec {        return sized(result_attribute_name, values);    }    pub fn sized(comptime attribute_name: []const u8, comptime values: anytype) interfaces.OperationSegmentSpec {        if (attribute_name.len == 0) @compileError("operation segment attribute name cannot be empty");        const segment_ranges = ranges(values);        if (segment_ranges.len == 0) @compileError("operation segment declaration cannot be empty");        return .{            .attribute_name = attribute_name,            .segments = segment_ranges,        };    }    fn ranges(comptime values: anytype) []const interfaces.CountRange {        const Values = @TypeOf(values);        if (Values == []const interfaces.CountRange) return values;        return switch (@typeInfo(Values)) {            .pointer => |pointer_info| switch (pointer_info.size) {                .one => switch (@typeInfo(pointer_info.child)) {                    .array => rangesFromArray(values.*),                    .@"struct" => |struct_info| blk: {                        if (!struct_info.is_tuple) @compileError("operation segment values must be a comptime slice, array, or tuple");                        break :blk rangesFromTuple(values.*);                    },                    else => @compileError("operation segment values must be a comptime slice, array, or tuple"),                },                .slice => rangesFromSlice(values),                else => @compileError("operation segment values must be a comptime slice, array, or tuple"),            },            .array => rangesFromArray(values),            .@"struct" => |struct_info| blk: {                if (!struct_info.is_tuple) @compileError("operation segment values must be a comptime slice, array, or tuple");                break :blk rangesFromTuple(values);            },            else => @compileError("operation segment values must be a comptime slice, array, or tuple"),        };    }    fn rangesFromSlice(comptime values: anytype) []const interfaces.CountRange {        const value = comptime blk: {            var out: [values.len]interfaces.CountRange = undefined;            for (values, 0..) |segment, index| {                out[index] = shape.range(segment);            }            break :blk out;        };        return &value;    }    fn rangesFromArray(comptime values: anytype) []const interfaces.CountRange {        const value = comptime blk: {            var out: [values.len]interfaces.CountRange = undefined;            for (values, 0..) |segment, index| {                out[index] = shape.range(segment);            }            break :blk out;        };        return &value;    }    fn rangesFromTuple(comptime values: anytype) []const interfaces.CountRange {        const struct_info = @typeInfo(@TypeOf(values)).@"struct";        const value = comptime blk: {            var out: [struct_info.field_names.len]interfaces.CountRange = undefined;            for (struct_info.field_names, 0..) |name, index| {                out[index] = shape.range(@field(values, name));            }            break :blk out;        };        return &value;    }};

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

zig
pub const segments = spec.segments;
Called byCallstest sourcelib.choir.src.core.dialects.spectest: operationTemplate explicit leaf...test sourcelib.choir.src.core.dialects.spectest: operationTemplate generates una...test sourcelib.choir.src.core.dialects.spectest: operation descriptor DSL export...test sourcelib.choir.src.core.dialects.spectest: operation segment helpers set a...ir.dialects.segmentssizedir.dialects.segmentsoperands
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallstest sourcelib.choir.src.core.dialects.spectest: operationTemplate explicit leaf...test sourcelib.choir.src.core.dialects.spectest: operation descriptor DSL export...test sourcelib.choir.src.core.dialects.spectest: operation segment helpers set a...private; no linktools.smg.src.help.click.top.explorewriteir.dialects.segmentssizedir.dialects.segmentsresults
Static calls · unresolved targets: 0 · external targets: 0.
Called byCallsir.dialects.segmentsoperandsir.dialects.segmentsresultsprivate sourcelib.choir.src.core.dialects.spec.segmentsrangesir.dialects.segmentssized
Static calls · unresolved targets: 0 · external targets: 0.

Also reachable as

backends.wasm.emission.module_encoding.common.ir.dialects.segments.

Audit

Definitions6
Public names12
Members0
Version26.7.0
Revisiondaab053ee433