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