55define void @test_typedbuffer () {
66 ; ByteAddressBuffer Buf : register(t8, space1)
77 %srv0 = call target ("dx.RawBuffer" , void , 0 , 0 )
8- @llvm.dx.resource.handlefrombinding.tdx.RawBuffer_i8_0_0t (
9- i32 1 , i32 8 , i32 1 , i32 0 , i1 false )
8+ @llvm.dx.resource.handlefrombinding (i32 1 , i32 8 , i32 1 , i32 0 , i1 false )
109 ; CHECK: Resource [[SRV0:[0-9]+]]:
1110 ; CHECK: Binding:
1211 ; CHECK: Record ID: 0
@@ -19,8 +18,7 @@ define void @test_typedbuffer() {
1918 ; struct S { float4 a; uint4 b; };
2019 ; StructuredBuffer<S> Buf : register(t2, space4)
2120 %srv1 = call target ("dx.RawBuffer" , {<4 x float >, <4 x i32 >}, 0 , 0 )
22- @llvm.dx.resource.handlefrombinding.tdx.RawBuffer_sl_v4f32v4i32s_0_0t (
23- i32 4 , i32 2 , i32 1 , i32 0 , i1 false )
21+ @llvm.dx.resource.handlefrombinding (i32 4 , i32 2 , i32 1 , i32 0 , i1 false )
2422 ; CHECK: Resource [[SRV1:[0-9]+]]:
2523 ; CHECK: Binding:
2624 ; CHECK: Record ID: 1
@@ -34,8 +32,7 @@ define void @test_typedbuffer() {
3432
3533 ; Buffer<uint4> Buf[24] : register(t3, space5)
3634 %srv2 = call target ("dx.TypedBuffer" , <4 x i32 >, 0 , 0 , 0 )
37- @llvm.dx.resource.handlefrombinding.tdx.TypedBuffer_i32_0_0t (
38- i32 5 , i32 3 , i32 24 , i32 0 , i1 false )
35+ @llvm.dx.resource.handlefrombinding (i32 5 , i32 3 , i32 24 , i32 0 , i1 false )
3936 ; CHECK: Resource [[SRV2:[0-9]+]]:
4037 ; CHECK: Binding:
4138 ; CHECK: Record ID: 2
@@ -49,8 +46,7 @@ define void @test_typedbuffer() {
4946
5047 ; RWBuffer<int> Buf : register(u7, space2)
5148 %uav0 = call target ("dx.TypedBuffer" , i32 , 1 , 0 , 1 )
52- @llvm.dx.resource.handlefrombinding.tdx.TypedBuffer_i32_1_0t (
53- i32 2 , i32 7 , i32 1 , i32 0 , i1 false )
49+ @llvm.dx.resource.handlefrombinding (i32 2 , i32 7 , i32 1 , i32 0 , i1 false )
5450 ; CHECK: Resource [[UAV0:[0-9]+]]:
5551 ; CHECK: Binding:
5652 ; CHECK: Record ID: 0
@@ -67,16 +63,16 @@ define void @test_typedbuffer() {
6763
6864 ; RWBuffer<float4> Buf : register(u5, space3)
6965 %uav1 = call target ("dx.TypedBuffer" , <4 x float >, 1 , 0 , 0 )
70- @llvm.dx.resource.handlefrombinding.tdx.TypedBuffer_f32_1_0 (
71- i32 3 , i32 5 , i32 1 , i32 0 , i1 false )
66+ @llvm.dx.resource.handlefrombinding ( i32 3 , i32 5 , i32 1 , i32 0 , i1 false )
67+ call i32 @llvm.dx.resource.updatecounter ( target ( "dx.TypedBuffer" , < 4 x float >, 1 , 0 , 0 ) %uav1 , i8 - 1 )
7268 ; CHECK: Resource [[UAV1:[0-9]+]]:
7369 ; CHECK: Binding:
7470 ; CHECK: Record ID: 1
7571 ; CHECK: Space: 3
7672 ; CHECK: Lower Bound: 5
7773 ; CHECK: Size: 1
7874 ; CHECK: Globally Coherent: 0
79- ; CHECK: Counter Direction: Unknown
75+ ; CHECK: Counter Direction: Decrement
8076 ; CHECK: Class: UAV
8177 ; CHECK: Kind: TypedBuffer
8278 ; CHECK: IsROV: 0
@@ -86,28 +82,46 @@ define void @test_typedbuffer() {
8682 ; RWBuffer<float4> BufferArray[10] : register(u0, space4)
8783 ; RWBuffer<float4> Buf = BufferArray[0]
8884 %uav2_1 = call target ("dx.TypedBuffer" , <4 x float >, 1 , 0 , 0 )
89- @llvm.dx.resource.handlefrombinding.tdx.TypedBuffer_f32_1_0 (
90- i32 4 , i32 0 , i32 10 , i32 0 , i1 false )
85+ @llvm.dx.resource.handlefrombinding (i32 4 , i32 0 , i32 10 , i32 0 , i1 false )
9186 ; RWBuffer<float4> Buf = BufferArray[5]
9287 %uav2_2 = call target ("dx.TypedBuffer" , <4 x float >, 1 , 0 , 0 )
93- @llvm.dx.resource.handlefrombinding.tdx.TypedBuffer_f32_1_0 (
94- i32 4 , i32 0 , i32 10 , i32 5 , i1 false )
88+ @llvm.dx.resource.handlefrombinding ( i32 4 , i32 0 , i32 10 , i32 5 , i1 false )
89+ call i32 @llvm.dx.resource.updatecounter ( target ( "dx.TypedBuffer" , < 4 x float >, 1 , 0 , 0 ) %uav2_2 , i8 1 )
9590 ; CHECK: Resource [[UAV2:[0-9]+]]:
9691 ; CHECK: Binding:
9792 ; CHECK: Record ID: 2
9893 ; CHECK: Space: 4
9994 ; CHECK: Lower Bound: 0
10095 ; CHECK: Size: 10
10196 ; CHECK: Globally Coherent: 0
102- ; CHECK: Counter Direction: Unknown
97+ ; CHECK: Counter Direction: Increment
98+ ; CHECK: Class: UAV
99+ ; CHECK: Kind: TypedBuffer
100+ ; CHECK: IsROV: 0
101+ ; CHECK: Element Type: f32
102+ ; CHECK: Element Count: 4
103+
104+ ; RWBuffer<float4> Buf : register(u0, space5)
105+ %uav3 = call target ("dx.TypedBuffer" , <4 x float >, 1 , 0 , 0 )
106+ @llvm.dx.resource.handlefrombinding (i32 5 , i32 0 , i32 1 , i32 0 , i1 false )
107+ call i32 @llvm.dx.resource.updatecounter (target ("dx.TypedBuffer" , <4 x float >, 1 , 0 , 0 ) %uav3 , i8 -1 )
108+ call i32 @llvm.dx.resource.updatecounter (target ("dx.TypedBuffer" , <4 x float >, 1 , 0 , 0 ) %uav3 , i8 1 )
109+ ; CHECK: Resource [[UAV3:[0-9]+]]:
110+ ; CHECK: Binding:
111+ ; CHECK: Record ID: 3
112+ ; CHECK: Space: 5
113+ ; CHECK: Lower Bound: 0
114+ ; CHECK: Size: 1
115+ ; CHECK: Globally Coherent: 0
116+ ; CHECK: Counter Direction: Invalid
103117 ; CHECK: Class: UAV
104118 ; CHECK: Kind: TypedBuffer
105119 ; CHECK: IsROV: 0
106120 ; CHECK: Element Type: f32
107121 ; CHECK: Element Count: 4
108122
109123 %cb0 = call target ("dx.CBuffer" , {float })
110- @llvm.dx.resource.handlefrombinding (i32 1 , i32 0 , i32 1 , i32 0 , i1 false )
124+ @llvm.dx.resource.handlefrombinding (i32 1 , i32 0 , i32 1 , i32 0 , i1 false )
111125 ; CHECK: Resource [[CB0:[0-9]+]]:
112126 ; CHECK: Binding:
113127 ; CHECK: Record ID: 0
@@ -119,7 +133,7 @@ define void @test_typedbuffer() {
119133 ; CHECK: CBuffer size: 4
120134
121135 %cb1 = call target ("dx.CBuffer" , target ("dx.Layout" , {float }, 4 , 0 ))
122- @llvm.dx.resource.handlefrombinding (i32 1 , i32 8 , i32 1 , i32 0 , i1 false )
136+ @llvm.dx.resource.handlefrombinding (i32 1 , i32 8 , i32 1 , i32 0 , i1 false )
123137 ; CHECK: Resource [[CB1:[0-9]+]]:
124138 ; CHECK: Binding:
125139 ; CHECK: Record ID: 1
0 commit comments