Bump version to 19.1.0-rc3
[llvm-project.git] / llvm / test / Transforms / SLPVectorizer / X86 / crash_sim4b1.ll
blob1c0fa1d85f9e4af0fbb59c69a4116dbafacf9280
1 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2 ; RUN: opt < %s -passes=slp-vectorizer,dce -S -mtriple=x86_64-apple-macosx10.8.0 -mcpu=corei7 | FileCheck %s
4 target datalayout = "e-p:64:64:64-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:64:64-f32:32:32-f64:64:64-v64:64:64-v128:128:128-a0:0:64-s0:64:64-f80:128:128-n8:16:32:64-S128"
5 target triple = "x86_64-apple-macosx10.8.0"
7 %struct._exon_t.12.103.220.363.480.649.740.857.1039.1065.1078.1091.1117.1130.1156.1169.1195.1221.1234.1286.1299.1312.1338.1429.1455.1468.1494.1520.1884.1897.1975.2066.2105.2170.2171 = type { i32, i32, i32, i32, i32, i32, [8 x i8] }
9 define void @SIM4() {
10 ; CHECK-LABEL: @SIM4(
11 ; CHECK-NEXT:  entry:
12 ; CHECK-NEXT:    br i1 undef, label [[RETURN:%.*]], label [[LOR_LHS_FALSE:%.*]]
13 ; CHECK:       lor.lhs.false:
14 ; CHECK-NEXT:    br i1 undef, label [[RETURN]], label [[IF_END:%.*]]
15 ; CHECK:       if.end:
16 ; CHECK-NEXT:    br i1 undef, label [[FOR_END605:%.*]], label [[FOR_BODY_LR_PH:%.*]]
17 ; CHECK:       for.body.lr.ph:
18 ; CHECK-NEXT:    br label [[FOR_BODY:%.*]]
19 ; CHECK:       for.body:
20 ; CHECK-NEXT:    br i1 undef, label [[FOR_INC603:%.*]], label [[IF_END12:%.*]]
21 ; CHECK:       if.end12:
22 ; CHECK-NEXT:    br i1 undef, label [[LAND_LHS_TRUE:%.*]], label [[LAND_LHS_TRUE167:%.*]]
23 ; CHECK:       land.lhs.true:
24 ; CHECK-NEXT:    br i1 undef, label [[IF_THEN17:%.*]], label [[LAND_LHS_TRUE167]]
25 ; CHECK:       if.then17:
26 ; CHECK-NEXT:    br i1 undef, label [[IF_END98:%.*]], label [[LAND_RHS_LR_PH:%.*]]
27 ; CHECK:       land.rhs.lr.ph:
28 ; CHECK-NEXT:    unreachable
29 ; CHECK:       if.end98:
30 ; CHECK-NEXT:    br i1 undef, label [[LAND_LHS_TRUE167]], label [[IF_THEN103:%.*]]
31 ; CHECK:       if.then103:
32 ; CHECK-NEXT:    [[DOTSUB100:%.*]] = select i1 undef, i32 250, i32 undef
33 ; CHECK-NEXT:    [[MUL114:%.*]] = shl nsw i32 [[DOTSUB100]], 2
34 ; CHECK-NEXT:    [[COND125:%.*]] = select i1 undef, i32 undef, i32 [[MUL114]]
35 ; CHECK-NEXT:    [[TMP0:%.*]] = insertelement <2 x i32> poison, i32 [[COND125]], i32 0
36 ; CHECK-NEXT:    [[TMP1:%.*]] = insertelement <2 x i32> [[TMP0]], i32 [[DOTSUB100]], i32 1
37 ; CHECK-NEXT:    br label [[FOR_COND_I:%.*]]
38 ; CHECK:       for.cond.i:
39 ; CHECK-NEXT:    [[TMP2:%.*]] = phi <2 x i32> [ undef, [[LAND_RHS_I874:%.*]] ], [ [[TMP1]], [[IF_THEN103]] ]
40 ; CHECK-NEXT:    br i1 undef, label [[LAND_RHS_I874]], label [[FOR_END_I:%.*]]
41 ; CHECK:       land.rhs.i874:
42 ; CHECK-NEXT:    br i1 undef, label [[FOR_COND_I]], label [[FOR_END_I]]
43 ; CHECK:       for.end.i:
44 ; CHECK-NEXT:    br i1 undef, label [[IF_THEN_I:%.*]], label [[IF_END_I:%.*]]
45 ; CHECK:       if.then.i:
46 ; CHECK-NEXT:    [[TMP3:%.*]] = add nsw <2 x i32> [[TMP2]], undef
47 ; CHECK-NEXT:    br label [[EXTEND_BW_EXIT:%.*]]
48 ; CHECK:       if.end.i:
49 ; CHECK-NEXT:    [[ADD16_I:%.*]] = add i32 [[COND125]], [[DOTSUB100]]
50 ; CHECK-NEXT:    [[CMP26514_I:%.*]] = icmp slt i32 [[ADD16_I]], 0
51 ; CHECK-NEXT:    br i1 [[CMP26514_I]], label [[FOR_END33_I:%.*]], label [[FOR_BODY28_LR_PH_I:%.*]]
52 ; CHECK:       for.body28.lr.ph.i:
53 ; CHECK-NEXT:    br label [[FOR_END33_I]]
54 ; CHECK:       for.end33.i:
55 ; CHECK-NEXT:    br i1 undef, label [[FOR_END58_I:%.*]], label [[FOR_BODY52_LR_PH_I:%.*]]
56 ; CHECK:       for.body52.lr.ph.i:
57 ; CHECK-NEXT:    br label [[FOR_END58_I]]
58 ; CHECK:       for.end58.i:
59 ; CHECK-NEXT:    br label [[WHILE_COND260_I:%.*]]
60 ; CHECK:       while.cond260.i:
61 ; CHECK-NEXT:    br i1 undef, label [[LAND_RHS263_I:%.*]], label [[WHILE_END275_I:%.*]]
62 ; CHECK:       land.rhs263.i:
63 ; CHECK-NEXT:    br i1 undef, label [[WHILE_COND260_I]], label [[WHILE_END275_I]]
64 ; CHECK:       while.end275.i:
65 ; CHECK-NEXT:    br label [[EXTEND_BW_EXIT]]
66 ; CHECK:       extend_bw.exit:
67 ; CHECK-NEXT:    [[TMP4:%.*]] = phi <2 x i32> [ [[TMP3]], [[IF_THEN_I]] ], [ undef, [[WHILE_END275_I]] ]
68 ; CHECK-NEXT:    br i1 false, label [[IF_THEN157:%.*]], label [[LAND_LHS_TRUE167]]
69 ; CHECK:       if.then157:
70 ; CHECK-NEXT:    [[TMP5:%.*]] = add nsw <2 x i32> [[TMP4]], <i32 1, i32 1>
71 ; CHECK-NEXT:    store <2 x i32> [[TMP5]], ptr undef, align 4
72 ; CHECK-NEXT:    br label [[LAND_LHS_TRUE167]]
73 ; CHECK:       land.lhs.true167:
74 ; CHECK-NEXT:    unreachable
75 ; CHECK:       for.inc603:
76 ; CHECK-NEXT:    br i1 undef, label [[FOR_BODY]], label [[FOR_END605]]
77 ; CHECK:       for.end605:
78 ; CHECK-NEXT:    unreachable
79 ; CHECK:       return:
80 ; CHECK-NEXT:    ret void
82 entry:
83   br i1 undef, label %return, label %lor.lhs.false
85 lor.lhs.false:                                    ; preds = %entry
86   br i1 undef, label %return, label %if.end
88 if.end:                                           ; preds = %lor.lhs.false
89   br i1 undef, label %for.end605, label %for.body.lr.ph
91 for.body.lr.ph:                                   ; preds = %if.end
92   br label %for.body
94 for.body:                                         ; preds = %for.inc603, %for.body.lr.ph
95   br i1 undef, label %for.inc603, label %if.end12
97 if.end12:                                         ; preds = %for.body
98   br i1 undef, label %land.lhs.true, label %land.lhs.true167
100 land.lhs.true:                                    ; preds = %if.end12
101   br i1 undef, label %if.then17, label %land.lhs.true167
103 if.then17:                                        ; preds = %land.lhs.true
104   br i1 undef, label %if.end98, label %land.rhs.lr.ph
106 land.rhs.lr.ph:                                   ; preds = %if.then17
107   unreachable
109 if.end98:                                         ; preds = %if.then17
110   %from299 = getelementptr inbounds %struct._exon_t.12.103.220.363.480.649.740.857.1039.1065.1078.1091.1117.1130.1156.1169.1195.1221.1234.1286.1299.1312.1338.1429.1455.1468.1494.1520.1884.1897.1975.2066.2105.2170.2171, ptr undef, i64 0, i32 1
111   br i1 undef, label %land.lhs.true167, label %if.then103
113 if.then103:                                       ; preds = %if.end98
114   %.sub100 = select i1 undef, i32 250, i32 undef
115   %mul114 = shl nsw i32 %.sub100, 2
116   %cond125 = select i1 undef, i32 undef, i32 %mul114
117   br label %for.cond.i
119 for.cond.i:                                       ; preds = %land.rhs.i874, %if.then103
120   %row.0.i = phi i32 [ undef, %land.rhs.i874 ], [ %.sub100, %if.then103 ]
121   %col.0.i = phi i32 [ undef, %land.rhs.i874 ], [ %cond125, %if.then103 ]
122   br i1 undef, label %land.rhs.i874, label %for.end.i
124 land.rhs.i874:                                    ; preds = %for.cond.i
125   br i1 undef, label %for.cond.i, label %for.end.i
127 for.end.i:                                        ; preds = %land.rhs.i874, %for.cond.i
128   br i1 undef, label %if.then.i, label %if.end.i
130 if.then.i:                                        ; preds = %for.end.i
131   %add14.i = add nsw i32 %row.0.i, undef
132   %add15.i = add nsw i32 %col.0.i, undef
133   br label %extend_bw.exit
135 if.end.i:                                         ; preds = %for.end.i
136   %add16.i = add i32 %cond125, %.sub100
137   %cmp26514.i = icmp slt i32 %add16.i, 0
138   br i1 %cmp26514.i, label %for.end33.i, label %for.body28.lr.ph.i
140 for.body28.lr.ph.i:                               ; preds = %if.end.i
141   br label %for.end33.i
143 for.end33.i:                                      ; preds = %for.body28.lr.ph.i, %if.end.i
144   br i1 undef, label %for.end58.i, label %for.body52.lr.ph.i
146 for.body52.lr.ph.i:                               ; preds = %for.end33.i
147   br label %for.end58.i
149 for.end58.i:                                      ; preds = %for.body52.lr.ph.i, %for.end33.i
150   br label %while.cond260.i
152 while.cond260.i:                                  ; preds = %land.rhs263.i, %for.end58.i
153   br i1 undef, label %land.rhs263.i, label %while.end275.i
155 land.rhs263.i:                                    ; preds = %while.cond260.i
156   br i1 undef, label %while.cond260.i, label %while.end275.i
158 while.end275.i:                                   ; preds = %land.rhs263.i, %while.cond260.i
159   br label %extend_bw.exit
161 extend_bw.exit:                                   ; preds = %while.end275.i, %if.then.i
162   %add14.i1262 = phi i32 [ %add14.i, %if.then.i ], [ undef, %while.end275.i ]
163   %add15.i1261 = phi i32 [ %add15.i, %if.then.i ], [ undef, %while.end275.i ]
164   br i1 false, label %if.then157, label %land.lhs.true167
166 if.then157:                                       ; preds = %extend_bw.exit
167   %add158 = add nsw i32 %add14.i1262, 1
168   store i32 %add158, ptr %from299, align 4
169   %add160 = add nsw i32 %add15.i1261, 1
170   store i32 %add160, ptr undef, align 4
171   br label %land.lhs.true167
173 land.lhs.true167:                                 ; preds = %if.then157, %extend_bw.exit, %if.end98, %land.lhs.true, %if.end12
174   unreachable
176 for.inc603:                                       ; preds = %for.body
177   br i1 undef, label %for.body, label %for.end605
179 for.end605:                                       ; preds = %for.inc603, %if.end
180   unreachable
182 return:                                           ; preds = %lor.lhs.false, %entry
183   ret void