Mesa (master): aco: simplify and fix operand/definition sizes

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Jan 12 16:23:58 UTC 2021


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

Author: Daniel Schürmann <daniel at schuermann.dev>
Date:   Fri Jan  8 23:03:21 2021 +0100

aco: simplify and fix operand/definition sizes

These are mainly needed for constant propagation
and subdword register allocation.

Reviewed-by: Rhys Perry <pendingchaos02 at gmail.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/8425>

---

 src/amd/compiler/aco_opcodes.py | 33 ++++++++++++++++-----------------
 1 file changed, 16 insertions(+), 17 deletions(-)

diff --git a/src/amd/compiler/aco_opcodes.py b/src/amd/compiler/aco_opcodes.py
index 4a839db10a5..178e448662b 100644
--- a/src/amd/compiler/aco_opcodes.py
+++ b/src/amd/compiler/aco_opcodes.py
@@ -212,25 +212,24 @@ class Opcode(object):
       self.operand_size = op_dtype_sizes.get(op_dtype, 32)
       self.definition_size = def_dtype_sizes.get(def_dtype, self.operand_size)
 
-      # exceptions
-      if self.operand_size == 16 and op_dtype != 'f16':
-         self.operand_size = 16
+      # exceptions for operands:
+      if 'sad_' in name:
+        self.operand_size = 0
+      elif name in ['v_mad_u64_u32', 'v_mad_i64_i32']:
+        self.operand_size = 0
       elif self.operand_size == 24:
         self.operand_size = 32
-      elif name in ['s_sext_i32_i8', 's_sext_i32_i16', 'v_msad_u8', 'v_cvt_pk_u16_u32', 'v_cvt_pk_i16_i32']:
-         self.operand_size = 32
-      elif name in ['v_qsad_pk_u16_u8', 'v_mqsad_pk_u16_u8', 'v_mqsad_u32_u8']:
-         self.definition_size = 0
-         self.operand_size = 0
-      elif name in ['v_mad_u64_u32', 'v_mad_i64_i32']:
-         self.operand_size = 0
-      elif '_pk' in name or name in ['v_lerp_u8', 'v_sad_u8', 'v_sad_u16',
-                                      'v_cvt_f32_ubyte0', 'v_cvt_f32_ubyte1',
-                                      'v_cvt_f32_ubyte2', 'v_cvt_f32_ubyte3']:
-         self.operand_size = 32
-         self.definition_size = 32
-      elif '_pknorm_' in name:
-         self.definition_size = 32
+      elif op_dtype == 'u8' or op_dtype == 'i8':
+        self.operand_size = 32
+      elif name in ['v_cvt_f32_ubyte0', 'v_cvt_f32_ubyte1',
+                    'v_cvt_f32_ubyte2', 'v_cvt_f32_ubyte3']:
+        self.operand_size = 32
+
+      # exceptions for definitions:
+      if 'sad_' in name:
+        self.definition_size = 0
+      elif '_pk' in name:
+        self.definition_size = 32
 
 
 # global dictionary of opcodes



More information about the mesa-commit mailing list