Remove TargetBaseAlign. Keep alignment for stack adjustments.
Summary: TargetBaseAlign is no longer required since LSV checks if target allows misaligned accesses. A constant defining a base alignment is still needed for stack accesses where alignment can be adjusted. Reviewers: llvm-commits, jlebar Subscribers: mzolotukhin, arsenm Differential Revision: https://reviews.llvm.org/D22936 llvm-svn: 277038
This commit is contained in:
@@ -40,9 +40,8 @@ STATISTIC(NumScalarsVectorized, "Number of scalar accesses vectorized");
|
||||
|
||||
namespace {
|
||||
|
||||
// TODO: Remove this
|
||||
static const unsigned TargetBaseAlign = 4;
|
||||
|
||||
// FIXME: Assuming stack alignment of 4 is always good enough
|
||||
static const unsigned StackAdjustedAlignment = 4;
|
||||
typedef SmallVector<Instruction *, 8> InstrList;
|
||||
typedef MapVector<Value *, InstrList> InstrListMap;
|
||||
|
||||
@@ -798,8 +797,8 @@ bool Vectorizer::vectorizeStoreChain(
|
||||
// so we can cheat and change it!
|
||||
Value *V = GetUnderlyingObject(S0->getPointerOperand(), DL);
|
||||
if (AllocaInst *AI = dyn_cast_or_null<AllocaInst>(V)) {
|
||||
AI->setAlignment(TargetBaseAlign);
|
||||
Alignment = TargetBaseAlign;
|
||||
AI->setAlignment(StackAdjustedAlignment);
|
||||
Alignment = StackAdjustedAlignment;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
@@ -948,8 +947,8 @@ bool Vectorizer::vectorizeLoadChain(
|
||||
// so we can cheat and change it!
|
||||
Value *V = GetUnderlyingObject(L0->getPointerOperand(), DL);
|
||||
if (AllocaInst *AI = dyn_cast_or_null<AllocaInst>(V)) {
|
||||
AI->setAlignment(TargetBaseAlign);
|
||||
Alignment = TargetBaseAlign;
|
||||
AI->setAlignment(StackAdjustedAlignment);
|
||||
Alignment = StackAdjustedAlignment;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
@@ -1029,10 +1028,10 @@ bool Vectorizer::vectorizeLoadChain(
|
||||
|
||||
bool Vectorizer::accessIsMisaligned(unsigned SzInBytes, unsigned AddressSpace,
|
||||
unsigned Alignment) {
|
||||
if (Alignment % SzInBytes == 0)
|
||||
return false;
|
||||
bool Fast = false;
|
||||
bool Allows = TTI.allowsMisalignedMemoryAccesses(SzInBytes * 8, AddressSpace,
|
||||
Alignment, &Fast);
|
||||
// TODO: Remove TargetBaseAlign
|
||||
return !(Allows && Fast) && (Alignment % SzInBytes) != 0 &&
|
||||
(Alignment % TargetBaseAlign) != 0;
|
||||
return !Allows || !Fast;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user