|
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