llvm/clang/test/CodeGenCUDA/printf-builtin.cu

// REQUIRES: x86-registered-target
// REQUIRES: nvptx-registered-target
// RUN: %clang_cc1 -triple nvptx64-nvidia-cuda -emit-llvm -disable-llvm-optzns -fno-builtin-printf -fcuda-is-device \
// RUN:   -o - %s | FileCheck  %s

#define __device__ __attribute__((device))

extern "C" __device__ int printf(const char *format, ...);

// CHECK-LABEL: @_Z4foo1v()
__device__ int foo1() {
  // CHECK: call i32 @vprintf
  // CHECK-NOT: call i32 (ptr, ...) @printf
  return __builtin_printf("Hello World\n");
}

// CHECK-LABEL: @_Z4foo2v()
__device__ int foo2() {
  // CHECK: call i32 (ptr, ...) @printf
  return printf("Hello World\n");
}