[llvm] 446e216 - [llvm-profgen] Use context-sensitive byte size cost for preinliner decisions by default

Wenlei He via llvm-commits llvm-commits at lists.llvm.org
Thu Sep 16 10:37:52 PDT 2021


Author: Wenlei He
Date: 2021-09-16T10:36:12-07:00
New Revision: 446e21623c285f335714297aa14f13c21b298931

URL: https://github.com/llvm/llvm-project/commit/446e21623c285f335714297aa14f13c21b298931
DIFF: https://github.com/llvm/llvm-project/commit/446e21623c285f335714297aa14f13c21b298931.diff

LOG: [llvm-profgen] Use context-sensitive byte size cost for preinliner decisions by default

Turn on `use-context-cost-for-preinliner` to use context-sensitive byte size cost for preinliner decisions by default.

This is a more accurate proxy of inline cost than profile size. We tested on our large workload that it delivers measureable CPU improvement.

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

Added: 
    

Modified: 
    llvm/test/tools/llvm-profgen/cs-preinline-cost.test
    llvm/tools/llvm-profgen/CSPreInliner.cpp

Removed: 
    


################################################################################
diff  --git a/llvm/test/tools/llvm-profgen/cs-preinline-cost.test b/llvm/test/tools/llvm-profgen/cs-preinline-cost.test
index f473ca3607529..dc4388123b6aa 100644
--- a/llvm/test/tools/llvm-profgen/cs-preinline-cost.test
+++ b/llvm/test/tools/llvm-profgen/cs-preinline-cost.test
@@ -1,6 +1,6 @@
 ; REQUIRES: asserts
 ; Test default using size of profile as a proxy
-; RUN: llvm-profgen --format=text --perfscript=%S/Inputs/cs-preinline-cost.perfscript --binary=%S/Inputs/cs-preinline-cost.perfbin --csspgo-preinliner --debug-only=cs-preinliner --output=/dev/null 2>&1 | FileCheck %s --check-prefix=CHECK-DEFAULT
+; RUN: llvm-profgen --format=text --perfscript=%S/Inputs/cs-preinline-cost.perfscript --binary=%S/Inputs/cs-preinline-cost.perfbin --csspgo-preinliner --debug-only=cs-preinliner --use-context-cost-for-preinliner=0 --output=/dev/null 2>&1 | FileCheck %s --check-prefix=CHECK-DEFAULT
 
 ; Test use-context-cost-for-preinliner using inlinee's byte size as context-sensitive inline cost
 ; RUN: llvm-profgen --format=text --perfscript=%S/Inputs/cs-preinline-cost.perfscript --binary=%S/Inputs/cs-preinline-cost.perfbin --csspgo-preinliner --debug-only=cs-preinliner --use-context-cost-for-preinliner --output=/dev/null 2>&1 | FileCheck %s --check-prefix=CHECK-CSCOST

diff  --git a/llvm/tools/llvm-profgen/CSPreInliner.cpp b/llvm/tools/llvm-profgen/CSPreInliner.cpp
index ab6615c30846f..06c3a41ad14ad 100644
--- a/llvm/tools/llvm-profgen/CSPreInliner.cpp
+++ b/llvm/tools/llvm-profgen/CSPreInliner.cpp
@@ -45,7 +45,7 @@ cl::opt<bool> EnableCSPreInliner(
              "estimated global top-down inline decisions"));
 
 cl::opt<bool> UseContextCostForPreInliner(
-    "use-context-cost-for-preinliner", cl::Hidden, cl::init(false),
+    "use-context-cost-for-preinliner", cl::Hidden, cl::init(true),
     cl::desc("Use context-sensitive byte size cost for preinliner decisions"));
 
 static cl::opt<bool> SamplePreInlineReplay(


        


More information about the llvm-commits mailing list