From f8a8dc16450cc4f00bbb510b65216d0ce23c04f3 Mon Sep 17 00:00:00 2001 From: Italo Nicola Date: Tue, 2 Mar 2021 11:58:47 +0000 Subject: [PATCH] pan/mdg: add proper expand_mode enum Signed-off-by: Italo Nicola Reviewed-by: Alyssa Rosenzweig Part-of: --- src/panfrost/midgard/midgard.h | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/src/panfrost/midgard/midgard.h b/src/panfrost/midgard/midgard.h index cd07bb9cb6f..85450c0530c 100644 --- a/src/panfrost/midgard/midgard.h +++ b/src/panfrost/midgard/midgard.h @@ -245,6 +245,28 @@ typedef enum { #define MIDGARD_FLOAT_MOD_ABS (1 << 0) #define MIDGARD_FLOAT_MOD_NEG (1 << 1) +/* The expand options depend on both midgard_int_mod and midgard_reg_mode. For + * example, a vec4 with midgard_int_sign_extend and midgard_src_expand_low is + * treated as a vec8 and each 16-bit element from the low 64-bits is then sign + * extended, resulting in a vec4 where each 32-bit element corresponds to a + * 16-bit element from the low 64-bits of the input vector. */ +typedef enum { + midgard_src_passthrough = 0, + midgard_src_rep_low = 1, /* replicate lower 64 bits to higher 64 bits */ + midgard_src_rep_high = 2, /* replicate higher 64 bits to lower 64 bits */ + midgard_src_swap = 3, /* swap lower 64 bits with higher 64 bits */ + midgard_src_expand_low = 4, /* expand low 64 bits */ + midgard_src_expand_high = 5, /* expand high 64 bits */ + midgard_src_expand_low_swap = 6, /* expand low 64 bits, then swap */ + midgard_src_expand_high_swap = 7, /* expand high 64 bits, then swap */ +} midgard_src_expand_mode; + +#define INPUT_EXPANDS(a) \ + (a >= midgard_src_expand_low && a <= midgard_src_expand_high_swap) + +#define INPUT_SWAPS(a) \ + (a == midgard_src_swap || a >= midgard_src_expand_low_swap) + typedef struct __attribute__((__packed__)) {