From 64acfb57bd614bd933d894379e3b7bf89bb45982 Mon Sep 17 00:00:00 2001 From: Alina Sbirlea Date: Thu, 28 Jul 2016 21:35:20 +0000 Subject: Revert r277038 until clearing why tests fail. llvm-svn: 277039 --- llvm/lib/Transforms/Vectorize/LoadStoreVectorizer.cpp | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) (limited to 'llvm/lib/Transforms/Vectorize/LoadStoreVectorizer.cpp') diff --git a/llvm/lib/Transforms/Vectorize/LoadStoreVectorizer.cpp b/llvm/lib/Transforms/Vectorize/LoadStoreVectorizer.cpp index 3c7657bc433..0d6ae4c72fd 100644 --- a/llvm/lib/Transforms/Vectorize/LoadStoreVectorizer.cpp +++ b/llvm/lib/Transforms/Vectorize/LoadStoreVectorizer.cpp @@ -40,8 +40,9 @@ STATISTIC(NumScalarsVectorized, "Number of scalar accesses vectorized"); namespace { -// FIXME: Assuming stack alignment of 4 is always good enough -static const unsigned StackAdjustedAlignment = 4; +// TODO: Remove this +static const unsigned TargetBaseAlign = 4; + typedef SmallVector InstrList; typedef MapVector InstrListMap; @@ -797,8 +798,8 @@ bool Vectorizer::vectorizeStoreChain( // so we can cheat and change it! Value *V = GetUnderlyingObject(S0->getPointerOperand(), DL); if (AllocaInst *AI = dyn_cast_or_null(V)) { - AI->setAlignment(StackAdjustedAlignment); - Alignment = StackAdjustedAlignment; + AI->setAlignment(TargetBaseAlign); + Alignment = TargetBaseAlign; } else { return false; } @@ -947,8 +948,8 @@ bool Vectorizer::vectorizeLoadChain( // so we can cheat and change it! Value *V = GetUnderlyingObject(L0->getPointerOperand(), DL); if (AllocaInst *AI = dyn_cast_or_null(V)) { - AI->setAlignment(StackAdjustedAlignment); - Alignment = StackAdjustedAlignment; + AI->setAlignment(TargetBaseAlign); + Alignment = TargetBaseAlign; } else { return false; } @@ -1028,10 +1029,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); - return !Allows || !Fast; + // TODO: Remove TargetBaseAlign + return !(Allows && Fast) && (Alignment % SzInBytes) != 0 && + (Alignment % TargetBaseAlign) != 0; } -- cgit v1.2.3