authorgravatar for alichraghi@proton.meAli Chraghi <alichraghi@proton.me> 2024-02-02 17:48:16+03:30
committergravatar for alichraghi@proton.meAli Chraghi <alichraghi@proton.me> 2024-02-05 11:55:14+03:30
log739108c9f00b0f2532cb9bc3794f4ce1de821ab1
tree590de5905618e12f9fb2e097df8f925dd01691c6
parentb41aad019364b2c99934339d70aa4f37d945f248

spirv: support enum integer values in Assembler


1 files changed, 6 insertions(+), 2 deletions(-)

src/codegen/spirv/Assembler.zig+6-2
......@@ -591,9 +591,13 @@ fn parseValueEnum(self: *Assembler, kind: spec.OperandKind) !void {
591591 try self.expectToken(.value);
592592
593593 const text = self.tokenText(tok);
594 const int_value = std.fmt.parseInt(u32, text, 0) catch null;
594595 const enumerant = for (kind.enumerants()) |enumerant| {
595 if (std.mem.eql(u8, enumerant.name, text))
596 break enumerant;
596 if (int_value) |v| {
597 if (v == enumerant.value) break enumerant;
598 } else {
599 if (std.mem.eql(u8, enumerant.name, text)) break enumerant;
600 }
597601 } else {
598602 return self.fail(tok.start, "'{s}' is not a valid value for enumeration {s}", .{ text, @tagName(kind) });
599603 };