aboutsummaryrefslogtreecommitdiffstats
path: root/src/panfrost/bifrost
diff options
context:
space:
mode:
authorAlyssa Rosenzweig <[email protected]>2020-03-18 09:57:32 -0400
committerMarge Bot <[email protected]>2020-03-19 03:23:07 +0000
commitcd40e189b6769f3cfb18557e3715a3289bebc13c (patch)
tree1a84a1bea83649606ecd3e64d98f4e908c9590b7 /src/panfrost/bifrost
parentfe379776c7d7eca1bbb26af070710a1a2224b0ff (diff)
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 <[email protected]> Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4242>
Diffstat (limited to 'src/panfrost/bifrost')
-rw-r--r--src/panfrost/bifrost/bifrost.h11
-rw-r--r--src/panfrost/bifrost/compiler.h4
2 files changed, 14 insertions, 1 deletions
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)