1// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.2-compute -finclude-default-header -fnative-half-type -emit-llvm -o - %s | FileCheck %s 2 3// CHECK: %"class.hlsl::StructuredBuffer" = type { target("dx.RawBuffer", i16, 0, 0) } 4// CHECK: %"class.hlsl::StructuredBuffer.0" = type { target("dx.RawBuffer", i16, 0, 0) } 5// CHECK: %"class.hlsl::StructuredBuffer.1" = type { target("dx.RawBuffer", i32, 0, 0) } 6// CHECK: %"class.hlsl::StructuredBuffer.2" = type { target("dx.RawBuffer", i32, 0, 0) } 7// CHECK: %"class.hlsl::StructuredBuffer.3" = type { target("dx.RawBuffer", i64, 0, 0) } 8// CHECK: %"class.hlsl::StructuredBuffer.4" = type { target("dx.RawBuffer", i64, 0, 0) } 9// CHECK: %"class.hlsl::StructuredBuffer.5" = type { target("dx.RawBuffer", half, 0, 0) } 10// CHECK: %"class.hlsl::StructuredBuffer.6" = type { target("dx.RawBuffer", float, 0, 0) } 11// CHECK: %"class.hlsl::StructuredBuffer.7" = type { target("dx.RawBuffer", double, 0, 0) } 12// CHECK: %"class.hlsl::StructuredBuffer.8" = type { target("dx.RawBuffer", <4 x i16>, 0, 0) } 13// CHECK: %"class.hlsl::StructuredBuffer.9" = type { target("dx.RawBuffer", <3 x i32>, 0, 0) } 14// CHECK: %"class.hlsl::StructuredBuffer.10" = type { target("dx.RawBuffer", <2 x half>, 0, 0) } 15// CHECK: %"class.hlsl::StructuredBuffer.11" = type { target("dx.RawBuffer", <3 x float>, 0, 0) } 16 17StructuredBuffer<int16_t> BufI16; 18StructuredBuffer<uint16_t> BufU16; 19StructuredBuffer<int> BufI32; 20StructuredBuffer<uint> BufU32; 21StructuredBuffer<int64_t> BufI64; 22StructuredBuffer<uint64_t> BufU64; 23StructuredBuffer<half> BufF16; 24StructuredBuffer<float> BufF32; 25StructuredBuffer<double> BufF64; 26StructuredBuffer< vector<int16_t, 4> > BufI16x4; 27StructuredBuffer< vector<uint, 3> > BufU32x3; 28StructuredBuffer<half2> BufF16x2; 29StructuredBuffer<float3> BufF32x3; 30// TODO: StructuredBuffer<snorm half> BufSNormF16; 31// TODO: StructuredBuffer<unorm half> BufUNormF16; 32// TODO: StructuredBuffer<snorm float> BufSNormF32; 33// TODO: StructuredBuffer<unorm float> BufUNormF32; 34// TODO: StructuredBuffer<snorm double> BufSNormF64; 35// TODO: StructuredBuffer<unorm double> BufUNormF64; 36 37[numthreads(1,1,1)] 38void main(int GI : SV_GroupIndex) { 39 int16_t v1 = BufI16[GI]; 40 uint16_t v2 = BufU16[GI]; 41 int v3 = BufI32[GI]; 42 uint v4 = BufU32[GI]; 43 int64_t v5 = BufI64[GI]; 44 uint64_t v6 = BufU64[GI]; 45 half v7 = BufF16[GI]; 46 float v8 = BufF32[GI]; 47 double v9 = BufF64[GI]; 48 vector<int16_t,4> v10 = BufI16x4[GI]; 49 vector<int, 3> v11 = BufU32x3[GI]; 50 half2 v12 = BufF16x2[GI]; 51 float3 v13 = BufF32x3[GI]; 52} 53