[llvm-branch-commits] [llvm] [DirectX] Create symbols for resource handles (PR #119775)

Justin Bogner via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Mon Dec 16 09:26:08 PST 2024


================
@@ -0,0 +1,48 @@
+; RUN: opt -S -passes=dxil-translate-metadata %s | FileCheck %s
+
+target triple = "dxil-pc-shadermodel6.6-compute"
+
+%struct.S = type { <4 x float>, <4 x i32> }
+
+define void @test() {
+  ; Buffer<float4>
+  %float4 = call target("dx.TypedBuffer", <4 x float>, 0, 0, 0)
+      @llvm.dx.handle.fromBinding(i32 0, i32 0, i32 1, i32 0, i1 false)
+  ; CHECK: %TypedBuffer = type { <4 x float> }
+
+  ; Buffer<int>
+  %int = call target("dx.TypedBuffer", i32, 0, 0, 1)
+      @llvm.dx.handle.fromBinding(i32 0, i32 1, i32 1, i32 0, i1 false)
+  ; CHECK: %TypedBuffer.0 = type { i32 }
+
+  ; Buffer<uint3>
+  %uint3 = call target("dx.TypedBuffer", <3 x i32>, 0, 0, 0)
+      @llvm.dx.handle.fromBinding(i32 0, i32 2, i32 1, i32 0, i1 false)
+  ; CHECK: %TypedBuffer.1 = type { <3 x i32> }
+
+  ; StructuredBuffer<S>
+  %struct0 = call target("dx.RawBuffer", %struct.S, 0, 0)
+      @llvm.dx.handle.fromBinding(i32 0, i32 10, i32 1, i32 0, i1 true)
+  ; CHECK: %StructuredBuffer = type { %struct.S }
+
+  ; ByteAddressBuffer
+  %byteaddr = call target("dx.RawBuffer", i8, 0, 0)
+      @llvm.dx.handle.fromBinding(i32 0, i32 20, i32 1, i32 0, i1 false)
+  ; CHECK: %ByteAddressBuffer = type { i32 }
+
+  ret void
+}
+
+; CHECK:      @[[T0:.*]] = external constant %TypedBuffer
+; CHECK-NEXT: @[[T1:.*]] = external constant %TypedBuffer.0
+; CHECK-NEXT: @[[T2:.*]] = external constant %TypedBuffer.1
+; CHECK-NEXT: @[[S0:.*]] = external constant %StructuredBuffer
+; CHECK-NEXT: @[[B0:.*]] = external constant %ByteAddressBuffer
+
+; CHECK: !{i32 0, ptr @[[T0]], !""
----------------
bogner wrote:

Yes. The logic in TranslateMetadata isn't (yet?) providing a name. The change as is does not fix #105059 - I can add a comment to that effect

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


More information about the llvm-branch-commits mailing list