spirv: Handle instruction aliases in spirv_info_c.py

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>
This commit is contained in:
Caio Marcelo de Oliveira Filho 2019-04-03 12:45:22 -07:00
parent 810b95e02c
commit 4b474e2e8a
1 changed files with 7 additions and 0 deletions

View File

@ -46,11 +46,18 @@ def collect_data(spirv, kind):
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)