From 739108c9f00b0f2532cb9bc3794f4ce1de821ab1 Mon Sep 17 00:00:00 2001 From: Ali Chraghi Date: Fri, 2 Feb 2024 17:48:16 +0330 Subject: [PATCH] spirv: support enum integer values in Assembler --- src/codegen/spirv/Assembler.zig | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/codegen/spirv/Assembler.zig b/src/codegen/spirv/Assembler.zig index 87e18d4bd8..7cecd7ee38 100644 --- a/src/codegen/spirv/Assembler.zig +++ b/src/codegen/spirv/Assembler.zig @@ -591,9 +591,13 @@ fn parseValueEnum(self: *Assembler, kind: spec.OperandKind) !void { try self.expectToken(.value); const text = self.tokenText(tok); + const int_value = std.fmt.parseInt(u32, text, 0) catch null; const enumerant = for (kind.enumerants()) |enumerant| { - if (std.mem.eql(u8, enumerant.name, text)) - break enumerant; + if (int_value) |v| { + if (v == enumerant.value) break enumerant; + } else { + if (std.mem.eql(u8, enumerant.name, text)) break enumerant; + } } else { return self.fail(tok.start, "'{s}' is not a valid value for enumeration {s}", .{ text, @tagName(kind) }); };