xref: /llvm-project/bolt/test/X86/pre-aggregated-perf.test (revision cafd3e10c39a2bfc81eac33ee56a706476e676a9)
111791ae7SSayhaan Siddiqui## This script checks that perf2bolt is reading pre-aggregated perf information
211791ae7SSayhaan Siddiqui## correctly for a simple example. The perf.data of this example was generated
311791ae7SSayhaan Siddiqui## with the following command:
411791ae7SSayhaan Siddiqui##
511791ae7SSayhaan Siddiqui##  $ perf record -j any,u -e branch -o perf.data -- ./blarge
611791ae7SSayhaan Siddiqui##
711791ae7SSayhaan Siddiqui##  blarge is the binary for "basicmath large inputs" taken from Mibench.
8ddfcf4f2SRafael Auler
911791ae7SSayhaan Siddiqui## Currently failing in MacOS / generating different hash for usqrt
1026ad0bd9SRafael AulerREQUIRES: system-linux
1141cb6b68SRafael Auler
12ddfcf4f2SRafael AulerRUN: yaml2obj %p/Inputs/blarge.yaml &> %t.exe
1369b7e257SAmir AyupovRUN: perf2bolt %t.exe -o %t --pa -p %p/Inputs/pre-aggregated.txt -w %t.new \
14*cafd3e10SAmir AyupovRUN:   --show-density \
156ee5ff95SAmir AyupovRUN:   --profile-density-threshold=9 --profile-density-cutoff-hot=970000 \
166ee5ff95SAmir AyupovRUN:   --profile-use-dfs | FileCheck %s --check-prefix=CHECK-P2B
176ee5ff95SAmir Ayupov
186ee5ff95SAmir AyupovCHECK-P2B: BOLT-INFO: 4 out of 7 functions in the binary (57.1%) have non-empty execution profile
196ee5ff95SAmir AyupovCHECK-P2B: BOLT-INFO: Functions with density >= 21.7 account for 97.00% total sample counts.
206ee5ff95SAmir Ayupov
216ee5ff95SAmir AyupovRUN: perf2bolt %t.exe -o %t --pa -p %p/Inputs/pre-aggregated.txt -w %t.new \
22*cafd3e10SAmir AyupovRUN:   --show-density \
236ee5ff95SAmir AyupovRUN:   --profile-density-cutoff-hot=970000 \
246ee5ff95SAmir AyupovRUN:   --profile-use-dfs 2>&1 | FileCheck %s --check-prefix=CHECK-WARNING
256ee5ff95SAmir Ayupov
266ee5ff95SAmir AyupovCHECK-WARNING: BOLT-INFO: 4 out of 7 functions in the binary (57.1%) have non-empty execution profile
276ee5ff95SAmir AyupovCHECK-WARNING: BOLT-WARNING: BOLT is estimated to optimize better with 2.8x more samples.
286ee5ff95SAmir AyupovCHECK-WARNING: BOLT-INFO: Functions with density >= 21.7 account for 97.00% total sample counts.
295fb59e74SAmir Ayupov
305fb59e74SAmir AyupovRUN: llvm-bolt %t.exe -data %t -o %t.null | FileCheck %s
315fb59e74SAmir AyupovRUN: llvm-bolt %t.exe -data %t.new -o %t.null | FileCheck %s
325fb59e74SAmir AyupovRUN: llvm-bolt %t.exe -p %p/Inputs/pre-aggregated.txt --pa -o %t.null | FileCheck %s
335fb59e74SAmir Ayupov
345fb59e74SAmir AyupovCHECK: BOLT-INFO: 4 out of 7 functions in the binary (57.1%) have non-empty execution profile
355fb59e74SAmir Ayupov
36ddfcf4f2SRafael AulerRUN: cat %t | sort | FileCheck %s -check-prefix=PERF2BOLT
37ddfcf4f2SRafael AulerRUN: cat %t.new | FileCheck %s -check-prefix=NEWFORMAT
38ddfcf4f2SRafael Auler
3911791ae7SSayhaan Siddiqui## Test --profile-format option with perf2bolt
4039336fc0SAmir AyupovRUN: perf2bolt %t.exe -o %t.fdata --pa -p %p/Inputs/pre-aggregated.txt \
4139336fc0SAmir AyupovRUN:   --profile-format=fdata
4239336fc0SAmir AyupovRUN: cat %t.fdata | sort | FileCheck %s -check-prefix=PERF2BOLT
4339336fc0SAmir Ayupov
4439336fc0SAmir AyupovRUN: perf2bolt %t.exe -o %t.yaml --pa -p %p/Inputs/pre-aggregated.txt \
4569b7e257SAmir AyupovRUN:   --profile-format=yaml --profile-use-dfs
4639336fc0SAmir AyupovRUN: cat %t.yaml | FileCheck %s -check-prefix=NEWFORMAT
4739336fc0SAmir Ayupov
4811791ae7SSayhaan Siddiqui## Test --profile-format option with llvm-bolt --aggregate-only
4939336fc0SAmir AyupovRUN: llvm-bolt %t.exe -o %t.bolt.fdata --pa -p %p/Inputs/pre-aggregated.txt \
5039336fc0SAmir AyupovRUN:   --aggregate-only --profile-format=fdata
5139336fc0SAmir AyupovRUN: cat %t.bolt.fdata | sort | FileCheck %s -check-prefix=PERF2BOLT
5239336fc0SAmir Ayupov
5339336fc0SAmir AyupovRUN: llvm-bolt %t.exe -o %t.bolt.yaml --pa -p %p/Inputs/pre-aggregated.txt \
5469b7e257SAmir AyupovRUN:   --aggregate-only --profile-format=yaml --profile-use-dfs
5539336fc0SAmir AyupovRUN: cat %t.bolt.yaml | FileCheck %s -check-prefix=NEWFORMAT
5639336fc0SAmir Ayupov
57ddfcf4f2SRafael AulerPERF2BOLT: 0 [unknown] 7f36d18d60c0 1 main 53c 0 2
58ddfcf4f2SRafael AulerPERF2BOLT: 1 main 451 1 SolveCubic 0 0 2
59ddfcf4f2SRafael AulerPERF2BOLT: 1 main 490 0 [unknown] 4005f0 0 1
60ddfcf4f2SRafael AulerPERF2BOLT: 1 main 537 0 [unknown] 400610 0 1
61ddfcf4f2SRafael AulerPERF2BOLT: 1 usqrt 30 1 usqrt 32 0 22
62ddfcf4f2SRafael AulerPERF2BOLT: 1 usqrt 30 1 usqrt 39 4 33
63ddfcf4f2SRafael AulerPERF2BOLT: 1 usqrt 35 1 usqrt 39 0 22
64ddfcf4f2SRafael AulerPERF2BOLT: 1 usqrt 3d 1 usqrt 10 0 58
65ddfcf4f2SRafael AulerPERF2BOLT: 1 usqrt 3d 1 usqrt 3f 0 22
6608f56926SVladislav KhmelevskyPERF2BOLT: 1 usqrt a 1 usqrt 10 0 22
67ddfcf4f2SRafael Auler
68c061f755SAmir AyupovNEWFORMAT:  - name:            'frame_dummy/1'
69c061f755SAmir AyupovNEWFORMAT:    fid:             3
70e7dd596cSspupyrevNEWFORMAT:    hash:            0x28C72085C0BD8D37
71c061f755SAmir AyupovNEWFORMAT:    exec:            1
72c061f755SAmir Ayupov
73ddfcf4f2SRafael AulerNEWFORMAT:  - name:            usqrt
74ddfcf4f2SRafael AulerNEWFORMAT:    fid:             7
75ddfcf4f2SRafael AulerNEWFORMAT:    exec:            0
76ddfcf4f2SRafael AulerNEWFORMAT:    nblocks:         5
77ddfcf4f2SRafael AulerNEWFORMAT:    blocks:
78ddfcf4f2SRafael AulerNEWFORMAT:      - bid:             0
7908f56926SVladislav KhmelevskyNEWFORMAT:        insns:           4
80ddfcf4f2SRafael AulerNEWFORMAT:        succ:            [ { bid: 1, cnt: 22 } ]
81ddfcf4f2SRafael AulerNEWFORMAT:      - bid:             1
82ddfcf4f2SRafael AulerNEWFORMAT:        insns:           9
83ddfcf4f2SRafael AulerNEWFORMAT:        succ:            [ { bid: 3, cnt: 33, mis: 4 }, { bid: 2, cnt: 22 } ]
84ddfcf4f2SRafael AulerNEWFORMAT:      - bid:             2
85ddfcf4f2SRafael AulerNEWFORMAT:        insns:           2
86ddfcf4f2SRafael AulerNEWFORMAT:        succ:            [ { bid: 3, cnt: 22 } ]
87ddfcf4f2SRafael AulerNEWFORMAT:      - bid:             3
88ddfcf4f2SRafael AulerNEWFORMAT:        insns:           2
89ddfcf4f2SRafael AulerNEWFORMAT:        succ:            [ { bid: 1, cnt: 58 }, { bid: 4, cnt: 22 } ]
90