llvm-project/llvm/lib/Transforms/Scalar
David Sherwood 69cccb3189 [SVE] Fix isLoadInvariantInLoop for scalable vectors
I've amended the isLoadInvariantInLoop function to bail out for
scalable vectors for now since the invariant.start intrinsic is only
ever generated by the clang frontend for thread locals or struct
and class constructors, neither of which support sizeless types.
In addition, the intrinsic itself does not currently support the
concept of a scaled size, which makes it impossible to compare
the sizes of different scalable objects, e.g. <vscale x 32 x i8>
and <vscale x 16 x i8>.

Added new tests here:

  Transforms/LICM/AArch64/sve-load-hoist.ll
  Transforms/LICM/hoisting.ll

Differential Revision: https://reviews.llvm.org/D87227
2020-09-15 08:30:19 +01:00
..
ADCE.cpp [ADCE] Fix incorrect reporting of CFG changes 2020-04-14 20:26:13 +07:00
AlignmentFromAssumptions.cpp Reland [AssumeBundles] Use operand bundles to encode alignment assumptions 2020-09-12 15:36:06 +02:00
BDCE.cpp [BDCE] SExt -> ZExt when no sign bits is used and instruction has multiple uses 2020-07-10 08:34:53 +01:00
CMakeLists.txt [ConstProp] Remove ConstantPropagation 2020-08-26 15:51:30 -07:00
CallSiteSplitting.cpp [CallSite removal][CallSiteSplitting] Use CallBase instead of CallSite. NFC 2020-04-15 15:38:02 -07:00
ConstantHoisting.cpp Revert rG5dd566b7c7b78bd- "PassManager.h - remove unnecessary Function.h/Module.h includes. NFCI." 2020-07-24 13:02:33 +01:00
CorrelatedValuePropagation.cpp [NewPM][LVI] Abandon LVI after CVP 2020-08-01 23:47:46 +02:00
DCE.cpp [AssumeBundles] preserve knowledge in DCE 2020-04-14 12:48:15 +02:00
DeadStoreElimination.cpp [DSE] Only eliminate candidates that always store the same loc. 2020-09-14 12:06:58 +01:00
DivRemPairs.cpp Correctly report modified status for DivRemPairs 2020-06-05 16:06:31 +02:00
EarlyCSE.cpp [EarlyCSE] Remove unnecessary operand swap. 2020-09-11 02:14:04 -04:00
FlattenCFGPass.cpp
Float2Int.cpp [Float2Int] Stop passing around a reference to the class member Roots. NFC 2020-04-16 15:24:13 +02:00
GVN.cpp [GVN] Account for masked loads/stores depending on load/store instructions 2020-09-10 10:57:33 -05:00
GVNHoist.cpp NFC: [GVNHoist] Outline functions from the class 2020-08-17 17:40:04 -07:00
GVNSink.cpp Use llvm::is_contained where appropriate (NFC) 2020-07-27 10:20:44 -07:00
GuardWidening.cpp
IVUsersPrinter.cpp
IndVarSimplify.cpp [ValueTracking] Add UndefOrPoison/Poison-only version of relevant functions 2020-09-09 20:00:26 +09:00
InductiveRangeCheckElimination.cpp LoopAnalysisManager.h - reduce includes to forward declarations. NFC. 2020-06-06 14:06:46 +01:00
InferAddressSpaces.cpp [InferAddressSpaces] Handle the pair of `ptrtoint`/`inttoptr`. 2020-06-25 20:46:56 -04:00
InstSimplifyPass.cpp [Bindings] Move LLVMAddInstructionSimplifyPass to Scalar.cpp 2020-09-02 10:35:39 -07:00
JumpThreading.cpp [JumpThreading] Fix an incorrect Modified status 2020-09-14 10:36:13 +02:00
LICM.cpp [SVE] Fix isLoadInvariantInLoop for scalable vectors 2020-09-15 08:30:19 +01:00
LLVMBuild.txt
LoopAccessAnalysisPrinter.cpp
LoopDataPrefetch.cpp [SCEV] Move ScalarEvolutionExpander.cpp to Transforms/Utils (NFC). 2020-05-20 10:53:40 +01:00
LoopDeletion.cpp [LoopDeletion] Emit a remark when a dead loop is deleted 2020-07-03 15:20:23 -07:00
LoopDistribute.cpp Fix return status of LoopDistribute 2020-06-18 20:13:18 +02:00
LoopFuse.cpp [Loop Peeling] Separate the Loop Peeling Utilities from the Loop Unrolling Utilities 2020-07-31 18:31:58 +00:00
LoopIdiomRecognize.cpp [SVE] In LoopIdiomRecognize::isLegalStore bail out for scalable vectors 2020-09-14 11:28:31 +01:00
LoopInstSimplify.cpp
LoopInterchange.cpp [LoopInterchange] Move instructions from preheader to outer loop header. 2020-08-10 12:41:33 +01:00
LoopLoadElimination.cpp [LoopLoadElim] Filter away candidates that stop being AddRecs after loop versioning. PR47457 2020-09-10 13:30:31 +07:00
LoopPassManager.cpp [NewPM][PassInstrumentation] Add PreservedAnalyses parameter to AfterPass* callbacks 2020-08-21 16:10:42 +07:00
LoopPredication.cpp [Transforms] Fix typos. NFC 2020-05-25 22:34:08 +02:00
LoopRerollPass.cpp [Analysis/Transforms/Sanitizers] As part of using inclusive language 2020-06-20 00:42:26 -07:00
LoopRotation.cpp
LoopSimplifyCFG.cpp [LoopSimplifyCFG] Delete landing pads in dead exit blocks 2020-07-29 18:36:51 +07:00
LoopSink.cpp
LoopStrengthReduce.cpp [LSR] Canonicalize a formula before insert it into the list 2020-09-08 13:14:53 +08:00
LoopUnrollAndJamPass.cpp [Loop Peeling] Separate the Loop Peeling Utilities from the Loop Unrolling Utilities 2020-07-31 18:31:58 +00:00
LoopUnrollPass.cpp [LoopUnroll] Adjust CostKind query 2020-08-12 12:56:09 +01:00
LoopUnswitch.cpp Reland "[LoopUnswitch] Fix incorrect Modified status" 2020-08-20 11:52:09 +02:00
LoopVersioningLICM.cpp [CallSite removal] Remove unneeded includes of CallSite.h. NFC 2020-04-23 21:01:48 -07:00
LowerAtomic.cpp
LowerConstantIntrinsics.cpp Preserve GlobalsAA analysis result in LowerConstantIntrinsics 2020-07-02 15:40:41 +01:00
LowerExpectIntrinsic.cpp Implements [[likely]] and [[unlikely]] in IfStmt. 2020-09-09 20:48:37 +02:00
LowerGuardIntrinsic.cpp
LowerMatrixIntrinsics.cpp [NFC] Remove unused GetUnderlyingObject paramenter 2020-07-31 02:10:03 -07:00
LowerWidenableCondition.cpp
MakeGuardsExplicit.cpp
MemCpyOptimizer.cpp [MemCpyOpt] Account for case that MemInsertPoint == BI. 2020-09-04 14:04:08 +01:00
MergeICmps.cpp
MergedLoadStoreMotion.cpp
NaryReassociate.cpp [Analysis/Transforms/Sanitizers] As part of using inclusive language 2020-06-20 00:42:26 -07:00
NewGVN.cpp [IR][GVN] allow intrinsics in Instruction's isCommutative query (2nd try) 2020-08-31 16:01:19 -04:00
PartiallyInlineLibCalls.cpp
PlaceSafepoints.cpp [Statepoint] Replace uses of isX functions with idiomatic isa<X> 2020-05-27 18:32:28 -07:00
Reassociate.cpp [DebugInfo] Reduce SalvageDebugInfo() functions 2020-06-08 19:28:18 +01:00
Reg2Mem.cpp
RewriteStatepointsForGC.cpp [Analysis] TTI: Add CastContextHint for getCastInstrCost 2020-07-29 13:32:53 +01:00
SCCP.cpp [SCCP] Compute ranges for supported intrinsics 2020-09-07 22:16:06 +02:00
SROA.cpp [SROA] Improve handleling of assumes bundles by SROA 2020-08-28 21:55:45 +02:00
Scalar.cpp [Bindings] Move LLVMAddInstructionSimplifyPass to Scalar.cpp 2020-09-02 10:35:39 -07:00
Scalarizer.cpp [Scalarizer] Avoid updating the name of globals 2020-08-24 21:55:03 +02:00
SeparateConstOffsetFromGEP.cpp Remove getNumUses() comparisons (NFC) 2020-05-02 11:05:19 +02:00
SimpleLoopUnswitch.cpp [NFCI][SimpleLoopUnswitch] Adjust CostKind query 2020-08-14 07:54:20 +01:00
SimplifyCFGPass.cpp Reland [SimplifyCFG][LoopRotate] SimplifyCFG: disable common instruction hoisting by default, enable late in pipeline 2020-09-08 00:24:03 +03:00
Sink.cpp [Sink] Optimize/simplify sink candidate finding with nearest common dominator 2020-08-30 22:51:00 -07:00
SpeculateAroundPHIs.cpp [NFC][CostModel] Add TargetCostKind to relevant APIs 2020-05-05 10:35:54 +01:00
SpeculativeExecution.cpp SpeculativeExecution: Fix for logic change introduced in D81730. 2020-07-09 15:45:23 +03:00
StraightLineStrengthReduce.cpp
StructurizeCFG.cpp Revert rG5dd566b7c7b78bd- "PassManager.h - remove unnecessary Function.h/Module.h includes. NFCI." 2020-07-24 13:02:33 +01:00
TailRecursionElimination.cpp Revert "[TRE] allow TRE for non-capturing calls." 2020-07-13 00:39:48 +03:00
WarnMissedTransforms.cpp [TTI] Clean up includes (NFC). 2020-04-19 20:11:59 +01:00