isaspec: inherite parent's bitset gpu gen requirements

Signed-off-by: Danylo Piliaiev <dpiliaiev@igalia.com>
Signed-off-by: Rob Clark <robdclark@chromium.org>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/13300>
This commit is contained in:
Danylo Piliaiev 2021-02-01 12:37:49 +02:00 committed by Marge Bot
parent d77b9fb518
commit dff8a0c4cb
2 changed files with 23 additions and 5 deletions

View file

@ -159,8 +159,8 @@ static const struct isa_bitset bitset_${bitset.get_c_name()} = {
% endif
.name = "${name}",
.gen = {
.min = ${bitset.gen_min},
.max = ${bitset.gen_max},
.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))} },

View file

@ -265,13 +265,13 @@ class BitSet(object):
self.encode = BitSetEncode(xml.find('encode'))
self.gen_min = 0
self.gen_max = ~0
self.gen_max = 1 << 32 - 1
for gen in xml.findall('gen'):
if 'min' in gen.attrib:
self.gen_min = gen.attrib['min']
self.gen_min = int(gen.attrib['min'])
if 'max' in gen.attrib:
self.gen_max = gen.attrib['max']
self.gen_max = int(gen.attrib['max'])
# Collect up the match/dontcare/mask bitmasks for
# this bitset case:
@ -338,6 +338,24 @@ class BitSet(object):
return parent.get_size()
return self.size
def get_gen_min(self):
if self.extends is not None:
parent = self.isa.bitsets[self.extends]
assert (self.gen_min == 0) or (self.gen_min >= parent.get_gen_min()), "bitset {} should not have min gen lower than the parent's one".format(self.name)
return max(self.gen_min, parent.get_gen_min())
return self.gen_min
def get_gen_max(self):
if self.extends is not None:
parent = self.isa.bitsets[self.extends]
assert (self.gen_max == (1 << 32 - 1)) or (self.gen_max <= parent.get_gen_max()), "bitset {} should not have max gen higher than the parent's one".format(self.name)
return min(self.gen_max, parent.get_gen_max())
return self.gen_max
def get_c_name(self):
return get_c_name(self.name)