[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