xref: /llvm-project/llvm/test/tools/llvm-split/AMDGPU/kernels-load-balancing.ll (revision 43fd244b3d5c08bfd3aad0913b0fe84339842f4e)
1*43fd244bSPierre van Houtryve; RUN: llvm-split -o %t %s -j 3 -mtriple amdgcn-amd-amdhsa
2*43fd244bSPierre van Houtryve; RUN: llvm-dis -o - %t0 | FileCheck --check-prefix=CHECK0 %s
3*43fd244bSPierre van Houtryve; RUN: llvm-dis -o - %t1 | FileCheck --check-prefix=CHECK1 %s
4*43fd244bSPierre van Houtryve; RUN: llvm-dis -o - %t2 | FileCheck --check-prefix=CHECK2 %s
5*43fd244bSPierre van Houtryve
6*43fd244bSPierre van Houtryve; Test load balancing logic with 6 kernels.
7*43fd244bSPierre van Houtryve;
8*43fd244bSPierre van Houtryve; Kernels go from most expensive (A == 6) to least expensive (F == 1)
9*43fd244bSPierre van Houtryve;
10*43fd244bSPierre van Houtryve; Load balancing should work like this (current partition cost is in parens)
11*43fd244bSPierre van Houtryve;
12*43fd244bSPierre van Houtryve; Initial    -> [P0(0), P1(0), P2(0)]
13*43fd244bSPierre van Houtryve;
14*43fd244bSPierre van Houtryve; A(6) goes in 2 -> [P2(6), P0(0), P1(0)]
15*43fd244bSPierre van Houtryve; B(5) goes in 1 -> [P2(6), P1(5), P0(4)]
16*43fd244bSPierre van Houtryve; C(4) goes in 0 -> [P2(6), P1(5), P0(4)]
17*43fd244bSPierre van Houtryve
18*43fd244bSPierre van Houtryve; D(3) goes in 0 -> [P0(7), P2(6), P1(5)]
19*43fd244bSPierre van Houtryve; E(2) goes in 1 -> [P0(7), P1(7), P2(6)]
20*43fd244bSPierre van Houtryve; F(1) goes in 2 -> [P0(7), P1(7), P2(7)]
21*43fd244bSPierre van Houtryve
22*43fd244bSPierre van Houtryve; CHECK0-NOT: define
23*43fd244bSPierre van Houtryve; CHECK0: define amdgpu_kernel void @C
24*43fd244bSPierre van Houtryve; CHECK0: define amdgpu_kernel void @D
25*43fd244bSPierre van Houtryve; CHECK0-NOT: define
26*43fd244bSPierre van Houtryve
27*43fd244bSPierre van Houtryve; CHECK1-NOT: define
28*43fd244bSPierre van Houtryve; CHECK1: define amdgpu_kernel void @B
29*43fd244bSPierre van Houtryve; CHECK1: define amdgpu_kernel void @E
30*43fd244bSPierre van Houtryve; CHECK1-NOT: define
31*43fd244bSPierre van Houtryve
32*43fd244bSPierre van Houtryve; CHECK2-NOT: define
33*43fd244bSPierre van Houtryve; CHECK2: define amdgpu_kernel void @A
34*43fd244bSPierre van Houtryve; CHECK2: define amdgpu_kernel void @F
35*43fd244bSPierre van Houtryve; CHECK2-NOT: define
36*43fd244bSPierre van Houtryve
37*43fd244bSPierre van Houtryve
38*43fd244bSPierre van Houtryvedefine amdgpu_kernel void @A(ptr %x) {
39*43fd244bSPierre van Houtryve  store i64 42, ptr %x
40*43fd244bSPierre van Houtryve  store i64 43, ptr %x
41*43fd244bSPierre van Houtryve  store i64 44, ptr %x
42*43fd244bSPierre van Houtryve  store i64 45, ptr %x
43*43fd244bSPierre van Houtryve  store i64 46, ptr %x
44*43fd244bSPierre van Houtryve  ret void
45*43fd244bSPierre van Houtryve}
46*43fd244bSPierre van Houtryve
47*43fd244bSPierre van Houtryvedefine amdgpu_kernel void @B(ptr %x) {
48*43fd244bSPierre van Houtryve  store i64 42, ptr %x
49*43fd244bSPierre van Houtryve  store i64 43, ptr %x
50*43fd244bSPierre van Houtryve  store i64 44, ptr %x
51*43fd244bSPierre van Houtryve  store i64 45, ptr %x
52*43fd244bSPierre van Houtryve  ret void
53*43fd244bSPierre van Houtryve}
54*43fd244bSPierre van Houtryve
55*43fd244bSPierre van Houtryvedefine amdgpu_kernel void @C(ptr %x) {
56*43fd244bSPierre van Houtryve  store i64 42, ptr %x
57*43fd244bSPierre van Houtryve  store i64 43, ptr %x
58*43fd244bSPierre van Houtryve  store i64 44, ptr %x
59*43fd244bSPierre van Houtryve  ret void
60*43fd244bSPierre van Houtryve}
61*43fd244bSPierre van Houtryve
62*43fd244bSPierre van Houtryvedefine amdgpu_kernel void @D(ptr %x) {
63*43fd244bSPierre van Houtryve  store i64 42, ptr %x
64*43fd244bSPierre van Houtryve  store i64 43, ptr %x
65*43fd244bSPierre van Houtryve  ret void
66*43fd244bSPierre van Houtryve}
67*43fd244bSPierre van Houtryve
68*43fd244bSPierre van Houtryvedefine amdgpu_kernel void @E(ptr %x) {
69*43fd244bSPierre van Houtryve  store i64 42, ptr %x
70*43fd244bSPierre van Houtryve  ret void
71*43fd244bSPierre van Houtryve}
72*43fd244bSPierre van Houtryve
73*43fd244bSPierre van Houtryvedefine amdgpu_kernel void @F() {
74*43fd244bSPierre van Houtryve  ret void
75*43fd244bSPierre van Houtryve}
76