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::RWStructuredBuffer" = type { target("dx.RawBuffer", i16, 1, 0) } 4// CHECK: %"class.hlsl::RWStructuredBuffer.0" = type { target("dx.RawBuffer", i16, 1, 0) } 5// CHECK: %"class.hlsl::RWStructuredBuffer.1" = type { target("dx.RawBuffer", i32, 1, 0) } 6// CHECK: %"class.hlsl::RWStructuredBuffer.2" = type { target("dx.RawBuffer", i32, 1, 0) } 7// CHECK: %"class.hlsl::RWStructuredBuffer.3" = type { target("dx.RawBuffer", i64, 1, 0) } 8// CHECK: %"class.hlsl::RWStructuredBuffer.4" = type { target("dx.RawBuffer", i64, 1, 0) } 9// CHECK: %"class.hlsl::RWStructuredBuffer.5" = type { target("dx.RawBuffer", half, 1, 0) } 10// CHECK: %"class.hlsl::RWStructuredBuffer.6" = type { target("dx.RawBuffer", float, 1, 0) } 11// CHECK: %"class.hlsl::RWStructuredBuffer.7" = type { target("dx.RawBuffer", double, 1, 0) } 12// CHECK: %"class.hlsl::RWStructuredBuffer.8" = type { target("dx.RawBuffer", <4 x i16>, 1, 0) } 13// CHECK: %"class.hlsl::RWStructuredBuffer.9" = type { target("dx.RawBuffer", <3 x i32>, 1, 0) } 14// CHECK: %"class.hlsl::RWStructuredBuffer.10" = type { target("dx.RawBuffer", <2 x half>, 1, 0) } 15// CHECK: %"class.hlsl::RWStructuredBuffer.11" = type { target("dx.RawBuffer", <3 x float>, 1, 0) } 16 17RWStructuredBuffer<int16_t> BufI16; 18RWStructuredBuffer<uint16_t> BufU16; 19RWStructuredBuffer<int> BufI32; 20RWStructuredBuffer<uint> BufU32; 21RWStructuredBuffer<int64_t> BufI64; 22RWStructuredBuffer<uint64_t> BufU64; 23RWStructuredBuffer<half> BufF16; 24RWStructuredBuffer<float> BufF32; 25RWStructuredBuffer<double> BufF64; 26RWStructuredBuffer< vector<int16_t, 4> > BufI16x4; 27RWStructuredBuffer< vector<uint, 3> > BufU32x3; 28RWStructuredBuffer<half2> BufF16x2; 29RWStructuredBuffer<float3> BufF32x3; 30// TODO: RWStructuredBuffer<snorm half> BufSNormF16; 31// TODO: RWStructuredBuffer<unorm half> BufUNormF16; 32// TODO: RWStructuredBuffer<snorm float> BufSNormF32; 33// TODO: RWStructuredBuffer<unorm float> BufUNormF32; 34// TODO: RWStructuredBuffer<snorm double> BufSNormF64; 35// TODO: RWStructuredBuffer<unorm double> BufUNormF64; 36 37[numthreads(1,1,1)] 38void main(int GI : SV_GroupIndex) { 39 BufI16[GI] = 0; 40 BufU16[GI] = 0; 41 BufI32[GI] = 0; 42 BufU32[GI] = 0; 43 BufI64[GI] = 0; 44 BufU64[GI] = 0; 45 BufF16[GI] = 0; 46 BufF32[GI] = 0; 47 BufF64[GI] = 0; 48 BufI16x4[GI] = 0; 49 BufU32x3[GI] = 0; 50 BufF16x2[GI] = 0; 51 BufF32x3[GI] = 0; 52} 53