xref: /llvm-project/llvm/test/CodeGen/AArch64/basic-block-sections-cold.ll (revision ea06384bf667c635f78660f0bcfaa01372735b99)
1*ea06384bSDaniel Hoekwater;; Check if basic blocks that don't get unique sections are placed in cold sections.
2*ea06384bSDaniel Hoekwater;; Basic block with id 1 and 2 must be in the cold section.
3*ea06384bSDaniel Hoekwater;;
4*ea06384bSDaniel Hoekwater;; Profile for version 0
5*ea06384bSDaniel Hoekwater; RUN: echo '!_Z3bazb' > %t1
6*ea06384bSDaniel Hoekwater; RUN: echo '!!0' >> %t1
7*ea06384bSDaniel Hoekwater;;
8*ea06384bSDaniel Hoekwater;; Profile for version 1
9*ea06384bSDaniel Hoekwater; RUN: echo 'v1' > %t2
10*ea06384bSDaniel Hoekwater; RUN: echo 'f _Z3bazb' >> %t2
11*ea06384bSDaniel Hoekwater; RUN: echo 'c 0' >> %t2
12*ea06384bSDaniel Hoekwater;;
13*ea06384bSDaniel Hoekwater; RUN: llc < %s -mtriple=aarch64 -function-sections -basic-block-sections=%t1 -unique-basic-block-section-names | FileCheck %s -check-prefix=SECTIONS
14*ea06384bSDaniel Hoekwater; RUN: llc < %s -mtriple=aarch64 -function-sections -basic-block-sections=%t2 -unique-basic-block-section-names | FileCheck %s -check-prefix=SECTIONS
15*ea06384bSDaniel Hoekwater; RUN: llc < %s -mtriple=aarch64 -function-sections -basic-block-sections=%t1 -unique-basic-block-section-names -bbsections-cold-text-prefix=".text.unlikely." | FileCheck %s -check-prefix=SPLIT
16*ea06384bSDaniel Hoekwater
17*ea06384bSDaniel Hoekwaterdefine void @_Z3bazb(i1 zeroext %0) nounwind {
18*ea06384bSDaniel Hoekwater  br i1 %0, label %2, label %4
19*ea06384bSDaniel Hoekwater
20*ea06384bSDaniel Hoekwater2:                                                ; preds = %1
21*ea06384bSDaniel Hoekwater  %3 = call i32 @_Z3barv()
22*ea06384bSDaniel Hoekwater  br label %6
23*ea06384bSDaniel Hoekwater
24*ea06384bSDaniel Hoekwater4:                                                ; preds = %1
25*ea06384bSDaniel Hoekwater  %5 = call i32 @_Z3foov()
26*ea06384bSDaniel Hoekwater  br label %6
27*ea06384bSDaniel Hoekwater
28*ea06384bSDaniel Hoekwater6:                                                ; preds = %2, %4
29*ea06384bSDaniel Hoekwater  ret void
30*ea06384bSDaniel Hoekwater}
31*ea06384bSDaniel Hoekwater
32*ea06384bSDaniel Hoekwaterdeclare i32 @_Z3barv() #1
33*ea06384bSDaniel Hoekwater
34*ea06384bSDaniel Hoekwaterdeclare i32 @_Z3foov() #1
35*ea06384bSDaniel Hoekwater
36*ea06384bSDaniel Hoekwater; SECTIONS: .section        .text.hot._Z3bazb,"ax",@progbits
37*ea06384bSDaniel Hoekwater; SECTIONS: _Z3bazb:
38*ea06384bSDaniel Hoekwater; Check that the basic block with id 1 doesn't get a section.
39*ea06384bSDaniel Hoekwater; SECTIONS-NOT: .section        .text{{.*}}._Z3bazb.1,"ax",@progbits,unique
40*ea06384bSDaniel Hoekwater; Check that a single cold section is started here and id 1 and 2 blocks are placed here.
41*ea06384bSDaniel Hoekwater; SECTIONS: .section	.text.split._Z3bazb,"ax",@progbits
42*ea06384bSDaniel Hoekwater; SECTIONS: _Z3bazb.cold:
43*ea06384bSDaniel Hoekwater; SECTIONS-NOT: .section        .text.hot._Z3bazb._Z3bazb.2,"ax",@progbits,unique
44*ea06384bSDaniel Hoekwater; SECTIONS: .LBB0_2:
45*ea06384bSDaniel Hoekwater; SECTIONS: .size   _Z3bazb, .Lfunc_end{{[0-9]}}-_Z3bazb
46*ea06384bSDaniel Hoekwater
47*ea06384bSDaniel Hoekwater; SPLIT:      .section	.text.unlikely._Z3bazb,"ax",@progbits
48*ea06384bSDaniel Hoekwater; SPLIT-NEXT: _Z3bazb.cold:
49*ea06384bSDaniel Hoekwater; SPLIT-NEXT:   bl _Z3barv
50*ea06384bSDaniel Hoekwater; SPLIT:      .LBB0_2:
51*ea06384bSDaniel Hoekwater; SPLIT:      .LBB_END0_2:
52