lib/choir/src/backends/gpu/spirv/emitter/emit.zig
daab053ee43316e1809a84551d573ddd1e5bf3d2
1 const std = @import("std");
2 const choir = @import("../../../../root.zig");
3
4 const ir = choir.ir;
5 const codegen = @import("codegen.zig");
6
7 pub const Emitter = struct {
8 codegen: codegen.SpirvCodegen,
9
10 pub fn init(allocator: std.mem.Allocator) Emitter {
11 return .{ .codegen = codegen.SpirvCodegen.init(allocator) };
12 }
13
14 pub fn deinit(self: *Emitter) void {
15 self.codegen.deinit();
16 }
17
18 pub fn setFloatControls(self: *Emitter, controls: codegen.FloatControls) void {
19 self.codegen.float_controls = controls;
20 }
21
22 pub fn emitModuleBytes(self: *Emitter, module: *ir.Operation) codegen.SpirvCodegenError![]u8 {
23 return self.codegen.emitModuleBytes(module);
24 }
25
26 pub fn emitModuleWords(self: *Emitter, module: *ir.Operation) codegen.SpirvCodegenError![]u32 {
27 return self.codegen.emitModuleWords(module);
28 }
29 };
30
31 test {
32 const std_testing = std.testing;
33 std_testing.refAllDecls(@This());
34 }