From ff944106fc403d22f1dcf4e951c42d52fe6d2b6e Mon Sep 17 00:00:00 2001 From: Faith Ekstrand Date: Thu, 26 Jun 2025 15:01:25 -0400 Subject: [PATCH] nvk/bitview: Add a set_field2() trait and method Part-of: --- src/nouveau/rust/bitview/lib.rs | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/src/nouveau/rust/bitview/lib.rs b/src/nouveau/rust/bitview/lib.rs index f4e88783175..18e9b5575dc 100644 --- a/src/nouveau/rust/bitview/lib.rs +++ b/src/nouveau/rust/bitview/lib.rs @@ -272,6 +272,30 @@ impl SetField for T { } } +pub trait SetField2 { + fn set_field2( + &mut self, + range1: Range, + range2: Range, + val: F, + ); +} + +impl SetField2 for T { + fn set_field2( + &mut self, + range1: Range, + range2: Range, + val: F, + ) { + let bits1 = range1.len(); + let bits2 = range2.len(); + let val = val.to_field_bits(bits1 + bits2); + self.set_field_u64(range1, val & u64_mask_for_bits(bits1)); + self.set_field_u64(range2, val >> bits1); + } +} + macro_rules! impl_to_field_bits_for_uN { ($typ: ident) => { impl ToFieldBits for $typ {