46 lines · plain
1// RUN: %clang_cc1 -finclude-default-header -triple dxil-pc-shadermodel6.3-compute -fnative-half-type -emit-llvm -disable-llvm-passes -o - %s | FileCheck %s --check-prefixes=CHECK,DXIL2// RUN: %clang_cc1 -finclude-default-header -triple spirv-pc-vulkan1.3-compute -fnative-half-type -emit-llvm -disable-llvm-passes -o - %s | FileCheck %s --check-prefixes=CHECK,SPIRV3 4// CHECK: %"__cblayout_$Globals" = type <{ float, float, target("{{.*}}.Padding", 8), %__cblayout_S }>5// CHECK: %__cblayout_S = type <{ float }>6 7// DXIL-DAG: @"$Globals.cb" = global target("dx.CBuffer", %"__cblayout_$Globals")8// DXIL-DAG: @a = external hidden addrspace(2) global float9// DXIL-DAG: @g = external hidden addrspace(2) global float10// DXIL-DAG: @h = external hidden addrspace(2) global %__cblayout_S, align 411 12// SPIRV-DAG: @"$Globals.cb" = global target("spirv.VulkanBuffer", %"__cblayout_$Globals", 2, 0)13// SPIRV-DAG: @a = external hidden addrspace(12) global float14// SPIRV-DAG: @g = external hidden addrspace(12) global float15// SPIRV-DAG: @h = external hidden addrspace(12) global %__cblayout_S, align 816 17struct EmptyStruct {18};19 20struct S {21 RWBuffer<float> buf;22 EmptyStruct es;23 float ea[0];24 float b;25};26 27float a;28RWBuffer<float> b;29EmptyStruct c;30float d[0];31RWBuffer<float> e[2];32groupshared float f;33float g;34S h;35 36RWBuffer<float> Buf;37 38[numthreads(4,1,1)]39void main() {40 Buf[0] = a;41}42 43// CHECK: !hlsl.cbs = !{![[CB:.*]]}44// DXIL: ![[CB]] = !{ptr @"$Globals.cb", ptr addrspace(2) @a, ptr addrspace(2) @g, ptr addrspace(2) @h}45// SPIRV: ![[CB]] = !{ptr @"$Globals.cb", ptr addrspace(12) @a, ptr addrspace(12) @g, ptr addrspace(12) @h}46