forked from OSchip/llvm-project
[X86] Add option to specify preferable loop alignment
Summary: Loop alignment can cause a significant change of the perfromance for short loops. To be able to evaluate the impact of loop alignment this change introduces the new option x86-experimental-pref-loop-alignment. The alignment will be 2^Value bytes, the default value is 4. Patch by Serguei Katkov! Reviewers: craig.topper Reviewed By: craig.topper Subscribers: sanjoy, llvm-commits Differential Revision: https://reviews.llvm.org/D30391 llvm-svn: 297178
This commit is contained in:
parent
8612326a08
commit
c08a79fbf2
|
@ -70,6 +70,13 @@ static cl::opt<bool> ExperimentalVectorWideningLegalization(
|
|||
"rather than promotion."),
|
||||
cl::Hidden);
|
||||
|
||||
static cl::opt<int> ExperimentalPrefLoopAlignment(
|
||||
"x86-experimental-pref-loop-alignment", cl::init(4),
|
||||
cl::desc("Sets the preferable loop alignment for experiments "
|
||||
"(the last x86-experimental-pref-loop-alignment bits"
|
||||
" of the loop header PC will be 0)."),
|
||||
cl::Hidden);
|
||||
|
||||
X86TargetLowering::X86TargetLowering(const X86TargetMachine &TM,
|
||||
const X86Subtarget &STI)
|
||||
: TargetLowering(TM), Subtarget(STI) {
|
||||
|
@ -1724,7 +1731,8 @@ X86TargetLowering::X86TargetLowering(const X86TargetMachine &TM,
|
|||
MaxStoresPerMemcpyOptSize = 4;
|
||||
MaxStoresPerMemmove = 8; // For @llvm.memmove -> sequence of stores
|
||||
MaxStoresPerMemmoveOptSize = 4;
|
||||
setPrefLoopAlignment(4); // 2^4 bytes.
|
||||
// Set loop alignment to 2^ExperimentalPrefLoopAlignment bytes (default: 2^4).
|
||||
setPrefLoopAlignment(ExperimentalPrefLoopAlignment);
|
||||
|
||||
// An out-of-order CPU can speculatively execute past a predictable branch,
|
||||
// but a conditional move could be stalled by an expensive earlier operation.
|
||||
|
|
Loading…
Reference in New Issue