1
1
; NOTE: Assertions have been autogenerated by utils/update_test_checks.py
2
- ; RUN: opt < %s -O2 - codegenprepare -S | FileCheck %s
2
+ ; RUN: opt < %s -codegenprepare -S | FileCheck %s
3
3
4
4
target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128"
5
5
target triple = "x86_64-unknown-linux-gnu"
@@ -11,7 +11,7 @@ target triple = "x86_64-unknown-linux-gnu"
11
11
@f = dso_local local_unnamed_addr global i64 0 , align 8
12
12
@g = dso_local local_unnamed_addr global i64 0 , align 8
13
13
14
- define dso_local i32 @m () local_unnamed_addr {
14
+ define dso_local i32 @m () {
15
15
; CHECK-LABEL: @m(
16
16
; CHECK-NEXT: entry:
17
17
; CHECK-NEXT: [[TMP0:%.*]] = load i64, i64* @f, align 8
@@ -99,80 +99,54 @@ for.cond: ; preds = %for.cond39.preheade
99
99
%p.0 = phi i64 [ undef , %entry ], [ %p.1.lcssa , %for.cond39.preheader ]
100
100
%i.0 = phi i32 [ undef , %entry ], [ %i.1.lcssa , %for.cond39.preheader ]
101
101
%cmp73 = icmp slt i32 %i.0 , 3
102
- br i1 %cmp73 , label %for.body.preheader , label %for.cond39.preheader
103
-
104
- for.body.preheader: ; preds = %for.cond
105
- br label %for.body
102
+ br i1 %cmp73 , label %for.body , label %for.cond39.preheader
106
103
107
104
for.cond1.loopexit: ; preds = %for.inc34.preheader, %for.end12
108
- br i1 %cmp , label %for.body , label %for.cond39.preheader.loopexit
109
-
110
- for.cond39.preheader.loopexit: ; preds = %for.cond1.loopexit
111
- br label %for.cond39.preheader
112
-
113
- for.cond39.preheader: ; preds = %for.cond39.preheader.loopexit, %for.cond
114
- %j.1.lcssa = phi i32 [ %j.0 , %for.cond ], [ %conv18 , %for.cond39.preheader.loopexit ]
115
- %p.1.lcssa = phi i64 [ %p.0 , %for.cond ], [ 0 , %for.cond39.preheader.loopexit ]
116
- %i.1.lcssa = phi i32 [ %i.0 , %for.cond ], [ %conv18 , %for.cond39.preheader.loopexit ]
117
- br i1 %tobool40.not , label %for.cond , label %for.inc42.preheader
118
-
119
- for.inc42.preheader: ; preds = %for.cond39.preheader
120
- br label %for.inc42
121
-
122
- for.body: ; preds = %for.body.preheader, %for.cond1.loopexit
123
- %l.176 = phi i8 [ %sub , %for.cond1.loopexit ], [ 0 , %for.body.preheader ]
124
- %p.175 = phi i64 [ 0 , %for.cond1.loopexit ], [ %p.0 , %for.body.preheader ]
125
- %j.174 = phi i32 [ %conv18 , %for.cond1.loopexit ], [ %j.0 , %for.body.preheader ]
105
+ br i1 %cmp , label %for.body , label %for.cond39.preheader
106
+
107
+ for.cond39.preheader: ; preds = %for.cond1.loopexit, %for.cond
108
+ %j.1.lcssa = phi i32 [ %j.0 , %for.cond ], [ %conv18 , %for.cond1.loopexit ]
109
+ %p.1.lcssa = phi i64 [ %p.0 , %for.cond ], [ 0 , %for.cond1.loopexit ]
110
+ %i.1.lcssa = phi i32 [ %i.0 , %for.cond ], [ %conv18 , %for.cond1.loopexit ]
111
+ br i1 %tobool40.not , label %for.cond , label %for.inc42
112
+
113
+ for.body: ; preds = %for.cond, %for.cond1.loopexit
114
+ %l.176 = phi i8 [ %sub , %for.cond1.loopexit ], [ 0 , %for.cond ]
115
+ %p.175 = phi i64 [ 0 , %for.cond1.loopexit ], [ %p.0 , %for.cond ]
116
+ %j.174 = phi i32 [ %conv18 , %for.cond1.loopexit ], [ %j.0 , %for.cond ]
126
117
%tobool.not = icmp eq i32 %j.174 , 0
127
118
br i1 %tobool.not , label %cleanup45 , label %for.cond2.preheader
128
119
129
120
for.cond2.preheader: ; preds = %for.body
130
- %tobool3.not69 = icmp eq i64 %p.175 , 0
131
121
%.pr.pre = load i64 , i64* @e , align 8
132
- br i1 %tobool3.not69 , label %for.end12 , label %for.body4.preheader
133
-
134
- for.body4.preheader: ; preds = %for.cond2.preheader
122
+ switch i64 %p.175 , label %for.body4.preheader6 [
123
+ i64 -1 , label %for.end12
124
+ i64 -2 , label %for.end12
125
+ i64 -3 , label %for.end12
126
+ i64 -4 , label %for.end12
127
+ i64 -5 , label %for.end12
128
+ i64 -6 , label %for.end12
129
+ i64 -7 , label %for.end12
130
+ i64 0 , label %for.end12
131
+ ]
132
+
133
+ for.body4.preheader6: ; preds = %for.cond2.preheader
135
134
%4 = sub i64 0 , %p.175
136
135
%xtraiter = and i64 %4 , 7
137
- %lcmp.mod.not = icmp eq i64 %xtraiter , 0
138
- br i1 %lcmp.mod.not , label %for.body4.prol.loopexit , label %for.body4.prol.preheader
139
-
140
- for.body4.prol.preheader: ; preds = %for.body4.preheader
141
- %5 = mul nsw i64 %xtraiter , -1
142
- br label %for.body4.prol
143
-
144
- for.body4.prol: ; preds = %for.body4.prol.preheader, %for.body4.prol
145
- %lsr.iv = phi i64 [ 0 , %for.body4.prol.preheader ], [ %lsr.iv.next , %for.body4.prol ]
146
- %lsr.iv.next = add nsw i64 %lsr.iv , -1
147
- %prol.iter.cmp.not = icmp eq i64 %5 , %lsr.iv.next
148
- br i1 %prol.iter.cmp.not , label %for.body4.prol.loopexit.loopexit , label %for.body4.prol
149
-
150
- for.body4.prol.loopexit.loopexit: ; preds = %for.body4.prol
151
- %6 = sub i64 %p.175 , %lsr.iv.next
152
- br label %for.body4.prol.loopexit
153
-
154
- for.body4.prol.loopexit: ; preds = %for.body4.prol.loopexit.loopexit, %for.body4.preheader
155
- %p.270.unr = phi i64 [ %p.175 , %for.body4.preheader ], [ %6 , %for.body4.prol.loopexit.loopexit ]
156
- %7 = icmp ugt i64 %p.175 , -8
157
- br i1 %7 , label %for.end12 , label %for.body4.preheader89
158
-
159
- for.body4.preheader89: ; preds = %for.body4.prol.loopexit
136
+ %5 = add i64 %p.175 , %xtraiter
160
137
br label %for.body4
161
138
162
- for.body4: ; preds = %for.body4.preheader89 , %for.body4
163
- %p.270 = phi i64 [ %inc11.7 , %for.body4 ], [ %p.270.unr , %for.body4.preheader89 ]
139
+ for.body4: ; preds = %for.body4.preheader6 , %for.body4
140
+ %p.270 = phi i64 [ %inc11.7 , %for.body4 ], [ %5 , %for.body4.preheader6 ]
164
141
%inc11.7 = add i64 %p.270 , 8
165
142
%tobool3.not.7 = icmp eq i64 %inc11.7 , 0
166
- br i1 %tobool3.not.7 , label %for.end12.loopexit , label %for.body4
167
-
168
- for.end12.loopexit: ; preds = %for.body4
169
- br label %for.end12
143
+ br i1 %tobool3.not.7 , label %for.end12 , label %for.body4
170
144
171
- for.end12: ; preds = %for.end12.loopexit , %for.body4.prol.loopexit , %for.cond2.preheader
172
- %8 = load i32 , i32* %1 , align 4
173
- %conv23 = zext i32 %8 to i64
174
- %9 = load i64 , i64* @b , align 8
175
- %div24 = udiv i64 %9 , %conv23
145
+ for.end12: ; preds = %for.body4, %for.cond2.preheader , %for.cond2.preheader, %for.cond2.preheader, %for.cond2.preheader, %for.cond2.preheader, %for.cond2.preheader, %for.cond2.preheader , %for.cond2.preheader
146
+ %6 = load i32 , i32* %1 , align 4
147
+ %conv23 = zext i32 %6 to i64
148
+ %7 = load i64 , i64* @b , align 8
149
+ %div24 = udiv i64 %7 , %conv23
176
150
store i64 %div24 , i64* @b , align 8
177
151
%sub = add i8 %l.176 , -1
178
152
%tobool32.not72 = icmp eq i64 %.pr.pre , 0
@@ -182,7 +156,7 @@ for.inc34.preheader: ; preds = %for.end12
182
156
store i64 0 , i64* @e , align 8
183
157
br label %for.cond1.loopexit
184
158
185
- for.inc42: ; preds = %for.inc42 .preheader, %for.inc42
159
+ for.inc42: ; preds = %for.cond39 .preheader, %for.inc42
186
160
br label %for.inc42
187
161
188
162
cleanup45: ; preds = %for.body
0 commit comments