From d8c16200e9730e4f4f56dc1478dc72dccce26203 Mon Sep 17 00:00:00 2001 From: Alyssa Rosenzweig Date: Thu, 21 May 2020 17:51:06 -0400 Subject: [PATCH] pan/mdg: Ensure we don't DCE into impossible masks We round up for ld/st. Signed-off-by: Alyssa Rosenzweig Part-of: --- src/panfrost/midgard/midgard_opt_dce.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) 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; -- 2.30.2