[llvm] [VPlan] Run narrowInterleaveGroups during general VPlan optimizations. (PR #149706)

Alexey Bataev via llvm-commits llvm-commits at lists.llvm.org
Wed Oct 22 11:14:38 PDT 2025


alexey-bataev wrote:

Another reproducer:
```
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-i128:128-f80:128-n8:16:32:64-S128"
target triple = "x86_64-unknown-linux-gnu"

define void @test(ptr %0, ptr %1, i64 %2) {
.lr.ph15:
  br label %.lr.ph

.lr.ph:                                           ; preds = %10, %.lr.ph15
  br label %.lr.ph.split.us

.lr.ph.split.us:                                  ; preds = %10, %.lr.ph
  %indvars.iv21 = phi i64 [ %indvars.iv.next22, %10 ], [ 0, %.lr.ph ]
  %sext = shl i64 %indvars.iv21, 32
  %3 = ashr i64 %sext, 28
  %4 = getelementptr i8, ptr %1, i64 %3
  store double 0x7FF8000000000000, ptr %4, align 8
  %5 = getelementptr i8, ptr %4, i64 8
  store double 0x7FF8000000000000, ptr %5, align 8
  %6 = getelementptr i32, ptr %0, i64 %indvars.iv21
  %7 = load i32, ptr %6, align 4
  %8 = icmp eq i32 %7, 0
  br i1 %8, label %9, label %10

9:                                                ; preds = %.lr.ph.split.us
  store double 0.000000e+00, ptr null, align 8
  br label %10

10:                                               ; preds = %9, %.lr.ph.split.us
  %indvars.iv.next22 = add i64 %indvars.iv21, 1
  %exitcond24.not = icmp eq i64 %indvars.iv21, %2
  br i1 %exitcond24.not, label %.lr.ph, label %.lr.ph.split.us
}
```
@fhahn 

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


More information about the llvm-commits mailing list