[llvm] ddd9575 - [VectorCombine] rearrange bailouts for load insert for efficiency; NFC
Sanjay Patel via llvm-commits
llvm-commits at lists.llvm.org
Thu Sep 17 10:50:54 PDT 2020
Author: Sanjay Patel
Date: 2020-09-17T13:50:37-04:00
New Revision: ddd9575d15ad8f0fa746b5ece63530c4619e3e9c
URL: https://github.com/llvm/llvm-project/commit/ddd9575d15ad8f0fa746b5ece63530c4619e3e9c
DIFF: https://github.com/llvm/llvm-project/commit/ddd9575d15ad8f0fa746b5ece63530c4619e3e9c.diff
LOG: [VectorCombine] rearrange bailouts for load insert for efficiency; NFC
Added:
Modified:
llvm/lib/Transforms/Vectorize/VectorCombine.cpp
Removed:
################################################################################
diff --git a/llvm/lib/Transforms/Vectorize/VectorCombine.cpp b/llvm/lib/Transforms/Vectorize/VectorCombine.cpp
index 829f640941ac..abc706c3eaa4 100644
--- a/llvm/lib/Transforms/Vectorize/VectorCombine.cpp
+++ b/llvm/lib/Transforms/Vectorize/VectorCombine.cpp
@@ -92,29 +92,28 @@ static void replaceValue(Value &Old, Value &New) {
}
bool VectorCombine::vectorizeLoadInsert(Instruction &I) {
- // Match insert of scalar load.
+ // Match insert into fixed vector of scalar load.
+ auto *Ty = dyn_cast<FixedVectorType>(I.getType());
Value *Scalar;
- if (!match(&I, m_InsertElt(m_Undef(), m_Value(Scalar), m_ZeroInt())))
+ if (!Ty || !match(&I, m_InsertElt(m_Undef(), m_Value(Scalar), m_ZeroInt())))
return false;
- auto *Load = dyn_cast<LoadInst>(Scalar);
- Type *ScalarTy = Scalar->getType();
+
// Do not vectorize scalar load (widening) if atomic/volatile or under
// asan/hwasan/memtag/tsan. The widened load may load data from dirty regions
// or create data races non-existent in the source.
+ auto *Load = dyn_cast<LoadInst>(Scalar);
if (!Load || !Load->isSimple() ||
Load->getFunction()->hasFnAttribute(Attribute::SanitizeMemTag) ||
mustSuppressSpeculation(*Load))
return false;
- auto *Ty = dyn_cast<FixedVectorType>(I.getType());
- if (!Ty)
- return false;
// TODO: Extend this to match GEP with constant offsets.
Value *PtrOp = Load->getPointerOperand()->stripPointerCasts();
assert(isa<PointerType>(PtrOp->getType()) && "Expected a pointer type");
- unsigned MinVectorSize = TTI.getMinVectorRegisterBitWidth();
+ Type *ScalarTy = Scalar->getType();
uint64_t ScalarSize = ScalarTy->getPrimitiveSizeInBits();
+ unsigned MinVectorSize = TTI.getMinVectorRegisterBitWidth();
if (!ScalarSize || !MinVectorSize || MinVectorSize % ScalarSize != 0)
return false;
More information about the llvm-commits
mailing list