[llvm] [VectorUtils] Improve mask*All(Ones|Zero)OrUndef (NFC) (PR #168388)

via llvm-commits llvm-commits at lists.llvm.org
Mon Nov 17 07:39:45 PST 2025


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-llvm-analysis

Author: Ramkumar Ramachandra (artagnon)

<details>
<summary>Changes</summary>

Use PatternMatch to improve code.

---
Full diff: https://github.com/llvm/llvm-project/pull/168388.diff


1 Files Affected:

- (modified) llvm/lib/Analysis/VectorUtils.cpp (+6-6) 


``````````diff
diff --git a/llvm/lib/Analysis/VectorUtils.cpp b/llvm/lib/Analysis/VectorUtils.cpp
index 530fa9518f40e..b011dcafa1aec 100644
--- a/llvm/lib/Analysis/VectorUtils.cpp
+++ b/llvm/lib/Analysis/VectorUtils.cpp
@@ -1263,7 +1263,7 @@ bool llvm::maskIsAllZeroOrUndef(Value *Mask) {
   auto *ConstMask = dyn_cast<Constant>(Mask);
   if (!ConstMask)
     return false;
-  if (ConstMask->isNullValue() || isa<UndefValue>(ConstMask))
+  if (match(ConstMask, m_CombineOr(m_Zero(), m_Undef())))
     return true;
   if (isa<ScalableVectorType>(ConstMask->getType()))
     return false;
@@ -1272,7 +1272,7 @@ bool llvm::maskIsAllZeroOrUndef(Value *Mask) {
            E = cast<FixedVectorType>(ConstMask->getType())->getNumElements();
        I != E; ++I) {
     if (auto *MaskElt = ConstMask->getAggregateElement(I))
-      if (MaskElt->isNullValue() || isa<UndefValue>(MaskElt))
+      if (match(MaskElt, m_CombineOr(m_Zero(), m_Undef())))
         continue;
     return false;
   }
@@ -1289,7 +1289,7 @@ bool llvm::maskIsAllOneOrUndef(Value *Mask) {
   auto *ConstMask = dyn_cast<Constant>(Mask);
   if (!ConstMask)
     return false;
-  if (ConstMask->isAllOnesValue() || isa<UndefValue>(ConstMask))
+  if (match(ConstMask, m_CombineOr(m_AllOnes(), m_Undef())))
     return true;
   if (isa<ScalableVectorType>(ConstMask->getType()))
     return false;
@@ -1298,7 +1298,7 @@ bool llvm::maskIsAllOneOrUndef(Value *Mask) {
            E = cast<FixedVectorType>(ConstMask->getType())->getNumElements();
        I != E; ++I) {
     if (auto *MaskElt = ConstMask->getAggregateElement(I))
-      if (MaskElt->isAllOnesValue() || isa<UndefValue>(MaskElt))
+      if (match(MaskElt, m_CombineOr(m_AllOnes(), m_Undef())))
         continue;
     return false;
   }
@@ -1315,7 +1315,7 @@ bool llvm::maskContainsAllOneOrUndef(Value *Mask) {
   auto *ConstMask = dyn_cast<Constant>(Mask);
   if (!ConstMask)
     return false;
-  if (ConstMask->isAllOnesValue() || isa<UndefValue>(ConstMask))
+  if (match(ConstMask, m_CombineOr(m_AllOnes(), m_Undef())))
     return true;
   if (isa<ScalableVectorType>(ConstMask->getType()))
     return false;
@@ -1324,7 +1324,7 @@ bool llvm::maskContainsAllOneOrUndef(Value *Mask) {
            E = cast<FixedVectorType>(ConstMask->getType())->getNumElements();
        I != E; ++I) {
     if (auto *MaskElt = ConstMask->getAggregateElement(I))
-      if (MaskElt->isAllOnesValue() || isa<UndefValue>(MaskElt))
+      if (match(MaskElt, m_CombineOr(m_AllOnes(), m_Undef())))
         return true;
   }
   return false;

``````````

</details>


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


More information about the llvm-commits mailing list