From d1bc625bd1335b61277b32d7edcd5c07a2f60e24 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: (cherry picked from commit 37b55ee34fe0ba16037715577fcd1a6c517d6f34) --- .pick_status.json | 2 +- src/nouveau/compiler/nak/legalize.rs | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/.pick_status.json b/.pick_status.json index 4558cc62153..e7835bd5f68 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -2234,7 +2234,7 @@ "description": "nak/legalize: Fold immediate sources before instructions", "nominated": true, "nomination_type": 1, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "85462f74553cd835e9ba4c954330499cee832893", "notes": null diff --git a/src/nouveau/compiler/nak/legalize.rs b/src/nouveau/compiler/nak/legalize.rs index a9e0e37b702..b24e65b0dd7 100644 --- a/src/nouveau/compiler/nak/legalize.rs +++ b/src/nouveau/compiler/nak/legalize.rs @@ -816,6 +816,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 { @@ -824,11 +829,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() {