Skip to content

Commit 436c635

Browse files
committed
[CIR][CUDA] Added tests
1 parent 53724d7 commit 436c635

File tree

1 file changed

+65
-0
lines changed

1 file changed

+65
-0
lines changed
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
#include "../Inputs/cuda.h"
2+
3+
// RUN: %clang_cc1 -triple x86_64-unknown-linux-gnu -fclangir \
4+
// RUN: -x cuda -emit-cir -target-sdk-version=12.3 \
5+
// RUN: %s -o %t.cir
6+
// RUN: FileCheck --check-prefix=CIR-HOST --input-file=%t.cir %s
7+
8+
// RUN: %clang_cc1 -triple nvptx-fclangir \
9+
// RUN: -fcuda-is-device -emit-cir -target-sdk-version=12.3 \
10+
// RUN: %s -o %t.cir
11+
// RUN: FileCheck --check-prefix=CIR-DEVICE --input-file=%t.cir %s
12+
13+
// Attribute for global_fn
14+
// CIR-HOST: [[Kernel:#[a-zA-Z_0-9]+]] = {{.*}}#cir.cu.kernel_name<_Z9global_fni>{{.*}}
15+
16+
__host__ void host_fn(int *a, int *b, int *c) {}
17+
// CIR-HOST: cir.func @_Z7host_fnPiS_S_
18+
// CIR-DEVICE-NOT: cir.func @_Z7host_fnPiS_S_
19+
20+
__device__ void device_fn(int* a, double b, float c) {}
21+
// CIR-HOST-NOT: cir.func @_Z9device_fnPidf
22+
// CIR-DEVICE: cir.func @_Z9device_fnPidf
23+
24+
__global__ void global_fn(int a) {}
25+
// CIR-DEVICE: @_Z9global_fni
26+
27+
// Check for device stub emission.
28+
29+
// CIR-HOST: @_Z24__device_stub__global_fni{{.*}}extra([[Kernel]])
30+
// CIR-HOST: cir.alloca {{.*}}"kernel_args"
31+
// CIR-HOST: cir.call @__cudaPopCallConfiguration
32+
// CIR-HOST: cir.get_global @_Z24__device_stub__global_fni
33+
// CIR-HOST: cir.call @cudaLaunchKernel
34+
35+
// COM: LLVM-HOST: void @_Z24__device_stub__global_fni
36+
// COM: LLVM-HOST: call i32 @__cudaPopCallConfiguration
37+
// COM: LLVM-HOST: call i32 @cudaLaunchKernel(ptr @_Z24__device_stub__global_fni
38+
39+
int main() {
40+
global_fn<<<1, 1>>>(1);
41+
}
42+
// CIR-DEVICE-NOT: cir.func @main()
43+
44+
// CIR-HOST: cir.func @main()
45+
// CIR-HOST: cir.call @_ZN4dim3C1Ejjj
46+
// CIR-HOST: cir.call @_ZN4dim3C1Ejjj
47+
// CIR-HOST: [[Push:%[0-9]+]] = cir.call @__cudaPushCallConfiguration
48+
// CIR-HOST: [[ConfigOK:%[0-9]+]] = cir.cast(int_to_bool, [[Push]]
49+
// CIR-HOST: cir.if [[ConfigOK]] {
50+
// CIR-HOST: [[Arg:%[0-9]+]] = cir.const #cir.int<1>
51+
// CIR-HOST: cir.call @_Z24__device_stub__global_fni([[Arg]])
52+
// CIR-HOST: }
53+
54+
// COM: LLVM-HOST: define dso_local i32 @main
55+
// COM: LLVM-HOST: alloca %struct.dim3
56+
// COM: LLVM-HOST: alloca %struct.dim3
57+
// COM: LLVM-HOST: call void @_ZN4dim3C1Ejjj
58+
// COM: LLVM-HOST: call void @_ZN4dim3C1Ejjj
59+
// COM: LLVM-HOST: [[LLVMConfigOK:%[0-9]+]] = call i32 @__cudaPushCallConfiguration
60+
// COM: LLVM-HOST: br [[LLVMConfigOK]], label %[[Good:[0-9]+]], label [[Bad:[0-9]+]]
61+
// COM: LLVM-HOST: [[Good]]:
62+
// COM: LLVM-HOST: call void @_Z24__device_stub__global_fni
63+
// COM: LLVM-HOST: br label [[Bad]]
64+
// COM: LLVM-HOST: [[Bad]]:
65+
// COM: LLVM-HOST: ret i32

0 commit comments

Comments
 (0)