1// RUN: %clang_cc1 -triple dxil--shadermodel6.6-compute -x hlsl -finclude-default-header -emit-llvm -disable-llvm-passes -o - %s | FileCheck %s 2 3// CHECK: define internal void @_init_resource_U0S0() 4// CHECK: %U0S0_h = call target("dx.TypedBuffer", <4 x float>, 1, 0, 0) @llvm.dx.resource.handlefrombinding.tdx.TypedBuffer_v4f32_1_0_0t(i32 0, i32 0, i32 1, i32 0, i1 false) 5RWBuffer<float4> U0S0 : register(u0); 6 7// CHECK: define internal void @_init_resource_U5S3() 8// CHECK: %U5S3_h = call target("dx.TypedBuffer", float, 1, 0, 0) @llvm.dx.resource.handlefrombinding.tdx.TypedBuffer_f32_1_0_0t(i32 3, i32 5, i32 1, i32 0, i1 false) 9RWBuffer<float> U5S3 : register(u5, space3); 10 11// CHECK: define internal void @_init_resource_T2S2() 12// CHECK: %T2S2_h = call target("dx.RawBuffer", i32, 0, 0) @llvm.dx.resource.handlefrombinding.tdx.RawBuffer_i32_0_0t(i32 2, i32 2, i32 1, i32 0, i1 false) 13StructuredBuffer<int> T2S2 : register(t2, space2); 14struct S { 15 float4 f; 16 int i; 17}; 18 19// CHECK: define internal void @_init_resource_T3S0() 20// CHECK: %T3S0_h = call target("dx.RawBuffer", %struct.S, 0, 0) @llvm.dx.resource.handlefrombinding.tdx.RawBuffer_s_struct.Ss_0_0t(i32 0, i32 3, i32 1, i32 0, i1 false) 21StructuredBuffer<S> T3S0 : register(t3); 22 23// CHECK: define void @main() 24// CHECK: call void @_init_resource_U0S0() 25// CHECK: call void @_init_resource_U5S3() 26// CHECK: call void @_init_resource_T2S2() 27// CHECK: call void @_init_resource_T3S0() 28 29[numthreads(4,1,1)] 30void main() {} 31