
This commit refactors the `add_offload_test_device_code` CMake function to compile device code using the C++ compiler (`CMAKE_CXX_COMPILER`) instead of the C compiler. This change enables the use of C++ features, such as templates, within device-side test kernels. This will allow for more advanced and reusable kernel wrappers, reducing boilerplate code in the conformance test suite. As part of this change: - All `.c` files for device code in `unittests/` have been renamed to `.cpp`. - Kernel definitions are now wrapped in `extern "C"` to ensure C linkage and prevent name mangling. This change affects the `OffloadAPI` and `Conformance` test suites. cc @callumfare @RossBrunton @jhuber6
19 lines
393 B
C++
19 lines
393 B
C++
#include <gpuintrin.h>
|
|
#include <stdint.h>
|
|
|
|
extern "C" {
|
|
|
|
[[gnu::visibility("default")]]
|
|
uint32_t global[64];
|
|
|
|
__gpu_kernel void write() {
|
|
global[__gpu_thread_id(0)] = __gpu_thread_id(0);
|
|
global[__gpu_thread_id(0)] *= 2;
|
|
}
|
|
|
|
__gpu_kernel void read(uint32_t *out) {
|
|
out[__gpu_thread_id(0) + (__gpu_num_threads(0) * __gpu_block_id(0))] =
|
|
global[__gpu_thread_id(0)];
|
|
}
|
|
} // extern "C"
|