isaspec: Extend split_bits(..) to accept a bitsize
Make split_bits(..) more generic. Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com> Reviewed-by: Rob Clark <robdclark@chromium.org> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/16996>
This commit is contained in:
parent
96f0944a69
commit
119d8488dd
|
@ -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:
|
||||
|
|
|
@ -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:
|
||||
|
|
Loading…
Reference in New Issue