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

Author: Georg Lehmann <dadschoo...@gmail.com>
Date:   Sat Oct 28 12:30:15 2023 +0200

aco: deduplicate instr_class definition

Reviewed-by: Daniel Schürmann <dan...@schuermann.dev
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/25943>

---

 src/amd/compiler/aco_ir.h           | 25 ----------------------
 src/amd/compiler/aco_opcodes.py     | 42 ++++++++++++++++++-------------------
 src/amd/compiler/aco_opcodes_cpp.py |  2 +-
 src/amd/compiler/aco_opcodes_h.py   | 11 ++++++++--
 4 files changed, 31 insertions(+), 49 deletions(-)

diff --git a/src/amd/compiler/aco_ir.h b/src/amd/compiler/aco_ir.h
index 25ee17c44dd..d70533688de 100644
--- a/src/amd/compiler/aco_ir.h
+++ b/src/amd/compiler/aco_ir.h
@@ -112,31 +112,6 @@ enum class Format : uint16_t {
    DPP8 = 1 << 15,
 };
 
-enum class instr_class : uint8_t {
-   valu32 = 0,
-   valu_convert32 = 1,
-   valu64 = 2,
-   valu_quarter_rate32 = 3,
-   valu_fma = 4,
-   valu_transcendental32 = 5,
-   valu_double = 6,
-   valu_double_add = 7,
-   valu_double_convert = 8,
-   valu_double_transcendental = 9,
-   salu = 10,
-   smem = 11,
-   barrier = 12,
-   branch = 13,
-   sendmsg = 14,
-   ds = 15,
-   exp = 16,
-   vmem = 17,
-   waitcnt = 18,
-   other = 19,
-   wmma = 20,
-   count,
-};
-
 enum storage_class : uint8_t {
    storage_none = 0x0,   /* no synchronization and can be reordered around 
aliasing stores */
    storage_buffer = 0x1, /* SSBOs and global memory */
diff --git a/src/amd/compiler/aco_opcodes.py b/src/amd/compiler/aco_opcodes.py
index 71bc53a06c9..2fe9981073e 100644
--- a/src/amd/compiler/aco_opcodes.py
+++ b/src/amd/compiler/aco_opcodes.py
@@ -28,27 +28,27 @@ import sys
 from enum import Enum
 
 class InstrClass(Enum):
-   Valu32 = 0
-   ValuConvert32 = 1
-   Valu64 = 2
-   ValuQuarterRate32 = 3
-   ValuFma = 4
-   ValuTranscendental32 = 5
-   ValuDouble = 6
-   ValuDoubleAdd = 7
-   ValuDoubleConvert = 8
-   ValuDoubleTranscendental = 9
-   Salu = 10
-   SMem = 11
-   Barrier = 12
-   Branch = 13
-   Sendmsg = 14
-   DS = 15
-   Export = 16
-   VMem = 17
-   Waitcnt = 18
-   Other = 19
-   WMMA = 20
+   Valu32 = "valu32"
+   ValuConvert32 = "valu_convert32"
+   Valu64 = "valu64"
+   ValuQuarterRate32 = "valu_quarter_rate32"
+   ValuFma = "valu_fma"
+   ValuTranscendental32 = "valu_transcendental32"
+   ValuDouble = "valu_double"
+   ValuDoubleAdd = "valu_double_add"
+   ValuDoubleConvert = "valu_double_convert"
+   ValuDoubleTranscendental = "valu_double_transcendental"
+   WMMA = "wmma"
+   Salu = "salu"
+   SMem = "smem"
+   Barrier = "barrier"
+   Branch = "branch"
+   Sendmsg = "sendmsg"
+   DS = "ds"
+   Export = "exp"
+   VMem = "vmem"
+   Waitcnt = "waitcnt"
+   Other = "other"
 
 class Format(Enum):
    PSEUDO = 0
diff --git a/src/amd/compiler/aco_opcodes_cpp.py 
b/src/amd/compiler/aco_opcodes_cpp.py
index a0e5e9f407b..b883a5e25b0 100644
--- a/src/amd/compiler/aco_opcodes_cpp.py
+++ b/src/amd/compiler/aco_opcodes_cpp.py
@@ -77,7 +77,7 @@ extern const aco::Info instr_info = {
    },
    {
       % for name in opcode_names:
-      (instr_class)${opcodes[name].cls.value},
+      instr_class::${opcodes[name].cls.value},
       % endfor
    },
 };
diff --git a/src/amd/compiler/aco_opcodes_h.py 
b/src/amd/compiler/aco_opcodes_h.py
index 3a18f6de589..b9dd26e3ef1 100644
--- a/src/amd/compiler/aco_opcodes_h.py
+++ b/src/amd/compiler/aco_opcodes_h.py
@@ -32,6 +32,13 @@ template = """\
 
 namespace aco {
 
+enum class instr_class : uint8_t {
+% for name in InstrClass:
+   ${name.value},
+% endfor
+   count,
+};
+
 <% opcode_names = sorted(opcodes.keys()) %>
 
 enum class aco_opcode : uint16_t {
@@ -45,7 +52,7 @@ enum class aco_opcode : uint16_t {
 }
 #endif /* _ACO_OPCODES_ */"""
 
-from aco_opcodes import opcodes
+from aco_opcodes import opcodes, InstrClass
 from mako.template import Template
 
-print(Template(template).render(opcodes=opcodes))
+print(Template(template).render(opcodes=opcodes, InstrClass=InstrClass))

Reply via email to