brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.5 KiB · 62258ca Raw
45 lines · plain
1// RUN: %clang_cc1 %s -cl-std=clc++1.0 -DGENERIC -emit-llvm -o - -O0 -triple spir-unknown-unknown | FileCheck %s2// RUN: %clang_cc1 %s -cl-std=clc++2021 -DGENERIC -emit-llvm -o - -O0 -triple spir-unknown-unknown | FileCheck %s3// RUN: %clang_cc1 %s -cl-std=clc++2021 -cl-ext=-all,+__opencl_c_program_scope_global_variables -emit-llvm -o - -O0 -triple spir-unknown-unknown | FileCheck %s4 5// CHECK: %struct.X = type { i32 }6 7// CHECK: @ci ={{.*}} addrspace(2) constant i32 08// CHECK: @gi ={{.*}} addrspace(1) global i32 09__constant int ci = 0;10__global int gi = 0;11 12struct X {13  int x;14 15  // Local variables are handled in local_addrspace_init.clcpp16  X() /*__generic or __private*/ : x(0) {}17#if defined(GENERIC)18  X() __private : x(0) {}19#endif20  X() __global : x(0) {}21  constexpr X() __constant : x(0) {}22  constexpr X(int x) __constant : x(x) {}23};24 25// CHECK: @cx1 ={{.*}} addrspace(2) constant %struct.X zeroinitializer26// CHECK: @cx2 ={{.*}} addrspace(2) constant %struct.X { i32 1 }27// CHECK: @gx ={{.*}} addrspace(1) global %struct.X zeroinitializer28__constant X cx1;29__constant X cx2(1);30__global X gx;31 32// CHECK: @_ZZ1kE3cx1 = internal addrspace(2) constant %struct.X zeroinitializer33// CHECK: @_ZZ1kE3cx2 = internal addrspace(2) constant %struct.X { i32 1 }34 35kernel void k() {36  // Check that the constructor for px calls the __private constructor.37  // CHECK: %px = alloca %struct.X38  // CHECK-NEXT: call spir_func void @_ZN1XC1Ev(ptr {{.*}}%px)39  __private X px;40 41  __constant X cx1;42  __constant X cx2(1);43  // CHECK-NEXT: ret void44}45