xref: /llvm-project/clang/test/CodeGenHLSL/builtins/StructuredBuffers-subscripts.hlsl (revision bd92e46204331b9af296f53abb708317e72ab7a8)
1// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.0-compute -emit-llvm -o - -O0 %s | FileCheck %s
2
3StructuredBuffer<int> In;
4RWStructuredBuffer<int> Out1;
5RasterizerOrderedStructuredBuffer<int> Out2;
6
7[numthreads(1,1,1)]
8void main(unsigned GI : SV_GroupIndex) {
9  // CHECK: define void @main()
10
11  // CHECK: %[[INPTR:.*]] = call noundef nonnull align 4 dereferenceable(4) ptr @llvm.dx.resource.getpointer.p0.tdx.RawBuffer_i32_0_0t(target("dx.RawBuffer", i32, 0, 0) %{{.*}}, i32 %{{.*}})
12  // CHECK: %[[LOAD:.*]] = load i32, ptr %[[INPTR]]
13  // CHECK: %[[OUT1PTR:.*]] = call noundef nonnull align 4 dereferenceable(4) ptr @llvm.dx.resource.getpointer.p0.tdx.RawBuffer_i32_1_0t(target("dx.RawBuffer", i32, 1, 0) %{{.*}}, i32 %{{.*}})
14  // CHECK: store i32 %[[LOAD]], ptr %[[OUT1PTR]]
15  Out1[GI] = In[GI];
16
17  // CHECK: %[[INPTR:.*]] = call noundef nonnull align 4 dereferenceable(4) ptr @llvm.dx.resource.getpointer.p0.tdx.RawBuffer_i32_0_0t(target("dx.RawBuffer", i32, 0, 0) %{{.*}}, i32 %{{.*}})
18  // CHECK: %[[LOAD:.*]] = load i32, ptr %[[INPTR]]
19  // CHECK: %[[OUT2PTR:.*]] = call noundef nonnull align 4 dereferenceable(4) ptr @llvm.dx.resource.getpointer.p0.tdx.RawBuffer_i32_1_1t(target("dx.RawBuffer", i32, 1, 1) %{{.*}}, i32 %{{.*}})
20  // CHECK: store i32 %[[LOAD]], ptr %[[OUT2PTR]]
21  Out2[GI] = In[GI];
22}
23