// Tests __device__ function calls // RUN: cat %s | clang-repl --cuda | FileCheck %s extern "C" int printf(const char*, ...); __device__ inline void test_device(int* value) { *value = 42; } __global__ void test_kernel(int* value) { test_device(value); } int var; int* devptr = nullptr; printf("cudaMalloc: %d\n", cudaMalloc((void **) &devptr, sizeof(int))); // CHECK: cudaMalloc: 0 test_kernel<<<1,1>>>(devptr); printf("CUDA Error: %d\n", cudaGetLastError()); // CHECK-NEXT: CUDA Error: 0 printf("cudaMemcpy: %d\n", cudaMemcpy(&var, devptr, sizeof(int), cudaMemcpyDeviceToHost)); // CHECK-NEXT: cudaMemcpy: 0 printf("Value: %d\n", var); // CHECK-NEXT: Value: 42 %quit