Mesa (main): isaspec: Extend split_bits(..) to accept a bitsize

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Tue Jun 14 13:11:41 UTC 2022


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

Author: Christian Gmeiner <christian.gmeiner at gmail.com>
Date:   Tue Jun  7 17:38:50 2022 +0200

isaspec: Extend split_bits(..) to accept a bitsize

Make split_bits(..) more generic.

Signed-off-by: Christian Gmeiner <christian.gmeiner at gmail.com>
Reviewed-by: Rob Clark <robdclark at chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16996>

---

 src/compiler/isaspec/decode.py |  8 ++++----
 src/compiler/isaspec/isa.py    | 10 +++++-----
 2 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/src/compiler/isaspec/decode.py b/src/compiler/isaspec/decode.py
index 9f50dc94a11..1ee7cd29b4d 100755
--- a/src/compiler/isaspec/decode.py
+++ b/src/compiler/isaspec/decode.py
@@ -145,7 +145,7 @@ static const struct isa_case ${case.get_c_name()}_gen_${bitset.gen_min} = {
             .enums = &${isa.enums[field.type].get_c_name()},
 %      endif
 %      if field.get_c_typename() == 'TYPE_ASSERT':
-            .val.bitset = { ${', '.join(isa.split_bits(field.val))} },
+            .val.bitset = { ${', '.join(isa.split_bits(field.val, 32))} },
 %      endif
           },
 %   endfor
@@ -162,9 +162,9 @@ static const struct isa_bitset bitset_${bitset.get_c_name()}_gen_${bitset.gen_mi
            .min  = ${bitset.get_gen_min()},
            .max  = ${bitset.get_gen_max()},
        },
-       .match.bitset    = { ${', '.join(isa.split_bits(pattern.match))} },
-       .dontcare.bitset = { ${', '.join(isa.split_bits(pattern.dontcare))} },
-       .mask.bitset     = { ${', '.join(isa.split_bits(pattern.mask))} },
+       .match.bitset    = { ${', '.join(isa.split_bits(pattern.match, 32))} },
+       .dontcare.bitset = { ${', '.join(isa.split_bits(pattern.dontcare, 32))} },
+       .mask.bitset     = { ${', '.join(isa.split_bits(pattern.mask, 32))} },
        .num_cases = ${len(bitset.cases)},
        .cases    = {
 %   for case in bitset.cases:
diff --git a/src/compiler/isaspec/isa.py b/src/compiler/isaspec/isa.py
index 6575f0b2e9b..8f53df124ab 100644
--- a/src/compiler/isaspec/isa.py
+++ b/src/compiler/isaspec/isa.py
@@ -551,14 +551,14 @@ class ISA(object):
 
         return ', '.join(parts)
 
-    def split_bits(self, value):
-        ''' Split `value` into a list of 32-bit integers '''
-        mask, parts = (1 << 32) - 1, []
-        words = self.bitsize / 32
+    def split_bits(self, value, bitsize):
+        ''' Split `value` into a list of bitsize-bit integers '''
+        mask, parts = (1 << bitsize) - 1, []
+        words = self.bitsize / bitsize
 
         while value:
             parts.append(hex(value & mask))
-            value >>= 32
+            value >>= bitsize
 
         # Add 'missing' words
         while len(parts) < words:



More information about the mesa-commit mailing list