pan/mdg: Ensure we don't DCE into impossible masks

We round up for ld/st.

Signed-off-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/5153>
This commit is contained in:
Alyssa Rosenzweig 2020-05-21 17:51:06 -04:00 committed by Marge Bot
parent 197b398c32
commit d8c16200e9

View file

@ -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;