diff --git a/src/nouveau/compiler/nak_encode_sm75.rs b/src/nouveau/compiler/nak_encode_sm75.rs index 551254636f9..323e800fded 100644 --- a/src/nouveau/compiler/nak_encode_sm75.rs +++ b/src/nouveau/compiler/nak_encode_sm75.rs @@ -1140,6 +1140,7 @@ impl SM75Instr { fn set_mem_order(&mut self, order: &MemOrder) { if self.sm < 80 { let scope = match order { + MemOrder::Constant => MemScope::System, MemOrder::Weak => MemScope::CTA, MemOrder::Strong(s) => *s, }; @@ -1155,7 +1156,7 @@ impl SM75Instr { self.set_field( 79..81, match order { - /* Constant => 0_u8, */ + MemOrder::Constant => 0_u8, MemOrder::Weak => 1_u8, MemOrder::Strong(_) => 2_u8, /* MMIO => 3_u8, */ @@ -1165,6 +1166,7 @@ impl SM75Instr { self.set_field( 77..81, match order { + MemOrder::Constant => 0x4_u8, MemOrder::Weak => 0x0_u8, MemOrder::Strong(MemScope::CTA) => 0x5_u8, MemOrder::Strong(MemScope::GPU) => 0x7_u8, diff --git a/src/nouveau/compiler/nak_ir.rs b/src/nouveau/compiler/nak_ir.rs index c8beb84507a..234b45f2a30 100644 --- a/src/nouveau/compiler/nak_ir.rs +++ b/src/nouveau/compiler/nak_ir.rs @@ -1748,6 +1748,7 @@ impl fmt::Display for MemType { #[allow(dead_code)] #[derive(Clone, Copy, Eq, Hash, PartialEq)] pub enum MemOrder { + Constant, Weak, Strong(MemScope), } @@ -1755,6 +1756,7 @@ pub enum MemOrder { impl fmt::Display for MemOrder { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { match self { + MemOrder::Constant => write!(f, "CONSTANT"), MemOrder::Weak => write!(f, "WEAK"), MemOrder::Strong(scope) => write!(f, "STRONG.{}", scope), }