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:
parent
810b95e02c
commit
4b474e2e8a
|
@ -46,11 +46,18 @@ def collect_data(spirv, kind):
|
||||||
return (kind, values)
|
return (kind, values)
|
||||||
|
|
||||||
def collect_opcodes(spirv):
|
def collect_opcodes(spirv):
|
||||||
|
seen = set()
|
||||||
values = []
|
values = []
|
||||||
for x in spirv["instructions"]:
|
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"]
|
name = x["opname"]
|
||||||
assert name.startswith("Op")
|
assert name.startswith("Op")
|
||||||
values.append(name[2:])
|
values.append(name[2:])
|
||||||
|
seen.add(opcode)
|
||||||
|
|
||||||
return ("Op", values)
|
return ("Op", values)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue