xref: /llvm-project/bolt/test/X86/layout-heuristic.test (revision 11791ae7b0b05b8bd8d806331ff51da618912cf8)
1*11791ae7SSayhaan Siddiqui## Checks that llvm-bolt is able to read data generated by perf2bolt,  update the
2*11791ae7SSayhaan Siddiqui## CFG edges accordingly with absolute number of branches and mispredictions,
3*11791ae7SSayhaan Siddiqui## infer fallthrough branch info and reorder basic blocks using a greedy
4*11791ae7SSayhaan Siddiqui## heuristic,  or find the optimal solution if the function is small enough.
5*11791ae7SSayhaan Siddiqui## Also checks that llvm-bolt disassembler and CFG builder is working properly.
68331f75eSAmir Ayupov
78331f75eSAmir AyupovRUN: yaml2obj %p/Inputs/blarge.yaml &> %t.exe
8ab14eb23SAmir AyupovRUN: llvm-bolt %t.exe -o %t.null --data %p/Inputs/blarge.fdata \
9d648aa1bSMaksim PanchenkoRUN:   --reorder-blocks=normal --print-cfg --print-reordered \
10d648aa1bSMaksim PanchenkoRUN:   --funcs=main,SolveCubic,usqrt --sequential-disassembly \
11d648aa1bSMaksim PanchenkoRUN:   2>&1 | FileCheck %s
128331f75eSAmir Ayupov
138331f75eSAmir Ayupov# Original order
148331f75eSAmir AyupovCHECK:     Binary Function "main"
158331f75eSAmir AyupovCHECK:     BB Layout : .LBB00, .Ltmp1, .Ltmp0, .Ltmp3, .Ltmp2, .Ltmp5, .Ltmp4, .Ltmp7, .Ltmp6, .Ltmp9, .Ltmp8, .Ltmp11, .Ltmp10, .Ltmp13, .Ltmp12, .Ltmp15, .Ltmp14, .Ltmp21, .Ltmp20, .Ltmp19, .Ltmp18, .Ltmp17, .Ltmp16, .LFT0, .LFT1, .LFT2, .LFT3, .Ltmp22, .LFT4, .Ltmp23, .LFT5, .Ltmp24, .LFT6, .Ltmp25, .LFT7
168331f75eSAmir AyupovCHECK:     Binary Function "SolveCubic"
1708f56926SVladislav KhmelevskyCHECK:     BB Layout : .LBB01, .LFT8, .LFT9, .Ltmp33, .LFT10, .Ltmp28, .LFT11, .Ltmp26, .LFT12, .Ltmp37, .Ltmp36, .Ltmp35, .Ltmp34, .Ltmp27, .Ltmp32, .Ltmp31, .Ltmp30, .Ltmp29
188331f75eSAmir AyupovCHECK:     Binary Function "usqrt"
1908f56926SVladislav KhmelevskyCHECK:     BB Layout : .LBB02, .Ltmp39, .LFT13, .Ltmp38, .LFT14
208331f75eSAmir Ayupov
218331f75eSAmir Ayupov# New order
228331f75eSAmir AyupovCHECK:     Binary Function "main"
238331f75eSAmir AyupovCHECK:     BB Layout : .LBB00, .Ltmp1, .Ltmp0, .Ltmp3, .Ltmp2, .Ltmp5, .Ltmp4, .Ltmp7, .Ltmp6, .Ltmp9, .Ltmp8, .Ltmp11, .Ltmp10, .Ltmp13, .Ltmp12, .Ltmp15, .Ltmp14, .Ltmp21, .Ltmp16, .Ltmp18, .Ltmp17, .LFT0, .Ltmp19, .LFT1, .Ltmp20, .LFT2, .LFT3, .Ltmp22, .LFT4, .Ltmp23, .LFT5, .Ltmp24, .LFT6, .Ltmp25, .LFT7
248331f75eSAmir AyupovCHECK:     Binary Function "SolveCubic"
2508f56926SVladislav KhmelevskyCHECK:     BB Layout : .LBB01, .Ltmp26, .LFT12, .Ltmp37, .Ltmp36, .Ltmp35, .Ltmp34, .LFT8, .LFT9, .Ltmp33, .Ltmp28, .LFT10, .Ltmp27, .Ltmp32, .Ltmp31, .Ltmp30, .Ltmp29
268331f75eSAmir AyupovCHECK:     Binary Function "usqrt"
2708f56926SVladislav KhmelevskyCHECK:     BB Layout : .LBB02, .Ltmp38, .Ltmp39, .LFT13, .LFT14
28