tiny.choir.ir.dialects.segments
Defined in ir.dialects.
API (5)
Actions
Public operations.
Values and defaults
Public values and defaults.
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;Also reachable as
backends.wasm.emission.module_encoding.common.ir.dialects.segments.
Audit
| Definitions | 6 |
|---|---|
| Public names | 12 |
| Members | 0 |
| Version | 26.7.0 |
| Revision | daab053ee433 |