[CI] Detect step failures in metrics job (#122564)
[llvm-project.git] / llvm / test / Transforms / LoopUnroll / X86 / znver3.ll
blobb1f1d7d814e6c3f32afed5cd7d8bf0ad14104e5d
1 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 3
2 ; RUN: opt -S -passes=loop-unroll -unroll-allow-partial < %s | FileCheck %s
4 target triple = "x86_64-unknown-linux-gnu"
6 define i32 @test(ptr %ary) "target-cpu"="znver3" {
7 ; CHECK-LABEL: define i32 @test(
8 ; CHECK-SAME: ptr [[ARY:%.*]]) #[[ATTR0:[0-9]+]] {
9 ; CHECK-NEXT:  entry:
10 ; CHECK-NEXT:    br label [[FOR_BODY:%.*]]
11 ; CHECK:       for.body:
12 ; CHECK-NEXT:    [[INDVARS_IV:%.*]] = phi i64 [ 0, [[ENTRY:%.*]] ], [ [[INDVARS_IV_NEXT_127:%.*]], [[FOR_BODY]] ]
13 ; CHECK-NEXT:    [[SUM:%.*]] = phi i32 [ 0, [[ENTRY]] ], [ [[SUM_NEXT_127:%.*]], [[FOR_BODY]] ]
14 ; CHECK-NEXT:    [[ARRAYIDX:%.*]] = getelementptr inbounds i32, ptr [[ARY]], i64 [[INDVARS_IV]]
15 ; CHECK-NEXT:    [[VAL:%.*]] = load i32, ptr [[ARRAYIDX]], align 4
16 ; CHECK-NEXT:    [[SUM_NEXT:%.*]] = add nsw i32 [[VAL]], [[SUM]]
17 ; CHECK-NEXT:    [[INDVARS_IV_NEXT:%.*]] = add nuw nsw i64 [[INDVARS_IV]], 1
18 ; CHECK-NEXT:    [[ARRAYIDX_1:%.*]] = getelementptr inbounds i32, ptr [[ARY]], i64 [[INDVARS_IV_NEXT]]
19 ; CHECK-NEXT:    [[VAL_1:%.*]] = load i32, ptr [[ARRAYIDX_1]], align 4
20 ; CHECK-NEXT:    [[SUM_NEXT_1:%.*]] = add nsw i32 [[VAL_1]], [[SUM_NEXT]]
21 ; CHECK-NEXT:    [[INDVARS_IV_NEXT_1:%.*]] = add nuw nsw i64 [[INDVARS_IV]], 2
22 ; CHECK-NEXT:    [[ARRAYIDX_2:%.*]] = getelementptr inbounds i32, ptr [[ARY]], i64 [[INDVARS_IV_NEXT_1]]
23 ; CHECK-NEXT:    [[VAL_2:%.*]] = load i32, ptr [[ARRAYIDX_2]], align 4
24 ; CHECK-NEXT:    [[SUM_NEXT_2:%.*]] = add nsw i32 [[VAL_2]], [[SUM_NEXT_1]]
25 ; CHECK-NEXT:    [[INDVARS_IV_NEXT_2:%.*]] = add nuw nsw i64 [[INDVARS_IV]], 3
26 ; CHECK-NEXT:    [[ARRAYIDX_3:%.*]] = getelementptr inbounds i32, ptr [[ARY]], i64 [[INDVARS_IV_NEXT_2]]
27 ; CHECK-NEXT:    [[VAL_3:%.*]] = load i32, ptr [[ARRAYIDX_3]], align 4
28 ; CHECK-NEXT:    [[SUM_NEXT_3:%.*]] = add nsw i32 [[VAL_3]], [[SUM_NEXT_2]]
29 ; CHECK-NEXT:    [[INDVARS_IV_NEXT_3:%.*]] = add nuw nsw i64 [[INDVARS_IV]], 4
30 ; CHECK-NEXT:    [[ARRAYIDX_4:%.*]] = getelementptr inbounds i32, ptr [[ARY]], i64 [[INDVARS_IV_NEXT_3]]
31 ; CHECK-NEXT:    [[VAL_4:%.*]] = load i32, ptr [[ARRAYIDX_4]], align 4
32 ; CHECK-NEXT:    [[SUM_NEXT_4:%.*]] = add nsw i32 [[VAL_4]], [[SUM_NEXT_3]]
33 ; CHECK-NEXT:    [[INDVARS_IV_NEXT_4:%.*]] = add nuw nsw i64 [[INDVARS_IV]], 5
34 ; CHECK-NEXT:    [[ARRAYIDX_5:%.*]] = getelementptr inbounds i32, ptr [[ARY]], i64 [[INDVARS_IV_NEXT_4]]
35 ; CHECK-NEXT:    [[VAL_5:%.*]] = load i32, ptr [[ARRAYIDX_5]], align 4
36 ; CHECK-NEXT:    [[SUM_NEXT_5:%.*]] = add nsw i32 [[VAL_5]], [[SUM_NEXT_4]]
37 ; CHECK-NEXT:    [[INDVARS_IV_NEXT_5:%.*]] = add nuw nsw i64 [[INDVARS_IV]], 6
38 ; CHECK-NEXT:    [[ARRAYIDX_6:%.*]] = getelementptr inbounds i32, ptr [[ARY]], i64 [[INDVARS_IV_NEXT_5]]
39 ; CHECK-NEXT:    [[VAL_6:%.*]] = load i32, ptr [[ARRAYIDX_6]], align 4
40 ; CHECK-NEXT:    [[SUM_NEXT_6:%.*]] = add nsw i32 [[VAL_6]], [[SUM_NEXT_5]]
41 ; CHECK-NEXT:    [[INDVARS_IV_NEXT_6:%.*]] = add nuw nsw i64 [[INDVARS_IV]], 7
42 ; CHECK-NEXT:    [[ARRAYIDX_7:%.*]] = getelementptr inbounds i32, ptr [[ARY]], i64 [[INDVARS_IV_NEXT_6]]
43 ; CHECK-NEXT:    [[VAL_7:%.*]] = load i32, ptr [[ARRAYIDX_7]], align 4
44 ; CHECK-NEXT:    [[SUM_NEXT_7:%.*]] = add nsw i32 [[VAL_7]], [[SUM_NEXT_6]]
45 ; CHECK-NEXT:    [[INDVARS_IV_NEXT_7:%.*]] = add nuw nsw i64 [[INDVARS_IV]], 8
46 ; CHECK-NEXT:    [[ARRAYIDX_8:%.*]] = getelementptr inbounds i32, ptr [[ARY]], i64 [[INDVARS_IV_NEXT_7]]
47 ; CHECK-NEXT:    [[VAL_8:%.*]] = load i32, ptr [[ARRAYIDX_8]], align 4
48 ; CHECK-NEXT:    [[SUM_NEXT_8:%.*]] = add nsw i32 [[VAL_8]], [[SUM_NEXT_7]]
49 ; CHECK-NEXT:    [[INDVARS_IV_NEXT_8:%.*]] = add nuw nsw i64 [[INDVARS_IV]], 9
50 ; CHECK-NEXT:    [[ARRAYIDX_9:%.*]] = getelementptr inbounds i32, ptr [[ARY]], i64 [[INDVARS_IV_NEXT_8]]
51 ; CHECK-NEXT:    [[VAL_9:%.*]] = load i32, ptr [[ARRAYIDX_9]], align 4
52 ; CHECK-NEXT:    [[SUM_NEXT_9:%.*]] = add nsw i32 [[VAL_9]], [[SUM_NEXT_8]]
53 ; CHECK-NEXT:    [[INDVARS_IV_NEXT_9:%.*]] = add nuw nsw i64 [[INDVARS_IV]], 10
54 ; CHECK-NEXT:    [[ARRAYIDX_10:%.*]] = getelementptr inbounds i32, ptr [[ARY]], i64 [[INDVARS_IV_NEXT_9]]
55 ; CHECK-NEXT:    [[VAL_10:%.*]] = load i32, ptr [[ARRAYIDX_10]], align 4
56 ; CHECK-NEXT:    [[SUM_NEXT_10:%.*]] = add nsw i32 [[VAL_10]], [[SUM_NEXT_9]]
57 ; CHECK-NEXT:    [[INDVARS_IV_NEXT_10:%.*]] = add nuw nsw i64 [[INDVARS_IV]], 11
58 ; CHECK-NEXT:    [[ARRAYIDX_11:%.*]] = getelementptr inbounds i32, ptr [[ARY]], i64 [[INDVARS_IV_NEXT_10]]
59 ; CHECK-NEXT:    [[VAL_11:%.*]] = load i32, ptr [[ARRAYIDX_11]], align 4
60 ; CHECK-NEXT:    [[SUM_NEXT_11:%.*]] = add nsw i32 [[VAL_11]], [[SUM_NEXT_10]]
61 ; CHECK-NEXT:    [[INDVARS_IV_NEXT_11:%.*]] = add nuw nsw i64 [[INDVARS_IV]], 12
62 ; CHECK-NEXT:    [[ARRAYIDX_12:%.*]] = getelementptr inbounds i32, ptr [[ARY]], i64 [[INDVARS_IV_NEXT_11]]
63 ; CHECK-NEXT:    [[VAL_12:%.*]] = load i32, ptr [[ARRAYIDX_12]], align 4
64 ; CHECK-NEXT:    [[SUM_NEXT_12:%.*]] = add nsw i32 [[VAL_12]], [[SUM_NEXT_11]]
65 ; CHECK-NEXT:    [[INDVARS_IV_NEXT_12:%.*]] = add nuw nsw i64 [[INDVARS_IV]], 13
66 ; CHECK-NEXT:    [[ARRAYIDX_13:%.*]] = getelementptr inbounds i32, ptr [[ARY]], i64 [[INDVARS_IV_NEXT_12]]
67 ; CHECK-NEXT:    [[VAL_13:%.*]] = load i32, ptr [[ARRAYIDX_13]], align 4
68 ; CHECK-NEXT:    [[SUM_NEXT_13:%.*]] = add nsw i32 [[VAL_13]], [[SUM_NEXT_12]]
69 ; CHECK-NEXT:    [[INDVARS_IV_NEXT_13:%.*]] = add nuw nsw i64 [[INDVARS_IV]], 14
70 ; CHECK-NEXT:    [[ARRAYIDX_14:%.*]] = getelementptr inbounds i32, ptr [[ARY]], i64 [[INDVARS_IV_NEXT_13]]
71 ; CHECK-NEXT:    [[VAL_14:%.*]] = load i32, ptr [[ARRAYIDX_14]], align 4
72 ; CHECK-NEXT:    [[SUM_NEXT_14:%.*]] = add nsw i32 [[VAL_14]], [[SUM_NEXT_13]]
73 ; CHECK-NEXT:    [[INDVARS_IV_NEXT_14:%.*]] = add nuw nsw i64 [[INDVARS_IV]], 15
74 ; CHECK-NEXT:    [[ARRAYIDX_15:%.*]] = getelementptr inbounds i32, ptr [[ARY]], i64 [[INDVARS_IV_NEXT_14]]
75 ; CHECK-NEXT:    [[VAL_15:%.*]] = load i32, ptr [[ARRAYIDX_15]], align 4
76 ; CHECK-NEXT:    [[SUM_NEXT_127]] = add nsw i32 [[VAL_15]], [[SUM_NEXT_14]]
77 ; CHECK-NEXT:    [[INDVARS_IV_NEXT_127]] = add nuw nsw i64 [[INDVARS_IV]], 16
78 ; CHECK-NEXT:    [[EXITCOND_NOT_127:%.*]] = icmp eq i64 [[INDVARS_IV_NEXT_127]], 8192
79 ; CHECK-NEXT:    br i1 [[EXITCOND_NOT_127]], label [[FOR_COND_CLEANUP:%.*]], label [[FOR_BODY]]
80 ; CHECK:       for.cond.cleanup:
81 ; CHECK-NEXT:    [[SUM_NEXT_LCSSA:%.*]] = phi i32 [ [[SUM_NEXT_127]], [[FOR_BODY]] ]
82 ; CHECK-NEXT:    ret i32 [[SUM_NEXT_LCSSA]]
84 entry:
85   br label %for.body
87 for.body:
88   %indvars.iv = phi i64 [ 0, %entry ], [ %indvars.iv.next, %for.body ]
89   %sum = phi i32 [ 0, %entry ], [ %sum.next, %for.body ]
90   %arrayidx = getelementptr inbounds i32, ptr %ary, i64 %indvars.iv
91   %val = load i32, ptr %arrayidx, align 4
92   %sum.next = add nsw i32 %val, %sum
93   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
94   %exitcond.not = icmp eq i64 %indvars.iv.next, 8192
95   br i1 %exitcond.not, label %for.cond.cleanup, label %for.body
97 for.cond.cleanup:
98   ret i32 %sum.next
101 define i32 @test2(ptr %ary, i64 %n) "target-cpu"="znver3" {
102 ; CHECK-LABEL: define i32 @test2(
103 ; CHECK-SAME: ptr [[ARY:%.*]], i64 [[N:%.*]]) #[[ATTR0]] {
104 ; CHECK-NEXT:  entry:
105 ; CHECK-NEXT:    br label [[FOR_BODY:%.*]]
106 ; CHECK:       for.body:
107 ; CHECK-NEXT:    [[INDVARS_IV_EPIL:%.*]] = phi i64 [ 0, [[ENTRY:%.*]] ], [ [[INDVARS_IV_NEXT_EPIL:%.*]], [[FOR_BODY]] ]
108 ; CHECK-NEXT:    [[SUM_EPIL:%.*]] = phi i32 [ 0, [[ENTRY]] ], [ [[SUM_NEXT_EPIL:%.*]], [[FOR_BODY]] ]
109 ; CHECK-NEXT:    [[ARRAYIDX_EPIL:%.*]] = getelementptr inbounds i32, ptr [[ARY]], i64 [[INDVARS_IV_EPIL]]
110 ; CHECK-NEXT:    [[VAL_EPIL:%.*]] = load i32, ptr [[ARRAYIDX_EPIL]], align 4
111 ; CHECK-NEXT:    [[DUMMY21:%.*]] = mul i32 [[VAL_EPIL]], [[VAL_EPIL]]
112 ; CHECK-NEXT:    [[DUMMY27:%.*]] = mul i32 [[DUMMY21]], [[DUMMY21]]
113 ; CHECK-NEXT:    [[DUMMY28:%.*]] = mul i32 [[DUMMY27]], [[DUMMY27]]
114 ; CHECK-NEXT:    [[DUMMY4:%.*]] = mul i32 [[DUMMY28]], [[DUMMY28]]
115 ; CHECK-NEXT:    [[DUMMY5:%.*]] = mul i32 [[DUMMY4]], [[DUMMY4]]
116 ; CHECK-NEXT:    [[DUMMY6:%.*]] = mul i32 [[DUMMY5]], [[DUMMY5]]
117 ; CHECK-NEXT:    [[DUMMY7:%.*]] = mul i32 [[DUMMY6]], [[DUMMY6]]
118 ; CHECK-NEXT:    [[DUMMY8:%.*]] = mul i32 [[DUMMY7]], [[DUMMY7]]
119 ; CHECK-NEXT:    [[DUMMY9:%.*]] = mul i32 [[DUMMY8]], [[DUMMY8]]
120 ; CHECK-NEXT:    [[DUMMY10:%.*]] = mul i32 [[DUMMY9]], [[DUMMY9]]
121 ; CHECK-NEXT:    [[DUMMY29:%.*]] = mul i32 [[DUMMY10]], [[DUMMY10]]
122 ; CHECK-NEXT:    [[DUMMY30:%.*]] = mul i32 [[DUMMY29]], [[DUMMY29]]
123 ; CHECK-NEXT:    [[DUMMY39:%.*]] = mul i32 [[DUMMY30]], [[DUMMY30]]
124 ; CHECK-NEXT:    [[DUMMY40:%.*]] = mul i32 [[DUMMY39]], [[DUMMY39]]
125 ; CHECK-NEXT:    [[DUMMY15:%.*]] = mul i32 [[DUMMY40]], [[DUMMY40]]
126 ; CHECK-NEXT:    [[DUMMY16:%.*]] = mul i32 [[DUMMY15]], [[DUMMY15]]
127 ; CHECK-NEXT:    [[DUMMY17:%.*]] = mul i32 [[DUMMY16]], [[DUMMY16]]
128 ; CHECK-NEXT:    [[DUMMY18:%.*]] = mul i32 [[DUMMY17]], [[DUMMY17]]
129 ; CHECK-NEXT:    [[DUMMY19:%.*]] = mul i32 [[DUMMY18]], [[DUMMY18]]
130 ; CHECK-NEXT:    [[DUMMY20:%.*]] = mul i32 [[DUMMY19]], [[DUMMY19]]
131 ; CHECK-NEXT:    [[VAL:%.*]] = mul i32 [[DUMMY20]], [[DUMMY20]]
132 ; CHECK-NEXT:    [[DUMMY1:%.*]] = mul i32 [[VAL]], [[VAL]]
133 ; CHECK-NEXT:    [[DUMMY2:%.*]] = mul i32 [[DUMMY1]], [[DUMMY1]]
134 ; CHECK-NEXT:    [[DUMMY3:%.*]] = mul i32 [[DUMMY2]], [[DUMMY2]]
135 ; CHECK-NEXT:    [[DUMMY41:%.*]] = mul i32 [[DUMMY3]], [[DUMMY3]]
136 ; CHECK-NEXT:    [[DUMMY26:%.*]] = mul i32 [[DUMMY41]], [[DUMMY41]]
137 ; CHECK-NEXT:    [[DUMMY11:%.*]] = mul i32 [[DUMMY26]], [[DUMMY26]]
138 ; CHECK-NEXT:    [[DUMMY12:%.*]] = mul i32 [[DUMMY11]], [[DUMMY11]]
139 ; CHECK-NEXT:    [[DUMMY13:%.*]] = mul i32 [[DUMMY12]], [[DUMMY12]]
140 ; CHECK-NEXT:    [[DUMMY14:%.*]] = mul i32 [[DUMMY13]], [[DUMMY13]]
141 ; CHECK-NEXT:    [[DUMMY31:%.*]] = mul i32 [[DUMMY14]], [[DUMMY14]]
142 ; CHECK-NEXT:    [[DUMMY32:%.*]] = mul i32 [[DUMMY31]], [[DUMMY31]]
143 ; CHECK-NEXT:    [[DUMMY22:%.*]] = mul i32 [[DUMMY32]], [[DUMMY32]]
144 ; CHECK-NEXT:    [[DUMMY23:%.*]] = mul i32 [[DUMMY22]], [[DUMMY22]]
145 ; CHECK-NEXT:    [[DUMMY24:%.*]] = mul i32 [[DUMMY23]], [[DUMMY23]]
146 ; CHECK-NEXT:    [[DUMMY25:%.*]] = mul i32 [[DUMMY24]], [[DUMMY24]]
147 ; CHECK-NEXT:    [[DUMMY37:%.*]] = mul i32 [[DUMMY25]], [[DUMMY25]]
148 ; CHECK-NEXT:    [[DUMMY38:%.*]] = mul i32 [[DUMMY37]], [[DUMMY37]]
149 ; CHECK-NEXT:    [[DUMMY33:%.*]] = mul i32 [[DUMMY38]], [[DUMMY38]]
150 ; CHECK-NEXT:    [[DUMMY34:%.*]] = mul i32 [[DUMMY33]], [[DUMMY33]]
151 ; CHECK-NEXT:    [[DUMMY35:%.*]] = mul i32 [[DUMMY34]], [[DUMMY34]]
152 ; CHECK-NEXT:    [[DUMMY36:%.*]] = mul i32 [[DUMMY35]], [[DUMMY35]]
153 ; CHECK-NEXT:    [[DUMMY43:%.*]] = mul i32 [[DUMMY36]], [[DUMMY36]]
154 ; CHECK-NEXT:    [[DUMMY44:%.*]] = mul i32 [[DUMMY43]], [[DUMMY43]]
155 ; CHECK-NEXT:    [[DUMMY45:%.*]] = mul i32 [[DUMMY44]], [[DUMMY44]]
156 ; CHECK-NEXT:    [[DUMMY46:%.*]] = mul i32 [[DUMMY45]], [[DUMMY45]]
157 ; CHECK-NEXT:    [[DUMMY47:%.*]] = mul i32 [[DUMMY46]], [[DUMMY46]]
158 ; CHECK-NEXT:    [[DUMMY48:%.*]] = mul i32 [[DUMMY47]], [[DUMMY47]]
159 ; CHECK-NEXT:    [[DUMMY49:%.*]] = mul i32 [[DUMMY48]], [[DUMMY48]]
160 ; CHECK-NEXT:    [[DUMMY50_EPIL:%.*]] = mul i32 [[DUMMY49]], [[DUMMY49]]
161 ; CHECK-NEXT:    [[SUM_NEXT_EPIL]] = add nsw i32 [[DUMMY50_EPIL]], [[SUM_EPIL]]
162 ; CHECK-NEXT:    [[INDVARS_IV_NEXT_EPIL]] = add nuw nsw i64 [[INDVARS_IV_EPIL]], 1
163 ; CHECK-NEXT:    [[EXITCOND_NOT_EPIL:%.*]] = icmp eq i64 [[INDVARS_IV_NEXT_EPIL]], [[N]]
164 ; CHECK-NEXT:    br i1 [[EXITCOND_NOT_EPIL]], label [[FOR_COND_CLEANUP:%.*]], label [[FOR_BODY]]
165 ; CHECK:       for.cond.cleanup:
166 ; CHECK-NEXT:    [[SUM_NEXT_LCSSA:%.*]] = phi i32 [ [[SUM_NEXT_EPIL]], [[FOR_BODY]] ]
167 ; CHECK-NEXT:    ret i32 [[SUM_NEXT_LCSSA]]
169 entry:
170   br label %for.body
172 for.body:
173   %indvars.iv = phi i64 [ 0, %entry ], [ %indvars.iv.next, %for.body ]
174   %sum = phi i32 [ 0, %entry ], [ %sum.next, %for.body ]
175   %arrayidx = getelementptr inbounds i32, ptr %ary, i64 %indvars.iv
176   %val = load i32, ptr %arrayidx, align 4
177   %dummy1 = mul i32 %val, %val
178   %dummy2 = mul i32 %dummy1, %dummy1
179   %dummy3 = mul i32 %dummy2, %dummy2
180   %dummy4 = mul i32 %dummy3, %dummy3
181   %dummy5 = mul i32 %dummy4, %dummy4
182   %dummy6 = mul i32 %dummy5, %dummy5
183   %dummy7 = mul i32 %dummy6, %dummy6
184   %dummy8 = mul i32 %dummy7, %dummy7
185   %dummy9 = mul i32 %dummy8, %dummy8
186   %dummy10 = mul i32 %dummy9, %dummy9
187   %dummy11 = mul i32 %dummy10, %dummy10
188   %dummy12 = mul i32 %dummy11, %dummy11
189   %dummy13 = mul i32 %dummy12, %dummy12
190   %dummy14 = mul i32 %dummy13, %dummy13
191   %dummy15 = mul i32 %dummy14, %dummy14
192   %dummy16 = mul i32 %dummy15, %dummy15
193   %dummy17 = mul i32 %dummy16, %dummy16
194   %dummy18 = mul i32 %dummy17, %dummy17
195   %dummy19 = mul i32 %dummy18, %dummy18
196   %dummy20 = mul i32 %dummy19, %dummy19
197   %dummy21 = mul i32 %dummy20, %dummy20
198   %dummy22 = mul i32 %dummy21, %dummy21
199   %dummy23 = mul i32 %dummy22, %dummy22
200   %dummy24 = mul i32 %dummy23, %dummy23
201   %dummy25 = mul i32 %dummy24, %dummy24
202   %dummy26 = mul i32 %dummy25, %dummy25
203   %dummy27 = mul i32 %dummy26, %dummy26
204   %dummy28 = mul i32 %dummy27, %dummy27
205   %dummy29 = mul i32 %dummy28, %dummy28
206   %dummy30 = mul i32 %dummy29, %dummy29
207   %dummy31 = mul i32 %dummy30, %dummy30
208   %dummy32 = mul i32 %dummy31, %dummy31
209   %dummy33 = mul i32 %dummy32, %dummy32
210   %dummy34 = mul i32 %dummy33, %dummy33
211   %dummy35 = mul i32 %dummy34, %dummy34
212   %dummy36 = mul i32 %dummy35, %dummy35
213   %dummy37 = mul i32 %dummy36, %dummy36
214   %dummy38 = mul i32 %dummy37, %dummy37
215   %dummy39 = mul i32 %dummy38, %dummy38
216   %dummy40 = mul i32 %dummy39, %dummy39
217   %dummy41 = mul i32 %dummy40, %dummy40
218   %dummy42 = mul i32 %dummy41, %dummy41
219   %dummy43 = mul i32 %dummy42, %dummy42
220   %dummy44 = mul i32 %dummy43, %dummy43
221   %dummy45 = mul i32 %dummy44, %dummy44
222   %dummy46 = mul i32 %dummy45, %dummy45
223   %dummy47 = mul i32 %dummy46, %dummy46
224   %dummy48 = mul i32 %dummy47, %dummy47
225   %dummy49 = mul i32 %dummy48, %dummy48
226   %dummy50 = mul i32 %dummy49, %dummy49
227   %sum.next = add nsw i32 %dummy50, %sum
228   %indvars.iv.next = add nuw nsw i64 %indvars.iv, 1
229   %exitcond.not = icmp eq i64 %indvars.iv.next, %n
230   br i1 %exitcond.not, label %for.cond.cleanup, label %for.body
232 for.cond.cleanup:
233   ret i32 %sum.next