From 87004fa7019afa4a297e78d7b57c4d7164e75c66 Mon Sep 17 00:00:00 2001 From: Faith Ekstrand Date: Tue, 15 Aug 2023 10:21:10 -0500 Subject: [PATCH] nir: Rework nir_scalar_chase_movs a bit The cases in the if are the same as the cases we're using for the early break. Just check the things and break if it's not a handleable case. Reviewed-by: Alyssa Rosenzweig Part-of: --- src/compiler/nir/nir.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/compiler/nir/nir.c b/src/compiler/nir/nir.c index 6854e7f..289ecd0 100644 --- a/src/compiler/nir/nir.c +++ b/src/compiler/nir/nir.c @@ -2719,16 +2719,14 @@ nir_scalar_chase_movs(nir_scalar s) { while (nir_scalar_is_alu(s)) { nir_alu_instr *alu = nir_instr_as_alu(s.def->parent_instr); - if (!nir_alu_instr_is_copy(alu)) - break; - if (alu->op == nir_op_mov) { s.def = alu->src[0].src.ssa; s.comp = alu->src[0].swizzle[s.comp]; - } else { - assert(nir_op_is_vec(alu->op)); + } else if (nir_op_is_vec(alu->op)) { s.def = alu->src[s.comp].src.ssa; s.comp = alu->src[s.comp].swizzle[0]; + } else { + break; } } -- 2.7.4