xref: /llvm-project/clang/test/CodeGenHLSL/cbuf.hlsl (revision d92bac8a3ebb19106f6bca6b7613a27c52cb48ab)
1// RUN: %clang_cc1 -finclude-default-header -triple dxil-pc-shadermodel6.3-library %s \
2// RUN:   -emit-llvm -disable-llvm-passes -o - | FileCheck %s
3
4// RUN: %clang_cc1 -finclude-default-header -triple spirv-pc-vulkan-library %s \
5// RUN:   -emit-llvm -disable-llvm-passes -o - | FileCheck %s
6
7// CHECK: @a = external addrspace(2) externally_initialized global float, align 4
8// CHECK: @b = external addrspace(2) externally_initialized global double, align 8
9// CHECK: @c = external addrspace(2) externally_initialized global float, align 4
10// CHECK: @d = external addrspace(2) externally_initialized global double, align 8
11
12// CHECK: @[[CB:.+]] = external constant { float, double }
13cbuffer A : register(b0, space2) {
14  float a;
15  double b;
16}
17
18// CHECK: @[[TB:.+]] = external constant { float, double }
19tbuffer A : register(t2, space1) {
20  float c;
21  double d;
22}
23
24float foo() {
25// CHECK: load float, ptr addrspace(2) @a, align 4
26// CHECK: load double, ptr addrspace(2) @b, align 8
27// CHECK: load float, ptr addrspace(2) @c, align 4
28// CHECK: load double, ptr addrspace(2) @d, align 8
29  return a + b + c*d;
30}
31
32// CHECK: !hlsl.cbufs = !{![[CBMD:[0-9]+]]}
33// CHECK: ![[CBMD]] = !{ptr @[[CB]], i32 13, i32 0, i1 false, i32 0, i32 2}
34