| Issue |
168576
|
| Summary |
[SLP] Internal compiler error in SLP module when placing vectorized instructions.
|
| Labels |
|
| Assignees |
|
| Reporter |
offsake
|
Here is the link to input code and trunk opt (doesn't matter w/ or w/o assertions) to reproduce the issue:
https://llvm.godbolt.org/z/c67a4dsrM
The same problem reproduces on 21.1.0 released versions of opt. Compiles fine with 20.1.0. So, may be a stability regression due to new capabilities to vectorize.
Also duplicating the input code and command line here.
`opt -disable-output reduced.ll -passes=slp-vectorizer`
The content of reduced.ll:
```
target triple = "x86_64-unknown-linux-gnu"
define float @_foo() {
label:
%tmp.0.4.vec.extract = extractelement <4 x float> zeroinitializer, i64 0
%tmp.0.0.vec.extract = extractelement <4 x float> zeroinitializer, i64 0
%tmp.12.36.vec.extract = extractelement <4 x float> zeroinitializer, i64 0
%tmp.7.28.vec.extract = extractelement <4 x float> zeroinitializer, i64 0
%tmp.0.12.vec.extract = extractelement <4 x float> zeroinitializer, i64 0
%mul3.i128.i = fmul float 0.000000e+00, 0.000000e+00
%mul3.i138.i = fmul float 0.000000e+00, 0.000000e+00
%sub.i102.i = fsub float 0.000000e+00, 0.000000e+00
%mul.i136.i = fmul float %sub.i102.i, 0.000000e+00
%v.0.4.vec.extract = extractelement <8 x float> zeroinitializer, i64 0
%v.0.24.vec.extract = extractelement <8 x float> zeroinitializer, i64 0
%v.0.28.vec.extract = extractelement <8 x float> zeroinitializer, i64 0
%v.11.48.vec.extract = extractelement <8 x float> zeroinitializer, i64 0
%v.20.72.vec.extract = extractelement <8 x float> zeroinitializer, i64 0
%v.20.76.vec.extract = extractelement <8 x float> zeroinitializer, i64 0
%0 = fmul float %v.0.4.vec.extract, %tmp.0.0.vec.extract
%1 = fadd float %0, 0.000000e+00
%2 = fmul float %v.0.28.vec.extract, 0.000000e+00
%3 = fmul float %v.0.28.vec.extract, %tmp.0.0.vec.extract
%4 = fadd float %3, 0.000000e+00
%5 = fmul float %tmp.0.4.vec.extract, %v.11.48.vec.extract
%6 = fadd float 0.000000e+00, %5
%7 = fmul float %v.20.76.vec.extract, %tmp.0.0.vec.extract
%8 = fadd float %7, 0.000000e+00
%9 = fmul float 0.000000e+00, %tmp.0.12.vec.extract
%10 = fadd float %2, %9
%11 = fadd float %10, 0.000000e+00
%12 = fsub float 0.000000e+00, %11
%13 = fadd float 0.000000e+00, %1
%14 = fadd float 0.000000e+00, %4
%15 = fadd float 0.000000e+00, %6
%16 = fadd float 0.000000e+00, %8
%17 = fmul float 0.000000e+00, 0.000000e+00
%18 = fmul float 0.000000e+00, %tmp.7.28.vec.extract
%19 = fmul float 0.000000e+00, 0.000000e+00
%20 = fmul float 0.000000e+00, 0.000000e+00
%21 = fmul float 0.000000e+00, %tmp.7.28.vec.extract
%22 = fmul float 0.000000e+00, 0.000000e+00
%23 = fmul float 0.000000e+00, %tmp.12.36.vec.extract
%24 = fadd float %18, %23
%25 = fmul float 0.000000e+00, %tmp.12.36.vec.extract
%26 = fadd float %21, %25
%27 = fsub float 0.000000e+00, poison
%28 = fadd float %24, 0.000000e+00
%29 = fsub float 0.000000e+00, %28
%30 = fadd float %26, 0.000000e+00
%31 = fsub float 0.000000e+00, %30
%32 = fadd float 0.000000e+00, %17
%33 = fadd float 0.000000e+00, %19
%34 = fadd float 0.000000e+00, %20
%35 = fadd float 0.000000e+00, %22
%36 = fmul float 0.000000e+00, %mul3.i138.i
%37 = fmul float %v.0.4.vec.extract, %mul.i136.i
%38 = fadd float %37, 0.000000e+00
%39 = fmul float 0.000000e+00, %mul3.i138.i
%40 = fmul float %mul3.i138.i, %v.0.24.vec.extract
%41 = fadd float 0.000000e+00, %40
%42 = fmul float 0.000000e+00, %mul3.i138.i
%43 = fmul float 0.000000e+00, %mul3.i138.i
%44 = fmul float %mul3.i138.i, %v.20.72.vec.extract
%45 = fadd float 0.000000e+00, %44
%46 = fmul float 0.000000e+00, 1.000000e+00
%47 = fmul float 0.000000e+00, %mul3.i128.i
%48 = fadd float %36, %47
%49 = fmul float 0.000000e+00, %mul3.i128.i
%50 = fadd float %39, %49
%51 = fmul float 0.000000e+00, %mul3.i128.i
%52 = fadd float %42, %51
%53 = fmul float 0.000000e+00, %mul3.i128.i
%54 = fadd float %43, %53
%55 = fadd float %46, 0.000000e+00
%56 = fadd float %48, 0.000000e+00
%57 = fsub float %55, %56
%58 = fadd float %50, 0.000000e+00
%59 = fsub float 0.000000e+00, %58
%60 = fadd float %52, 0.000000e+00
%61 = fsub float 0.000000e+00, %60
%62 = fadd float %mul.i136.i, 0.000000e+00
%63 = fadd float %54, 0.000000e+00
%64 = fsub float %62, %63
%65 = fadd float 0.000000e+00, %38
%66 = fadd float 0.000000e+00, %41
%67 = fadd float 0.000000e+00, %45
br label %region.30
region.30: ; preds = %label
%68 = phi float [ %29, %label ]
%69 = phi float [ %66, %label ]
%70 = phi float [ %59, %label ]
%71 = phi float [ %15, %label ]
%72 = phi float [ %34, %label ]
%73 = phi float [ poison, %label ]
%74 = phi float [ %61, %label ]
%75 = phi float [ %16, %label ]
%76 = phi float [ %35, %label ]
%77 = phi float [ %31, %label ]
%78 = phi float [ %67, %label ]
%79 = phi float [ %64, %label ]
%80 = phi float [ %33, %label ]
%81 = phi float [ %12, %label ]
%82 = phi float [ %14, %label ]
%83 = phi float [ %57, %label ]
%84 = phi float [ %65, %label ]
%85 = phi float [ %27, %label ]
%86 = phi float [ %32, %label ]
%87 = phi float [ %13, %label ]
ret float %87
}
```
_______________________________________________
llvm-bugs mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-bugs