forked from OSchip/llvm-project
26 lines
1.1 KiB
Plaintext
26 lines
1.1 KiB
Plaintext
// Tests CUDA kernel arguments get copied by value when targeting SPIR-V, even with
|
|
// destructor, copy constructor or move constructor defined by user.
|
|
|
|
// RUN: %clang -Xclang -no-opaque-pointers -emit-llvm --cuda-device-only --offload=spirv32 \
|
|
// RUN: -nocudalib -nocudainc %s -o %t.bc -c 2>&1
|
|
// RUN: llvm-dis %t.bc -o %t.ll
|
|
// RUN: FileCheck %s --input-file=%t.ll
|
|
|
|
// RUN: %clang -Xclang -no-opaque-pointers -emit-llvm --cuda-device-only --offload=spirv64 \
|
|
// RUN: -nocudalib -nocudainc %s -o %t.bc -c 2>&1
|
|
// RUN: llvm-dis %t.bc -o %t.ll
|
|
// RUN: FileCheck %s --input-file=%t.ll
|
|
|
|
class GpuData {
|
|
public:
|
|
__attribute__((host)) __attribute__((device)) GpuData(int* src) {}
|
|
__attribute__((host)) __attribute__((device)) ~GpuData() {}
|
|
__attribute__((host)) __attribute__((device)) GpuData(const GpuData& other) {}
|
|
__attribute__((host)) __attribute__((device)) GpuData(GpuData&& other) {}
|
|
};
|
|
|
|
// CHECK: define
|
|
// CHECK-SAME: spir_kernel void @_Z6kernel7GpuData(%class.GpuData* noundef byval(%class.GpuData) align
|
|
|
|
__attribute__((global)) void kernel(GpuData output) {}
|