[llvm] [LV] Initial support for stores in early exit loops (PR #137774)
Graham Hunter via llvm-commits
llvm-commits at lists.llvm.org
Wed May 14 08:27:29 PDT 2025
================
@@ -1732,13 +1794,53 @@ bool LoopVectorizationLegality::isVectorizableEarlyExitLoop() {
// TODO: Handle loops that may fault.
Predicates.clear();
- if (!isDereferenceableReadOnlyLoop(TheLoop, PSE.getSE(), DT, AC,
- &Predicates)) {
+
+ if (HasStore && EELoad.has_value()) {
+ LoadInst *LI = *EELoad;
+ if (isDereferenceableAndAlignedInLoop(LI, TheLoop, *PSE.getSE(), *DT, AC,
+ &Predicates)) {
+ ICFLoopSafetyInfo SafetyInfo;
+ SafetyInfo.computeLoopSafetyInfo(TheLoop);
+ // FIXME: We may have multiple levels of conditional loads, so will
+ // need to improve on outright rejection at some point.
+ if (!SafetyInfo.isGuaranteedToExecute(*LI, DT, TheLoop)) {
----------------
huntergr-arm wrote:
More future work, hence the FIXME.
https://github.com/llvm/llvm-project/pull/137774
More information about the llvm-commits
mailing list