Mesa (master): aco: check for duplicate opcode numbers

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Wed Sep 25 15:30:28 UTC 2019


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

Author: Rhys Perry <pendingchaos02 at gmail.com>
Date:   Tue Sep 24 15:46:37 2019 +0100

aco: check for duplicate opcode numbers

Signed-off-by: Rhys Perry <pendingchaos02 at gmail.com>
Reviewed-by: Bas Nieuwenhuizen <bas at basnieuwenhuizen.nl>

---

 src/amd/compiler/aco_opcodes.py | 25 +++++++++++++++++++++++++
 1 file changed, 25 insertions(+)

diff --git a/src/amd/compiler/aco_opcodes.py b/src/amd/compiler/aco_opcodes.py
index 1b9c3c7a155..a5b4eb9a54e 100644
--- a/src/amd/compiler/aco_opcodes.py
+++ b/src/amd/compiler/aco_opcodes.py
@@ -27,6 +27,7 @@
 # Class that represents all the information we have about the opcode
 # NOTE: this must be kept in sync with aco_op_info
 
+import sys
 from enum import Enum
 
 class Format(Enum):
@@ -1550,3 +1551,27 @@ SCRATCH = {
 }
 for (gfx8, gfx10, name) in SCRATCH:
     opcode(name, gfx8, gfx10, Format.SCRATCH)
+
+# check for duplicate opcode numbers
+for ver in ['gfx9', 'gfx10']:
+    op_to_name = {}
+    for op in opcodes.values():
+        if op.format in [Format.PSEUDO, Format.PSEUDO_BRANCH, Format.PSEUDO_BARRIER, Format.PSEUDO_REDUCTION]:
+            continue
+
+        num = getattr(op, 'opcode_' + ver)
+        if num == -1:
+            continue
+
+        key = (op.format, num)
+
+        if key in op_to_name:
+            # exceptions
+            names = set([op_to_name[key], op.name])
+            if ver in ['gfx8', 'gfx9'] and names == set(['v_mul_lo_i32', 'v_mul_lo_u32']):
+                continue
+
+            print('%s and %s share the same opcode number (%s)' % (op_to_name[key], op.name, ver))
+            sys.exit(1)
+        else:
+            op_to_name[key] = op.name




More information about the mesa-commit mailing list