1; RUN: llc %s --filetype=obj -o - | obj2yaml | FileCheck %s 2 3; Make sure resource table is created correctly. 4; CHECK: Resources: 5target triple = "dxil-unknown-shadermodel6.0-compute" 6 7define void @main() #0 { 8 9 ; ByteAddressBuffer Buf : register(t8, space1) 10; CHECK: - Type: SRVRaw 11; CHECK: Space: 1 12; CHECK: LowerBound: 8 13; CHECK: UpperBound: 8 14; CHECK: Kind: RawBuffer 15; CHECK: Flags: 16; CHECK: UsedByAtomic64: false 17 %srv0 = call target("dx.RawBuffer", i8, 0, 0) 18 @llvm.dx.resource.handlefrombinding.tdx.RawBuffer_i8_0_0t( 19 i32 1, i32 8, i32 1, i32 0, i1 false) 20 21 ; struct S { float4 a; uint4 b; }; 22 ; StructuredBuffer<S> Buf : register(t2, space4) 23; CHECK: - Type: SRVStructured 24; CHECK: Space: 4 25; CHECK: LowerBound: 2 26; CHECK: UpperBound: 2 27; CHECK: Kind: StructuredBuffer 28; CHECK: Flags: 29; CHECK: UsedByAtomic64: false 30 %srv1 = call target("dx.RawBuffer", {<4 x float>, <4 x i32>}, 0, 0) 31 @llvm.dx.resource.handlefrombinding.tdx.RawBuffer_sl_v4f32v4i32s_0_0t( 32 i32 4, i32 2, i32 1, i32 0, i1 false) 33 34 ; Buffer<uint4> Buf[24] : register(t3, space5) 35; CHECK: - Type: SRVTyped 36; CHECK: Space: 5 37; CHECK: LowerBound: 3 38; CHECK: UpperBound: 26 39; CHECK: Kind: TypedBuffer 40; CHECK: Flags: 41; CHECK: UsedByAtomic64: false 42 %srv2 = call target("dx.TypedBuffer", <4 x i32>, 0, 0, 0) 43 @llvm.dx.resource.handlefrombinding.tdx.TypedBuffer_i32_0_0t( 44 i32 5, i32 3, i32 24, i32 0, i1 false) 45 46 ; RWBuffer<int> Buf : register(u7, space2) 47; CHECK: - Type: UAVTyped 48; CHECK: Space: 2 49; CHECK: LowerBound: 7 50; CHECK: UpperBound: 7 51; CHECK: Kind: TypedBuffer 52; CHECK: Flags: 53; CHECK: UsedByAtomic64: false 54 %uav0 = call target("dx.TypedBuffer", i32, 1, 0, 1) 55 @llvm.dx.resource.handlefrombinding.tdx.TypedBuffer_i32_1_0t( 56 i32 2, i32 7, i32 1, i32 0, i1 false) 57 58 ; RWBuffer<float4> Buf : register(u5, space3) 59; CHECK: - Type: UAVTyped 60; CHECK: Space: 3 61; CHECK: LowerBound: 5 62; CHECK: UpperBound: 5 63; CHECK: Kind: TypedBuffer 64; CHECK: Flags: 65; CHECK: UsedByAtomic64: false 66 %uav1 = call target("dx.TypedBuffer", <4 x float>, 1, 0, 0) 67 @llvm.dx.resource.handlefrombinding.tdx.TypedBuffer_f32_1_0( 68 i32 3, i32 5, i32 1, i32 0, i1 false) 69 70 ; RWBuffer<float4> BufferArray[10] : register(u0, space4) 71; CHECK: - Type: UAVTyped 72; CHECK: Space: 4 73; CHECK: LowerBound: 0 74; CHECK: UpperBound: 9 75; CHECK: Kind: TypedBuffer 76; CHECK: Flags: 77; CHECK: UsedByAtomic64: false 78 ; RWBuffer<float4> Buf = BufferArray[0] 79 %uav2_1 = call target("dx.TypedBuffer", <4 x float>, 1, 0, 0) 80 @llvm.dx.resource.handlefrombinding.tdx.TypedBuffer_f32_1_0( 81 i32 4, i32 0, i32 10, i32 0, i1 false) 82 ; RWBuffer<float4> Buf = BufferArray[5] 83 %uav2_2 = call target("dx.TypedBuffer", <4 x float>, 1, 0, 0) 84 @llvm.dx.resource.handlefrombinding.tdx.TypedBuffer_f32_1_0( 85 i32 4, i32 0, i32 10, i32 5, i1 false) 86 ret void 87} 88 89attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" } 90 91!dx.valver = !{!0} 92 93!0 = !{i32 1, i32 7} 94