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