blob: ed49dc133943bdedeb6a0bc9023f427a34266def [file] [edit]
#include "Inputs/cuda.h"
// RUN: %clang_cc1 -triple nvptx64-nvidia-cuda -target-cpu sm_80 -x cuda \
// RUN: -fcuda-is-device -fclangir -emit-cir %s -o %t.cir
// RUN: FileCheck --check-prefix=CIR --input-file=%t.cir %s
// RUN: %clang_cc1 -triple nvptx64-nvidia-cuda -target-cpu sm_80 -x cuda \
// RUN: -fcuda-is-device -fclangir -emit-llvm %s -o %t.ll
// RUN: FileCheck --check-prefix=LLVM --input-file=%t.ll %s
// RUN: %clang_cc1 -triple nvptx64-nvidia-cuda -target-cpu sm_80 -x cuda \
// RUN: -fcuda-is-device -emit-llvm %s -o %t-og.ll
// RUN: FileCheck --check-prefix=LLVM --input-file=%t-og.ll %s
__device__ void print_int() {
printf("%d", 42);
}
// CIR: cir.func no_inline dso_local @_Z9print_intv()
// CIR: %[[#ALLOCA:]] = cir.alloca {{.*}} : !cir.ptr<!rec_anon_struct>
// CIR: %[[#VAL:]] = cir.const #cir.int<42> : !s32i
// CIR: %[[#FIELD:]] = cir.get_member %[[#ALLOCA]][0]
// CIR: cir.store align(4) %[[#VAL]], %[[#FIELD]]
// CIR: %[[#BUF:]] = cir.cast bitcast %[[#ALLOCA]] : !cir.ptr<!rec_anon_struct> -> !cir.ptr<!void>
// CIR: cir.call @vprintf(%{{.+}}, %[[#BUF]])
// CIR: cir.return
// LLVM: define dso_local void @_Z9print_intv()
// LLVM: %[[PACKED:.*]] = alloca
// LLVM: %[[GEP:.*]] = getelementptr inbounds nuw
// LLVM: store i32 42, ptr %[[GEP]], align 4
// LLVM: call i32 @vprintf(ptr @{{.*}}, ptr %[[PACKED]])
// LLVM: ret void
__device__ void print_no_args() {
printf("hello world");
}
// CIR: cir.func no_inline dso_local @_Z13print_no_argsv()
// CIR: %[[#NULL:]] = cir.const #cir.ptr<null> : !cir.ptr<!void>
// CIR: cir.call @vprintf(%{{.+}}, %[[#NULL]])
// CIR: cir.return
// LLVM: define dso_local void @_Z13print_no_argsv()
// LLVM: call i32 @vprintf(ptr @{{.*}}, ptr null)
// LLVM: ret void