|
1 | | -// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.3-library -finclude-default-header -emit-llvm -disable-llvm-passes -o - %s | FileCheck %s |
2 | | - |
3 | | -struct S { |
4 | | - int x; |
5 | | - float f; |
6 | | -}; |
7 | | - |
8 | | -// CHECK: [[CBLayout:%.*]] = type <{ [2 x float], [2 x <4 x i32>], [2 x [2 x i32]], [1 x target("dx.Layout", %S, 8, 0, 4)] }> |
9 | | -// CHECK: @CBArrays.cb = global target("dx.CBuffer", target("dx.Layout", [[CBLayout]], 136, 0, 32, 64, 128)) |
10 | | -// CHECK: @c1 = external addrspace(2) global [2 x float], align 4 |
11 | | -// CHECK: @c2 = external addrspace(2) global [2 x <4 x i32>], align 16 |
12 | | -// CHECK: @c3 = external addrspace(2) global [2 x [2 x i32]], align 4 |
13 | | -// CHECK: @c4 = external addrspace(2) global [1 x target("dx.Layout", %S, 8, 0, 4)], align 4 |
14 | | - |
15 | | -cbuffer CBArrays { |
16 | | - float c1[2]; |
17 | | - int4 c2[2]; |
18 | | - int c3[2][2]; |
19 | | - S c4[1]; |
20 | | -} |
| 1 | +// RUN: %clang_cc1 -triple dxil-pc-shadermodel6.3-library -emit-llvm -disable-llvm-passes -o - %s | FileCheck %s --enable-var-scope |
21 | 2 |
|
22 | 3 | // CHECK-LABEL: define void {{.*}}arr_assign1 |
23 | 4 | // CHECK: [[Arr:%.*]] = alloca [2 x i32], align 4 |
@@ -135,45 +116,3 @@ void arr_assign7() { |
135 | 116 | int Arr2[2][2] = {{0, 0}, {1, 1}}; |
136 | 117 | (Arr = Arr2)[0] = {6, 6}; |
137 | 118 | } |
138 | | - |
139 | | -// Verify you can assign from a cbuffer array |
140 | | - |
141 | | -// CHECK-LABEL: define void {{.*}}arr_assign8 |
142 | | -// CHECK: [[C:%.*]] = alloca [2 x float], align 4 |
143 | | -// CHECK-NEXT: call void @llvm.memcpy.p0.p0.i32(ptr align 4 [[C]], ptr align 4 {{.*}}, i32 8, i1 false) |
144 | | -// CHECK-NEXT: call void @llvm.memcpy.p0.p2.i32(ptr align 4 [[C]], ptr addrspace(2) align 4 @c1, i32 8, i1 false) |
145 | | -// CHECK-NEXT: ret void |
146 | | -void arr_assign8() { |
147 | | - float C[2] = {1.0, 2.0}; |
148 | | - C = c1; |
149 | | -} |
150 | | - |
151 | | -// CHECK-LABEL: define void {{.*}}arr_assign9 |
152 | | -// CHECK: [[C:%.*]] = alloca [2 x <4 x i32>], align 16 |
153 | | -// CHECK-NEXT: call void @llvm.memcpy.p0.p0.i32(ptr align 16 [[C]], ptr align 16 {{.*}}, i32 32, i1 false) |
154 | | -// CHECK-NEXT: call void @llvm.memcpy.p0.p2.i32(ptr align 16 [[C]], ptr addrspace(2) align 16 @c2, i32 32, i1 false) |
155 | | -// CHECK-NEXT: ret void |
156 | | -void arr_assign9() { |
157 | | - int4 C[2] = {1,2,3,4,5,6,7,8}; |
158 | | - C = c2; |
159 | | -} |
160 | | - |
161 | | -// CHECK-LABEL: define void {{.*}}arr_assign10 |
162 | | -// CHECK: [[C:%.*]] = alloca [2 x [2 x i32]], align 4 |
163 | | -// CHECK-NEXT: call void @llvm.memcpy.p0.p0.i32(ptr align 4 [[C]], ptr align 4 {{.*}}, i32 16, i1 false) |
164 | | -// CHECK-NEXT: call void @llvm.memcpy.p0.p2.i32(ptr align 4 [[C]], ptr addrspace(2) align 4 @c3, i32 16, i1 false) |
165 | | -// CHECK-NEXT: ret void |
166 | | -void arr_assign10() { |
167 | | - int C[2][2] = {1,2,3,4}; |
168 | | - C = c3; |
169 | | -} |
170 | | - |
171 | | -// CHECK-LABEL: define void {{.*}}arr_assign11 |
172 | | -// CHECK: [[C:%.*]] = alloca [1 x %struct.S], align 4 |
173 | | -// CHECK: call void @llvm.memcpy.p0.p2.i32(ptr align 4 [[C]], ptr addrspace(2) align 4 @c4, i32 8, i1 false) |
174 | | -// CHECK-NEXT: ret void |
175 | | -void arr_assign11() { |
176 | | - S s = {1, 2.0}; |
177 | | - S C[1] = {s}; |
178 | | - C = c4; |
179 | | -} |
0 commit comments