diff options
author | vitalyisaev <vitalyisaev@yandex-team.com> | 2023-06-29 10:00:50 +0300 |
---|---|---|
committer | vitalyisaev <vitalyisaev@yandex-team.com> | 2023-06-29 10:00:50 +0300 |
commit | 6ffe9e53658409f212834330e13564e4952558f6 (patch) | |
tree | 85b1e00183517648b228aafa7c8fb07f5276f419 /contrib/libs/llvm16/lib/Transforms/Utils/SizeOpts.cpp | |
parent | 726057070f9c5a91fc10fde0d5024913d10f1ab9 (diff) | |
download | ydb-6ffe9e53658409f212834330e13564e4952558f6.tar.gz |
YQ Connector: support managed ClickHouse
Со стороны dqrun можно обратиться к инстансу коннектора, который работает на streaming стенде, и извлечь данные из облачного CH.
Diffstat (limited to 'contrib/libs/llvm16/lib/Transforms/Utils/SizeOpts.cpp')
-rw-r--r-- | contrib/libs/llvm16/lib/Transforms/Utils/SizeOpts.cpp | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/contrib/libs/llvm16/lib/Transforms/Utils/SizeOpts.cpp b/contrib/libs/llvm16/lib/Transforms/Utils/SizeOpts.cpp new file mode 100644 index 0000000000..1242380f73 --- /dev/null +++ b/contrib/libs/llvm16/lib/Transforms/Utils/SizeOpts.cpp @@ -0,0 +1,111 @@ +//===-- SizeOpts.cpp - code size optimization related code ----------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// +// +// This file contains some shared code size optimization related code. +// +//===----------------------------------------------------------------------===// + +#include "llvm/Transforms/Utils/SizeOpts.h" + +using namespace llvm; + +cl::opt<bool> llvm::EnablePGSO( + "pgso", cl::Hidden, cl::init(true), + cl::desc("Enable the profile guided size optimizations. ")); + +cl::opt<bool> llvm::PGSOLargeWorkingSetSizeOnly( + "pgso-lwss-only", cl::Hidden, cl::init(true), + cl::desc("Apply the profile guided size optimizations only " + "if the working set size is large (except for cold code.)")); + +cl::opt<bool> llvm::PGSOColdCodeOnly( + "pgso-cold-code-only", cl::Hidden, cl::init(false), + cl::desc("Apply the profile guided size optimizations only " + "to cold code.")); + +cl::opt<bool> llvm::PGSOColdCodeOnlyForInstrPGO( + "pgso-cold-code-only-for-instr-pgo", cl::Hidden, cl::init(false), + cl::desc("Apply the profile guided size optimizations only " + "to cold code under instrumentation PGO.")); + +cl::opt<bool> llvm::PGSOColdCodeOnlyForSamplePGO( + "pgso-cold-code-only-for-sample-pgo", cl::Hidden, cl::init(false), + cl::desc("Apply the profile guided size optimizations only " + "to cold code under sample PGO.")); + +cl::opt<bool> llvm::PGSOColdCodeOnlyForPartialSamplePGO( + "pgso-cold-code-only-for-partial-sample-pgo", cl::Hidden, cl::init(false), + cl::desc("Apply the profile guided size optimizations only " + "to cold code under partial-profile sample PGO.")); + +cl::opt<bool> llvm::ForcePGSO( + "force-pgso", cl::Hidden, cl::init(false), + cl::desc("Force the (profiled-guided) size optimizations. ")); + +cl::opt<int> llvm::PgsoCutoffInstrProf( + "pgso-cutoff-instr-prof", cl::Hidden, cl::init(950000), + cl::desc("The profile guided size optimization profile summary cutoff " + "for instrumentation profile.")); + +cl::opt<int> llvm::PgsoCutoffSampleProf( + "pgso-cutoff-sample-prof", cl::Hidden, cl::init(990000), + cl::desc("The profile guided size optimization profile summary cutoff " + "for sample profile.")); + +namespace { +struct BasicBlockBFIAdapter { + static bool isFunctionColdInCallGraph(const Function *F, + ProfileSummaryInfo *PSI, + BlockFrequencyInfo &BFI) { + return PSI->isFunctionColdInCallGraph(F, BFI); + } + static bool isFunctionHotInCallGraphNthPercentile(int CutOff, + const Function *F, + ProfileSummaryInfo *PSI, + BlockFrequencyInfo &BFI) { + return PSI->isFunctionHotInCallGraphNthPercentile(CutOff, F, BFI); + } + static bool isFunctionColdInCallGraphNthPercentile(int CutOff, + const Function *F, + ProfileSummaryInfo *PSI, + BlockFrequencyInfo &BFI) { + return PSI->isFunctionColdInCallGraphNthPercentile(CutOff, F, BFI); + } + static bool isColdBlock(const BasicBlock *BB, + ProfileSummaryInfo *PSI, + BlockFrequencyInfo *BFI) { + return PSI->isColdBlock(BB, BFI); + } + static bool isHotBlockNthPercentile(int CutOff, + const BasicBlock *BB, + ProfileSummaryInfo *PSI, + BlockFrequencyInfo *BFI) { + return PSI->isHotBlockNthPercentile(CutOff, BB, BFI); + } + static bool isColdBlockNthPercentile(int CutOff, const BasicBlock *BB, + ProfileSummaryInfo *PSI, + BlockFrequencyInfo *BFI) { + return PSI->isColdBlockNthPercentile(CutOff, BB, BFI); + } +}; +} // end anonymous namespace + +bool llvm::shouldOptimizeForSize(const Function *F, ProfileSummaryInfo *PSI, + BlockFrequencyInfo *BFI, + PGSOQueryType QueryType) { + return shouldFuncOptimizeForSizeImpl<BasicBlockBFIAdapter>(F, PSI, BFI, + QueryType); +} + +bool llvm::shouldOptimizeForSize(const BasicBlock *BB, ProfileSummaryInfo *PSI, + BlockFrequencyInfo *BFI, + PGSOQueryType QueryType) { + assert(BB); + return shouldOptimizeForSizeImpl<BasicBlockBFIAdapter>(BB, PSI, BFI, + QueryType); +} |