brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.1 KiB · 20e7345 Raw
69 lines · plain
1## Test the heuristics for matching BOLT-added split functions.2 3# RUN: llvm-mc --filetype=obj --triple x86_64-unknown-unknown %S/cdsplit-symbol-names.s -o %t.main.o4# RUN: llvm-mc --filetype=obj --triple x86_64-unknown-unknown %s -o %t.chain.o5# RUN: link_fdata %S/cdsplit-symbol-names.s %t.main.o %t.fdata6# RUN: llvm-strip --strip-unneeded %t.main.o7 8## Check warm fragment name matching (produced by cdsplit)9# RUN: %clang %cflags %t.main.o -o %t.warm.exe -Wl,-q10# RUN: llvm-bolt %t.warm.exe -o %t.warm.bolt --split-functions --split-strategy=cdsplit \11# RUN:   --call-scale=2 --data=%t.fdata --reorder-blocks=ext-tsp --enable-bat12# RUN: link_fdata %s %t.warm.bolt %t.preagg.warm PREAGGWARM13# PREAGGWARM: B X:0 #chain.warm# 1 014# RUN: perf2bolt %t.warm.bolt -p %t.preagg.warm --pa -o %t.warm.fdata -w %t.warm.yaml \15# RUN:   -v=1 | FileCheck %s --check-prefix=CHECK-BOLT-WARM16# RUN: FileCheck %s --input-file %t.warm.fdata --check-prefix=CHECK-FDATA-WARM17# RUN: FileCheck %s --input-file %t.warm.yaml --check-prefix=CHECK-YAML-WARM18 19# CHECK-BOLT-WARM: marking chain.warm/1(*2) as a fragment of chain20# CHECK-FDATA-WARM: chain21# CHECK-YAML-WARM: chain22 23# RUN: sed -i 's|chain|chain/2|g' %t.fdata24# RUN: llvm-objcopy --localize-symbol=chain %t.main.o25# RUN: %clang %cflags %t.chain.o %t.main.o -o %t.exe -Wl,-q26# RUN: llvm-bolt %t.exe -o %t.bolt --split-functions --split-strategy=randomN \27# RUN:   --reorder-blocks=ext-tsp --enable-bat --bolt-seed=7 --data=%t.fdata28# RUN: llvm-objdump --syms %t.bolt | FileCheck %s --check-prefix=CHECK-SYMS29 30# RUN: link_fdata %s %t.bolt %t.preagg PREAGG31# PREAGG: B X:0 #chain.cold.0# 1 032# PREAGG: B X:0 #dummy# 1 033# RUN: perf2bolt %t.bolt -p %t.preagg --pa -o %t.bat.fdata -w %t.bat.yaml -v=1 \34# RUN:   | FileCheck %s --check-prefix=CHECK-REGISTER35# RUN: FileCheck --input-file %t.bat.fdata --check-prefix=CHECK-FDATA %s36# RUN: FileCheck --input-file %t.bat.yaml --check-prefix=CHECK-YAML %s37 38# RUN: link_fdata --no-redefine %s %t.bolt %t.preagg2 PREAGG239# PREAGG2: B X:0 #chain# 1 040# RUN: perf2bolt %t.bolt -p %t.preagg2 --pa -o %t.bat2.fdata -w %t.bat2.yaml41# RUN: FileCheck %s --input-file %t.bat2.yaml --check-prefix=CHECK-YAML242 43# CHECK-SYMS: l df *ABS*          [[#]] chain.s44# CHECK-SYMS: l  F .bolt.org.text [[#]] chain45# CHECK-SYMS: l  F .text.cold     [[#]] chain.cold.046# CHECK-SYMS: l  F .text          [[#]] chain47# CHECK-SYMS: l df *ABS*          [[#]] bolt-pseudo.o48# CHECK-SYMS: l  F .text.cold     [[#]] dummy.cold.049# CHECK-SYMS: l  F .text.cold.1   [[#]] dummy.cold.150# CHECK-SYMS: l  F .text.cold.2   [[#]] dummy.cold.251 52# CHECK-REGISTER: BOLT-INFO: marking dummy.cold.0/1(*2) as a fragment of dummy53# CHECK-REGISTER: BOLT-INFO: marking dummy.cold.1/1(*2) as a fragment of dummy54# CHECK-REGISTER: BOLT-INFO: marking dummy.cold.2/1(*2) as a fragment of dummy55# CHECK-REGISTER: BOLT-INFO: marking chain.cold.0/1(*2) as a fragment of chain/2(*2)56 57# CHECK-FDATA: 0 [unknown] 0 1 chain/chain.s/2 10 0 158# CHECK-YAML: - name: 'chain/chain.s/2'59# CHECK-YAML2: - name: 'chain/chain.s/1'60## non-BAT function has non-zero insns:61# CHECK-YAML2: insns: 162 63.file "chain.s"64        .text65        .type   chain, @function66chain:67        ret68        .size   chain, .-chain69