freedreno/isa: generate marcos used for printf(..)
Generate correct BITSET_FORMAT and BITSET_VALUE macros based on the maximum needed ISA bits. 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/11321>
This commit is contained in:
parent
a6b82d1c8c
commit
1a8048954d
|
@ -226,6 +226,9 @@ typedef struct {
|
||||||
} bitmask_t;
|
} bitmask_t;
|
||||||
|
|
||||||
|
|
||||||
|
#define BITSET_FORMAT ${isa.format()}
|
||||||
|
#define BITSET_VALUE(v) ${isa.value()}
|
||||||
|
|
||||||
static inline uint64_t
|
static inline uint64_t
|
||||||
bitmask_to_uint64_t(bitmask_t mask)
|
bitmask_to_uint64_t(bitmask_t mask)
|
||||||
{
|
{
|
||||||
|
|
|
@ -492,3 +492,25 @@ class ISA(object):
|
||||||
# TODO we should probably be able to look at the contexts where
|
# TODO we should probably be able to look at the contexts where
|
||||||
# an expression is evaluated and verify that it doesn't have any
|
# an expression is evaluated and verify that it doesn't have any
|
||||||
# {VARNAME} references that would be unresolved at evaluation time
|
# {VARNAME} references that would be unresolved at evaluation time
|
||||||
|
|
||||||
|
def format(self):
|
||||||
|
''' Generate format string used by printf(..) and friends '''
|
||||||
|
parts = []
|
||||||
|
words = self.bitsize / 32
|
||||||
|
|
||||||
|
for i in range(int(words)):
|
||||||
|
parts.append('%08x')
|
||||||
|
|
||||||
|
fmt = ''.join(parts)
|
||||||
|
|
||||||
|
return f"\"{fmt[1:]}\""
|
||||||
|
|
||||||
|
def value(self):
|
||||||
|
''' Generate format values used by printf(..) and friends '''
|
||||||
|
parts = []
|
||||||
|
words = self.bitsize / 32
|
||||||
|
|
||||||
|
for i in range(int(words) - 1, -1, -1):
|
||||||
|
parts.append('v[' + str(i) + ']')
|
||||||
|
|
||||||
|
return ', '.join(parts)
|
||||||
|
|
Loading…
Reference in New Issue