================
@@ -2641,6 +2641,28 @@ def int_amdgcn_perm :
 // GFX9 Intrinsics
 
//===----------------------------------------------------------------------===//
 
+/// This is a general-purpose intrinsic for all operations that take a pointer
+/// a base location in LDS, and a data size and use it to perform a gather to 
LDS.
+/// This allows abstracting over both global pointers (address space 1) and
+/// the buffer-resource-wrapper pointers (address space 7 and 9).
+/// TODO: add support for address space 5 and scratch_load_lds.
+class AMDGPULoadToLDS :
+  Intrinsic <
+    [],
+    [llvm_anyptr_ty,                    // Base pointer to load from. Varies 
per lane.
+     LLVMQualPointerType<3>,            // LDS base pointer to store to. Must 
be wave-uniform.
+     llvm_i32_ty,                       // Data byte size: 1/2/4 (/12/16 for 
gfx950)
+     llvm_i32_ty,                       // imm offset (applied to both input 
and LDS address)
----------------
jayfoad wrote:

What's the point of the imm offset argument? It's not semantically useful, 
right? You could just add this offset to the two pointer arguments before 
calling the intrinsic.

https://github.com/llvm/llvm-project/pull/137425
_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to