From 6c5ee118cd6837810f084240f2f237d854903bbc Mon Sep 17 00:00:00 2001 From: Karol Herbst Date: Sun, 15 Mar 2026 14:21:19 +0100 Subject: [PATCH] nak: add ugpr latency classes for memory instructions Reviewed-by: Mel Henning Part-of: --- src/nouveau/compiler/nak/sm120_instr_latencies.rs | 7 +++++++ src/nouveau/compiler/nak/sm75_instr_latencies.rs | 7 +++++++ src/nouveau/compiler/nak/sm80_instr_latencies.rs | 7 +++++++ 3 files changed, 21 insertions(+) diff --git a/src/nouveau/compiler/nak/sm120_instr_latencies.rs b/src/nouveau/compiler/nak/sm120_instr_latencies.rs index 2a275ca596b..2155689f7a9 100644 --- a/src/nouveau/compiler/nak/sm120_instr_latencies.rs +++ b/src/nouveau/compiler/nak/sm120_instr_latencies.rs @@ -250,6 +250,13 @@ fn op_ureg_latency( Op::IMad64(_) => coupled, Op::ISetP(_) => coupled, + Op::ALd(_) + | Op::ASt(_) + | Op::Ld(_) + | Op::Ldsm(_) + | Op::St(_) + | Op::Atom(_) => decoupled, + Op::SuLd(_) | Op::SuSt(_) | Op::SuAtom(_) => decoupled, Op::Ldc(_) => { if uniform_op { ToUr diff --git a/src/nouveau/compiler/nak/sm75_instr_latencies.rs b/src/nouveau/compiler/nak/sm75_instr_latencies.rs index fd0f5dbbca3..8f7642acb7b 100644 --- a/src/nouveau/compiler/nak/sm75_instr_latencies.rs +++ b/src/nouveau/compiler/nak/sm75_instr_latencies.rs @@ -926,6 +926,13 @@ impl URegLatencySM75 { Op::IMad64(_) => vcoupled, Op::ISetP(_) => vcoupled, + Op::ALd(_) + | Op::ASt(_) + | Op::Ld(_) + | Op::Ldsm(_) + | Op::St(_) + | Op::Atom(_) => vdecoupled, + Op::SuLd(_) | Op::SuSt(_) | Op::SuAtom(_) => vdecoupled, Op::Ldc(_) => { if uniform_op { Uldc diff --git a/src/nouveau/compiler/nak/sm80_instr_latencies.rs b/src/nouveau/compiler/nak/sm80_instr_latencies.rs index 26a3449b1b6..da3e2ccbf9b 100644 --- a/src/nouveau/compiler/nak/sm80_instr_latencies.rs +++ b/src/nouveau/compiler/nak/sm80_instr_latencies.rs @@ -1082,6 +1082,13 @@ impl URegLatencySM80 { Op::IMad64(_) => vcoupled, Op::ISetP(_) => vcoupled, + Op::ALd(_) + | Op::ASt(_) + | Op::Ld(_) + | Op::Ldsm(_) + | Op::St(_) + | Op::Atom(_) => vdecoupled, + Op::SuLd(_) | Op::SuSt(_) | Op::SuAtom(_) => vdecoupled, Op::Ldc(_) => { if uniform_op { Uldc