From b8fa4fd2581166e5fcbaef7471dad11556572d4f Mon Sep 17 00:00:00 2001 From: Mary Guillemard Date: Sun, 24 May 2026 12:11:21 +0200 Subject: [PATCH] nak: Allow YY swizzle for SM20 and SM32 asserts We now handle that specific form on F2F and F2I but were still asserting. Signed-off-by: Mary Guillemard Fixes: 67bfbc753552 ("nak: rework swizzling on scalar FP16 ops") Reviewed-by: Karol Herbst Part-of: --- src/nouveau/compiler/nak/sm20.rs | 6 ++++-- src/nouveau/compiler/nak/sm32.rs | 4 ++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/nouveau/compiler/nak/sm20.rs b/src/nouveau/compiler/nak/sm20.rs index b320f26b432..2a0ebcabc76 100644 --- a/src/nouveau/compiler/nak/sm20.rs +++ b/src/nouveau/compiler/nak/sm20.rs @@ -148,7 +148,9 @@ enum AluSrc { impl AluSrc { fn from_src(src: Option<&Src>) -> AluSrc { if let Some(src) = src { - assert!(src.src_swizzle.is_none()); + assert!( + src.src_swizzle.is_none() || src.src_swizzle == SrcSwizzle::Yy + ); // do not assert src_mod, can be encoded by opcode. match &src.src_ref { @@ -299,7 +301,7 @@ impl SM20Encoder<'_> { } fn set_reg_src(&mut self, range: Range, src: &Src) { - assert!(src.src_swizzle.is_none()); + assert!(src.src_swizzle.is_none() || src.src_swizzle == SrcSwizzle::Yy); self.set_reg_src_ref(range, &src.src_ref); } diff --git a/src/nouveau/compiler/nak/sm32.rs b/src/nouveau/compiler/nak/sm32.rs index a9d64dad849..04f0d4f8f27 100644 --- a/src/nouveau/compiler/nak/sm32.rs +++ b/src/nouveau/compiler/nak/sm32.rs @@ -230,7 +230,7 @@ impl SM32Encoder<'_> { } fn set_reg_src(&mut self, range: Range, src: &Src) { - assert!(src.src_swizzle.is_none()); + assert!(src.src_swizzle.is_none() || src.src_swizzle == SrcSwizzle::Yy); self.set_reg_src_ref(range, &src.src_ref); } @@ -319,7 +319,7 @@ enum AluSrc { impl AluSrc { fn from_src(src: &Src) -> AluSrc { - assert!(src.src_swizzle.is_none()); + assert!(src.src_swizzle.is_none() || src.src_swizzle == SrcSwizzle::Yy); // do not assert src_mod, can be encoded by opcode. match &src.src_ref {