[llvm-branch-commits] [llvm] [AMDGPU][SIMemoryLegalizer] Lower single-wave workgroup scope to wavefront in absence of LDSDMA (PR #224065)
Krzysztof Drewniak via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Wed Sep 16 13:46:36 PDT 2026
================
@@ -824,9 +838,23 @@ SIAtomicAddrSpace SIMemOpAccess::toSIAtomicAddrSpace(unsigned AS) const {
return SIAtomicAddrSpace::OTHER;
}
+/// returns true if any instruction in \p MF accesses LDS through DMA.
+static bool containsLDSDMA(const MachineFunction &MF) {
+ return any_of(MF, [](const MachineBasicBlock &MBB) {
+ return any_of(MBB.instrs(), [](const MachineInstr &MI) {
+ return SIInstrInfo::isLDSDMA(MI);
----------------
krzysz00 wrote:
This is not correct.
Consider:
```
declare void @foo(ptr addrspace(1), ptr addrspace(3))
define void amdgpu_kernel @example(...) {flat_work_group_size="32,32"} {
...
;; Does this call a DMA? It _might_.
call void @foo(ptr addrspace(1) %someGlobal, ptr addrspace(3) %someLds)
fence release syncsope("workgroup")
...
}
```
https://github.com/llvm/llvm-project/pull/224065
More information about the llvm-branch-commits
mailing list