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 {