[llvm] [LV] Rework collectUnitStridePredicates (PR #216362)

Ramkumar Ramachandra via llvm-commits llvm-commits at lists.llvm.org
Mon Sep 21 01:04:21 PDT 2026


================
@@ -68,20 +68,57 @@ define i64 @predicated_iv_with_liveout(ptr %dst, i64 %n) {
 ; THRESHOLD0-LABEL: define i64 @predicated_iv_with_liveout(
 ; THRESHOLD0-SAME: ptr [[DST:%.*]], i64 [[N:%.*]]) {
 ; THRESHOLD0-NEXT:  [[ENTRY:.*]]:
+; THRESHOLD0-NEXT:    [[TMP0:%.*]] = call i64 @llvm.smax.i64(i64 [[N]], i64 1)
+; THRESHOLD0-NEXT:    [[MIN_ITERS_CHECK:%.*]] = icmp ult i64 [[TMP0]], 4
+; THRESHOLD0-NEXT:    br i1 [[MIN_ITERS_CHECK]], label %[[SCALAR_PH:.*]], label %[[VECTOR_SCEVCHECK:.*]]
+; THRESHOLD0:       [[VECTOR_SCEVCHECK]]:
+; THRESHOLD0-NEXT:    [[SMAX:%.*]] = call i64 @llvm.smax.i64(i64 [[N]], i64 1)
----------------
artagnon wrote:

Ah, found it. It looks the complexity of the predicate is actually zero?

```cpp
  unsigned TotalComplexity = PSE.getPredicate().getComplexity();
```

hence, this check fails:

```cpp
  if (TotalComplexity > SCEVCheckThreshold) {
```

(confirmed via interactive debugging)

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


More information about the llvm-commits mailing list