llvm-project/llvm/lib/Transforms/Vectorize
Jameson Nash e27a6db529 Bad SLPVectorization shufflevector replacement, resulting in write to wrong memory location
We see that it might otherwise do:

  %10 = getelementptr {}**, <2 x {}***> %9, <2 x i32> <i32 10, i32 4>
  %11 = bitcast <2 x {}***> %10 to <2 x i64*>
...
  %27 = extractelement <2 x i64*> %11, i32 0
  %28 = bitcast i64* %27 to <2 x i64>*
  store <2 x i64> %22, <2 x i64>* %28, align 4, !tbaa !2

Which is an out-of-bounds store (the extractelement got offset 10
instead of offset 4 as intended). With the fix, we correctly generate
extractelement for i32 1 and generate correct code.

Differential Revision: https://reviews.llvm.org/D106613
2021-09-27 14:06:13 -04:00
..
CMakeLists.txt llvmbuildectomy - replace llvm-build by plain cmake 2020-11-13 10:35:24 +01:00
LoadStoreVectorizer.cpp [LoadStoreVectorizer] Make aliasing check more precise 2021-09-01 18:10:09 +02:00
LoopVectorizationLegality.cpp [LAA] Pass access type to getPtrStride() 2021-09-11 19:16:49 +02:00
LoopVectorizationPlanner.h [VPlan] Iterate over phi recipes to detect reductions to fix. 2021-08-07 14:06:50 +01:00
LoopVectorize.cpp [LV] Fix crash for reverse interleaved loads with gap under fold-tail. 2021-09-21 20:13:32 +03:00
SLPVectorizer.cpp Bad SLPVectorization shufflevector replacement, resulting in write to wrong memory location 2021-09-27 14:06:13 -04:00
VPRecipeBuilder.h [VPlan] Track both incoming values for first-order recurrence phis. 2021-06-27 14:29:35 +01:00
VPlan.cpp [LV] Move reduction PHI node fixup to VPlan::execute (NFC). 2021-08-06 08:29:20 +01:00
VPlan.h [VPlan] Introduce code to limit querying VPValues using IR references. 2021-08-30 09:12:09 +02:00
VPlanDominatorTree.h Revert multiple patches based on "Introduce CfgTraits abstraction" 2020-10-27 20:33:30 +01:00
VPlanHCFGBuilder.cpp [VPlan] Manage pairs of incoming (VPValue, VPBB) in VPWidenPHIRecipe. 2021-02-22 09:44:25 +00:00
VPlanHCFGBuilder.h
VPlanLoopInfo.h
VPlanPredicator.cpp [llvm] Drop unnecessary make_range (NFC) 2021-01-09 09:25:00 -08:00
VPlanPredicator.h
VPlanSLP.cpp VPlanSLP.cpp - tidy implicit header dependencies. NFCI. 2021-06-13 12:37:17 +01:00
VPlanTransforms.cpp [Transforms] Use make_early_inc_range (NFC) 2021-09-15 19:55:24 -07:00
VPlanTransforms.h [VPlan] Merge predicated-triangle regions, after sinking. 2021-06-28 11:10:38 +01:00
VPlanValue.h Recommit "[VPlan] Add recipe for first-order rec phis, make splicing explicit." 2021-07-26 15:50:30 +01:00
VPlanVerifier.cpp
VPlanVerifier.h
VectorCombine.cpp [VectorCombine] Switch to using a worklist. 2021-09-22 09:54:58 +01:00
Vectorize.cpp