[llvm] [SCEV] Use power of two facts involving vscale when inferring wrap flags (PR #101380)

via llvm-commits llvm-commits at lists.llvm.org
Wed Jul 31 11:11:30 PDT 2024


github-actions[bot] wrote:

<!--LLVM CODE FORMAT COMMENT: {clang-format}-->


:warning: C/C++ code formatter, clang-format found issues in your code. :warning:

<details>
<summary>
You can test this locally with the following command:
</summary>

``````````bash
git-clang-format --diff 35a2e6d24bcb94720ec7b3aa00e58a1b7b837fbc bf7b6c6cb5c7eae5d051ca7006c0ab63a0bc289f --extensions h,cpp -- llvm/include/llvm/Analysis/ScalarEvolution.h llvm/lib/Analysis/ScalarEvolution.cpp
``````````

</details>

<details>
<summary>
View the diff from clang-format here.
</summary>

``````````diff
diff --git a/llvm/lib/Analysis/ScalarEvolution.cpp b/llvm/lib/Analysis/ScalarEvolution.cpp
index 159aa6e93a..1948de2594 100644
--- a/llvm/lib/Analysis/ScalarEvolution.cpp
+++ b/llvm/lib/Analysis/ScalarEvolution.cpp
@@ -9161,7 +9161,7 @@ ScalarEvolution::ExitLimit ScalarEvolution::computeExitLimitFromICmp(
         isKnownToBeAPowerOfTwo(AR->getStepRecurrence(*this))) {
       auto Flags = AR->getNoWrapFlags();
       Flags = setFlags(Flags, SCEV::FlagNW);
-      SmallVector<const SCEV*> Operands{AR->operands()};
+      SmallVector<const SCEV *> Operands{AR->operands()};
       Flags = StrengthenNoWrapFlags(this, scAddRecExpr, Operands, Flags);
       setNoWrapFlags(const_cast<SCEVAddRecExpr *>(AR), Flags);
     }
@@ -10848,7 +10848,9 @@ bool ScalarEvolution::isKnownToBeAPowerOfTwo(const SCEV *S, bool OrZero) {
     if (auto *C = dyn_cast<SCEVConstant>(S))
       return C->getAPInt().isPowerOf2();
     // The vscale_range indicates vscale is a power-of-two.
-    return S->getSCEVType() == scVScale && F.hasFnAttribute(Attribute::VScaleRange);;
+    return S->getSCEVType() == scVScale &&
+           F.hasFnAttribute(Attribute::VScaleRange);
+    ;
   };
 
   if (nonRecursive(S))
@@ -10858,10 +10860,9 @@ bool ScalarEvolution::isKnownToBeAPowerOfTwo(const SCEV *S, bool OrZero) {
   if (!Mul || Mul->getNumOperands() != 2)
     return false;
   return nonRecursive(Mul->getOperand(0)) && nonRecursive(Mul->getOperand(1)) &&
-    (OrZero || isKnownNonZero(S));
+         (OrZero || isKnownNonZero(S));
 }
 
-
 std::pair<const SCEV *, const SCEV *>
 ScalarEvolution::SplitIntoInitAndPostInc(const Loop *L, const SCEV *S) {
   // Compute SCEV on entry of loop L.

``````````

</details>


https://github.com/llvm/llvm-project/pull/101380


More information about the llvm-commits mailing list