PrefFunctionAlignment = llvm::Align(1ULL << LogAlign);
}
- /// Set the target's preferred loop alignment. Default alignment is zero, it
- /// means the target does not care about loop alignment. The alignment is
- /// specified in log2(bytes). The target may also override
- /// getPrefLoopAlignment to provide per-loop values.
- void setPrefLoopLogAlignment(unsigned LogAlign) {
- PrefLoopAlignment = llvm::Align(1ULL << LogAlign);
- }
+ /// Set the target's preferred loop alignment. Default alignment is one, it
+ /// means the target does not care about loop alignment. The target may also
+ /// override getPrefLoopAlignment to provide per-loop values.
+ void setPrefLoopAlignment(llvm::Align Align) { PrefLoopAlignment = Align; }
/// Set the minimum stack alignment of an argument.
void setMinStackArgumentAlignment(unsigned Align) {
setMinFunctionAlignment(llvm::Align(4));
// Set preferred alignments.
setPrefFunctionLogAlignment(STI.getPrefFunctionLogAlignment());
- setPrefLoopLogAlignment(STI.getPrefLoopLogAlignment());
+ setPrefLoopAlignment(llvm::Align(1ULL << STI.getPrefLoopLogAlignment()));
// Only change the limit for entries in a jump table if specified by
// the sub target, but not at the command line.
// Prefer likely predicted branches to selects on out-of-order cores.
PredictableSelectIsExpensive = Subtarget->getSchedModel().isOutOfOrder();
- setPrefLoopLogAlignment(Subtarget->getPrefLoopLogAlignment());
+ setPrefLoopAlignment(
+ llvm::Align(1UL << Subtarget->getPrefLoopLogAlignment()));
setMinFunctionAlignment(Subtarget->isThumb() ? llvm::Align(2)
: llvm::Align(4));
Subtarget(ST) {
auto &HRI = *Subtarget.getRegisterInfo();
- setPrefLoopLogAlignment(4);
+ setPrefLoopAlignment(llvm::Align(16));
setPrefFunctionLogAlignment(4);
setMinFunctionAlignment(llvm::Align(4));
setStackPointerRegisterToSaveRestore(HRI.getStackRegister());
case PPC::DIR_PWR8:
case PPC::DIR_PWR9:
setPrefFunctionLogAlignment(4);
- setPrefLoopLogAlignment(4);
+ setPrefLoopAlignment(llvm::Align(16));
break;
}
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::desc(
+ "Sets the preferable loop alignment for experiments (as log2 bytes)"
+ "(the last x86-experimental-pref-loop-alignment bits"
+ " of the loop header PC will be 0)."),
cl::Hidden);
// Added in 10.0.
MaxLoadsPerMemcmpOptSize = 2;
// Set loop alignment to 2^ExperimentalPrefLoopAlignment bytes (default: 2^4).
- setPrefLoopLogAlignment(ExperimentalPrefLoopAlignment);
+ setPrefLoopAlignment(llvm::Align(1UL << 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.