Skip to documentation
SLOP

tiny.choir.backends.gpu.registration

Reference tiny.choir backends gpu registration

Defined in backends.gpu.

API (4)

Actions

Public operations.

Values and defaults

Public values and defaults.

No direct callersNo direct callsbackends.gpuregistration
Static calls · unresolved targets: unknown · external targets: unknown.

Source

Called byCallsprivate sourcelib.choir.src.backends.gpu.cpu.test.Loweredinittest sourcelib.choir.src.backends.gpu.cpu.testtest: host loop lowering rejects a pa...private sourcelib.choir.src.backends.gpu.fixture.textemitTextprivate sourcelib.choir.src.backends.gpu.metal.testemitStagesprivate sourcelib.choir.src.backends.gpu.spirv.emitter.testemitFixture+3 morebackends.gpu.registrationregisterTargetDialectsbackends.gpu.registrationprepareCompilationDialects
Static calls · unresolved targets: 0 · external targets: 2.
Called byCallsNo direct callsbackends.gpu.registrationprepareCompilationDialectstest sourcelib.choir.src.backends.gpu.registrationtest: registerTargetDialects is idemp...backends.gpu.registrationregisterTargetDialects
Static calls · unresolved targets: 0 · external targets: 2.

Source: lib/choir/src/backends/gpu/registration.zig

zig
const std = @import("std");const choir = @import("../../root.zig");const gpu = @import("../../dialects/gpu/root.zig");const spirv = @import("spirv/root.zig");const nvptx = @import("nvptx/root.zig");const lowering = @import("lowering.zig");fn loadGpuDialect(ctx: *choir.ir.Context) !void {    try choir.ir.dialects.loadDialectSpec(ctx, gpu.GpuDialect.spec);}fn loadSpirvDialect(ctx: *choir.ir.Context) !void {    try choir.ir.dialects.loadDialectSpec(ctx, spirv.SpirvDialect.spec);}fn loadNvptxDialect(ctx: *choir.ir.Context) !void {    try choir.ir.dialects.loadDialectSpec(ctx, nvptx.NvptxDialect.spec);}pub const dialect_registrations = [_]choir.extensions.DialectRegistration{    .{ .name = "gpu", .load = loadGpuDialect },    .{ .name = "spirv", .load = loadSpirvDialect, .is_backend = true },    .{ .name = "nvptx", .load = loadNvptxDialect, .is_backend = true },};pub const package_extension = choir.extensions.PackageExtension{    .name = "choir-gpu",    .dialects = &dialect_registrations,    .passes = &lowering.pass_registrations,    .pipelines = &lowering.pipeline_registrations,};pub fn registerTargetDialects(ctx: *choir.ir.Context) !void {    for (dialect_registrations) |registration| {        ctx.registerDialectLoader(registration.name, registration.load) catch |err| switch (err) {            error.DuplicateDialectLoader => {},            else => return err,        };        if (registration.is_backend) try ctx.registerBackendDialect(registration.name);    }}/// Load the native compilation dialect closure before an owned program Context activates.pub fn prepareCompilationDialects(ctx: *choir.ir.Context) !void {    try choir.dialects.registerChoirDialect(ctx);    try registerTargetDialects(ctx);    inline for (.{ "builtin", "arith", "memref", "scf", "func" }) |name| {        _ = try ctx.getOrLoadDialect(name);    }    for (dialect_registrations) |registration| _ = try ctx.getOrLoadDialect(registration.name);}test "registerTargetDialects is idempotent for kernel contexts" {    const testing = std.testing;    var ctx = try choir.ir.Context.init(testing.allocator, choir.ir.Context.Limits.testing);    defer ctx.deinit(testing.allocator);    try registerTargetDialects(&ctx);    try registerTargetDialects(&ctx);    _ = try ctx.getOrLoadDialect("gpu");    _ = try ctx.getOrLoadDialect("spirv");    _ = try ctx.getOrLoadDialect("nvptx");    try testing.expect(ctx.isBackendDialect("spirv"));    try testing.expect(ctx.isBackendDialect("nvptx"));}

Source: lib/choir/src/backends/gpu/root.zig:10

zig
pub const registration = @import("registration.zig");

Complete caller list for backends.gpu.registration.prepareCompilationDialects

8 direct callers.

Audit

Definitions5
Public names9
Members0
Version26.7.0
Revisiondaab053ee433