Choose the first we see in the grammar file as the main one. This is
needed to parse SPIR-V 1.4 because it introduced opcode aliases.
Reviewed-by: Karol Herbst <kherbst@redhat.com>
return (kind, values)
def collect_opcodes(spirv):
+ seen = set()
values = []
for x in spirv["instructions"]:
+ # Handle aliases by choosing the first one in the grammar.
+ # E.g. OpDecorateString and OpDecorateStringGOOGLE share same opcode.
+ if x["opcode"] in seen:
+ continue
+ opcode = x["opcode"]
name = x["opname"]
assert name.startswith("Op")
values.append(name[2:])
+ seen.add(opcode)
return ("Op", values)