From 751f425c378afbe831149f60ed9c5262d6c59f45 Mon Sep 17 00:00:00 2001 From: Connor Abbott Date: Fri, 24 Sep 2021 18:51:58 +0200 Subject: [PATCH] ir3/cp: Fix inlining 32->16 const into meta instructions We shouldn't return early here, because we still need to actually do the conversion. Fixes an infinite loop. Part-of: --- src/freedreno/ir3/ir3_cp.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/freedreno/ir3/ir3_cp.c b/src/freedreno/ir3/ir3_cp.c index e1fa6e63ae7..e7e5ec68c7c 100644 --- a/src/freedreno/ir3/ir3_cp.c +++ b/src/freedreno/ir3/ir3_cp.c @@ -420,8 +420,6 @@ reg_cp(struct ir3_cp_ctx *ctx, struct ir3_instruction *instr, if (!is_cat2_float(instr->opc) && !is_cat3_float(instr->opc)) return false; } else if (src->cat1.dst_type == TYPE_U16) { - if (is_meta(instr)) - return true; /* Since we set CONSTANT_DEMOTION_ENABLE, a float reference of * what was a U16 value read from the constbuf would incorrectly * do 32f->16f conversion, when we want to read a 16f value.