[llvm-branch-commits] [llvm] [DA] Remove absolute value calculations in the Weak Zero SIV tests (PR #185580)
Ryotaro Kasuga via llvm-branch-commits
llvm-branch-commits at lists.llvm.org
Mon Mar 9 23:04:31 PDT 2026
https://github.com/kasuga-fj updated https://github.com/llvm/llvm-project/pull/185580
>From a2a37088be3cf2ef9e91b46d5daff1b7a282f078 Mon Sep 17 00:00:00 2001
From: Ryotaro Kasuga <kasuga.ryotaro at fujitsu.com>
Date: Mon, 9 Mar 2026 10:12:39 +0000
Subject: [PATCH] [DA] Remove absolute value calculations in the Weak Zero SIV
tests
---
llvm/lib/Analysis/DependenceAnalysis.cpp | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
diff --git a/llvm/lib/Analysis/DependenceAnalysis.cpp b/llvm/lib/Analysis/DependenceAnalysis.cpp
index 9326534e954bd..797945b68f797 100644
--- a/llvm/lib/Analysis/DependenceAnalysis.cpp
+++ b/llvm/lib/Analysis/DependenceAnalysis.cpp
@@ -1817,19 +1817,19 @@ bool DependenceInfo::weakZeroSIVtestImpl(const SCEVAddRecExpr *AR,
if (!ConstCoeff)
return false;
- // Since ConstCoeff is constant, !isKnownNegative means it's non-negative.
- // TODO: Bail out if it's a signed minimum value.
- const SCEV *AbsCoeff = SE->isKnownNegative(ConstCoeff)
- ? SE->getNegativeSCEV(ConstCoeff)
- : ConstCoeff;
const SCEV *NewDelta =
SE->isKnownNegative(ConstCoeff) ? SE->getNegativeSCEV(Delta) : Delta;
if (const SCEV *UpperBound =
collectUpperBound(AR->getLoop(), Delta->getType())) {
LLVM_DEBUG(dbgs() << "\t UpperBound = " << *UpperBound << "\n");
- const SCEV *Product = SE->getMulExpr(AbsCoeff, UpperBound);
- if (SE->isKnownPredicate(CmpInst::ICMP_EQ, NewDelta, Product)) {
+ bool OverlapAtLast = [&] {
+ if (!SE->isKnownNonZero(ConstCoeff))
+ return false;
+ const SCEV *Last = AR->evaluateAtIteration(UpperBound, *SE);
+ return Last == Const;
+ }();
+ if (OverlapAtLast) {
// dependences caused by last iteration
if (Level < CommonLevels) {
Result.DV[Level].Direction &= Dependence::DVEntry::GE;
More information about the llvm-branch-commits
mailing list