From: Italo Nicola Date: Fri, 10 Jul 2020 16:07:06 +0000 (+0000) Subject: pan/mdg: prepare effective_writemask() X-Git-Url: https://git.libre-soc.org/?p=mesa.git;a=commitdiff_plain;h=598527f2febfd14b97d179363827f6c6a1d5281e pan/mdg: prepare effective_writemask() 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 Reviewed-by: Alyssa Rosenzweig Part-of: --- diff --git a/src/panfrost/midgard/disassemble.c b/src/panfrost/midgard/disassemble.c index 1e598e8161c..9ffbf495618 100644 --- a/src/panfrost/midgard/disassemble.c +++ b/src/panfrost/midgard/disassemble.c @@ -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, "<"); diff --git a/src/panfrost/midgard/midgard_compile.c b/src/panfrost/midgard/midgard_compile.c index 44db10463d5..d6b0e8af806 100644 --- a/src/panfrost/midgard/midgard_compile.c +++ b/src/panfrost/midgard/midgard_compile.c @@ -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 */ diff --git a/src/panfrost/midgard/midgard_ops.h b/src/panfrost/midgard/midgard_ops.h index 6919c3155b6..6c5bd4d0942 100644 --- a/src/panfrost/midgard/midgard_ops.h +++ b/src/panfrost/midgard/midgard_ops.h @@ -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 */ diff --git a/src/panfrost/midgard/midgard_print.c b/src/panfrost/midgard/midgard_print.c index 3e880071043..6f389025fec 100644 --- a/src/panfrost/midgard/midgard_print.c +++ b/src/panfrost/midgard/midgard_print.c @@ -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;