Lines Matching +full:nvptx +full:- +full:-

1 // REQUIRES: nvptx-registered-target
2 // REQUIRES: amdgpu-registered-target
7 // RUN: %clang_cc1 -triple nvptx64-nvidia-cuda -fcuda-is-device -std=c++11 \
8 // RUN: -fno-threadsafe-statics -emit-llvm -o - %s | FileCheck -check-prefixes=DEVICE,NVPTX %s
9 // RUN: %clang_cc1 -triple nvptx64-nvidia-cuda -std=c++11 \
10 // RUN: -fno-threadsafe-statics -emit-llvm -o - %s | FileCheck -check-prefixes=HOST %s
12 // RUN: %clang_cc1 -triple amdgcn -fcuda-is-device -std=c++11 \
13 // RUN: -fno-threadsafe-statics -emit-llvm -o - %s | FileCheck -check-prefixes=DEVICE,AMDGCN %s
20 #include "Inputs/cuda-initializers.h"
46 // trivial constructor -- allowed
96 // empty templated constructor -- allowed with no arguments
114 // Regular base class -- allowed
125 // Incapsulated object of allowed class -- allowed
136 // array of allowed objects -- allowed
165 // We should not emit global initializers for device-side variables.
166 // DEVICE-NOT: @__cxx_global_var_init
171 // NVPTX: %[[ec:.*]] = alloca %struct.EC
172 // NVPTX: %[[ed:.*]] = alloca %struct.ED
173 // NVPTX: %[[ecd:.*]] = alloca %struct.ECD
174 // NVPTX: %[[etc:.*]] = alloca %struct.ETC
175 // NVPTX: %[[uc:.*]] = alloca %struct.UC
176 // NVPTX: %[[ud:.*]] = alloca %struct.UD
177 // NVPTX: %[[eci:.*]] = alloca %struct.ECI
178 // NVPTX: %[[nec:.*]] = alloca %struct.NEC
179 // NVPTX: %[[ned:.*]] = alloca %struct.NED
180 // NVPTX: %[[ncv:.*]] = alloca %struct.NCV
181 // NVPTX: %[[vd:.*]] = alloca %struct.VD
182 // NVPTX: %[[ncf:.*]] = alloca %struct.NCF
183 // NVPTX: %[[ncfs:.*]] = alloca %struct.NCFS
184 // NVPTX: %[[utc:.*]] = alloca %struct.UTC
185 // NVPTX: %[[netc:.*]] = alloca %struct.NETC
186 // NVPTX: %[[ec_i_ec:.*]] = alloca %struct.EC_I_EC
187 // NVPTX: %[[ec_i_ec1:.*]] = alloca %struct.EC_I_EC1
188 // NVPTX: %[[t_v_t:.*]] = alloca %struct.T_V_T
189 // NVPTX: %[[t_b_nec:.*]] = alloca %struct.T_B_NEC
190 // NVPTX: %[[t_f_nec:.*]] = alloca %struct.T_F_NEC
191 // NVPTX: %[[t_fa_nec:.*]] = alloca %struct.T_FA_NEC
192 // NVPTX: %[[t_b_ned:.*]] = alloca %struct.T_B_NED
193 // NVPTX: %[[t_f_ned:.*]] = alloca %struct.T_F_NED
194 // NVPTX: %[[t_fa_ned:.*]] = alloca %struct.T_FA_NED
221 // DEVICE-NOT: call
225 // DEVICE-NOT: call
231 // undefined constructor -- not allowed
234 // undefined destructor -- not allowed
235 // DEVICE-NOT: call
237 // empty constructor w/ initializer list -- not allowed
240 // non-empty constructor -- not allowed
242 // non-empty destructor -- not allowed
244 // no-constructor, virtual method -- not allowed
247 // DEVICE-NOT: call
259 // DEVICE-NOT: call
261 // DEVICE-NOT: call
263 // DEVICE-NOT: call
277 // DEVICE-NOT: call
279 // DEVICE-NOT: call
281 // DEVICE-NOT: call
283 // DEVICE-NOT: call void @_ZN2ECC1Ev(ptr addrspacecast (ptr addrspace(3) @_ZZ2dfvE4s_ec to ptr))
285 // DEVICE-NOT: call void @_ZN3ETCC1IJEEEDpT_(ptr addrspacecast (ptr addrspace(3) @_ZZ2dfvE5s_etc to ptr))
293 // Verify that we only call non-empty destructors
294 // DEVICE-NEXT: call void @_ZN8T_FA_NEDD1Ev(ptr {{[^,]*}} %[[t_fa_ned]])
295 // DEVICE-NEXT: call void @_ZN7T_F_NEDD1Ev(ptr {{[^,]*}} %[[t_f_ned]])
296 // DEVICE-NEXT: call void @_ZN7T_B_NEDD1Ev(ptr {{[^,]*}} %[[t_b_ned]])
297 // DEVICE-NEXT: call void @_ZN2VDD1Ev(ptr {{[^,]*}} %[[vd]])
298 // DEVICE-NEXT: call void @_ZN3NEDD1Ev(ptr {{[^,]*}} %[[ned]])
299 // DEVICE-NEXT: call void @_ZN2UDD1Ev(ptr {{[^,]*}} %[[ud]])
300 // DEVICE-NEXT: call void @_ZN3ECDD1Ev(ptr {{[^,]*}} %[[ecd]])
301 // DEVICE-NEXT: call void @_ZN2EDD1Ev(ptr {{[^,]*}} %[[ed]])
303 // DEVICE-NEXT: ret void
307 // DEVICE-NOT: @_GLOBAL__sub_I