xref: /llvm-project/llvm/test/tools/llvm-split/AMDGPU/kernels-dependency-indirect.ll (revision d656b2063262d59c3565e63095104c01d1f6a5a3)
143fd244bSPierre van Houtryve; RUN: llvm-split -o %t %s -j 3 -mtriple amdgcn-amd-amdhsa
2*9347b66cSPierre van Houtryve; RUN: llvm-dis -o - %t0 | FileCheck --check-prefix=CHECK0 --implicit-check-not=define %s
3*9347b66cSPierre van Houtryve; RUN: llvm-dis -o - %t1 | FileCheck --check-prefix=CHECK1 --implicit-check-not=define %s
4*9347b66cSPierre van Houtryve; RUN: llvm-dis -o - %t2 | FileCheck --check-prefix=CHECK2 --implicit-check-not=define %s
543fd244bSPierre van Houtryve
642c40277SPierre van Houtryve; CHECK0: define internal void @HelperD
7*9347b66cSPierre van Houtryve; CHECK0: define amdgpu_kernel void @D
843fd244bSPierre van Houtryve
9*9347b66cSPierre van Houtryve; CHECK1: define internal void @HelperC
10*9347b66cSPierre van Houtryve; CHECK1: define amdgpu_kernel void @C
1143fd244bSPierre van Houtryve
12*9347b66cSPierre van Houtryve; CHECK2: define hidden void @HelperA
13*9347b66cSPierre van Houtryve; CHECK2: define hidden void @HelperB
14*9347b66cSPierre van Houtryve; CHECK2: define hidden void @CallCandidate
1543fd244bSPierre van Houtryve; CHECK2: define internal void @HelperC
16*9347b66cSPierre van Houtryve; CHECK2: define internal void @HelperD
17*9347b66cSPierre van Houtryve; CHECK2: define amdgpu_kernel void @A
18*9347b66cSPierre van Houtryve; CHECK2: define amdgpu_kernel void @B
1943fd244bSPierre van Houtryve
2043fd244bSPierre van Houtryve@addrthief = global [3 x ptr] [ptr @HelperA, ptr @HelperB, ptr @CallCandidate]
2143fd244bSPierre van Houtryve
2243fd244bSPierre van Houtryvedefine internal void @HelperA(ptr %call) {
2343fd244bSPierre van Houtryve  call void %call()
2443fd244bSPierre van Houtryve  ret void
2543fd244bSPierre van Houtryve}
2643fd244bSPierre van Houtryve
2743fd244bSPierre van Houtryvedefine internal void @HelperB(ptr %call) {
2842c40277SPierre van Houtryve  call void @HelperC()
2943fd244bSPierre van Houtryve  call void %call()
3042c40277SPierre van Houtryve  call void @HelperD()
3143fd244bSPierre van Houtryve  ret void
3243fd244bSPierre van Houtryve}
3343fd244bSPierre van Houtryve
3443fd244bSPierre van Houtryvedefine internal void @CallCandidate() {
3543fd244bSPierre van Houtryve  ret void
3643fd244bSPierre van Houtryve}
3743fd244bSPierre van Houtryve
3843fd244bSPierre van Houtryvedefine internal void @HelperC() {
3943fd244bSPierre van Houtryve  ret void
4043fd244bSPierre van Houtryve}
4143fd244bSPierre van Houtryve
4243fd244bSPierre van Houtryvedefine internal void @HelperD() {
4343fd244bSPierre van Houtryve  ret void
4443fd244bSPierre van Houtryve}
4543fd244bSPierre van Houtryve
4643fd244bSPierre van Houtryvedefine amdgpu_kernel void @A(ptr %call) {
4743fd244bSPierre van Houtryve  call void @HelperA(ptr %call)
4843fd244bSPierre van Houtryve  ret void
4943fd244bSPierre van Houtryve}
5043fd244bSPierre van Houtryve
5143fd244bSPierre van Houtryvedefine amdgpu_kernel void @B(ptr %call) {
5243fd244bSPierre van Houtryve  call void @HelperB(ptr %call)
5343fd244bSPierre van Houtryve  ret void
5443fd244bSPierre van Houtryve}
5543fd244bSPierre van Houtryve
5643fd244bSPierre van Houtryvedefine amdgpu_kernel void @C() {
5743fd244bSPierre van Houtryve  call void @HelperC()
5843fd244bSPierre van Houtryve  ret void
5943fd244bSPierre van Houtryve}
6043fd244bSPierre van Houtryve
6143fd244bSPierre van Houtryvedefine amdgpu_kernel void @D() {
6243fd244bSPierre van Houtryve  call void @HelperD()
6343fd244bSPierre van Houtryve  ret void
6443fd244bSPierre van Houtryve}
65