From 32570924cfbcb91d103b898d86e127da531b3e1a Mon Sep 17 00:00:00 2001 From: Faith Ekstrand Date: Tue, 15 Apr 2025 16:33:33 -0500 Subject: [PATCH] nak: Move some legalization helpers from sm50 to common code Part-of: --- src/nouveau/compiler/nak/legalize.rs | 28 ++++++++++++++++++++++++ src/nouveau/compiler/nak/sm50.rs | 32 ---------------------------- 2 files changed, 28 insertions(+), 32 deletions(-) diff --git a/src/nouveau/compiler/nak/legalize.rs b/src/nouveau/compiler/nak/legalize.rs index 585d32d4073..7c020598b01 100644 --- a/src/nouveau/compiler/nak/legalize.rs +++ b/src/nouveau/compiler/nak/legalize.rs @@ -292,6 +292,34 @@ pub trait LegalizeBuildHelpers: SSABuilder { *src = val.into(); } + fn copy_alu_src_if_fabs(&mut self, src: &mut Src, src_type: SrcType) { + if src.src_mod.has_fabs() { + self.copy_alu_src_and_lower_fmod(src, src_type); + } + } + + fn copy_alu_src_if_i20_overflow( + &mut self, + src: &mut Src, + reg_file: RegFile, + src_type: SrcType, + ) { + if src.as_imm_not_i20().is_some() { + self.copy_alu_src(src, reg_file, src_type); + } + } + + fn copy_alu_src_if_f20_overflow( + &mut self, + src: &mut Src, + reg_file: RegFile, + src_type: SrcType, + ) { + if src.as_imm_not_f20().is_some() { + self.copy_alu_src(src, reg_file, src_type); + } + } + fn copy_ssa_ref_if_uniform(&mut self, ssa_ref: &mut SSARef) { for ssa in &mut ssa_ref[..] { if ssa.is_uniform() { diff --git a/src/nouveau/compiler/nak/sm50.rs b/src/nouveau/compiler/nak/sm50.rs index 16213009696..4d3a3b47085 100644 --- a/src/nouveau/compiler/nak/sm50.rs +++ b/src/nouveau/compiler/nak/sm50.rs @@ -423,38 +423,6 @@ impl SM50Encoder<'_> { // Legalization helpers // -pub trait SM50LegalizeBuildHelpers: LegalizeBuildHelpers { - fn copy_alu_src_if_fabs(&mut self, src: &mut Src, src_type: SrcType) { - if src.src_mod.has_fabs() { - self.copy_alu_src_and_lower_fmod(src, src_type); - } - } - - fn copy_alu_src_if_i20_overflow( - &mut self, - src: &mut Src, - reg_file: RegFile, - src_type: SrcType, - ) { - if src.as_imm_not_i20().is_some() { - self.copy_alu_src(src, reg_file, src_type); - } - } - - fn copy_alu_src_if_f20_overflow( - &mut self, - src: &mut Src, - reg_file: RegFile, - src_type: SrcType, - ) { - if src.as_imm_not_f20().is_some() { - self.copy_alu_src(src, reg_file, src_type); - } - } -} - -impl SM50LegalizeBuildHelpers for LegalizeBuilder<'_> {} - /// Helper to legalize extended or external instructions /// /// These are instructions which reach out external units such as load/store