diff options
| author | Helena Kotas <hekotas@microsoft.com> | 2025-10-15 17:54:15 -0700 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-10-15 17:54:15 -0700 |
| commit | 78d98161b9e38e492023ea2abda72a570bcdbee3 (patch) | |
| tree | f6afb59d19e2f1579289b132e90cbfd703e13e9a /llvm/test/CodeGen/DirectX/bufferGetDimensions.ll | |
| parent | 333c75846d34b0b486385136f22d1d4d4f108b62 (diff) | |
| download | llvm-78d98161b9e38e492023ea2abda72a570bcdbee3.zip llvm-78d98161b9e38e492023ea2abda72a570bcdbee3.tar.gz llvm-78d98161b9e38e492023ea2abda72a570bcdbee3.tar.bz2 | |
[DirectX] Add `llvm.dx.resource.getdimensions.x` intrinsic and lowering to DXIL (#161753)
Introduces LLVM intrinsic `llvm.dx.resource.getdimensions.x` and its lowering to DXIL op `op.dx.getDimensions`.
The intrinsic will be used to implement `GetDimension` for buffers. The lowering is using `undef` value since it is required by the DXIL format which is based on LLVM 3.7.
Proposal update: https://github.com/llvm/wg-hlsl/pull/350
Closes #112982
Diffstat (limited to 'llvm/test/CodeGen/DirectX/bufferGetDimensions.ll')
| -rw-r--r-- | llvm/test/CodeGen/DirectX/bufferGetDimensions.ll | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/llvm/test/CodeGen/DirectX/bufferGetDimensions.ll b/llvm/test/CodeGen/DirectX/bufferGetDimensions.ll new file mode 100644 index 0000000..ff03bf1 --- /dev/null +++ b/llvm/test/CodeGen/DirectX/bufferGetDimensions.ll @@ -0,0 +1,16 @@ +; RUN: opt -S -dxil-op-lower %s | FileCheck %s + +target triple = "dxil-pc-shadermodel6.6-compute" + +define i32 @test_getdimensions_no_mips() { + ; CHECK: %[[HANDLE:.*]] = call %dx.types.Handle @dx.op.createHandleFromBinding(i32 217, + ; CHECK-NEXT: %[[ANNOT_HANDLE:.*]] = call %dx.types.Handle @dx.op.annotateHandle(i32 216, %dx.types.Handle %[[HANDLE]] + %handle = call target("dx.TypedBuffer", <4 x float>, 0, 0, 0) @llvm.dx.resource.handlefrombinding(i32 0, i32 0, i32 1, i32 0, ptr null) + + ; CHECK-NEXT: %[[RETVAL:.*]] = call %dx.types.Dimensions @dx.op.getDimensions(i32 72, %dx.types.Handle %[[ANNOT_HANDLE]], i32 undef) + ; CHECK-NEXT: %[[DIM:.*]] = extractvalue %dx.types.Dimensions %[[RETVAL]], 0 + %1 = call i32 @llvm.dx.resource.getdimensions.x(target("dx.TypedBuffer", <4 x float>, 0, 0, 0) %handle) + + ; CHECK-NEXT: ret i32 %[[DIM]] + ret i32 %1 +} |
