|
| 1 | +// RUN: %clang_cc1 -fsycl -fsycl-is-device -triple spir64-unknown-unknown-sycldevice \ |
| 2 | +// RUN: -emit-llvm -o - %s | FileCheck %s |
| 3 | + |
| 4 | +// This test checks that data for big constant initializer lists is placed |
| 5 | +// into the global address space by the SYCL compiler. |
| 6 | + |
| 7 | +struct Test { |
| 8 | + Test() : set{ |
| 9 | + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, |
| 10 | + 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15} {}; |
| 11 | + int set[32]; |
| 12 | +}; |
| 13 | +// CHECK-DAG: @constinit = private unnamed_addr addrspace(1) constant |
| 14 | +// CHECK: [32 x i32] |
| 15 | +// CHECK: [i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, |
| 16 | +// CHECK: i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15, |
| 17 | +// CHECK: i32 0, i32 1, i32 2, i32 3, i32 4, i32 5, i32 6, i32 7, |
| 18 | +// CHECK: i32 8, i32 9, i32 10, i32 11, i32 12, i32 13, i32 14, i32 15 |
| 19 | +// CHECK: ], align 4 |
| 20 | +// CHECK-NOT: @constinit = private unnamed_addr addrspace(0) |
| 21 | +// CHECK-NOT: @constinit = private unnamed_addr addrspace(2) |
| 22 | +// CHECK-NOT: @constinit = private unnamed_addr addrspace(3) |
| 23 | +// CHECK-NOT: @constinit = private unnamed_addr addrspace(4) |
| 24 | + |
| 25 | +__attribute__((sycl_device)) void bar(Test &x); |
| 26 | + |
| 27 | +__attribute__((sycl_device)) void zoo() { |
| 28 | + Test mc; |
| 29 | + bar(mc); |
| 30 | +} |
0 commit comments