From: Alyssa Rosenzweig Date: Thu, 21 May 2020 21:51:06 +0000 (-0400) Subject: pan/mdg: Ensure we don't DCE into impossible masks X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=d8c16200e9730e4f4f56dc1478dc72dccce26203;p=mesa.git pan/mdg: Ensure we don't DCE into impossible masks We round up for ld/st. Signed-off-by: Alyssa Rosenzweig Part-of: --- diff --git a/src/panfrost/midgard/midgard_opt_dce.c b/src/panfrost/midgard/midgard_opt_dce.c index be9307e712a..93d3d45b241 100644 --- a/src/panfrost/midgard/midgard_opt_dce.c +++ b/src/panfrost/midgard/midgard_opt_dce.c @@ -73,9 +73,14 @@ midgard_opt_dead_code_eliminate_block(compiler_context *ctx, midgard_block *bloc mir_foreach_instr_in_block_rev(block, ins) { if (can_cull_mask(ctx, ins)) { unsigned type_size = nir_alu_type_get_type_size(ins->dest_type); + unsigned round_size = type_size; unsigned oldmask = ins->mask; - unsigned rounded = mir_round_bytemask_up(live[ins->dest], type_size); + /* Make sure we're packable */ + if (type_size == 16 && ins->type == TAG_LOAD_STORE_4) + round_size = 32; + + unsigned rounded = mir_round_bytemask_up(live[ins->dest], round_size); unsigned cmask = mir_from_bytemask(rounded, type_size); ins->mask &= cmask;