Issue 184300
Summary [LV] VPlan narrowing of interleave groups created an invalid select
Labels vectorizers, crash-on-valid
Assignees artagnon
Reporter artagnon
    The following IR:

```llvm
define void @widget(ptr %arg, fp128 %arg1) {
bb:
 br label %bb2

bb2:                                              ; preds = %bb2, %bb
  %phi = phi i64 [ 0, %bb ], [ %add, %bb2 ]
  %fcmp = fcmp olt fp128 %arg1, 0xL00000000000000000000000000000000
  %select = select i1 %fcmp, double 0.000000e+00, double 1.000000e+00
  %getelementptr = getelementptr { double, double }, ptr %arg, i64 %phi
  store double %select, ptr %getelementptr, align 8
  %getelementptr3 = getelementptr i8, ptr %getelementptr, i64 8
  store double 0.000000e+00, ptr %getelementptr3, align 8
  %add = add i64 %phi, 1
  %icmp = icmp eq i64 %phi, 1
  br i1 %icmp, label %bb4, label %bb2

bb4: ; preds = %bb2
  ret void
}
```

when run through `opt -p loop-vectorize -enable-interleave-mem-accesses -force-vector-width=2 -S`, produces an invalid select:

```llvm
define void @widget(ptr %arg, fp128 %arg1) {
bb:
  br label %vector.ph

vector.ph:
  %0 = fcmp olt fp128 %arg1, 0xL00000000000000000000000000000000
  %1 = select i1 %0, <2 x double> zeroinitializer, <2 x double> splat (double 1.000000e+00)
  br label %vector.body

vector.body:
  %2 = shufflevector <2 x double> %1, <2 x double> zeroinitializer, <4 x i32> <i32 0, i32 1, i32 2, i32 3>
 %interleaved.vec = shufflevector <4 x double> %2, <4 x double> poison, <4 x i32> <i32 0, i32 2, i32 1, i32 3>
  store <4 x double> %interleaved.vec, ptr %arg, align 8
  br label %middle.block

middle.block:
  br label %bb4

bb4:
  ret void
}
```

See https://godbolt.org/z/bhcYss5Y1

SelectionDAG obviously crashes when the invalid IR is run through llc. Blame:

```
commit bd5f9384d831c01b5f388de0be910c385562ed77
Author: Ramkumar Ramachandra <[email protected]>
Date:   5 days ago

    [VPlan] Extend interleave-group-narrowing to WidenCast (#183204)

    WidenCast is very similar to Widen recipes.

    Fixes #128062.
```

Discovered by Linaro's buildbot on Fujitsu test cases. CC @fhahn, @s-watanabe314, @maxim-kuvyrkov.
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs

Reply via email to