================
@@ -892,3 +893,39 @@ VPValue *VPSCEVExpander::tryToExpand(const SCEV *S) {
return nullptr;
}
}
+
+VPValue *VPSCEVExpander::tryToExpandPredicate(const SCEVPredicate *Pred) {
+ if (auto *CmpPred = dyn_cast<SCEVComparePredicate>(Pred)) {
+ VPValue *LHS = tryToExpand(CmpPred->getLHS());
+ if (!LHS)
+ return nullptr;
+ VPValue *RHS = tryToExpand(CmpPred->getRHS());
+ if (!RHS)
+ return nullptr;
+ // Match SCEVExpander::expandComparePredicate behavior:
+ auto InvPred = CmpInst::getInversePredicate(CmpPred->getPredicate());
+ return Builder.createICmp(InvPred, LHS, RHS, DL);
+ }
+
+ if (auto *UnionPred = dyn_cast<SCEVUnionPredicate>(Pred)) {
+ SmallVector<VPValue *, 4> Checks;
+ for (const auto *Pred : UnionPred->getPredicates()) {
+ VPValue *Check = tryToExpandPredicate(Pred);
+ if (!Check)
+ return nullptr;
+ Checks.push_back(Check);
+ }
+
+ if (Checks.empty())
+ return Builder.getPlan().getOrAddLiveIn(
+ ConstantInt::getFalse(Builder.getPlan().getContext()));
+
+ VPValue *Result = Checks[0];
+ for (VPValue *Check : ArrayRef<VPValue *>(Checks).drop_front())
----------------
artagnon wrote:
```suggestion
for (VPValue *Check : drop_begin(Checks))
```
https://github.com/llvm/llvm-project/pull/182595
_______________________________________________
llvm-branch-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-branch-commits