diff --git a/src/nouveau/compiler/nak/sm70_encode.rs b/src/nouveau/compiler/nak/sm70_encode.rs index 12d836202a2..cca327a6848 100644 --- a/src/nouveau/compiler/nak/sm70_encode.rs +++ b/src/nouveau/compiler/nak/sm70_encode.rs @@ -3722,9 +3722,13 @@ impl SM70Op for OpS2R { } fn encode(&self, e: &mut SM70Encoder<'_>) { - assert!(!self.is_uniform()); - e.set_opcode(if self.is_uniform() { 0x9c3 } else { 0x919 }); - e.set_dst(&self.dst); + if self.is_uniform() { + e.set_opcode(0x9c3); + e.set_udst(&self.dst); + } else { + e.set_opcode(0x919); + e.set_dst(&self.dst); + } e.set_field(72..80, self.idx); } } diff --git a/src/nouveau/compiler/nak/sm75_instr_latencies.rs b/src/nouveau/compiler/nak/sm75_instr_latencies.rs index 0e297a6af29..1e2119058ed 100644 --- a/src/nouveau/compiler/nak/sm75_instr_latencies.rs +++ b/src/nouveau/compiler/nak/sm75_instr_latencies.rs @@ -932,6 +932,13 @@ impl URegLatencySM75 { panic!("Illegal R2UR in ureg"); } } + Op::S2R(_) => { + if !reader { + R2UR + } else { + panic!("Illegal S2UR in ureg"); + } + } Op::Vote(_) => VoteU, Op::FRnd(_) => vdecoupled, diff --git a/src/nouveau/compiler/nak/sm80_instr_latencies.rs b/src/nouveau/compiler/nak/sm80_instr_latencies.rs index 335fb0723d8..d1c8b32413b 100644 --- a/src/nouveau/compiler/nak/sm80_instr_latencies.rs +++ b/src/nouveau/compiler/nak/sm80_instr_latencies.rs @@ -1067,6 +1067,13 @@ impl URegLatencySM80 { panic!("Illegal R2UR in ureg"); } } + Op::S2R(_) => { + if !reader { + ToUr + } else { + panic!("Illegal S2UR in ureg"); + } + } Op::Vote(_) => VoteU, Op::FRnd(_) => vdecoupled,