Skip to content

Commit 8178d3c

Browse files
authored
[DirectX] Add getpointer docs to DXILResources.rst (#120779)
1 parent 2c7c07d commit 8178d3c

File tree

1 file changed

+44
-0
lines changed

1 file changed

+44
-0
lines changed

llvm/docs/DirectX/DXILResources.rst

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -274,6 +274,50 @@ Examples:
274274
@llvm.dx.handle.fromHeap.tdx.RawBuffer_v4f32_1_0(
275275
i32 2, i1 false)
276276
277+
Accessing Resources as Memory
278+
-----------------------------
279+
280+
*relevant types: Buffers, CBuffer, and Textures*
281+
282+
Loading and storing from resources is generally represented in LLVM using
283+
operations on memory that is only accessible via a handle object. Given a
284+
handle, `llvm.dx.resource.getpointer` gives a pointer that can be used to read
285+
and (depending on type) write to the resource.
286+
287+
Accesses using `llvm.dx.resource.getpointer` are replaced with direct load and
288+
store operations in the `DXILResourceAccess` pass. These direct loads and
289+
stores are described later in this document.
290+
291+
.. note:: Currently the pointers returned by `dx.resource.getpointer` are in
292+
the default address space, but that will likely change in the future.
293+
294+
.. list-table:: ``@llvm.dx.resource.getpointer``
295+
:header-rows: 1
296+
297+
* - Argument
298+
-
299+
- Type
300+
- Description
301+
* - Return value
302+
-
303+
- Pointer
304+
- A pointer to an object in the buffer
305+
* - ``%buffer``
306+
- 0
307+
- ``target(dx.TypedBuffer, ...)``
308+
- The buffer to access
309+
* - ``%index``
310+
- 1
311+
- ``i32``
312+
- Index into the buffer
313+
314+
Examples:
315+
316+
.. code-block:: llvm
317+
318+
%ptr = call ptr @llvm.dx.resource.getpointer.p0.tdx.TypedBuffer_v4f32_0_0_0t(
319+
target("dx.TypedBuffer", <4 x float>, 0, 0, 0) %buffer, i32 %index)
320+
277321
16-byte Loads, Samples, and Gathers
278322
-----------------------------------
279323

0 commit comments

Comments
 (0)