Add options for MaxLoadsPerMemcmp(OptSize).

Reviewers: davidxl

Reviewed By: davidxl

Subscribers: llvm-commits

Tags: #llvm

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

llvm-svn: 358287
This commit is contained in:
Hiroshi Yamauchi 2019-04-12 15:05:46 +00:00
parent 6c8f4ada36
commit c27ff0d32d
1 changed files with 15 additions and 2 deletions

View File

@ -36,6 +36,14 @@ static cl::opt<unsigned> MemCmpEqZeroNumLoadsPerBlock(
cl::desc("The number of loads per basic block for inline expansion of "
"memcmp that is only being compared against zero."));
static cl::opt<unsigned> MaxLoadsPerMemcmp(
"max-loads-per-memcmp", cl::Hidden,
cl::desc("Set maximum number of loads used in expanded memcmp"));
static cl::opt<unsigned> MaxLoadsPerMemcmpOptSize(
"max-loads-per-memcmp-opt-size", cl::Hidden,
cl::desc("Set maximum number of loads used in expanded memcmp for -Os/Oz"));
namespace {
@ -741,8 +749,13 @@ static bool expandMemCmp(CallInst *CI, const TargetTransformInfo *TTI,
const auto *const Options = TTI->enableMemCmpExpansion(IsUsedForZeroCmp);
if (!Options) return false;
const unsigned MaxNumLoads =
TLI->getMaxExpandSizeMemcmp(CI->getFunction()->hasOptSize());
const unsigned MaxNumLoads = CI->getFunction()->hasOptSize()
? (MaxLoadsPerMemcmpOptSize.getNumOccurrences()
? MaxLoadsPerMemcmpOptSize
: TLI->getMaxExpandSizeMemcmp(true))
: (MaxLoadsPerMemcmp.getNumOccurrences()
? MaxLoadsPerMemcmp
: TLI->getMaxExpandSizeMemcmp(false));
unsigned NumLoadsPerBlock = MemCmpEqZeroNumLoadsPerBlock.getNumOccurrences()
? MemCmpEqZeroNumLoadsPerBlock