From ea42a3bee55642537b98651c4c3129bc630f3400 Mon Sep 17 00:00:00 2001 From: Christian Gmeiner Date: Sun, 16 May 2021 09:55:59 +0200 Subject: [PATCH] freedreno/isa: add bitmask to/from uint64_t helper Signed-off-by: Christian Gmeiner Reviewed-by: Rob Clark Part-of: --- src/freedreno/isa/decode.py | 18 ++++++++++++++++++ src/freedreno/isa/encode.py | 17 +++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/src/freedreno/isa/decode.py b/src/freedreno/isa/decode.py index 01a3e4eaf8b..02e1f1cb134 100644 --- a/src/freedreno/isa/decode.py +++ b/src/freedreno/isa/decode.py @@ -216,6 +216,7 @@ header = """\ #ifndef _${guard}_ #define _${guard}_ +#include #include typedef struct { @@ -223,6 +224,23 @@ typedef struct { } bitmask_t; +static inline uint64_t +bitmask_to_uint64_t(bitmask_t mask) +{ + return ((uint64_t)mask.bitset[1] << 32) | mask.bitset[0]; +} + +static inline bitmask_t +uint64_t_to_bitmask(uint64_t val) +{ + bitmask_t mask = { + .bitset[0] = val & 0xffffffff, + .bitset[1] = (val >> 32) & 0xffffffff, + }; + + return mask; +} + #endif /* _${guard}_ */ """ diff --git a/src/freedreno/isa/encode.py b/src/freedreno/isa/encode.py index 3ece9e0ff0b..4939980a959 100644 --- a/src/freedreno/isa/encode.py +++ b/src/freedreno/isa/encode.py @@ -339,6 +339,23 @@ typedef struct { BITSET_WORD bitset[BITSET_WORDS(${isa.bitsize})]; } bitmask_t; +static inline uint64_t +bitmask_to_uint64_t(bitmask_t mask) +{ + return ((uint64_t)mask.bitset[1] << 32) | mask.bitset[0]; +} + +static inline bitmask_t +uint64_t_to_bitmask(uint64_t val) +{ + bitmask_t mask = { + .bitset[0] = val & 0xffffffff, + .bitset[1] = (val >> 32) & 0xffffffff, + }; + + return mask; +} + /** * Opaque type from the PoV of generated code, but allows state to be passed * thru to the hand written helpers used by the generated code.