nir: save IO semantics in lowered IO intrinsics
[mesa.git] / src / compiler / nir / nir_intrinsics_c.py
index 4410bc63462e3d223c9ac295a87124e3e5ade528..3043ffe93d13d55ea7a4df7f9f6e784728e32ba8 100644 (file)
@@ -1,3 +1,5 @@
+from functools import reduce
+import operator
 
 template = """\
 /* Copyright (C) 2018 Red Hat
@@ -25,7 +27,7 @@ template = """\
 #include "nir.h"
 
 const nir_intrinsic_info nir_intrinsic_infos[nir_num_intrinsics] = {
-% for name, opcode in sorted(INTR_OPCODES.iteritems()):
+% for name, opcode in sorted(INTR_OPCODES.items()):
 {
    .name = "${name}",
    .num_srcs = ${opcode.num_srcs},
@@ -36,7 +38,7 @@ const nir_intrinsic_info nir_intrinsic_infos[nir_num_intrinsics] = {
 % endif
    .has_dest = ${"true" if opcode.has_dest else "false"},
    .dest_components = ${max(opcode.dest_components, 0)},
-   .num_variables = ${opcode.num_variables},
+   .dest_bit_sizes = ${hex(reduce(operator.or_, opcode.bit_sizes, 0))},
    .num_indices = ${opcode.num_indices},
 % if opcode.indices:
    .index_map = {
@@ -65,7 +67,7 @@ def main():
 
     path = os.path.join(args.outdir, 'nir_intrinsics.c')
     with open(path, 'wb') as f:
-        f.write(Template(template).render(INTR_OPCODES=INTR_OPCODES))
+        f.write(Template(template, output_encoding='utf-8').render(INTR_OPCODES=INTR_OPCODES, reduce=reduce, operator=operator))
 
 if __name__ == '__main__':
     main()