diff --git a/.pick_status.json b/.pick_status.json index 27fb8bcc048..d216810b405 100644 --- a/.pick_status.json +++ b/.pick_status.json @@ -84,7 +84,7 @@ "description": "nak: Remove hfma2 src 1 modifiers", "nominated": true, "nomination_type": 2, - "resolution": 0, + "resolution": 1, "main_sha": null, "because_sha": "567cae69c3efd0070e3b9b8444dc8a24f0f83838", "notes": null diff --git a/src/nouveau/compiler/nak/sm70_encode.rs b/src/nouveau/compiler/nak/sm70_encode.rs index dc544ac888c..aa81f24ee22 100644 --- a/src/nouveau/compiler/nak/sm70_encode.rs +++ b/src/nouveau/compiler/nak/sm70_encode.rs @@ -1113,14 +1113,16 @@ impl SM70Op for OpHFma2 { b.copy_alu_src_if_not_reg(src1, gpr, SrcType::F16v2); b.copy_alu_src_if_both_not_reg(src1, src2, gpr, SrcType::F16v2); - // HFMA2 doesn't have fabs or fneg on SRC2. + if !src1.src_mod.is_none() { + b.copy_alu_src_and_lower_fmod(src1, gpr, SrcType::F16v2); + } if !src2.src_mod.is_none() { b.copy_alu_src_and_lower_fmod(src2, gpr, SrcType::F16v2); } } fn encode(&self, e: &mut SM70Encoder<'_>) { - // HFMA2 doesn't have fneg and fabs on SRC2. + assert!(self.srcs[1].src_mod.is_none()); assert!(self.srcs[2].src_mod.is_none()); e.encode_fp16_alu(