xref: /llvm-project/llvm/test/Transforms/SLPVectorizer/extract-subvector-long-input.ll (revision 15ee17c3ce34623261788d7de3c1bdf5860be34e)
1*15ee17c3SElvina Yakubova; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 4
2*15ee17c3SElvina Yakubova; RUN: %if x86-registered-target %{ opt -passes=slp-vectorizer -S -slp-threshold=-99999 -mtriple=x86_64-unknown-linux-gnu < %s | FileCheck %s %}
3*15ee17c3SElvina Yakubova; RUN: %if aarch64-registered-target %{ opt -passes=slp-vectorizer -S -slp-threshold=-99999 -mtriple=aarch64-unknown-linux-gnu < %s | FileCheck %s %}
4*15ee17c3SElvina Yakubova
5*15ee17c3SElvina Yakubovadefine void @test() {
6*15ee17c3SElvina Yakubova; CHECK-LABEL: define void @test() {
7*15ee17c3SElvina Yakubova; CHECK-NEXT:  bb:
8*15ee17c3SElvina Yakubova; CHECK-NEXT:    br label [[BB1:%.*]]
9*15ee17c3SElvina Yakubova; CHECK:       bb1:
10*15ee17c3SElvina Yakubova; CHECK-NEXT:    [[PHI7:%.*]] = phi i32 [ 0, [[BB10:%.*]] ], [ 0, [[BB:%.*]] ]
11*15ee17c3SElvina Yakubova; CHECK-NEXT:    [[TMP0:%.*]] = phi <8 x i32> [ poison, [[BB10]] ], [ zeroinitializer, [[BB]] ]
12*15ee17c3SElvina Yakubova; CHECK-NEXT:    [[TMP1:%.*]] = insertelement <2 x i32> <i32 poison, i32 undef>, i32 [[PHI7]], i32 0
13*15ee17c3SElvina Yakubova; CHECK-NEXT:    switch i32 0, label [[BB16:%.*]] [
14*15ee17c3SElvina Yakubova; CHECK-NEXT:      i32 0, label [[BB14:%.*]]
15*15ee17c3SElvina Yakubova; CHECK-NEXT:      i32 1, label [[BB11:%.*]]
16*15ee17c3SElvina Yakubova; CHECK-NEXT:    ]
17*15ee17c3SElvina Yakubova; CHECK:       bb9:
18*15ee17c3SElvina Yakubova; CHECK-NEXT:    br label [[BB11]]
19*15ee17c3SElvina Yakubova; CHECK:       bb10:
20*15ee17c3SElvina Yakubova; CHECK-NEXT:    br label [[BB1]]
21*15ee17c3SElvina Yakubova; CHECK:       bb11:
22*15ee17c3SElvina Yakubova; CHECK-NEXT:    [[TMP2:%.*]] = phi <2 x i32> [ poison, [[BB9:%.*]] ], [ [[TMP1]], [[BB1]] ]
23*15ee17c3SElvina Yakubova; CHECK-NEXT:    ret void
24*15ee17c3SElvina Yakubova; CHECK:       bb14:
25*15ee17c3SElvina Yakubova; CHECK-NEXT:    ret void
26*15ee17c3SElvina Yakubova; CHECK:       bb15:
27*15ee17c3SElvina Yakubova; CHECK-NEXT:    ret void
28*15ee17c3SElvina Yakubova; CHECK:       bb16:
29*15ee17c3SElvina Yakubova; CHECK-NEXT:    [[TMP3:%.*]] = phi <8 x i32> [ [[TMP0]], [[BB1]] ], [ poison, [[BB25:%.*]] ]
30*15ee17c3SElvina Yakubova; CHECK-NEXT:    ret void
31*15ee17c3SElvina Yakubova; CHECK:       bb25:
32*15ee17c3SElvina Yakubova; CHECK-NEXT:    switch i32 0, label [[BB16]] [
33*15ee17c3SElvina Yakubova; CHECK-NEXT:      i32 0, label [[BB14]]
34*15ee17c3SElvina Yakubova; CHECK-NEXT:      i32 1, label [[BB15:%.*]]
35*15ee17c3SElvina Yakubova; CHECK-NEXT:    ]
36*15ee17c3SElvina Yakubova;
37*15ee17c3SElvina Yakubovabb:
38*15ee17c3SElvina Yakubova  br label %bb1
39*15ee17c3SElvina Yakubova
40*15ee17c3SElvina Yakubovabb1:
41*15ee17c3SElvina Yakubova  %phi = phi i32 [ 0, %bb10 ], [ 0, %bb ]
42*15ee17c3SElvina Yakubova  %phi2 = phi i32 [ 0, %bb10 ], [ 0, %bb ]
43*15ee17c3SElvina Yakubova  %phi3 = phi i32 [ 0, %bb10 ], [ 0, %bb ]
44*15ee17c3SElvina Yakubova  %phi4 = phi i32 [ 0, %bb10 ], [ 0, %bb ]
45*15ee17c3SElvina Yakubova  %phi5 = phi i32 [ 0, %bb10 ], [ 0, %bb ]
46*15ee17c3SElvina Yakubova  %phi6 = phi i32 [ 0, %bb10 ], [ 0, %bb ]
47*15ee17c3SElvina Yakubova  %phi7 = phi i32 [ 0, %bb10 ], [ 0, %bb ]
48*15ee17c3SElvina Yakubova  %phi8 = phi i32 [ 0, %bb10 ], [ 0, %bb ]
49*15ee17c3SElvina Yakubova  switch i32 0, label %bb16 [
50*15ee17c3SElvina Yakubova  i32 0, label %bb14
51*15ee17c3SElvina Yakubova  i32 1, label %bb11
52*15ee17c3SElvina Yakubova  ]
53*15ee17c3SElvina Yakubova
54*15ee17c3SElvina Yakubovabb9:
55*15ee17c3SElvina Yakubova  br label %bb11
56*15ee17c3SElvina Yakubova
57*15ee17c3SElvina Yakubovabb10:
58*15ee17c3SElvina Yakubova  br label %bb1
59*15ee17c3SElvina Yakubova
60*15ee17c3SElvina Yakubovabb11:
61*15ee17c3SElvina Yakubova  %phi12 = phi i32 [ 0, %bb9 ], [ %phi7, %bb1 ]
62*15ee17c3SElvina Yakubova  %phi13 = phi i32 [ 0, %bb9 ], [ undef, %bb1 ]
63*15ee17c3SElvina Yakubova  ret void
64*15ee17c3SElvina Yakubova
65*15ee17c3SElvina Yakubovabb14:
66*15ee17c3SElvina Yakubova  ret void
67*15ee17c3SElvina Yakubova
68*15ee17c3SElvina Yakubovabb15:
69*15ee17c3SElvina Yakubova  ret void
70*15ee17c3SElvina Yakubova
71*15ee17c3SElvina Yakubovabb16:
72*15ee17c3SElvina Yakubova  %phi17 = phi i32 [ %phi, %bb1 ], [ 0, %bb25 ]
73*15ee17c3SElvina Yakubova  %phi18 = phi i32 [ %phi2, %bb1 ], [ 0, %bb25 ]
74*15ee17c3SElvina Yakubova  %phi19 = phi i32 [ %phi3, %bb1 ], [ 0, %bb25 ]
75*15ee17c3SElvina Yakubova  %phi20 = phi i32 [ %phi4, %bb1 ], [ 0, %bb25 ]
76*15ee17c3SElvina Yakubova  %phi21 = phi i32 [ %phi5, %bb1 ], [ 0, %bb25 ]
77*15ee17c3SElvina Yakubova  %phi22 = phi i32 [ %phi6, %bb1 ], [ 0, %bb25 ]
78*15ee17c3SElvina Yakubova  %phi23 = phi i32 [ %phi7, %bb1 ], [ 0, %bb25 ]
79*15ee17c3SElvina Yakubova  %phi24 = phi i32 [ %phi8, %bb1 ], [ 0, %bb25 ]
80*15ee17c3SElvina Yakubova  ret void
81*15ee17c3SElvina Yakubova
82*15ee17c3SElvina Yakubovabb25:
83*15ee17c3SElvina Yakubova  switch i32 0, label %bb16 [
84*15ee17c3SElvina Yakubova  i32 0, label %bb14
85*15ee17c3SElvina Yakubova  i32 1, label %bb15
86*15ee17c3SElvina Yakubova  ]
87*15ee17c3SElvina Yakubova}
88