From fe1aa98ab9db261e384cdcce34da313ab552d4c1 Mon Sep 17 00:00:00 2001 From: Mary Guillemard Date: Thu, 18 Apr 2024 19:56:04 +0200 Subject: [PATCH] nak: Allow SHF to use immediate encoding for shift This is pretty common and avoid using a register for nothing in most cases. Signed-off-by: Mary Guillemard Reviewed-by: Faith Ekstrand Part-of: --- src/nouveau/compiler/nak/ir.rs | 2 +- src/nouveau/compiler/nak/legalize.rs | 7 ++++++- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/nouveau/compiler/nak/ir.rs b/src/nouveau/compiler/nak/ir.rs index 3719bfca79d..861cb033673 100644 --- a/src/nouveau/compiler/nak/ir.rs +++ b/src/nouveau/compiler/nak/ir.rs @@ -3314,7 +3314,7 @@ pub struct OpShf { #[src_type(ALU)] pub high: Src, - #[src_type(GPR)] + #[src_type(ALU)] pub shift: Src, pub right: bool, diff --git a/src/nouveau/compiler/nak/legalize.rs b/src/nouveau/compiler/nak/legalize.rs index ca829197e3a..a9e0e37b702 100644 --- a/src/nouveau/compiler/nak/legalize.rs +++ b/src/nouveau/compiler/nak/legalize.rs @@ -691,7 +691,12 @@ fn legalize_sm70_instr( Op::PopC(_) => (), Op::Shf(op) => { copy_alu_src_if_not_reg(b, &mut op.low, SrcType::ALU); - copy_alu_src_if_not_reg(b, &mut op.high, SrcType::ALU); + copy_alu_src_if_both_not_reg( + b, + &op.shift, + &mut op.high, + SrcType::ALU, + ); } Op::F2F(_) | Op::F2I(_) | Op::I2F(_) | Op::Mov(_) | Op::FRnd(_) => (), Op::Prmt(op) => {