From 0277f491aec79f9fdb288f28268090146165d1bc Mon Sep 17 00:00:00 2001 From: Ilia Mirkin Date: Fri, 3 Dec 2021 19:06:12 -0500 Subject: [PATCH] freedreno/ir3: disable conversion folding on a4xx Experiments suggest that e.g. add.u r0.y, hr0.x, hr0.y will result in the summed value in both the high and low words of r0.y. This only happens with odd registers, not even ones (r0.x works fine). Seen in the bit_count lowering (which turns out to be unnecessary, but this is still a larger problem). Signed-off-by: Ilia Mirkin Part-of: --- src/freedreno/ir3/ir3_compiler_nir.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/freedreno/ir3/ir3_compiler_nir.c b/src/freedreno/ir3/ir3_compiler_nir.c index 228cfbdada3..09954806b71 100644 --- a/src/freedreno/ir3/ir3_compiler_nir.c +++ b/src/freedreno/ir3/ir3_compiler_nir.c @@ -4545,7 +4545,9 @@ ir3_compile_shader_nir(struct ir3_compiler *compiler, do { progress = false; - progress |= IR3_PASS(ir, ir3_cf); + /* the folding doesn't seem to work reliably on a4xx */ + if (ctx->compiler->gen != 4) + progress |= IR3_PASS(ir, ir3_cf); progress |= IR3_PASS(ir, ir3_cp, so); progress |= IR3_PASS(ir, ir3_cse); progress |= IR3_PASS(ir, ir3_dce, so);