From 37b55ee34fe0ba16037715577fcd1a6c517d6f34 Mon Sep 17 00:00:00 2001 From: Faith Ekstrand Date: Mon, 27 May 2024 13:06:18 -0500 Subject: [PATCH] nak/legalize: Fold immediate sources before instructions This way, if we insert a copy to move the immediate to a GPR, the immediate we place in the copy is also folded. Fixes: 85462f74553c ("nak: Legalize immediates with source modifiers") Part-of: --- src/nouveau/compiler/nak/legalize.rs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/nouveau/compiler/nak/legalize.rs b/src/nouveau/compiler/nak/legalize.rs index 371a01a25f6..9920ba36bfd 100644 --- a/src/nouveau/compiler/nak/legalize.rs +++ b/src/nouveau/compiler/nak/legalize.rs @@ -815,6 +815,11 @@ fn legalize_instr( ip: usize, instr: &mut Instr, ) { + let src_types = instr.src_types(); + for (i, src) in instr.srcs_mut().iter_mut().enumerate() { + *src = src.fold_imm(src_types[i]); + } + if b.sm() >= 70 { legalize_sm70_instr(b, bl, ip, instr); } else if b.sm() >= 50 { @@ -823,11 +828,6 @@ fn legalize_instr( panic!("Unknown shader model SM{}", b.sm()); } - let src_types = instr.src_types(); - for (i, src) in instr.srcs_mut().iter_mut().enumerate() { - *src = src.fold_imm(src_types[i]); - } - let mut vec_src_map: HashMap = HashMap::new(); let mut vec_comps = HashSet::new(); for src in instr.srcs_mut() {