From: Alyssa Rosenzweig Date: Wed, 18 Mar 2020 13:57:32 +0000 (-0400) Subject: pan/bi: Model 3-bit Bifrost srcs in IR X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=cd40e189b6769f3cfb18557e3715a3289bebc13c;p=mesa.git pan/bi: Model 3-bit Bifrost srcs in IR We'll want to set these manually for schedule-time passthrough, as well as use the enum for packing. Signed-off-by: Alyssa Rosenzweig Part-of: --- diff --git a/src/panfrost/bifrost/bifrost.h b/src/panfrost/bifrost/bifrost.h index 41bf16cfafc..8f5dec578f7 100644 --- a/src/panfrost/bifrost/bifrost.h +++ b/src/panfrost/bifrost/bifrost.h @@ -72,6 +72,17 @@ struct bifrost_header { unsigned unk4 : 1; // part of nextClauseType? } __attribute__((packed)); +enum bifrost_packed_src { + BIFROST_SRC_PORT0 = 0, + BIFROST_SRC_PORT1 = 1, + BIFROST_SRC_PORT3 = 2, + BIFROST_SRC_STAGE = 3, + BIFROST_SRC_CONST_LO = 4, + BIFROST_SRC_CONST_HI = 5, + BIFROST_SRC_PASS_FMA = 6, + BIFROST_SRC_PASS_ADD = 7, +}; + struct bifrost_fma_inst { unsigned src0 : 3; unsigned op : 20; diff --git a/src/panfrost/bifrost/compiler.h b/src/panfrost/bifrost/compiler.h index 9ff728c55a2..b69c0fee5e7 100644 --- a/src/panfrost/bifrost/compiler.h +++ b/src/panfrost/bifrost/compiler.h @@ -371,17 +371,19 @@ bi_remove_instruction(bi_instruction *ins) * Uniform: access a uniform register given by low bits. * Constant: access the specified constant * Zero: special cased to avoid wasting a constant + * Passthrough: a bifrost_packed_src to passthrough T/T0/T1 */ #define BIR_INDEX_REGISTER (1 << 31) #define BIR_INDEX_UNIFORM (1 << 30) #define BIR_INDEX_CONSTANT (1 << 29) #define BIR_INDEX_ZERO (1 << 28) +#define BIR_INDEX_PASS (1 << 27) /* Keep me synced please so we can check src & BIR_SPECIAL */ #define BIR_SPECIAL ((BIR_INDEX_REGISTER | BIR_INDEX_UNIFORM) | \ - (BIR_INDEX_CONSTANT | BIR_INDEX_ZERO)) + (BIR_INDEX_CONSTANT | BIR_INDEX_ZERO | BIR_INDEX_PASS)) static inline unsigned bi_max_temp(bi_context *ctx)