HomePhabricator

[PGO] Control Height Reduction

Authored by yamauchi on Sep 4 2018, 10:19 AM.

Description

[PGO] Control Height Reduction

Summary:
Control height reduction merges conditional blocks of code and reduces the
number of conditional branches in the hot path based on profiles.

if (hot_cond1) { // Likely true.

do_stg_hot1();

}
if (hot_cond2) { // Likely true.

do_stg_hot2();

}

->

if (hot_cond1 && hot_cond2) { // Hot path.

do_stg_hot1();
do_stg_hot2();

} else { // Cold path.

if (hot_cond1) {
  do_stg_hot1();
}
if (hot_cond2) {
  do_stg_hot2();
}

}

This speeds up some internal benchmarks up to ~30%.

Reviewers: davidxl

Reviewed By: davidxl

Subscribers: xbolva00, dmgreen, mehdi_amini, llvm-commits, mgorny

Differential Revision: https://reviews.llvm.org/D50591

llvm-svn: 341386

Details

Committed
yamauchiSep 4 2018, 10:19 AM
Reviewer
davidxl
Differential Revision
D50591: [PGO] Control Height Reduction
Parents
rG24568789c416: [libFuzzer] Enable tests on Windows
Branches
Unknown
Tags
Unknown