Mesa (main): agx: Generate enums from Python

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Sat Jun 5 21:05:53 UTC 2021


Module: Mesa
Branch: main
Commit: cc8fec8b74b84df7e3b5c093877f899146d1f59d
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=cc8fec8b74b84df7e3b5c093877f899146d1f59d

Author: Alyssa Rosenzweig <alyssa at rosenzweig.io>
Date:   Sat Jun  5 14:47:39 2021 -0400

agx: Generate enums from Python

Signed-off-by: Alyssa Rosenzweig <alyssa at rosenzweig.io>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/11199>

---

 src/asahi/compiler/agx_opcodes.h.py | 13 +++++++++++--
 src/asahi/compiler/agx_opcodes.py   |  5 +++++
 2 files changed, 16 insertions(+), 2 deletions(-)

diff --git a/src/asahi/compiler/agx_opcodes.h.py b/src/asahi/compiler/agx_opcodes.h.py
index e39221a72ec..55e5839445e 100644
--- a/src/asahi/compiler/agx_opcodes.h.py
+++ b/src/asahi/compiler/agx_opcodes.h.py
@@ -36,6 +36,14 @@ enum agx_opcode {
    AGX_NUM_OPCODES
 };
 
+% for name in enums:
+enum agx_${name} {
+% for k in enums[name]:
+   AGX_${name.upper()}_${enums[name][k].replace('.', '_').upper()} = ${k},
+% endfor
+};
+% endfor
+
 /* Runtime accessible info on each defined opcode */
 
 <% assert(len(immediates) < 32); %>
@@ -69,6 +77,7 @@ extern const struct agx_opcode_info agx_opcodes_info[AGX_NUM_OPCODES];
 """
 
 from mako.template import Template
-from agx_opcodes import opcodes, immediates
+from agx_opcodes import opcodes, immediates, enums
 
-print(Template(template).render(opcodes=opcodes, immediates=immediates))
+print(Template(template).render(opcodes=opcodes, immediates=immediates,
+         enums=enums))
diff --git a/src/asahi/compiler/agx_opcodes.py b/src/asahi/compiler/agx_opcodes.py
index 6141adbe905..ba75bd5ec7c 100644
--- a/src/asahi/compiler/agx_opcodes.py
+++ b/src/asahi/compiler/agx_opcodes.py
@@ -23,6 +23,7 @@ SOFTWARE.
 
 opcodes = {}
 immediates = {}
+enums = {}
 
 class Opcode(object):
    def __init__(self, name, dests, srcs, imms, is_float, can_eliminate, encoding_16, encoding_32):
@@ -67,6 +68,10 @@ def immediate(name, ctype = "uint32_t"):
    immediates[name] = imm
    return imm
 
+def enum(name, value_dict):
+   enums[name] = value_dict
+   return immediate(name, "enum agx_" + name)
+
 L = (1 << 15)
 _ = None
 



More information about the mesa-commit mailing list