xref: /llvm-project/llvm/test/CodeGen/DirectX/bufferUpdateCounter.ll (revision 011b618644113996e2c0a8e57db40f89d20878e3)
1cac97833SHelena Kotas; RUN: opt -S -dxil-op-lower %s | FileCheck %s
2cac97833SHelena Kotas
3cac97833SHelena Kotas
4cac97833SHelena Kotastarget triple = "dxil-pc-shadermodel6.6-compute"
5cac97833SHelena Kotas
6cac97833SHelena Kotas ; CHECK-LABEL: define void @update_counter_decrement_vector() {
7cac97833SHelena Kotasdefine void @update_counter_decrement_vector() {
8cac97833SHelena Kotas ; CHECK: [[BIND:%.*]] = call %dx.types.Handle @dx.op.createHandleFromBinding(i32 217,
9cac97833SHelena Kotas  %buffer = call target("dx.TypedBuffer", <4 x float>, 0, 0, 0)
10aa07f922SJustin Bogner      @llvm.dx.resource.handlefrombinding.tdx.TypedBuffer_v4f32_0_0_0(
11cac97833SHelena Kotas          i32 0, i32 0, i32 1, i32 0, i1 false)
12cac97833SHelena Kotas
13cac97833SHelena Kotas ; CHECK-NEXT: [[BUFFANOT:%.*]] = call %dx.types.Handle @dx.op.annotateHandle(i32 216, %dx.types.Handle [[BIND]]
14*011b6186SFinn Plummer ; CHECK-NEXT: [[REG:%.*]] = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle [[BUFFANOT]], i8 -1){{$}}
15aa07f922SJustin Bogner  %1 = call i32 @llvm.dx.resource.updatecounter(target("dx.TypedBuffer", <4 x float>, 0, 0, 0) %buffer, i8 -1)
16cac97833SHelena Kotas  ret void
17cac97833SHelena Kotas}
18cac97833SHelena Kotas
19cac97833SHelena Kotas ; CHECK-LABEL: define void @update_counter_increment_vector() {
20cac97833SHelena Kotasdefine void @update_counter_increment_vector() {
21cac97833SHelena Kotas  ; CHECK: [[BIND:%.*]] = call %dx.types.Handle @dx.op.createHandleFromBinding(i32 217,
22cac97833SHelena Kotas  %buffer = call target("dx.TypedBuffer", <4 x float>, 0, 0, 0)
23aa07f922SJustin Bogner      @llvm.dx.resource.handlefrombinding.tdx.TypedBuffer_v4f32_0_0_0(
24cac97833SHelena Kotas          i32 0, i32 0, i32 1, i32 0, i1 false)
25cac97833SHelena Kotas  ; CHECK-NEXT: [[BUFFANOT:%.*]] = call %dx.types.Handle @dx.op.annotateHandle(i32 216, %dx.types.Handle [[BIND]]
26*011b6186SFinn Plummer  ; CHECK-NEXT: [[REG:%.*]] = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle [[BUFFANOT]], i8 1){{$}}
27aa07f922SJustin Bogner  %1 = call i32 @llvm.dx.resource.updatecounter(target("dx.TypedBuffer", <4 x float>, 0, 0, 0) %buffer, i8 1)
28cac97833SHelena Kotas  ret void
29cac97833SHelena Kotas}
30cac97833SHelena Kotas
31cac97833SHelena Kotas; CHECK-LABEL: define void @update_counter_decrement_scalar() {
32cac97833SHelena Kotasdefine void @update_counter_decrement_scalar() {
33cac97833SHelena Kotas    ; CHECK: [[BIND:%.*]] = call %dx.types.Handle @dx.op.createHandleFromBinding(i32 217,
34cac97833SHelena Kotas  %buffer = call target("dx.RawBuffer", i8, 0, 0)
35aa07f922SJustin Bogner      @llvm.dx.resource.handlefrombinding.tdx.RawBuffer_i8_0_0t(
36cac97833SHelena Kotas          i32 1, i32 8, i32 1, i32 0, i1 false)
37cac97833SHelena Kotas  ; CHECK-NEXT: [[BUFFANOT:%.*]] = call %dx.types.Handle @dx.op.annotateHandle(i32 216, %dx.types.Handle [[BIND]]
38*011b6186SFinn Plummer  ; CHECK-NEXT: [[REG:%.*]] = call i32 @dx.op.bufferUpdateCounter(i32 70, %dx.types.Handle [[BUFFANOT]], i8 -1){{$}}
39aa07f922SJustin Bogner  %1 = call i32 @llvm.dx.resource.updatecounter(target("dx.RawBuffer", i8, 0, 0) %buffer, i8 -1)
40cac97833SHelena Kotas  ret void
41cac97833SHelena Kotas}
42