return (kind, values)
+def collect_opcodes(spirv):
+ values = []
+ for x in spirv["instructions"]:
+ name = x["opname"]
+ assert name.startswith("Op")
+ values.append(name[2:])
+
+ return ("Op", values)
+
def parse_args():
p = argparse.ArgumentParser()
p.add_argument("json")
p.add_argument("out")
return p.parse_args()
-TEMPLATE = Template(COPYRIGHT + """\
+TEMPLATE = Template("""\
+/* DO NOT EDIT - This file is generated automatically by spirv_info_c.py script */
+
+""" + COPYRIGHT + """\
#include "spirv_info.h"
% for kind,values in info:
spirv_info = json.JSONDecoder().decode(open(pargs.json, "r").read())
- capabilities = collect_data(spirv_info, "Capability")
- decorations = collect_data(spirv_info, "Decoration")
+ info = [
+ collect_data(spirv_info, "Capability"),
+ collect_data(spirv_info, "Decoration"),
+ collect_opcodes(spirv_info),
+ ]
with open(pargs.out, 'w') as f:
- f.write(TEMPLATE.render(info=[capabilities, decorations]))
+ f.write(TEMPLATE.render(info=info))