117 lines · plain
1; RUN: llc %s --filetype=obj -o - | obj2yaml | FileCheck %s2 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 ; cbuffer : register(b2, space3) { float x; }10; CHECK: - Type: CBV11; CHECK: Space: 312; CHECK: LowerBound: 213; CHECK: UpperBound: 214; CHECK: Kind: CBuffer15; CHECK: Flags:16; CHECK: UsedByAtomic64: false17 %cbuf = call target("dx.CBuffer", <{ float }>)18 @llvm.dx.resource.handlefrombinding(i32 3, i32 2, i32 1, i32 0, ptr null)19 20 ; ByteAddressBuffer Buf : register(t8, space1)21; CHECK: - Type: SRVRaw22; CHECK: Space: 123; CHECK: LowerBound: 824; CHECK: UpperBound: 825; CHECK: Kind: RawBuffer26; CHECK: Flags:27; CHECK: UsedByAtomic64: false28 %srv0 = call target("dx.RawBuffer", i8, 0, 0)29 @llvm.dx.resource.handlefrombinding.tdx.RawBuffer_i8_0_0t(30 i32 1, i32 8, i32 1, i32 0, ptr null)31 32 ; struct S { float4 a; uint4 b; };33 ; StructuredBuffer<S> Buf : register(t2, space4)34; CHECK: - Type: SRVStructured35; CHECK: Space: 436; CHECK: LowerBound: 237; CHECK: UpperBound: 238; CHECK: Kind: StructuredBuffer39; CHECK: Flags:40; CHECK: UsedByAtomic64: false41 %srv1 = call target("dx.RawBuffer", {<4 x float>, <4 x i32>}, 0, 0)42 @llvm.dx.resource.handlefrombinding.tdx.RawBuffer_sl_v4f32v4i32s_0_0t(43 i32 4, i32 2, i32 1, i32 0, ptr null)44 45 ; Buffer<uint4> Buf[24] : register(t3, space5)46; CHECK: - Type: SRVTyped47; CHECK: Space: 548; CHECK: LowerBound: 349; CHECK: UpperBound: 2650; CHECK: Kind: TypedBuffer51; CHECK: Flags:52; CHECK: UsedByAtomic64: false53 %srv2 = call target("dx.TypedBuffer", <4 x i32>, 0, 0, 0)54 @llvm.dx.resource.handlefrombinding.tdx.TypedBuffer_i32_0_0t(55 i32 5, i32 3, i32 24, i32 0, ptr null)56 57 ; RWBuffer<int> Buf : register(u7, space2)58; CHECK: - Type: UAVTyped59; CHECK: Space: 260; CHECK: LowerBound: 761; CHECK: UpperBound: 762; CHECK: Kind: TypedBuffer63; CHECK: Flags:64; CHECK: UsedByAtomic64: false65 %uav0 = call target("dx.TypedBuffer", i32, 1, 0, 1)66 @llvm.dx.resource.handlefrombinding.tdx.TypedBuffer_i32_1_0t(67 i32 2, i32 7, i32 1, i32 0, ptr null)68 69 ; RWBuffer<float4> Buf : register(u5, space3)70; CHECK: - Type: UAVTyped71; CHECK: Space: 372; CHECK: LowerBound: 573; CHECK: UpperBound: 574; CHECK: Kind: TypedBuffer75; CHECK: Flags:76; CHECK: UsedByAtomic64: false77 %uav1 = call target("dx.TypedBuffer", <4 x float>, 1, 0, 0)78 @llvm.dx.resource.handlefrombinding.tdx.TypedBuffer_f32_1_0(79 i32 3, i32 5, i32 1, i32 0, ptr null)80 81 ; RWBuffer<float4> BufferArray[10] : register(u0, space4)82; CHECK: - Type: UAVTyped83; CHECK: Space: 484; CHECK: LowerBound: 085; CHECK: UpperBound: 986; CHECK: Kind: TypedBuffer87; CHECK: Flags:88; CHECK: UsedByAtomic64: false89 ; RWBuffer<float4> Buf = BufferArray[0]90 %uav2_1 = call target("dx.TypedBuffer", <4 x float>, 1, 0, 0)91 @llvm.dx.resource.handlefrombinding.tdx.TypedBuffer_f32_1_0(92 i32 4, i32 0, i32 10, i32 0, ptr null)93 ; RWBuffer<float4> Buf = BufferArray[5]94 %uav2_2 = call target("dx.TypedBuffer", <4 x float>, 1, 0, 0)95 @llvm.dx.resource.handlefrombinding.tdx.TypedBuffer_f32_1_0(96 i32 4, i32 0, i32 10, i32 5, ptr null)97 98 ; RWBuffer<float4> UnboundedArray[] : register(u10, space5)99; CHECK: - Type: UAVTyped100; CHECK: Space: 5101; CHECK: LowerBound: 10102; CHECK: UpperBound: 4294967295103; CHECK: Kind: TypedBuffer104; CHECK: Flags:105; CHECK: UsedByAtomic64: false106 ; RWBuffer<float4> Buf = BufferArray[100];107 %uav3 = call target("dx.TypedBuffer", <4 x float>, 1, 0, 0)108 @llvm.dx.resource.handlefrombinding(i32 5, i32 10, i32 -1, i32 100, ptr null)109 ret void110}111 112attributes #0 = { "hlsl.numthreads"="1,1,1" "hlsl.shader"="compute" }113 114!dx.valver = !{!0}115 116!0 = !{i32 1, i32 7}117