Skip to content

Commit 6cca5e3

Browse files
committed
update testcases to check attributes
- testcases are update to check updated attribute types - there are some CHECK-NOT tests to ensure that previously set attributes no longer emit an attribute
1 parent 6c64084 commit 6cca5e3

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

51 files changed

+342
-252
lines changed

llvm/test/CodeGen/DirectX/BufferLoad.ll

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ define void @loadv4f32() {
1616
; The temporary casts should all have been cleaned up
1717
; CHECK-NOT: %dx.cast_handle
1818

19-
; CHECK: [[DATA0:%.*]] = call %dx.types.ResRet.f32 @dx.op.bufferLoad.f32(i32 68, %dx.types.Handle [[HANDLE]], i32 0, i32 undef)
19+
; CHECK: [[DATA0:%.*]] = call %dx.types.ResRet.f32 @dx.op.bufferLoad.f32(i32 68, %dx.types.Handle [[HANDLE]], i32 0, i32 undef) #[[#ATTR:]]
2020
%data0 = call <4 x float> @llvm.dx.typedBufferLoad(
2121
target("dx.TypedBuffer", <4 x float>, 0, 0, 0) %buffer, i32 0)
2222

@@ -33,7 +33,7 @@ define void @loadv4f32() {
3333
call void @scalar_user(float %data0_0)
3434
call void @scalar_user(float %data0_2)
3535

36-
; CHECK: [[DATA4:%.*]] = call %dx.types.ResRet.f32 @dx.op.bufferLoad.f32(i32 68, %dx.types.Handle [[HANDLE]], i32 4, i32 undef)
36+
; CHECK: [[DATA4:%.*]] = call %dx.types.ResRet.f32 @dx.op.bufferLoad.f32(i32 68, %dx.types.Handle [[HANDLE]], i32 4, i32 undef) #[[#ATTR]]
3737
%data4 = call <4 x float> @llvm.dx.typedBufferLoad(
3838
target("dx.TypedBuffer", <4 x float>, 0, 0, 0) %buffer, i32 4)
3939

@@ -47,7 +47,7 @@ define void @loadv4f32() {
4747
; CHECK: insertelement <4 x float>
4848
call void @vector_user(<4 x float> %data4)
4949

50-
; CHECK: [[DATA12:%.*]] = call %dx.types.ResRet.f32 @dx.op.bufferLoad.f32(i32 68, %dx.types.Handle [[HANDLE]], i32 12, i32 undef)
50+
; CHECK: [[DATA12:%.*]] = call %dx.types.ResRet.f32 @dx.op.bufferLoad.f32(i32 68, %dx.types.Handle [[HANDLE]], i32 12, i32 undef) #[[#ATTR]]
5151
%data12 = call <4 x float> @llvm.dx.typedBufferLoad(
5252
target("dx.TypedBuffer", <4 x float>, 0, 0, 0) %buffer, i32 12)
5353

@@ -69,7 +69,7 @@ define void @index_dynamic(i32 %bufindex, i32 %elemindex) {
6969
@llvm.dx.handle.fromBinding.tdx.TypedBuffer_v4f32_0_0_0(
7070
i32 0, i32 0, i32 1, i32 0, i1 false)
7171

72-
; CHECK: [[LOAD:%.*]] = call %dx.types.ResRet.f32 @dx.op.bufferLoad.f32(i32 68, %dx.types.Handle [[HANDLE]], i32 %bufindex, i32 undef)
72+
; CHECK: [[LOAD:%.*]] = call %dx.types.ResRet.f32 @dx.op.bufferLoad.f32(i32 68, %dx.types.Handle [[HANDLE]], i32 %bufindex, i32 undef) #[[#ATTR]]
7373
%load = call <4 x float> @llvm.dx.typedBufferLoad(
7474
target("dx.TypedBuffer", <4 x float>, 0, 0, 0) %buffer, i32 %bufindex)
7575

@@ -104,7 +104,7 @@ define void @loadf32() {
104104
@llvm.dx.handle.fromBinding.tdx.TypedBuffer_f32_0_0_0(
105105
i32 0, i32 0, i32 1, i32 0, i1 false)
106106

107-
; CHECK: [[DATA0:%.*]] = call %dx.types.ResRet.f32 @dx.op.bufferLoad.f32(i32 68, %dx.types.Handle [[HANDLE]], i32 0, i32 undef)
107+
; CHECK: [[DATA0:%.*]] = call %dx.types.ResRet.f32 @dx.op.bufferLoad.f32(i32 68, %dx.types.Handle [[HANDLE]], i32 0, i32 undef) #[[#ATTR]]
108108
%data0 = call float @llvm.dx.typedBufferLoad(
109109
target("dx.TypedBuffer", float, 0, 0, 0) %buffer, i32 0)
110110

@@ -122,7 +122,7 @@ define void @loadv2f32() {
122122
@llvm.dx.handle.fromBinding.tdx.TypedBuffer_v2f32_0_0_0(
123123
i32 0, i32 0, i32 1, i32 0, i1 false)
124124

125-
; CHECK: [[DATA0:%.*]] = call %dx.types.ResRet.f32 @dx.op.bufferLoad.f32(i32 68, %dx.types.Handle [[HANDLE]], i32 0, i32 undef)
125+
; CHECK: [[DATA0:%.*]] = call %dx.types.ResRet.f32 @dx.op.bufferLoad.f32(i32 68, %dx.types.Handle [[HANDLE]], i32 0, i32 undef) #[[#ATTR]]
126126
%data0 = call <2 x float> @llvm.dx.typedBufferLoad(
127127
target("dx.TypedBuffer", <2 x float>, 0, 0, 0) %buffer, i32 0)
128128

@@ -136,12 +136,12 @@ define void @loadv4f32_checkbit() {
136136
@llvm.dx.handle.fromBinding.tdx.TypedBuffer_v4f32_0_0_0(
137137
i32 0, i32 0, i32 1, i32 0, i1 false)
138138

139-
; CHECK: [[DATA0:%.*]] = call %dx.types.ResRet.f32 @dx.op.bufferLoad.f32(i32 68, %dx.types.Handle [[HANDLE]], i32 0, i32 undef)
139+
; CHECK: [[DATA0:%.*]] = call %dx.types.ResRet.f32 @dx.op.bufferLoad.f32(i32 68, %dx.types.Handle [[HANDLE]], i32 0, i32 undef) #[[#ATTR]]
140140
%data0 = call {<4 x float>, i1} @llvm.dx.typedBufferLoad.checkbit.f32(
141141
target("dx.TypedBuffer", <4 x float>, 0, 0, 0) %buffer, i32 0)
142142

143143
; CHECK: [[STATUS:%.*]] = extractvalue %dx.types.ResRet.f32 [[DATA0]], 4
144-
; CHECK: [[MAPPED:%.*]] = call i1 @dx.op.checkAccessFullyMapped.i32(i32 71, i32 [[STATUS]]
144+
; CHECK: [[MAPPED:%.*]] = call i1 @dx.op.checkAccessFullyMapped.i32(i32 71, i32 [[STATUS]]) #[[#ATTR]]
145145
%check = extractvalue {<4 x float>, i1} %data0, 1
146146

147147
; CHECK: call void @check_user(i1 [[MAPPED]])
@@ -157,7 +157,7 @@ define void @loadv4i32() {
157157
@llvm.dx.handle.fromBinding.tdx.TypedBuffer_v4i32_0_0_0(
158158
i32 0, i32 0, i32 1, i32 0, i1 false)
159159

160-
; CHECK: [[DATA0:%.*]] = call %dx.types.ResRet.i32 @dx.op.bufferLoad.i32(i32 68, %dx.types.Handle [[HANDLE]], i32 0, i32 undef)
160+
; CHECK: [[DATA0:%.*]] = call %dx.types.ResRet.i32 @dx.op.bufferLoad.i32(i32 68, %dx.types.Handle [[HANDLE]], i32 0, i32 undef) #[[#ATTR]]
161161
%data0 = call <4 x i32> @llvm.dx.typedBufferLoad(
162162
target("dx.TypedBuffer", <4 x i32>, 0, 0, 0) %buffer, i32 0)
163163

@@ -171,7 +171,7 @@ define void @loadv4f16() {
171171
@llvm.dx.handle.fromBinding.tdx.TypedBuffer_v4f16_0_0_0(
172172
i32 0, i32 0, i32 1, i32 0, i1 false)
173173

174-
; CHECK: [[DATA0:%.*]] = call %dx.types.ResRet.f16 @dx.op.bufferLoad.f16(i32 68, %dx.types.Handle [[HANDLE]], i32 0, i32 undef)
174+
; CHECK: [[DATA0:%.*]] = call %dx.types.ResRet.f16 @dx.op.bufferLoad.f16(i32 68, %dx.types.Handle [[HANDLE]], i32 0, i32 undef) #[[#ATTR]]
175175
%data0 = call <4 x half> @llvm.dx.typedBufferLoad(
176176
target("dx.TypedBuffer", <4 x half>, 0, 0, 0) %buffer, i32 0)
177177

@@ -185,9 +185,11 @@ define void @loadv4i16() {
185185
@llvm.dx.handle.fromBinding.tdx.TypedBuffer_v4i16_0_0_0(
186186
i32 0, i32 0, i32 1, i32 0, i1 false)
187187

188-
; CHECK: [[DATA0:%.*]] = call %dx.types.ResRet.i16 @dx.op.bufferLoad.i16(i32 68, %dx.types.Handle [[HANDLE]], i32 0, i32 undef)
188+
; CHECK: [[DATA0:%.*]] = call %dx.types.ResRet.i16 @dx.op.bufferLoad.i16(i32 68, %dx.types.Handle [[HANDLE]], i32 0, i32 undef) #[[#ATTR]]
189189
%data0 = call <4 x i16> @llvm.dx.typedBufferLoad(
190190
target("dx.TypedBuffer", <4 x i16>, 0, 0, 0) %buffer, i32 0)
191191

192192
ret void
193193
}
194+
195+
; CHECK: attributes #[[#ATTR]] = {{{.*}} memory(read) {{.*}}}

llvm/test/CodeGen/DirectX/BufferStore.ll

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ define void @storefloat(<4 x float> %data, i32 %index) {
1717
; CHECK: [[DATA0_1:%.*]] = extractelement <4 x float> %data, i32 1
1818
; CHECK: [[DATA0_2:%.*]] = extractelement <4 x float> %data, i32 2
1919
; CHECK: [[DATA0_3:%.*]] = extractelement <4 x float> %data, i32 3
20-
; CHECK: call void @dx.op.bufferStore.f32(i32 69, %dx.types.Handle [[HANDLE]], i32 %index, i32 undef, float [[DATA0_0]], float [[DATA0_1]], float [[DATA0_2]], float [[DATA0_3]], i8 15)
20+
; CHECK: call void @dx.op.bufferStore.f32(i32 69, %dx.types.Handle [[HANDLE]], i32 %index, i32 undef, float [[DATA0_0]], float [[DATA0_1]], float [[DATA0_2]], float [[DATA0_3]], i8 15){{$}}
2121
call void @llvm.dx.typedBufferStore(
2222
target("dx.TypedBuffer", <4 x float>, 1, 0, 0) %buffer,
2323
i32 %index, <4 x float> %data)
@@ -37,7 +37,7 @@ define void @storeint(<4 x i32> %data, i32 %index) {
3737
; CHECK: [[DATA0_1:%.*]] = extractelement <4 x i32> %data, i32 1
3838
; CHECK: [[DATA0_2:%.*]] = extractelement <4 x i32> %data, i32 2
3939
; CHECK: [[DATA0_3:%.*]] = extractelement <4 x i32> %data, i32 3
40-
; CHECK: call void @dx.op.bufferStore.i32(i32 69, %dx.types.Handle [[HANDLE]], i32 %index, i32 undef, i32 [[DATA0_0]], i32 [[DATA0_1]], i32 [[DATA0_2]], i32 [[DATA0_3]], i8 15)
40+
; CHECK: call void @dx.op.bufferStore.i32(i32 69, %dx.types.Handle [[HANDLE]], i32 %index, i32 undef, i32 [[DATA0_0]], i32 [[DATA0_1]], i32 [[DATA0_2]], i32 [[DATA0_3]], i8 15){{$}}
4141
call void @llvm.dx.typedBufferStore(
4242
target("dx.TypedBuffer", <4 x i32>, 1, 0, 0) %buffer,
4343
i32 %index, <4 x i32> %data)
@@ -60,7 +60,7 @@ define void @storehalf(<4 x half> %data, i32 %index) {
6060
; CHECK: [[DATA0_1:%.*]] = extractelement <4 x half> %data, i32 1
6161
; CHECK: [[DATA0_2:%.*]] = extractelement <4 x half> %data, i32 2
6262
; CHECK: [[DATA0_3:%.*]] = extractelement <4 x half> %data, i32 3
63-
; CHECK: call void @dx.op.bufferStore.f16(i32 69, %dx.types.Handle [[HANDLE]], i32 %index, i32 undef, half [[DATA0_0]], half [[DATA0_1]], half [[DATA0_2]], half [[DATA0_3]], i8 15)
63+
; CHECK: call void @dx.op.bufferStore.f16(i32 69, %dx.types.Handle [[HANDLE]], i32 %index, i32 undef, half [[DATA0_0]], half [[DATA0_1]], half [[DATA0_2]], half [[DATA0_3]], i8 15){{$}}
6464
call void @llvm.dx.typedBufferStore(
6565
target("dx.TypedBuffer", <4 x half>, 1, 0, 0) %buffer,
6666
i32 %index, <4 x half> %data)
@@ -83,7 +83,7 @@ define void @storei16(<4 x i16> %data, i32 %index) {
8383
; CHECK: [[DATA0_1:%.*]] = extractelement <4 x i16> %data, i32 1
8484
; CHECK: [[DATA0_2:%.*]] = extractelement <4 x i16> %data, i32 2
8585
; CHECK: [[DATA0_3:%.*]] = extractelement <4 x i16> %data, i32 3
86-
; CHECK: call void @dx.op.bufferStore.i16(i32 69, %dx.types.Handle [[HANDLE]], i32 %index, i32 undef, i16 [[DATA0_0]], i16 [[DATA0_1]], i16 [[DATA0_2]], i16 [[DATA0_3]], i8 15)
86+
; CHECK: call void @dx.op.bufferStore.i16(i32 69, %dx.types.Handle [[HANDLE]], i32 %index, i32 undef, i16 [[DATA0_0]], i16 [[DATA0_1]], i16 [[DATA0_2]], i16 [[DATA0_3]], i8 15){{$}}
8787
call void @llvm.dx.typedBufferStore(
8888
target("dx.TypedBuffer", <4 x i16>, 1, 0, 0) %buffer,
8989
i32 %index, <4 x i16> %data)

llvm/test/CodeGen/DirectX/CreateHandle.ll

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -19,47 +19,49 @@ define void @test_buffers() {
1919
%typed0 = call target("dx.TypedBuffer", <4 x float>, 1, 0, 0)
2020
@llvm.dx.handle.fromBinding.tdx.TypedBuffer_v4f32_1_0_0(
2121
i32 3, i32 5, i32 1, i32 4, i1 false)
22-
; CHECK: call %dx.types.Handle @dx.op.createHandle(i32 57, i8 1, i32 1, i32 4, i1 false)
22+
; CHECK: call %dx.types.Handle @dx.op.createHandle(i32 57, i8 1, i32 1, i32 4, i1 false) #[[#ATTR:]]
2323
; CHECK-NOT: @llvm.dx.cast.handle
2424

2525
; RWBuffer<int> Buf : register(u7, space2)
2626
%typed1 = call target("dx.TypedBuffer", i32, 1, 0, 1)
2727
@llvm.dx.handle.fromBinding.tdx.TypedBuffer_i32_1_0_1t(
2828
i32 2, i32 7, i32 1, i32 6, i1 false)
29-
; CHECK: call %dx.types.Handle @dx.op.createHandle(i32 57, i8 1, i32 0, i32 6, i1 false)
29+
; CHECK: call %dx.types.Handle @dx.op.createHandle(i32 57, i8 1, i32 0, i32 6, i1 false) #[[#ATTR]]
3030

3131
; Buffer<uint4> Buf[24] : register(t3, space5)
3232
; Buffer<uint4> typed2 = Buf[4]
3333
; Note that the index below is 3 + 4 = 7
3434
%typed2 = call target("dx.TypedBuffer", <4 x i32>, 0, 0, 0)
3535
@llvm.dx.handle.fromBinding.tdx.TypedBuffer_i32_0_0_0t(
3636
i32 5, i32 3, i32 24, i32 7, i1 false)
37-
; CHECK: call %dx.types.Handle @dx.op.createHandle(i32 57, i8 0, i32 3, i32 7, i1 false)
37+
; CHECK: call %dx.types.Handle @dx.op.createHandle(i32 57, i8 0, i32 3, i32 7, i1 false) #[[#ATTR]]
3838

3939
; struct S { float4 a; uint4 b; };
4040
; StructuredBuffer<S> Buf : register(t2, space4)
4141
%struct0 = call target("dx.RawBuffer", {<4 x float>, <4 x i32>}, 0, 0)
4242
@llvm.dx.handle.fromBinding.tdx.RawBuffer_sl_v4f32v4i32s_0_0t(
4343
i32 4, i32 2, i32 1, i32 10, i1 true)
44-
; CHECK: call %dx.types.Handle @dx.op.createHandle(i32 57, i8 0, i32 2, i32 10, i1 true)
44+
; CHECK: call %dx.types.Handle @dx.op.createHandle(i32 57, i8 0, i32 2, i32 10, i1 true) #[[#ATTR]]
4545

4646
; ByteAddressBuffer Buf : register(t8, space1)
4747
%byteaddr0 = call target("dx.RawBuffer", i8, 0, 0)
4848
@llvm.dx.handle.fromBinding.tdx.RawBuffer_i8_0_0t(
4949
i32 1, i32 8, i32 1, i32 12, i1 false)
50-
; CHECK: call %dx.types.Handle @dx.op.createHandle(i32 57, i8 0, i32 1, i32 12, i1 false)
50+
; CHECK: call %dx.types.Handle @dx.op.createHandle(i32 57, i8 0, i32 1, i32 12, i1 false) #[[#ATTR]]
5151

5252
; Buffer<float4> Buf[] : register(t0)
5353
; Buffer<float4> typed3 = Buf[ix]
5454
%typed3_ix = call i32 @some_val()
5555
%typed3 = call target("dx.TypedBuffer", <4 x float>, 0, 0, 0)
5656
@llvm.dx.handle.fromBinding.tdx.TypedBuffer_v4f32_0_0_0t(
5757
i32 0, i32 0, i32 -1, i32 %typed3_ix, i1 false)
58-
; CHECK: call %dx.types.Handle @dx.op.createHandle(i32 57, i8 0, i32 0, i32 %typed3_ix, i1 false)
58+
; CHECK: call %dx.types.Handle @dx.op.createHandle(i32 57, i8 0, i32 0, i32 %typed3_ix, i1 false) #[[#ATTR]]
5959

6060
ret void
6161
}
6262

63+
; CHECK: attributes #[[#ATTR]] = {{{.*}} memory(read) {{.*}}}
64+
6365
; Just check that we have the right types and number of metadata nodes, the
6466
; contents of the metadata are tested elsewhere.
6567
;

llvm/test/CodeGen/DirectX/CreateHandleFromBinding.ll

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -19,52 +19,54 @@ define void @test_bindings() {
1919
%typed0 = call target("dx.TypedBuffer", <4 x float>, 1, 0, 0)
2020
@llvm.dx.handle.fromBinding.tdx.TypedBuffer_v4f32_1_0_0(
2121
i32 3, i32 5, i32 1, i32 4, i1 false)
22-
; CHECK: [[BUF0:%.*]] = call %dx.types.Handle @dx.op.createHandleFromBinding(i32 217, %dx.types.ResBind { i32 5, i32 5, i32 3, i8 1 }, i32 4, i1 false)
23-
; CHECK: call %dx.types.Handle @dx.op.annotateHandle(i32 216, %dx.types.Handle [[BUF0]], %dx.types.ResourceProperties { i32 4106, i32 1033 })
22+
; CHECK: [[BUF0:%.*]] = call %dx.types.Handle @dx.op.createHandleFromBinding(i32 217, %dx.types.ResBind { i32 5, i32 5, i32 3, i8 1 }, i32 4, i1 false) #[[#ATTR:]]
23+
; CHECK: call %dx.types.Handle @dx.op.annotateHandle(i32 216, %dx.types.Handle [[BUF0]], %dx.types.ResourceProperties { i32 4106, i32 1033 }) #[[#ATTR]]
2424

2525
; RWBuffer<int> Buf : register(u7, space2)
2626
%typed1 = call target("dx.TypedBuffer", i32, 1, 0, 1)
2727
@llvm.dx.handle.fromBinding.tdx.TypedBuffer_i32_1_0_0t(
2828
i32 2, i32 7, i32 1, i32 6, i1 false)
29-
; CHECK: [[BUF1:%.*]] = call %dx.types.Handle @dx.op.createHandleFromBinding(i32 217, %dx.types.ResBind { i32 7, i32 7, i32 2, i8 1 }, i32 6, i1 false)
30-
; CHECK: call %dx.types.Handle @dx.op.annotateHandle(i32 216, %dx.types.Handle [[BUF1]], %dx.types.ResourceProperties { i32 4106, i32 260 })
29+
; CHECK: [[BUF1:%.*]] = call %dx.types.Handle @dx.op.createHandleFromBinding(i32 217, %dx.types.ResBind { i32 7, i32 7, i32 2, i8 1 }, i32 6, i1 false) #[[#ATTR]]
30+
; CHECK: call %dx.types.Handle @dx.op.annotateHandle(i32 216, %dx.types.Handle [[BUF1]], %dx.types.ResourceProperties { i32 4106, i32 260 }) #[[#ATTR]]
3131

3232
; Buffer<uint4> Buf[24] : register(t3, space5)
3333
; Buffer<uint4> typed2 = Buf[4]
3434
; Note that the index below is 3 + 4 = 7
3535
%typed2 = call target("dx.TypedBuffer", <4 x i32>, 0, 0, 0)
3636
@llvm.dx.handle.fromBinding.tdx.TypedBuffer_i32_0_0_0t(
3737
i32 5, i32 3, i32 24, i32 7, i1 false)
38-
; CHECK: [[BUF2:%.*]] = call %dx.types.Handle @dx.op.createHandleFromBinding(i32 217, %dx.types.ResBind { i32 3, i32 26, i32 5, i8 0 }, i32 7, i1 false)
39-
; CHECK: call %dx.types.Handle @dx.op.annotateHandle(i32 216, %dx.types.Handle [[BUF2]], %dx.types.ResourceProperties { i32 10, i32 1029 })
38+
; CHECK: [[BUF2:%.*]] = call %dx.types.Handle @dx.op.createHandleFromBinding(i32 217, %dx.types.ResBind { i32 3, i32 26, i32 5, i8 0 }, i32 7, i1 false) #[[#ATTR]]
39+
; CHECK: call %dx.types.Handle @dx.op.annotateHandle(i32 216, %dx.types.Handle [[BUF2]], %dx.types.ResourceProperties { i32 10, i32 1029 }) #[[#ATTR]]
4040

4141
; struct S { float4 a; uint4 b; };
4242
; StructuredBuffer<S> Buf : register(t2, space4)
4343
%struct0 = call target("dx.RawBuffer", {<4 x float>, <4 x i32>}, 0, 0)
4444
@llvm.dx.handle.fromBinding.tdx.RawBuffer_sl_v4f32v4i32s_0_0t(
4545
i32 4, i32 2, i32 1, i32 10, i1 true)
46-
; CHECK: [[BUF3:%.*]] = call %dx.types.Handle @dx.op.createHandleFromBinding(i32 217, %dx.types.ResBind { i32 2, i32 2, i32 4, i8 0 }, i32 10, i1 true)
47-
; CHECK: = call %dx.types.Handle @dx.op.annotateHandle(i32 216, %dx.types.Handle [[BUF3]], %dx.types.ResourceProperties { i32 1036, i32 32 })
46+
; CHECK: [[BUF3:%.*]] = call %dx.types.Handle @dx.op.createHandleFromBinding(i32 217, %dx.types.ResBind { i32 2, i32 2, i32 4, i8 0 }, i32 10, i1 true) #[[#ATTR]]
47+
; CHECK: = call %dx.types.Handle @dx.op.annotateHandle(i32 216, %dx.types.Handle [[BUF3]], %dx.types.ResourceProperties { i32 1036, i32 32 }) #[[#ATTR]]
4848

4949
; ByteAddressBuffer Buf : register(t8, space1)
5050
%byteaddr0 = call target("dx.RawBuffer", i8, 0, 0)
5151
@llvm.dx.handle.fromBinding.tdx.RawBuffer_i8_0_0t(
5252
i32 1, i32 8, i32 1, i32 12, i1 false)
53-
; CHECK: [[BUF4:%.*]] = call %dx.types.Handle @dx.op.createHandleFromBinding(i32 217, %dx.types.ResBind { i32 8, i32 8, i32 1, i8 0 }, i32 12, i1 false)
54-
; CHECK: call %dx.types.Handle @dx.op.annotateHandle(i32 216, %dx.types.Handle [[BUF4]], %dx.types.ResourceProperties { i32 11, i32 0 })
53+
; CHECK: [[BUF4:%.*]] = call %dx.types.Handle @dx.op.createHandleFromBinding(i32 217, %dx.types.ResBind { i32 8, i32 8, i32 1, i8 0 }, i32 12, i1 false) #[[#ATTR]]
54+
; CHECK: call %dx.types.Handle @dx.op.annotateHandle(i32 216, %dx.types.Handle [[BUF4]], %dx.types.ResourceProperties { i32 11, i32 0 }) #[[#ATTR]]
5555

5656
; Buffer<float4> Buf[] : register(t0)
5757
; Buffer<float4> typed3 = Buf[ix]
5858
%typed3_ix = call i32 @some_val()
5959
%typed3 = call target("dx.TypedBuffer", <4 x float>, 0, 0, 0)
6060
@llvm.dx.handle.fromBinding.tdx.TypedBuffer_v4f32_0_0_0t(
6161
i32 0, i32 0, i32 -1, i32 %typed3_ix, i1 false)
62-
; CHECK: [[BUF5:%.*]] = call %dx.types.Handle @dx.op.createHandleFromBinding(i32 217, %dx.types.ResBind { i32 0, i32 -1, i32 0, i8 0 }, i32 %typed3_ix, i1 false)
63-
; CHECK: call %dx.types.Handle @dx.op.annotateHandle(i32 216, %dx.types.Handle [[BUF5]], %dx.types.ResourceProperties { i32 10, i32 1033 })
62+
; CHECK: [[BUF5:%.*]] = call %dx.types.Handle @dx.op.createHandleFromBinding(i32 217, %dx.types.ResBind { i32 0, i32 -1, i32 0, i8 0 }, i32 %typed3_ix, i1 false) #[[#ATTR]]
63+
; CHECK: call %dx.types.Handle @dx.op.annotateHandle(i32 216, %dx.types.Handle [[BUF5]], %dx.types.ResourceProperties { i32 10, i32 1033 }) #[[#ATTR]]
6464

6565
ret void
6666
}
6767

68+
; CHECK: attributes #[[#ATTR]] = {{{.*}} memory(none) {{.*}}}
69+
6870
; Just check that we have the right types and number of metadata nodes, the
6971
; contents of the metadata are tested elsewhere.
7072
;

llvm/test/CodeGen/DirectX/WaveActiveCountBits.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
define void @main(i1 %expr) {
44
entry:
5-
; CHECK: call i32 @dx.op.waveAllOp(i32 135, i1 %expr)
5+
; CHECK: call i32 @dx.op.waveAllOp(i32 135, i1 %expr){{$}}
66
%0 = call i32 @llvm.dx.wave.active.countbits(i1 %expr)
77
ret void
88
}

llvm/test/CodeGen/DirectX/WaveGetLaneIndex.ll

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,11 @@
22

33
define void @main() {
44
entry:
5-
; CHECK: call i32 @dx.op.waveGetLaneIndex(i32 111)
5+
; CHECK: call i32 @dx.op.waveGetLaneIndex(i32 111) #[[#ATTR:]]
66
%0 = call i32 @llvm.dx.wave.getlaneindex()
77
ret void
88
}
99

10+
; CHECK: attributes #[[#ATTR]] = {{{.*}} memory(read) {{.*}}}
11+
1012
declare i32 @llvm.dx.wave.getlaneindex()

llvm/test/CodeGen/DirectX/WaveReadLaneAt-vec.ll

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,27 +5,27 @@
55

66
define noundef <2 x half> @wave_read_lane_v2half(<2 x half> noundef %expr, i32 %idx) {
77
entry:
8-
; CHECK: call half @dx.op.waveReadLaneAt.f16(i32 117, half %expr.i0, i32 %idx)
9-
; CHECK: call half @dx.op.waveReadLaneAt.f16(i32 117, half %expr.i1, i32 %idx)
8+
; CHECK: call half @dx.op.waveReadLaneAt.f16(i32 117, half %expr.i0, i32 %idx){{$}}
9+
; CHECK: call half @dx.op.waveReadLaneAt.f16(i32 117, half %expr.i1, i32 %idx){{$}}
1010
%ret = call <2 x half> @llvm.dx.wave.readlane.f16(<2 x half> %expr, i32 %idx)
1111
ret <2 x half> %ret
1212
}
1313

1414
define noundef <3 x i32> @wave_read_lane_v3i32(<3 x i32> noundef %expr, i32 %idx) {
1515
entry:
16-
; CHECK: call i32 @dx.op.waveReadLaneAt.i32(i32 117, i32 %expr.i0, i32 %idx)
17-
; CHECK: call i32 @dx.op.waveReadLaneAt.i32(i32 117, i32 %expr.i1, i32 %idx)
18-
; CHECK: call i32 @dx.op.waveReadLaneAt.i32(i32 117, i32 %expr.i2, i32 %idx)
16+
; CHECK: call i32 @dx.op.waveReadLaneAt.i32(i32 117, i32 %expr.i0, i32 %idx){{$}}
17+
; CHECK: call i32 @dx.op.waveReadLaneAt.i32(i32 117, i32 %expr.i1, i32 %idx){{$}}
18+
; CHECK: call i32 @dx.op.waveReadLaneAt.i32(i32 117, i32 %expr.i2, i32 %idx){{$}}
1919
%ret = call <3 x i32> @llvm.dx.wave.readlane(<3 x i32> %expr, i32 %idx)
2020
ret <3 x i32> %ret
2121
}
2222

2323
define noundef <4 x double> @wave_read_lane_v4f64(<4 x double> noundef %expr, i32 %idx) {
2424
entry:
25-
; CHECK: call double @dx.op.waveReadLaneAt.f64(i32 117, double %expr.i0, i32 %idx)
26-
; CHECK: call double @dx.op.waveReadLaneAt.f64(i32 117, double %expr.i1, i32 %idx)
27-
; CHECK: call double @dx.op.waveReadLaneAt.f64(i32 117, double %expr.i2, i32 %idx)
28-
; CHECK: call double @dx.op.waveReadLaneAt.f64(i32 117, double %expr.i3, i32 %idx)
25+
; CHECK: call double @dx.op.waveReadLaneAt.f64(i32 117, double %expr.i0, i32 %idx){{$}}
26+
; CHECK: call double @dx.op.waveReadLaneAt.f64(i32 117, double %expr.i1, i32 %idx){{$}}
27+
; CHECK: call double @dx.op.waveReadLaneAt.f64(i32 117, double %expr.i2, i32 %idx){{$}}
28+
; CHECK: call double @dx.op.waveReadLaneAt.f64(i32 117, double %expr.i3, i32 %idx){{$}}
2929
%ret = call <4 x double> @llvm.dx.wave.readlane(<4 x double> %expr, i32 %idx)
3030
ret <4 x double> %ret
3131
}

0 commit comments

Comments
 (0)