From 0812a5204ba65de71ca6ffa5e629df561108d060 Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Wed, 6 Jan 2021 13:37:51 -0500 Subject: [PATCH] pan/bi: Add bi_pack_upper Top 3-bits, found e.g. in the tag. Signed-off-by: Alyssa Rosenzweig Reviewed-by: Boris Brezillon Part-of: --- src/panfrost/bifrost/bi_pack.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/panfrost/bifrost/bi_pack.c b/src/panfrost/bifrost/bi_pack.c index 7dfd87ecf5f..77a32345842 100644 --- a/src/panfrost/bifrost/bi_pack.c +++ b/src/panfrost/bifrost/bi_pack.c @@ -607,6 +607,30 @@ bi_pack_literal(enum bi_clause_subword literal) return (literal - BI_CLAUSE_SUBWORD_LITERAL_0); } +static inline uint8_t +bi_clause_upper(unsigned val, + struct bi_packed_tuple *tuples, + ASSERTED unsigned tuple_count) +{ + assert(val < tuple_count); + + /* top 3-bits of 78-bits is tuple >> 75 == (tuple >> 64) >> 11 */ + struct bi_packed_tuple tuple = tuples[val]; + return (tuple.hi >> 11); +} + +static inline uint8_t +bi_pack_upper(enum bi_clause_subword upper, + struct bi_packed_tuple *tuples, + ASSERTED unsigned tuple_count) +{ + assert(upper >= BI_CLAUSE_SUBWORD_UPPER_0); + assert(upper <= BI_CLAUSE_SUBWORD_UPPER_7); + + return bi_clause_upper(upper - BI_CLAUSE_SUBWORD_UPPER_0, tuples, + tuple_count); +} + static void bi_pack_clause(bi_context *ctx, bi_clause *clause, bi_clause *next_1, bi_clause *next_2,