pan/mdg: prepare effective_writemask()
authorItalo Nicola <italonicola@collabora.com>
Fri, 10 Jul 2020 16:07:06 +0000 (16:07 +0000)
committerMarge Bot <eric+marge@anholt.net>
Thu, 30 Jul 2020 22:55:36 +0000 (22:55 +0000)
In the next commits we will be removing the `alu` field from
midgard_instruction in order to simplify the code.
effective_writemask() doesn't actually use `alu` for anything, it only
needs to know the opcode.

Signed-off-by: Italo Nicola <italonicola@collabora.com>
Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5933>

src/panfrost/midgard/disassemble.c
src/panfrost/midgard/midgard_compile.c
src/panfrost/midgard/midgard_ops.h
src/panfrost/midgard/midgard_print.c

index 1e598e8161ce45615cfcdbc9f4d89a063ba7a7b0..9ffbf4956185d27a499b4a05b8417262b053ce87 100644 (file)
@@ -372,7 +372,7 @@ print_vector_constants(FILE *fp, unsigned src_binary,
         assert(consts);
         assert(max_comp <= 16);
 
-        comp_mask = effective_writemask(alu, condense_writemask(alu->mask, bits));
+        comp_mask = effective_writemask(alu->op, condense_writemask(alu->mask, bits));
         num_comp = util_bitcount(comp_mask);
 
         fprintf(fp, "<");
index 44db10463d547ab14fa6dd0f02c4abc36ad300d5..d6b0e8af80628b2b7f4cfe2e5c68f61bb94b2e74 100644 (file)
@@ -2520,7 +2520,7 @@ embedded_to_inline_constant(compiler_context *ctx, midgard_block *block)
                         uint32_t value = is_16 ? cons->u16[component] : cons->u32[component];
 
                         bool is_vector = false;
-                        unsigned mask = effective_writemask(&ins->alu, ins->mask);
+                        unsigned mask = effective_writemask(ins->alu.op, ins->mask);
 
                         for (unsigned c = 0; c < MIR_VEC_COMPONENTS; ++c) {
                                 /* We only care if this component is actually used */
index 6919c3155b69e937145752773beaa23b7485d06f..6c5bd4d0942d14a1fddba3d11cd8bd6ba34dffa4 100644 (file)
@@ -62,12 +62,12 @@ midgard_is_integer_out_op(int op)
 /* Determines effective writemask, taking quirks and expansion into account */
 
 static inline unsigned
-effective_writemask(midgard_vector_alu *alu, unsigned existing_mask)
+effective_writemask(midgard_alu_op op, unsigned existing_mask)
 {
         /* Channel count is off-by-one to fit in two-bits (0 channel makes no
          * sense) */
 
-        unsigned channel_count = GET_CHANNEL_COUNT(alu_opcode_props[alu->op].props);
+        unsigned channel_count = GET_CHANNEL_COUNT(alu_opcode_props[op].props);
 
         /* If there is a fixed channel count, construct the appropriate mask */
 
index 3e8800710435316af890f0ad13c703572cf1a480..6f389025fec53d99547fd0220237c943dc0ead90 100644 (file)
@@ -244,7 +244,7 @@ mir_print_embedded_constant(midgard_instruction *ins, unsigned src_idx)
                 src = vector_alu_from_unsigned(ins->alu.src2);
 
         unsigned *swizzle = ins->swizzle[src_idx];
-        unsigned comp_mask = effective_writemask(&ins->alu, ins->mask);
+        unsigned comp_mask = effective_writemask(ins->alu.op, ins->mask);
         unsigned num_comp = util_bitcount(comp_mask);
         unsigned max_comp = mir_components_for_type(ins->dest_type);
         bool first = true;