aboutsummaryrefslogtreecommitdiff
path: root/llvm/test/CodeGen/DirectX/bufferGetDimensions.ll
diff options
context:
space:
mode:
authorHelena Kotas <hekotas@microsoft.com>2025-10-15 17:54:15 -0700
committerGitHub <noreply@github.com>2025-10-15 17:54:15 -0700
commit78d98161b9e38e492023ea2abda72a570bcdbee3 (patch)
treef6afb59d19e2f1579289b132e90cbfd703e13e9a /llvm/test/CodeGen/DirectX/bufferGetDimensions.ll
parent333c75846d34b0b486385136f22d1d4d4f108b62 (diff)
downloadllvm-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.ll16
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
+}