diff options
author | Hiroshi Yamauchi <yamauchi@google.com> | 2019-04-12 15:05:46 +0000 |
---|---|---|
committer | Hiroshi Yamauchi <yamauchi@google.com> | 2019-04-12 15:05:46 +0000 |
commit | c27ff0d32db8662c8b1c0ab4ea611bc541fdb19f (patch) | |
tree | aa7958030de8f99ee436ea3a99a9b06783d621cb /llvm/lib/CodeGen/ExpandMemCmp.cpp | |
parent | 6c8f4ada360d8d289dbba7c80eb8a1fae991d7d0 (diff) | |
download | llvm-c27ff0d32db8662c8b1c0ab4ea611bc541fdb19f.zip llvm-c27ff0d32db8662c8b1c0ab4ea611bc541fdb19f.tar.gz llvm-c27ff0d32db8662c8b1c0ab4ea611bc541fdb19f.tar.bz2 |
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
Diffstat (limited to 'llvm/lib/CodeGen/ExpandMemCmp.cpp')
-rw-r--r-- | llvm/lib/CodeGen/ExpandMemCmp.cpp | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/llvm/lib/CodeGen/ExpandMemCmp.cpp b/llvm/lib/CodeGen/ExpandMemCmp.cpp index 6c80c17..a3a9790 100644 --- a/llvm/lib/CodeGen/ExpandMemCmp.cpp +++ b/llvm/lib/CodeGen/ExpandMemCmp.cpp @@ -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 |