[llvm] [IR][NFC] Introduce Constant::containsMatchingVectorElement and corresponding matcher m_ContainsMatchingVectorElement (PR #200502)
Ramkumar Ramachandra via llvm-commits
llvm-commits at lists.llvm.org
Fri Jun 5 08:08:56 PDT 2026
================
@@ -351,11 +344,20 @@ bool Constant::containsConstantExpression() const {
if (isa<ConstantInt>(this) || isa<ConstantFP>(this))
return false;
- if (auto *VTy = dyn_cast<FixedVectorType>(getType())) {
- for (unsigned i = 0, e = VTy->getNumElements(); i != e; ++i)
- if (isa<ConstantExpr>(getAggregateElement(i)))
- return true;
+ return match(this, m_ContainsMatchingVectorElement(m_Isa<ConstantExpr>()));
+}
+
+bool Constant::containsMatchingVectorElement(
+ function_ref<bool(Constant *)> PredFn) const {
+ if (auto *FVTy = dyn_cast<FixedVectorType>(getType())) {
+ unsigned NumElts = FVTy->getNumElements();
+ for (unsigned I = 0; I != NumElts; ++I) {
+ if (Constant *Elem = getAggregateElement(I))
+ if (PredFn(Elem))
----------------
artagnon wrote:
```suggestion
if (PredFn(getAggregateElement(I))
```
after generalizing to Value?
https://github.com/llvm/llvm-project/pull/200502
More information about the llvm-commits
mailing list