xref: /llvm-project/llvm/test/CodeGen/DirectX/ContainerData/PSVResources.ll (revision aa07f922103ebe8e78c8da4c754b43af3c129f3e)
1981bb9dcSXiang Li; RUN: llc %s --filetype=obj -o - | obj2yaml | FileCheck %s
2981bb9dcSXiang Li
3981bb9dcSXiang Li; Make sure resource table is created correctly.
4981bb9dcSXiang Li; CHECK: Resources:
5981bb9dcSXiang Litarget triple = "dxil-unknown-shadermodel6.0-compute"
6981bb9dcSXiang Li
7981bb9dcSXiang Lidefine void @main() #0 {
8981bb9dcSXiang Li
9981bb9dcSXiang Li  ; ByteAddressBuffer Buf : register(t8, space1)
10981bb9dcSXiang Li; CHECK:        - Type:            SRVRaw
11981bb9dcSXiang Li; CHECK:          Space:           1
12981bb9dcSXiang Li; CHECK:          LowerBound:      8
13981bb9dcSXiang Li; CHECK:          UpperBound:      8
14981bb9dcSXiang Li; CHECK:          Kind:            RawBuffer
15981bb9dcSXiang Li; CHECK:          Flags:
16981bb9dcSXiang Li; CHECK:            UsedByAtomic64:  false
17981bb9dcSXiang Li  %srv0 = call target("dx.RawBuffer", i8, 0, 0)
18*aa07f922SJustin Bogner      @llvm.dx.resource.handlefrombinding.tdx.RawBuffer_i8_0_0t(
19981bb9dcSXiang Li          i32 1, i32 8, i32 1, i32 0, i1 false)
20981bb9dcSXiang Li
21981bb9dcSXiang Li  ; struct S { float4 a; uint4 b; };
22981bb9dcSXiang Li  ; StructuredBuffer<S> Buf : register(t2, space4)
23981bb9dcSXiang Li; CHECK:        - Type:            SRVStructured
24981bb9dcSXiang Li; CHECK:          Space:           4
25981bb9dcSXiang Li; CHECK:          LowerBound:      2
26981bb9dcSXiang Li; CHECK:          UpperBound:      2
27981bb9dcSXiang Li; CHECK:          Kind:            StructuredBuffer
28981bb9dcSXiang Li; CHECK:          Flags:
29981bb9dcSXiang Li; CHECK:            UsedByAtomic64:  false
30981bb9dcSXiang Li  %srv1 = call target("dx.RawBuffer", {<4 x float>, <4 x i32>}, 0, 0)
31*aa07f922SJustin Bogner      @llvm.dx.resource.handlefrombinding.tdx.RawBuffer_sl_v4f32v4i32s_0_0t(
32981bb9dcSXiang Li          i32 4, i32 2, i32 1, i32 0, i1 false)
33981bb9dcSXiang Li
34981bb9dcSXiang Li  ; Buffer<uint4> Buf[24] : register(t3, space5)
35981bb9dcSXiang Li; CHECK:        - Type:            SRVTyped
36981bb9dcSXiang Li; CHECK:          Space:           5
37981bb9dcSXiang Li; CHECK:          LowerBound:      3
38981bb9dcSXiang Li; CHECK:          UpperBound:      26
39981bb9dcSXiang Li; CHECK:          Kind:            TypedBuffer
40981bb9dcSXiang Li; CHECK:          Flags:
41981bb9dcSXiang Li; CHECK:            UsedByAtomic64:  false
42981bb9dcSXiang Li  %srv2 = call target("dx.TypedBuffer", <4 x i32>, 0, 0, 0)
43*aa07f922SJustin Bogner      @llvm.dx.resource.handlefrombinding.tdx.TypedBuffer_i32_0_0t(
44981bb9dcSXiang Li          i32 5, i32 3, i32 24, i32 0, i1 false)
45981bb9dcSXiang Li
46981bb9dcSXiang Li  ; RWBuffer<int> Buf : register(u7, space2)
47981bb9dcSXiang Li; CHECK:        - Type:            UAVTyped
48981bb9dcSXiang Li; CHECK:          Space:           2
49981bb9dcSXiang Li; CHECK:          LowerBound:      7
50981bb9dcSXiang Li; CHECK:          UpperBound:      7
51981bb9dcSXiang Li; CHECK:          Kind:            TypedBuffer
52981bb9dcSXiang Li; CHECK:          Flags:
53981bb9dcSXiang Li; CHECK:            UsedByAtomic64:  false
54981bb9dcSXiang Li  %uav0 = call target("dx.TypedBuffer", i32, 1, 0, 1)
55*aa07f922SJustin Bogner      @llvm.dx.resource.handlefrombinding.tdx.TypedBuffer_i32_1_0t(
56981bb9dcSXiang Li          i32 2, i32 7, i32 1, i32 0, i1 false)
57981bb9dcSXiang Li
58981bb9dcSXiang Li  ; RWBuffer<float4> Buf : register(u5, space3)
59981bb9dcSXiang Li; CHECK:        - Type:            UAVTyped
60981bb9dcSXiang Li; CHECK:          Space:           3
61981bb9dcSXiang Li; CHECK:          LowerBound:      5
62981bb9dcSXiang Li; CHECK:          UpperBound:      5
63981bb9dcSXiang Li; CHECK:          Kind:            TypedBuffer
64981bb9dcSXiang Li; CHECK:          Flags:
65981bb9dcSXiang Li; CHECK:            UsedByAtomic64:  false
66981bb9dcSXiang Li  %uav1 = call target("dx.TypedBuffer", <4 x float>, 1, 0, 0)
67*aa07f922SJustin Bogner              @llvm.dx.resource.handlefrombinding.tdx.TypedBuffer_f32_1_0(
68981bb9dcSXiang Li                  i32 3, i32 5, i32 1, i32 0, i1 false)
69981bb9dcSXiang Li
70981bb9dcSXiang Li  ; RWBuffer<float4> BufferArray[10] : register(u0, space4)
71981bb9dcSXiang Li; CHECK:        - Type:            UAVTyped
72981bb9dcSXiang Li; CHECK:          Space:           4
73981bb9dcSXiang Li; CHECK:          LowerBound:      0
74981bb9dcSXiang Li; CHECK:          UpperBound:      9
75981bb9dcSXiang Li; CHECK:          Kind:            TypedBuffer
76981bb9dcSXiang Li; CHECK:          Flags:
77981bb9dcSXiang Li; CHECK:            UsedByAtomic64:  false
78981bb9dcSXiang Li  ; RWBuffer<float4> Buf = BufferArray[0]
79981bb9dcSXiang Li  %uav2_1 = call target("dx.TypedBuffer", <4 x float>, 1, 0, 0)
80*aa07f922SJustin Bogner              @llvm.dx.resource.handlefrombinding.tdx.TypedBuffer_f32_1_0(
81981bb9dcSXiang Li                  i32 4, i32 0, i32 10, i32 0, i1 false)
82981bb9dcSXiang Li  ; RWBuffer<float4> Buf = BufferArray[5]
83981bb9dcSXiang Li  %uav2_2 = call target("dx.TypedBuffer", <4 x float>, 1, 0, 0)
84*aa07f922SJustin Bogner              @llvm.dx.resource.handlefrombinding.tdx.TypedBuffer_f32_1_0(
85981bb9dcSXiang Li                  i32 4, i32 0, i32 10, i32 5, i1 false)
86981bb9dcSXiang Li  ret void
87981bb9dcSXiang Li}
88981bb9dcSXiang Li
89981bb9dcSXiang Liattributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }
90981bb9dcSXiang Li
91981bb9dcSXiang Li!dx.valver = !{!0}
92981bb9dcSXiang Li
93981bb9dcSXiang Li!0 = !{i32 1, i32 7}
94