From: Christian Gmeiner Date: Fri, 28 May 2021 08:00:36 +0000 (+0200) Subject: freedreno/isa: generate marcos used for printf(..) X-Git-Tag: upstream/22.3.5~17629 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=1a8048954dcdc4257bff1cc9b6d6bc9b6b1cce1b;p=platform%2Fupstream%2Fmesa.git 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 Reviewed-by: Rob Clark Part-of: --- diff --git a/src/freedreno/isa/decode.py b/src/freedreno/isa/decode.py index 6bcc48b..15580b2 100644 --- a/src/freedreno/isa/decode.py +++ b/src/freedreno/isa/decode.py @@ -226,6 +226,9 @@ typedef struct { } bitmask_t; +#define BITSET_FORMAT ${isa.format()} +#define BITSET_VALUE(v) ${isa.value()} + static inline uint64_t bitmask_to_uint64_t(bitmask_t mask) { diff --git a/src/freedreno/isa/isa.py b/src/freedreno/isa/isa.py index 87e0c6b..8f5dfe0 100644 --- a/src/freedreno/isa/isa.py +++ b/src/freedreno/isa/isa.py @@ -492,3 +492,25 @@ class ISA(object): # TODO we should probably be able to look at the contexts where # an expression is evaluated and verify that it doesn't have any # {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)