[clang] [llvm] [NVPTX] Change the alloca address space in NVPTXLowerAlloca (PR #154814)

Theodoros Theodoridis via llvm-commits llvm-commits at lists.llvm.org
Fri Aug 22 06:13:22 PDT 2025


================
@@ -216,24 +214,23 @@ define dso_local ptx_kernel void @escape_ptr_store(ptr nocapture noundef writeon
 ;
 ; PTX-LABEL: escape_ptr_store(
 ; PTX:       {
-; PTX-NEXT:    .local .align 4 .b8 __local_depot4[8];
+; PTX-NEXT:    .local .align 8 .b8 __local_depot4[8];
----------------
thetheodor wrote:

Maybe it's due to my change in `nvptx-lower-args`, I spotted this IR diff:

Before:
```
define dso_local ptx_kernel void @escape_ptr_store(ptr noundef writeonly captures(none) %out, ptr noundef byval(%struct.S) align 4 %s) local_unnamed_addr #0 {
entry:
  %s1 = alloca %struct.S, align 4
  %s2 = call ptr addrspace(101) @llvm.nvvm.internal.addrspace.wrap.p101.p0(ptr %s)
  call void @llvm.memcpy.p0.p101.i64(ptr align 4 %s1, ptr addrspace(101) align 4 %s2, i64 8, i1 false)
  store ptr %s1, ptr %out, align 8
  ret void
}
```
After:
```
define dso_local ptx_kernel void @escape_ptr_store(ptr noundef writeonly captures(none) %out, ptr noundef byval(%struct.S) align 4 %s) local_unnamed_addr #0 {
entry:
  %s1 = alloca %struct.S, align 4
  %s.param = call align 4 ptr addrspace(101) @llvm.nvvm.internal.addrspace.wrap.p101.p0(ptr %s)
  call void @llvm.memcpy.p0.p101.i64(ptr align 4 %s1, ptr addrspace(101) align 4 %s.param, i64 8, i1 false)
  store ptr %s1, ptr %out, align 8
  ret void
}
```

specifically:
`%s2 = call ptr addrspace(101) @llvm.nvvm.internal.addrspace.wrap.p101.p0(ptr %s)` vs `%s.param = call align 4 ptr addrspace(101) @llvm.nvvm.internal.addrspace.wrap.p101.p0(ptr %s)` an additional alignment annotation appeared. 

I'll investigate

https://github.com/llvm/llvm-project/pull/154814


More information about the llvm-commits mailing list