Skip to content

Commit 164ef95

Browse files
spirv: enhance assembler to support OpTypeArray
1 parent 31e46be commit 164ef95

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

src/codegen/spirv/Assembler.zig

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -366,10 +366,18 @@ fn processTypeInstruction(self: *Assembler) !AsmValue {
366366
const child_type = try self.resolveRefId(operands[1].ref_id);
367367
break :blk try self.spv.vectorType(operands[2].literal32, child_type);
368368
},
369-
.OpTypeArray => {
369+
.OpTypeArray => blk: {
370370
// TODO: The length of an OpTypeArray is determined by a constant (which may be a spec constant),
371371
// and so some consideration must be taken when entering this in the type system.
372-
return self.todo("process OpTypeArray", .{});
372+
const element_type = try self.resolveRefId(operands[1].ref_id);
373+
const length = try self.resolveRefId(operands[2].ref_id);
374+
const result_id = self.spv.allocId();
375+
try section.emit(self.spv.gpa, .OpTypeArray, .{
376+
.id_result = result_id,
377+
.element_type = element_type,
378+
.length = length,
379+
});
380+
break :blk result_id;
373381
},
374382
.OpTypeRuntimeArray => blk: {
375383
const element_type = try self.resolveRefId(operands[1].ref_id);

0 commit comments

Comments
 (0)