1 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
2 ; RUN: llc < %s -mtriple=i386-unknown | FileCheck %s --check-prefix=X32
3 ; RUN: llc < %s -mtriple=x86_64-unknown | FileCheck %s --check-prefix=X64
5 define void @test_512(i512* %a, i512* %b, i512* %out) nounwind {
10 ; X32-NEXT: pushl %edi
11 ; X32-NEXT: pushl %esi
12 ; X32-NEXT: subl $180, %esp
13 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
14 ; X32-NEXT: movl {{[0-9]+}}(%esp), %edx
15 ; X32-NEXT: movl 28(%edx), %ecx
16 ; X32-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
17 ; X32-NEXT: movl 24(%edx), %ebp
18 ; X32-NEXT: movl %ebp, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
19 ; X32-NEXT: movl (%eax), %edi
20 ; X32-NEXT: movl %edi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
21 ; X32-NEXT: movl %ebp, %eax
23 ; X32-NEXT: movl %edx, %esi
24 ; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
25 ; X32-NEXT: movl %ecx, %eax
27 ; X32-NEXT: movl %edx, %edi
28 ; X32-NEXT: movl %eax, %ebx
29 ; X32-NEXT: addl %esi, %ebx
30 ; X32-NEXT: adcl $0, %edi
31 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
32 ; X32-NEXT: movl 4(%eax), %ecx
33 ; X32-NEXT: movl %ebp, %eax
35 ; X32-NEXT: movl %ecx, %ebp
36 ; X32-NEXT: movl %edx, %esi
37 ; X32-NEXT: addl %ebx, %eax
38 ; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
39 ; X32-NEXT: adcl %edi, %esi
41 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
43 ; X32-NEXT: addl %esi, %eax
44 ; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
45 ; X32-NEXT: movzbl %cl, %eax
46 ; X32-NEXT: adcl %eax, %edx
47 ; X32-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
48 ; X32-NEXT: movl {{[0-9]+}}(%esp), %ecx
49 ; X32-NEXT: movl 16(%ecx), %ebx
50 ; X32-NEXT: movl %ebx, %eax
51 ; X32-NEXT: movl %ebx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
52 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Reload
54 ; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
55 ; X32-NEXT: movl %edx, %esi
56 ; X32-NEXT: movl 20(%ecx), %eax
57 ; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
59 ; X32-NEXT: movl %edx, %edi
60 ; X32-NEXT: movl %eax, %ecx
61 ; X32-NEXT: addl %esi, %ecx
62 ; X32-NEXT: adcl $0, %edi
63 ; X32-NEXT: movl %ebx, %eax
64 ; X32-NEXT: movl %ebp, %esi
65 ; X32-NEXT: movl %ebp, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
67 ; X32-NEXT: movl %edx, %ebp
68 ; X32-NEXT: addl %ecx, %eax
69 ; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
70 ; X32-NEXT: adcl %edi, %ebp
72 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ebx # 4-byte Reload
73 ; X32-NEXT: movl %ebx, %eax
75 ; X32-NEXT: movl %eax, %esi
76 ; X32-NEXT: addl %ebp, %esi
77 ; X32-NEXT: movzbl %cl, %eax
78 ; X32-NEXT: adcl %eax, %edx
79 ; X32-NEXT: addl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Folded Reload
80 ; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Folded Reload
81 ; X32-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
82 ; X32-NEXT: adcl $0, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill
83 ; X32-NEXT: adcl $0, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill
84 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
85 ; X32-NEXT: movl 8(%eax), %ebp
86 ; X32-NEXT: movl %ebp, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
87 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Reload
88 ; X32-NEXT: movl %edi, %eax
90 ; X32-NEXT: movl %edx, %ecx
91 ; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
92 ; X32-NEXT: movl %ebx, %eax
94 ; X32-NEXT: movl %edx, %ebp
95 ; X32-NEXT: movl %eax, %ebx
96 ; X32-NEXT: addl %ecx, %ebx
97 ; X32-NEXT: adcl $0, %ebp
98 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
99 ; X32-NEXT: movl 12(%eax), %ecx
100 ; X32-NEXT: movl %edi, %eax
101 ; X32-NEXT: mull %ecx
102 ; X32-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
103 ; X32-NEXT: movl %edx, %edi
104 ; X32-NEXT: addl %ebx, %eax
105 ; X32-NEXT: movl %eax, %ebx
106 ; X32-NEXT: adcl %ebp, %edi
107 ; X32-NEXT: setb {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Folded Spill
108 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
109 ; X32-NEXT: mull %ecx
110 ; X32-NEXT: movl %eax, %ecx
111 ; X32-NEXT: addl %edi, %ecx
112 ; X32-NEXT: movzbl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 1-byte Folded Reload
113 ; X32-NEXT: adcl %eax, %edx
114 ; X32-NEXT: addl %esi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill
115 ; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %ebx # 4-byte Folded Reload
116 ; X32-NEXT: movl %ebx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
117 ; X32-NEXT: adcl $0, %ecx
118 ; X32-NEXT: adcl $0, %edx
119 ; X32-NEXT: addl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Folded Reload
120 ; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Folded Reload
121 ; X32-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
122 ; X32-NEXT: setb {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Folded Spill
123 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Reload
124 ; X32-NEXT: movl %esi, %eax
125 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Reload
126 ; X32-NEXT: mull %edi
127 ; X32-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
128 ; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
129 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
130 ; X32-NEXT: mull %edi
131 ; X32-NEXT: movl %edx, %ebp
132 ; X32-NEXT: movl %eax, %ebx
133 ; X32-NEXT: addl {{[-0-9]+}}(%e{{[sb]}}p), %ebx # 4-byte Folded Reload
134 ; X32-NEXT: adcl $0, %ebp
135 ; X32-NEXT: movl %esi, %eax
136 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Reload
137 ; X32-NEXT: mull %edi
138 ; X32-NEXT: movl %edx, %esi
139 ; X32-NEXT: addl %ebx, %eax
140 ; X32-NEXT: movl %eax, %ebx
141 ; X32-NEXT: adcl %ebp, %esi
142 ; X32-NEXT: setb {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Folded Spill
143 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
144 ; X32-NEXT: mull %edi
145 ; X32-NEXT: addl %esi, %eax
146 ; X32-NEXT: movzbl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 1-byte Folded Reload
147 ; X32-NEXT: adcl %esi, %edx
148 ; X32-NEXT: addl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill
149 ; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %ebx # 4-byte Folded Reload
150 ; X32-NEXT: movl %ebx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
151 ; X32-NEXT: movzbl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 1-byte Folded Reload
152 ; X32-NEXT: adcl %ecx, %eax
153 ; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
154 ; X32-NEXT: adcl $0, %edx
155 ; X32-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
156 ; X32-NEXT: movl {{[0-9]+}}(%esp), %ecx
157 ; X32-NEXT: movl 8(%ecx), %ebx
158 ; X32-NEXT: movl %ebx, %eax
159 ; X32-NEXT: movl %ebx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
160 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Reload
161 ; X32-NEXT: mull %esi
162 ; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
163 ; X32-NEXT: movl %edx, %ebp
164 ; X32-NEXT: movl 12(%ecx), %ecx
165 ; X32-NEXT: movl %ecx, %eax
166 ; X32-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
167 ; X32-NEXT: mull %esi
168 ; X32-NEXT: movl %edx, %esi
169 ; X32-NEXT: movl %eax, %edi
170 ; X32-NEXT: addl %ebp, %edi
171 ; X32-NEXT: adcl $0, %esi
172 ; X32-NEXT: movl %ebx, %eax
173 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ebx # 4-byte Reload
174 ; X32-NEXT: mull %ebx
175 ; X32-NEXT: movl %edx, %ebp
176 ; X32-NEXT: addl %edi, %eax
177 ; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
178 ; X32-NEXT: adcl %esi, %ebp
179 ; X32-NEXT: setb {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Folded Spill
180 ; X32-NEXT: movl %ecx, %eax
181 ; X32-NEXT: mull %ebx
182 ; X32-NEXT: addl %ebp, %eax
183 ; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
184 ; X32-NEXT: movzbl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 1-byte Folded Reload
185 ; X32-NEXT: adcl %eax, %edx
186 ; X32-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
187 ; X32-NEXT: movl {{[0-9]+}}(%esp), %ecx
188 ; X32-NEXT: movl (%ecx), %esi
189 ; X32-NEXT: movl %esi, %eax
190 ; X32-NEXT: movl %esi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
191 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Reload
192 ; X32-NEXT: mull %edi
193 ; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
194 ; X32-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
195 ; X32-NEXT: movl 4(%ecx), %eax
196 ; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
197 ; X32-NEXT: mull %edi
198 ; X32-NEXT: movl %edx, %edi
199 ; X32-NEXT: movl %eax, %ebp
200 ; X32-NEXT: addl {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Folded Reload
201 ; X32-NEXT: adcl $0, %edi
202 ; X32-NEXT: movl %esi, %eax
203 ; X32-NEXT: mull %ebx
204 ; X32-NEXT: movl %ebx, %esi
205 ; X32-NEXT: movl %edx, %ecx
206 ; X32-NEXT: addl %ebp, %eax
207 ; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
208 ; X32-NEXT: adcl %edi, %ecx
210 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Reload
211 ; X32-NEXT: movl %ebp, %eax
212 ; X32-NEXT: mull %esi
213 ; X32-NEXT: movl %eax, %esi
214 ; X32-NEXT: addl %ecx, %esi
215 ; X32-NEXT: movzbl %bl, %eax
216 ; X32-NEXT: adcl %eax, %edx
217 ; X32-NEXT: addl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Folded Reload
218 ; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Folded Reload
219 ; X32-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
220 ; X32-NEXT: adcl $0, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill
221 ; X32-NEXT: adcl $0, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill
222 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
223 ; X32-NEXT: movl %ecx, %eax
224 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Reload
225 ; X32-NEXT: mull %edi
226 ; X32-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
227 ; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
228 ; X32-NEXT: movl %ebp, %eax
229 ; X32-NEXT: mull %edi
230 ; X32-NEXT: movl %edx, %ebp
231 ; X32-NEXT: movl %eax, %ebx
232 ; X32-NEXT: addl {{[-0-9]+}}(%e{{[sb]}}p), %ebx # 4-byte Folded Reload
233 ; X32-NEXT: adcl $0, %ebp
234 ; X32-NEXT: movl %ecx, %eax
235 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
236 ; X32-NEXT: mull %ecx
237 ; X32-NEXT: movl %edx, %edi
238 ; X32-NEXT: addl %ebx, %eax
239 ; X32-NEXT: movl %eax, %ebx
240 ; X32-NEXT: adcl %ebp, %edi
241 ; X32-NEXT: setb {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Folded Spill
242 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
243 ; X32-NEXT: mull %ecx
244 ; X32-NEXT: movl %eax, %ebp
245 ; X32-NEXT: addl %edi, %ebp
246 ; X32-NEXT: movzbl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 1-byte Folded Reload
247 ; X32-NEXT: adcl %eax, %edx
248 ; X32-NEXT: addl %esi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill
249 ; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %ebx # 4-byte Folded Reload
250 ; X32-NEXT: movl %ebx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
251 ; X32-NEXT: adcl $0, %ebp
252 ; X32-NEXT: adcl $0, %edx
253 ; X32-NEXT: addl {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Folded Reload
254 ; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Folded Reload
255 ; X32-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
256 ; X32-NEXT: setb {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Folded Spill
257 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Reload
258 ; X32-NEXT: movl %esi, %eax
259 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
260 ; X32-NEXT: mull %ecx
261 ; X32-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
262 ; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
263 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
264 ; X32-NEXT: mull %ecx
265 ; X32-NEXT: movl %edx, %edi
266 ; X32-NEXT: movl %eax, %ebx
267 ; X32-NEXT: addl {{[-0-9]+}}(%e{{[sb]}}p), %ebx # 4-byte Folded Reload
268 ; X32-NEXT: adcl $0, %edi
269 ; X32-NEXT: movl %esi, %eax
270 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
271 ; X32-NEXT: mull %ecx
272 ; X32-NEXT: movl %edx, %esi
273 ; X32-NEXT: addl %ebx, %eax
274 ; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
275 ; X32-NEXT: adcl %edi, %esi
277 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
278 ; X32-NEXT: mull %ecx
279 ; X32-NEXT: addl %esi, %eax
280 ; X32-NEXT: movzbl %bl, %ecx
281 ; X32-NEXT: movl %edx, %esi
282 ; X32-NEXT: adcl %ecx, %esi
283 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
284 ; X32-NEXT: addl %ebp, %ecx
285 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Reload
286 ; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Folded Reload
287 ; X32-NEXT: movzbl {{[-0-9]+}}(%e{{[sb]}}p), %edi # 1-byte Folded Reload
288 ; X32-NEXT: adcl %edi, %eax
289 ; X32-NEXT: adcl $0, %esi
290 ; X32-NEXT: addl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Folded Reload
291 ; X32-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
292 ; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Folded Reload
293 ; X32-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
294 ; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Folded Reload
295 ; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
296 ; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Folded Reload
297 ; X32-NEXT: movl %esi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
298 ; X32-NEXT: adcl $0, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill
299 ; X32-NEXT: adcl $0, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill
300 ; X32-NEXT: adcl $0, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill
301 ; X32-NEXT: adcl $0, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill
302 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
303 ; X32-NEXT: movl 16(%eax), %esi
304 ; X32-NEXT: movl %esi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
305 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ebx # 4-byte Reload
306 ; X32-NEXT: movl %ebx, %eax
307 ; X32-NEXT: mull %esi
308 ; X32-NEXT: movl %edx, %ecx
309 ; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
310 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Reload
311 ; X32-NEXT: movl %ebp, %eax
312 ; X32-NEXT: mull %esi
313 ; X32-NEXT: movl %edx, %esi
314 ; X32-NEXT: movl %eax, %edi
315 ; X32-NEXT: addl %ecx, %edi
316 ; X32-NEXT: adcl $0, %esi
317 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
318 ; X32-NEXT: movl 20(%eax), %ecx
319 ; X32-NEXT: movl %ebx, %eax
320 ; X32-NEXT: mull %ecx
321 ; X32-NEXT: movl %ecx, %ebx
322 ; X32-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
323 ; X32-NEXT: movl %edx, %ecx
324 ; X32-NEXT: addl %edi, %eax
325 ; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
326 ; X32-NEXT: adcl %esi, %ecx
327 ; X32-NEXT: setb {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Folded Spill
328 ; X32-NEXT: movl %ebp, %eax
329 ; X32-NEXT: mull %ebx
330 ; X32-NEXT: addl %ecx, %eax
331 ; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
332 ; X32-NEXT: movzbl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 1-byte Folded Reload
333 ; X32-NEXT: adcl %eax, %edx
334 ; X32-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
335 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Reload
336 ; X32-NEXT: movl %ebp, %eax
337 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Reload
338 ; X32-NEXT: mull %esi
339 ; X32-NEXT: movl %edx, %ecx
340 ; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
341 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Reload
342 ; X32-NEXT: movl %edi, %eax
343 ; X32-NEXT: mull %esi
344 ; X32-NEXT: movl %edx, %esi
345 ; X32-NEXT: movl %eax, %ebx
346 ; X32-NEXT: addl %ecx, %ebx
347 ; X32-NEXT: adcl $0, %esi
348 ; X32-NEXT: movl %ebp, %eax
349 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
350 ; X32-NEXT: mull %ecx
351 ; X32-NEXT: movl %edx, %ebp
352 ; X32-NEXT: addl %ebx, %eax
353 ; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
354 ; X32-NEXT: adcl %esi, %ebp
356 ; X32-NEXT: movl %edi, %eax
357 ; X32-NEXT: mull %ecx
358 ; X32-NEXT: movl %eax, %ecx
359 ; X32-NEXT: addl %ebp, %ecx
360 ; X32-NEXT: movzbl %bl, %eax
361 ; X32-NEXT: adcl %eax, %edx
362 ; X32-NEXT: addl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Folded Reload
363 ; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Folded Reload
364 ; X32-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
365 ; X32-NEXT: adcl $0, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill
366 ; X32-NEXT: adcl $0, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill
367 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
368 ; X32-NEXT: movl 24(%eax), %ebx
369 ; X32-NEXT: movl %ebx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
370 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Reload
371 ; X32-NEXT: movl %esi, %eax
372 ; X32-NEXT: mull %ebx
373 ; X32-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
374 ; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
375 ; X32-NEXT: movl %edi, %eax
376 ; X32-NEXT: mull %ebx
377 ; X32-NEXT: movl %edx, %ebp
378 ; X32-NEXT: movl %eax, %edi
379 ; X32-NEXT: addl {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Folded Reload
380 ; X32-NEXT: adcl $0, %ebp
381 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
382 ; X32-NEXT: movl 28(%eax), %ebx
383 ; X32-NEXT: movl %esi, %eax
384 ; X32-NEXT: mull %ebx
385 ; X32-NEXT: movl %edx, %esi
386 ; X32-NEXT: addl %edi, %eax
387 ; X32-NEXT: movl %eax, %edi
388 ; X32-NEXT: adcl %ebp, %esi
389 ; X32-NEXT: setb {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Folded Spill
390 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
391 ; X32-NEXT: mull %ebx
392 ; X32-NEXT: movl %ebx, %ebp
393 ; X32-NEXT: movl %eax, %ebx
394 ; X32-NEXT: addl %esi, %ebx
395 ; X32-NEXT: movzbl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 1-byte Folded Reload
396 ; X32-NEXT: adcl %eax, %edx
397 ; X32-NEXT: addl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill
398 ; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Folded Reload
399 ; X32-NEXT: movl %edi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
400 ; X32-NEXT: adcl $0, %ebx
401 ; X32-NEXT: adcl $0, %edx
402 ; X32-NEXT: addl {{[-0-9]+}}(%e{{[sb]}}p), %ebx # 4-byte Folded Reload
403 ; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Folded Reload
404 ; X32-NEXT: movl %edx, (%esp) # 4-byte Spill
405 ; X32-NEXT: setb {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Folded Spill
406 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
407 ; X32-NEXT: movl %ecx, %eax
408 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Reload
409 ; X32-NEXT: mull %esi
410 ; X32-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
411 ; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
412 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
413 ; X32-NEXT: mull %esi
414 ; X32-NEXT: movl %edx, %esi
415 ; X32-NEXT: movl %eax, %edi
416 ; X32-NEXT: addl {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Folded Reload
417 ; X32-NEXT: adcl $0, %esi
418 ; X32-NEXT: movl %ecx, %eax
419 ; X32-NEXT: movl %ebp, %ecx
420 ; X32-NEXT: movl %ebp, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
421 ; X32-NEXT: mull %ebp
422 ; X32-NEXT: movl %edx, %ebp
423 ; X32-NEXT: addl %edi, %eax
424 ; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
425 ; X32-NEXT: adcl %esi, %ebp
426 ; X32-NEXT: setb {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Folded Spill
427 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
428 ; X32-NEXT: mull %ecx
429 ; X32-NEXT: addl %ebp, %eax
430 ; X32-NEXT: movzbl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 1-byte Folded Reload
431 ; X32-NEXT: adcl %ecx, %edx
432 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Reload
433 ; X32-NEXT: addl %ebx, %edi
434 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ebx # 4-byte Reload
435 ; X32-NEXT: adcl (%esp), %ebx # 4-byte Folded Reload
436 ; X32-NEXT: movzbl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 1-byte Folded Reload
437 ; X32-NEXT: adcl %ecx, %eax
438 ; X32-NEXT: adcl $0, %edx
439 ; X32-NEXT: movl %edx, %esi
440 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
441 ; X32-NEXT: addl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill
442 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
443 ; X32-NEXT: adcl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill
444 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
445 ; X32-NEXT: adcl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill
446 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
447 ; X32-NEXT: adcl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill
448 ; X32-NEXT: movl %edi, %edx
449 ; X32-NEXT: adcl $0, %edx
450 ; X32-NEXT: movl %ebx, %ecx
451 ; X32-NEXT: adcl $0, %ecx
452 ; X32-NEXT: adcl $0, %eax
453 ; X32-NEXT: adcl $0, %esi
454 ; X32-NEXT: addl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Folded Reload
455 ; X32-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
456 ; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Folded Reload
457 ; X32-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
458 ; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Folded Reload
459 ; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
460 ; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Folded Reload
461 ; X32-NEXT: movl %esi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
462 ; X32-NEXT: setb {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Folded Spill
463 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Reload
464 ; X32-NEXT: movl %edi, %eax
465 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Reload
466 ; X32-NEXT: mull %esi
467 ; X32-NEXT: movl %edx, %ecx
468 ; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
469 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Reload
470 ; X32-NEXT: movl %ebp, %eax
471 ; X32-NEXT: mull %esi
472 ; X32-NEXT: movl %edx, %esi
473 ; X32-NEXT: movl %eax, %ebx
474 ; X32-NEXT: addl %ecx, %ebx
475 ; X32-NEXT: adcl $0, %esi
476 ; X32-NEXT: movl %edi, %eax
477 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Reload
478 ; X32-NEXT: mull %edi
479 ; X32-NEXT: movl %edx, %ecx
480 ; X32-NEXT: addl %ebx, %eax
481 ; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
482 ; X32-NEXT: adcl %esi, %ecx
484 ; X32-NEXT: movl %ebp, %eax
485 ; X32-NEXT: mull %edi
486 ; X32-NEXT: addl %ecx, %eax
487 ; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
488 ; X32-NEXT: movzbl %bl, %eax
489 ; X32-NEXT: adcl %eax, %edx
490 ; X32-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
491 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Reload
492 ; X32-NEXT: movl %edi, %eax
493 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Reload
494 ; X32-NEXT: mull %esi
495 ; X32-NEXT: movl %edx, %ecx
496 ; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
497 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Reload
498 ; X32-NEXT: movl %ebp, %eax
499 ; X32-NEXT: mull %esi
500 ; X32-NEXT: movl %edx, %esi
501 ; X32-NEXT: movl %eax, %ebx
502 ; X32-NEXT: addl %ecx, %ebx
503 ; X32-NEXT: adcl $0, %esi
504 ; X32-NEXT: movl %edi, %eax
505 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
506 ; X32-NEXT: mull %ecx
507 ; X32-NEXT: movl %edx, %edi
508 ; X32-NEXT: addl %ebx, %eax
509 ; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
510 ; X32-NEXT: adcl %esi, %edi
512 ; X32-NEXT: movl %ebp, %eax
513 ; X32-NEXT: mull %ecx
514 ; X32-NEXT: movl %eax, %esi
515 ; X32-NEXT: addl %edi, %esi
516 ; X32-NEXT: movzbl %bl, %eax
517 ; X32-NEXT: adcl %eax, %edx
518 ; X32-NEXT: addl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Folded Reload
519 ; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Folded Reload
520 ; X32-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
521 ; X32-NEXT: adcl $0, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill
522 ; X32-NEXT: adcl $0, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill
523 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
524 ; X32-NEXT: movl %ecx, %eax
525 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Reload
526 ; X32-NEXT: mull %edi
527 ; X32-NEXT: movl %edx, (%esp) # 4-byte Spill
528 ; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
529 ; X32-NEXT: movl %ebp, %eax
530 ; X32-NEXT: mull %edi
531 ; X32-NEXT: movl %edx, %ebx
532 ; X32-NEXT: movl %eax, %ebp
533 ; X32-NEXT: addl (%esp), %ebp # 4-byte Folded Reload
534 ; X32-NEXT: adcl $0, %ebx
535 ; X32-NEXT: movl %ecx, %eax
536 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Reload
537 ; X32-NEXT: mull %edi
538 ; X32-NEXT: movl %edx, %ecx
539 ; X32-NEXT: addl %ebp, %eax
540 ; X32-NEXT: movl %eax, %ebp
541 ; X32-NEXT: adcl %ebx, %ecx
542 ; X32-NEXT: setb (%esp) # 1-byte Folded Spill
543 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
544 ; X32-NEXT: mull %edi
545 ; X32-NEXT: movl %edi, %ebx
546 ; X32-NEXT: movl %eax, %edi
547 ; X32-NEXT: addl %ecx, %edi
548 ; X32-NEXT: movzbl (%esp), %eax # 1-byte Folded Reload
549 ; X32-NEXT: adcl %eax, %edx
550 ; X32-NEXT: addl %esi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill
551 ; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Folded Reload
552 ; X32-NEXT: movl %ebp, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
553 ; X32-NEXT: adcl $0, %edi
554 ; X32-NEXT: adcl $0, %edx
555 ; X32-NEXT: addl {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Folded Reload
556 ; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Folded Reload
557 ; X32-NEXT: movl %edx, (%esp) # 4-byte Spill
558 ; X32-NEXT: setb {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Folded Spill
559 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
560 ; X32-NEXT: movl %ecx, %eax
561 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Reload
562 ; X32-NEXT: mull %esi
563 ; X32-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
564 ; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
565 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
566 ; X32-NEXT: mull %esi
567 ; X32-NEXT: movl %edx, %esi
568 ; X32-NEXT: movl %eax, %ebp
569 ; X32-NEXT: addl {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Folded Reload
570 ; X32-NEXT: adcl $0, %esi
571 ; X32-NEXT: movl %ecx, %eax
572 ; X32-NEXT: movl %ebx, %ecx
573 ; X32-NEXT: mull %ebx
574 ; X32-NEXT: movl %edx, %ebx
575 ; X32-NEXT: addl %ebp, %eax
576 ; X32-NEXT: movl %eax, %ebp
577 ; X32-NEXT: adcl %esi, %ebx
578 ; X32-NEXT: setb {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Folded Spill
579 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
580 ; X32-NEXT: mull %ecx
581 ; X32-NEXT: addl %ebx, %eax
582 ; X32-NEXT: movzbl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 1-byte Folded Reload
583 ; X32-NEXT: adcl %ecx, %edx
584 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
585 ; X32-NEXT: addl %edi, %ecx
586 ; X32-NEXT: adcl (%esp), %ebp # 4-byte Folded Reload
587 ; X32-NEXT: movzbl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 1-byte Folded Reload
588 ; X32-NEXT: adcl %esi, %eax
589 ; X32-NEXT: movl %eax, %esi
590 ; X32-NEXT: adcl $0, %edx
591 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
592 ; X32-NEXT: addl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill
593 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
594 ; X32-NEXT: adcl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill
595 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
596 ; X32-NEXT: adcl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill
597 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
598 ; X32-NEXT: adcl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill
599 ; X32-NEXT: movzbl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 1-byte Folded Reload
600 ; X32-NEXT: adcl %eax, %ecx
601 ; X32-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
602 ; X32-NEXT: adcl $0, %ebp
603 ; X32-NEXT: movl %ebp, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
604 ; X32-NEXT: adcl $0, %esi
605 ; X32-NEXT: movl %esi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
606 ; X32-NEXT: adcl $0, %edx
607 ; X32-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
608 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
609 ; X32-NEXT: movl 32(%eax), %edi
610 ; X32-NEXT: movl %edi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
611 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Reload
612 ; X32-NEXT: movl %esi, %eax
613 ; X32-NEXT: mull %edi
614 ; X32-NEXT: movl %edx, %ecx
615 ; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
616 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Reload
617 ; X32-NEXT: movl %ebp, %eax
618 ; X32-NEXT: mull %edi
619 ; X32-NEXT: movl %edx, %edi
620 ; X32-NEXT: movl %eax, %ebx
621 ; X32-NEXT: addl %ecx, %ebx
622 ; X32-NEXT: adcl $0, %edi
623 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
624 ; X32-NEXT: movl 36(%eax), %ecx
625 ; X32-NEXT: movl %esi, %eax
626 ; X32-NEXT: movl %ecx, %esi
627 ; X32-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
628 ; X32-NEXT: mull %ecx
629 ; X32-NEXT: movl %edx, %ecx
630 ; X32-NEXT: addl %ebx, %eax
631 ; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
632 ; X32-NEXT: adcl %edi, %ecx
634 ; X32-NEXT: movl %ebp, %eax
635 ; X32-NEXT: mull %esi
636 ; X32-NEXT: addl %ecx, %eax
637 ; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
638 ; X32-NEXT: movzbl %bl, %eax
639 ; X32-NEXT: adcl %eax, %edx
640 ; X32-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
641 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Reload
642 ; X32-NEXT: movl %esi, %eax
643 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Reload
644 ; X32-NEXT: mull %edi
645 ; X32-NEXT: movl %edx, %ecx
646 ; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
647 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ebx # 4-byte Reload
648 ; X32-NEXT: movl %ebx, %eax
649 ; X32-NEXT: mull %edi
650 ; X32-NEXT: movl %edx, %edi
651 ; X32-NEXT: movl %eax, %ebp
652 ; X32-NEXT: addl %ecx, %ebp
653 ; X32-NEXT: adcl $0, %edi
654 ; X32-NEXT: movl %esi, %eax
655 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
656 ; X32-NEXT: mull %ecx
657 ; X32-NEXT: movl %edx, %esi
658 ; X32-NEXT: addl %ebp, %eax
659 ; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
660 ; X32-NEXT: adcl %edi, %esi
661 ; X32-NEXT: setb (%esp) # 1-byte Folded Spill
662 ; X32-NEXT: movl %ebx, %eax
663 ; X32-NEXT: mull %ecx
664 ; X32-NEXT: movl %eax, %edi
665 ; X32-NEXT: addl %esi, %edi
666 ; X32-NEXT: movzbl (%esp), %eax # 1-byte Folded Reload
667 ; X32-NEXT: adcl %eax, %edx
668 ; X32-NEXT: addl {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Folded Reload
669 ; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Folded Reload
670 ; X32-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
671 ; X32-NEXT: adcl $0, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill
672 ; X32-NEXT: adcl $0, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill
673 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
674 ; X32-NEXT: movl 40(%eax), %esi
675 ; X32-NEXT: movl %esi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
676 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
677 ; X32-NEXT: movl %ecx, %eax
678 ; X32-NEXT: mull %esi
679 ; X32-NEXT: movl %edx, (%esp) # 4-byte Spill
680 ; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
681 ; X32-NEXT: movl %ebx, %eax
682 ; X32-NEXT: mull %esi
683 ; X32-NEXT: movl %edx, %ebp
684 ; X32-NEXT: movl %eax, %ebx
685 ; X32-NEXT: addl (%esp), %ebx # 4-byte Folded Reload
686 ; X32-NEXT: adcl $0, %ebp
687 ; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
688 ; X32-NEXT: movl 44(%eax), %esi
689 ; X32-NEXT: movl %esi, (%esp) # 4-byte Spill
690 ; X32-NEXT: movl %ecx, %eax
691 ; X32-NEXT: mull %esi
692 ; X32-NEXT: movl %edx, %ecx
693 ; X32-NEXT: addl %ebx, %eax
694 ; X32-NEXT: movl %eax, %ebx
695 ; X32-NEXT: adcl %ebp, %ecx
696 ; X32-NEXT: setb {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Folded Spill
697 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
698 ; X32-NEXT: mull %esi
699 ; X32-NEXT: movl %edx, %ebp
700 ; X32-NEXT: movl %eax, %esi
701 ; X32-NEXT: addl %ecx, %esi
702 ; X32-NEXT: movzbl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 1-byte Folded Reload
703 ; X32-NEXT: adcl %eax, %ebp
704 ; X32-NEXT: addl %edi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill
705 ; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %ebx # 4-byte Folded Reload
706 ; X32-NEXT: movl %ebx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
707 ; X32-NEXT: adcl $0, %esi
708 ; X32-NEXT: adcl $0, %ebp
709 ; X32-NEXT: addl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Folded Reload
710 ; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Folded Reload
711 ; X32-NEXT: setb {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Folded Spill
712 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
713 ; X32-NEXT: movl %ecx, %eax
714 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Reload
715 ; X32-NEXT: mull %edi
716 ; X32-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
717 ; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
718 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
719 ; X32-NEXT: mull %edi
720 ; X32-NEXT: movl %edx, %edi
721 ; X32-NEXT: movl %eax, %ebx
722 ; X32-NEXT: addl {{[-0-9]+}}(%e{{[sb]}}p), %ebx # 4-byte Folded Reload
723 ; X32-NEXT: adcl $0, %edi
724 ; X32-NEXT: movl %ecx, %eax
725 ; X32-NEXT: mull (%esp) # 4-byte Folded Reload
726 ; X32-NEXT: movl %edx, %ecx
727 ; X32-NEXT: addl %ebx, %eax
728 ; X32-NEXT: movl %eax, %ebx
729 ; X32-NEXT: adcl %edi, %ecx
730 ; X32-NEXT: setb {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Folded Spill
731 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
732 ; X32-NEXT: movl (%esp), %edi # 4-byte Reload
733 ; X32-NEXT: mull %edi
734 ; X32-NEXT: addl %ecx, %eax
735 ; X32-NEXT: movzbl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 1-byte Folded Reload
736 ; X32-NEXT: adcl %ecx, %edx
737 ; X32-NEXT: addl %esi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill
738 ; X32-NEXT: adcl %ebp, %ebx
739 ; X32-NEXT: movl %ebx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
740 ; X32-NEXT: movzbl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 1-byte Folded Reload
741 ; X32-NEXT: adcl %ecx, %eax
742 ; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
743 ; X32-NEXT: adcl $0, %edx
744 ; X32-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
745 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
746 ; X32-NEXT: movl %edi, %esi
747 ; X32-NEXT: imull %eax, %esi
748 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
749 ; X32-NEXT: mull %ecx
750 ; X32-NEXT: movl %eax, (%esp) # 4-byte Spill
751 ; X32-NEXT: addl %esi, %edx
752 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ebx # 4-byte Reload
753 ; X32-NEXT: imull %ebx, %ecx
754 ; X32-NEXT: addl %edx, %ecx
755 ; X32-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
756 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
757 ; X32-NEXT: movl %eax, %esi
758 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Reload
759 ; X32-NEXT: imull %edi, %esi
760 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Reload
761 ; X32-NEXT: mull %ebp
762 ; X32-NEXT: movl %eax, %ecx
763 ; X32-NEXT: addl %esi, %edx
764 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Reload
765 ; X32-NEXT: movl %ebp, %eax
766 ; X32-NEXT: imull %ebp, %esi
767 ; X32-NEXT: addl %edx, %esi
768 ; X32-NEXT: addl (%esp), %ecx # 4-byte Folded Reload
769 ; X32-NEXT: movl %ecx, (%esp) # 4-byte Spill
770 ; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Folded Reload
771 ; X32-NEXT: movl %esi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
772 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
773 ; X32-NEXT: mull %ecx
774 ; X32-NEXT: movl %edx, %ebp
775 ; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
776 ; X32-NEXT: movl %edi, %eax
777 ; X32-NEXT: mull %ecx
778 ; X32-NEXT: movl %edx, %esi
779 ; X32-NEXT: movl %eax, %edi
780 ; X32-NEXT: addl %ebp, %edi
781 ; X32-NEXT: adcl $0, %esi
782 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
783 ; X32-NEXT: mull %ebx
784 ; X32-NEXT: movl %ebx, %ebp
785 ; X32-NEXT: movl %edx, %ecx
786 ; X32-NEXT: addl %edi, %eax
787 ; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
788 ; X32-NEXT: adcl %esi, %ecx
790 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
791 ; X32-NEXT: mull %ebp
792 ; X32-NEXT: addl %ecx, %eax
793 ; X32-NEXT: movzbl %bl, %ecx
794 ; X32-NEXT: adcl %ecx, %edx
795 ; X32-NEXT: addl (%esp), %eax # 4-byte Folded Reload
796 ; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
797 ; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Folded Reload
798 ; X32-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
799 ; X32-NEXT: movl {{[0-9]+}}(%esp), %edi
800 ; X32-NEXT: movl 60(%edi), %ecx
801 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
802 ; X32-NEXT: imull %eax, %ecx
803 ; X32-NEXT: movl 56(%edi), %esi
804 ; X32-NEXT: movl %edi, %ebx
805 ; X32-NEXT: mull %esi
806 ; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
807 ; X32-NEXT: addl %ecx, %edx
808 ; X32-NEXT: imull {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Folded Reload
809 ; X32-NEXT: addl %edx, %esi
810 ; X32-NEXT: movl 48(%edi), %edi
811 ; X32-NEXT: movl 52(%ebx), %ebp
812 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
813 ; X32-NEXT: movl %eax, %ebx
814 ; X32-NEXT: imull %ebp, %ebx
815 ; X32-NEXT: movl %ebp, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
816 ; X32-NEXT: mull %edi
817 ; X32-NEXT: addl %ebx, %edx
818 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
819 ; X32-NEXT: imull %edi, %ecx
820 ; X32-NEXT: addl %edx, %ecx
821 ; X32-NEXT: addl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Folded Reload
822 ; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
823 ; X32-NEXT: adcl %esi, %ecx
824 ; X32-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
825 ; X32-NEXT: movl %edi, %eax
826 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
827 ; X32-NEXT: mull %ecx
828 ; X32-NEXT: movl %edx, %esi
829 ; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
830 ; X32-NEXT: movl %ebp, %eax
831 ; X32-NEXT: mull %ecx
832 ; X32-NEXT: movl %edx, %ebx
833 ; X32-NEXT: movl %eax, %ebp
834 ; X32-NEXT: addl %esi, %ebp
835 ; X32-NEXT: adcl $0, %ebx
836 ; X32-NEXT: movl %edi, %eax
837 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Reload
838 ; X32-NEXT: mull %esi
839 ; X32-NEXT: movl %edx, %ecx
840 ; X32-NEXT: movl %eax, %edi
841 ; X32-NEXT: addl %ebp, %edi
842 ; X32-NEXT: adcl %ebx, %ecx
844 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
845 ; X32-NEXT: mull %esi
846 ; X32-NEXT: addl %ecx, %eax
847 ; X32-NEXT: movzbl %bl, %ecx
848 ; X32-NEXT: adcl %ecx, %edx
849 ; X32-NEXT: addl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Folded Reload
850 ; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Folded Reload
851 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
852 ; X32-NEXT: addl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Folded Reload
853 ; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Folded Reload
854 ; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Folded Reload
855 ; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Folded Reload
856 ; X32-NEXT: addl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Folded Reload
857 ; X32-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
858 ; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Folded Reload
859 ; X32-NEXT: movl %edi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
860 ; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Folded Reload
861 ; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
862 ; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Folded Reload
863 ; X32-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
864 ; X32-NEXT: movl {{[0-9]+}}(%esp), %edi
865 ; X32-NEXT: movl 40(%edi), %ebp
866 ; X32-NEXT: movl %ebp, %eax
867 ; X32-NEXT: movl %ebp, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
868 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
869 ; X32-NEXT: mull %ecx
870 ; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
871 ; X32-NEXT: movl %edx, %esi
872 ; X32-NEXT: movl 44(%edi), %edi
873 ; X32-NEXT: movl %edi, %eax
874 ; X32-NEXT: movl %edi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
875 ; X32-NEXT: mull %ecx
876 ; X32-NEXT: movl %edx, %ebx
877 ; X32-NEXT: movl %eax, %ecx
878 ; X32-NEXT: addl %esi, %ecx
879 ; X32-NEXT: adcl $0, %ebx
880 ; X32-NEXT: movl %ebp, %eax
881 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Reload
882 ; X32-NEXT: mull %ebp
883 ; X32-NEXT: movl %edx, %esi
884 ; X32-NEXT: addl %ecx, %eax
885 ; X32-NEXT: movl %eax, (%esp) # 4-byte Spill
886 ; X32-NEXT: adcl %ebx, %esi
888 ; X32-NEXT: movl %edi, %eax
889 ; X32-NEXT: mull %ebp
890 ; X32-NEXT: addl %esi, %eax
891 ; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
892 ; X32-NEXT: movzbl %cl, %eax
893 ; X32-NEXT: adcl %eax, %edx
894 ; X32-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
895 ; X32-NEXT: movl {{[0-9]+}}(%esp), %ecx
896 ; X32-NEXT: movl 32(%ecx), %esi
897 ; X32-NEXT: movl %esi, %eax
898 ; X32-NEXT: movl %esi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
899 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Reload
900 ; X32-NEXT: mull %edi
901 ; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
902 ; X32-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
903 ; X32-NEXT: movl 36(%ecx), %ebp
904 ; X32-NEXT: movl %ebp, %eax
905 ; X32-NEXT: mull %edi
906 ; X32-NEXT: movl %edx, %ebx
907 ; X32-NEXT: movl %eax, %ecx
908 ; X32-NEXT: addl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Folded Reload
909 ; X32-NEXT: adcl $0, %ebx
910 ; X32-NEXT: movl %esi, %eax
911 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Reload
912 ; X32-NEXT: mull %esi
913 ; X32-NEXT: movl %edx, %edi
914 ; X32-NEXT: addl %ecx, %eax
915 ; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
916 ; X32-NEXT: adcl %ebx, %edi
918 ; X32-NEXT: movl %ebp, %eax
919 ; X32-NEXT: movl %ebp, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
920 ; X32-NEXT: mull %esi
921 ; X32-NEXT: movl %eax, %ebx
922 ; X32-NEXT: addl %edi, %ebx
923 ; X32-NEXT: movzbl %cl, %eax
924 ; X32-NEXT: adcl %eax, %edx
925 ; X32-NEXT: addl {{[-0-9]+}}(%e{{[sb]}}p), %ebx # 4-byte Folded Reload
926 ; X32-NEXT: adcl (%esp), %edx # 4-byte Folded Reload
927 ; X32-NEXT: movl %edx, (%esp) # 4-byte Spill
928 ; X32-NEXT: adcl $0, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill
929 ; X32-NEXT: adcl $0, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill
930 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
931 ; X32-NEXT: movl %ecx, %eax
932 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Reload
933 ; X32-NEXT: mull %esi
934 ; X32-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
935 ; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
936 ; X32-NEXT: movl %ebp, %eax
937 ; X32-NEXT: mull %esi
938 ; X32-NEXT: movl %edx, %edi
939 ; X32-NEXT: movl %eax, %ebp
940 ; X32-NEXT: addl {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Folded Reload
941 ; X32-NEXT: adcl $0, %edi
942 ; X32-NEXT: movl %ecx, %eax
943 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
944 ; X32-NEXT: mull %ecx
945 ; X32-NEXT: movl %edx, %esi
946 ; X32-NEXT: addl %ebp, %eax
947 ; X32-NEXT: movl %eax, %ebp
948 ; X32-NEXT: adcl %edi, %esi
949 ; X32-NEXT: setb {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Folded Spill
950 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
951 ; X32-NEXT: mull %ecx
952 ; X32-NEXT: movl %edx, %ecx
953 ; X32-NEXT: movl %eax, %edi
954 ; X32-NEXT: addl %esi, %edi
955 ; X32-NEXT: movzbl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 1-byte Folded Reload
956 ; X32-NEXT: adcl %eax, %ecx
957 ; X32-NEXT: addl %ebx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill
958 ; X32-NEXT: adcl (%esp), %ebp # 4-byte Folded Reload
959 ; X32-NEXT: movl %ebp, (%esp) # 4-byte Spill
960 ; X32-NEXT: adcl $0, %edi
961 ; X32-NEXT: adcl $0, %ecx
962 ; X32-NEXT: addl {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Folded Reload
963 ; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Folded Reload
964 ; X32-NEXT: setb {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Folded Spill
965 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Reload
966 ; X32-NEXT: movl %esi, %eax
967 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ebx # 4-byte Reload
968 ; X32-NEXT: mull %ebx
969 ; X32-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
970 ; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
971 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
972 ; X32-NEXT: mull %ebx
973 ; X32-NEXT: movl %edx, %ebx
974 ; X32-NEXT: movl %eax, %ebp
975 ; X32-NEXT: addl {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Folded Reload
976 ; X32-NEXT: adcl $0, %ebx
977 ; X32-NEXT: movl %esi, %eax
978 ; X32-NEXT: mull {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Reload
979 ; X32-NEXT: movl %edx, %esi
980 ; X32-NEXT: addl %ebp, %eax
981 ; X32-NEXT: movl %eax, %ebp
982 ; X32-NEXT: adcl %ebx, %esi
983 ; X32-NEXT: setb {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Folded Spill
984 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
985 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ebx # 4-byte Reload
986 ; X32-NEXT: mull %ebx
987 ; X32-NEXT: addl %esi, %eax
988 ; X32-NEXT: movl %eax, %esi
989 ; X32-NEXT: movzbl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 1-byte Folded Reload
990 ; X32-NEXT: adcl %eax, %edx
991 ; X32-NEXT: addl %edi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill
992 ; X32-NEXT: adcl %ecx, %ebp
993 ; X32-NEXT: movl %ebp, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
994 ; X32-NEXT: movzbl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 1-byte Folded Reload
995 ; X32-NEXT: adcl %eax, %esi
996 ; X32-NEXT: movl %esi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
997 ; X32-NEXT: adcl $0, %edx
998 ; X32-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
999 ; X32-NEXT: movl {{[0-9]+}}(%esp), %ecx
1000 ; X32-NEXT: movl 48(%ecx), %edi
1001 ; X32-NEXT: imull %edi, %ebx
1002 ; X32-NEXT: movl %edi, %eax
1003 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Reload
1004 ; X32-NEXT: mull %esi
1005 ; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1006 ; X32-NEXT: addl %ebx, %edx
1007 ; X32-NEXT: movl 52(%ecx), %eax
1008 ; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1009 ; X32-NEXT: imull %eax, %esi
1010 ; X32-NEXT: addl %edx, %esi
1011 ; X32-NEXT: movl %esi, %ebp
1012 ; X32-NEXT: movl 56(%ecx), %eax
1013 ; X32-NEXT: movl %eax, %esi
1014 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ebx # 4-byte Reload
1015 ; X32-NEXT: imull %ebx, %esi
1016 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
1017 ; X32-NEXT: mull %ecx
1018 ; X32-NEXT: addl %esi, %edx
1019 ; X32-NEXT: movl {{[0-9]+}}(%esp), %esi
1020 ; X32-NEXT: movl 60(%esi), %esi
1021 ; X32-NEXT: imull %ecx, %esi
1022 ; X32-NEXT: addl %edx, %esi
1023 ; X32-NEXT: addl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Folded Reload
1024 ; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1025 ; X32-NEXT: adcl %ebp, %esi
1026 ; X32-NEXT: movl %ecx, %eax
1027 ; X32-NEXT: mull %edi
1028 ; X32-NEXT: movl %edx, %ebp
1029 ; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1030 ; X32-NEXT: movl %ebx, %eax
1031 ; X32-NEXT: mull %edi
1032 ; X32-NEXT: movl %edx, %ecx
1033 ; X32-NEXT: movl %eax, %ebx
1034 ; X32-NEXT: addl %ebp, %ebx
1035 ; X32-NEXT: adcl $0, %ecx
1036 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
1037 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Reload
1038 ; X32-NEXT: mull %ebp
1039 ; X32-NEXT: movl %edx, %edi
1040 ; X32-NEXT: addl %ebx, %eax
1041 ; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1042 ; X32-NEXT: adcl %ecx, %edi
1043 ; X32-NEXT: setb %cl
1044 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
1045 ; X32-NEXT: mull %ebp
1046 ; X32-NEXT: addl %edi, %eax
1047 ; X32-NEXT: movzbl %cl, %ecx
1048 ; X32-NEXT: adcl %ecx, %edx
1049 ; X32-NEXT: addl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Folded Reload
1050 ; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1051 ; X32-NEXT: adcl %esi, %edx
1052 ; X32-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1053 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Reload
1054 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Reload
1055 ; X32-NEXT: imull %esi, %edi
1056 ; X32-NEXT: movl %esi, %eax
1057 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
1058 ; X32-NEXT: mull %ecx
1059 ; X32-NEXT: movl %eax, %ebp
1060 ; X32-NEXT: addl %edi, %edx
1061 ; X32-NEXT: imull {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Folded Reload
1062 ; X32-NEXT: addl %edx, %ecx
1063 ; X32-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1064 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
1065 ; X32-NEXT: movl %eax, %ecx
1066 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Reload
1067 ; X32-NEXT: imull %edi, %ecx
1068 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ebx # 4-byte Reload
1069 ; X32-NEXT: mull %ebx
1070 ; X32-NEXT: addl %ecx, %edx
1071 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
1072 ; X32-NEXT: imull %ebx, %ecx
1073 ; X32-NEXT: addl %edx, %ecx
1074 ; X32-NEXT: addl %ebp, %eax
1075 ; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1076 ; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Folded Reload
1077 ; X32-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1078 ; X32-NEXT: movl %ebx, %eax
1079 ; X32-NEXT: movl %ebx, %ebp
1080 ; X32-NEXT: mull %esi
1081 ; X32-NEXT: movl %edx, %ebx
1082 ; X32-NEXT: movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1083 ; X32-NEXT: movl %edi, %eax
1084 ; X32-NEXT: mull %esi
1085 ; X32-NEXT: movl %edx, %esi
1086 ; X32-NEXT: movl %eax, %ecx
1087 ; X32-NEXT: addl %ebx, %ecx
1088 ; X32-NEXT: adcl $0, %esi
1089 ; X32-NEXT: movl %ebp, %eax
1090 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ebx # 4-byte Reload
1091 ; X32-NEXT: mull %ebx
1092 ; X32-NEXT: movl %edx, %edi
1093 ; X32-NEXT: movl %eax, %ebp
1094 ; X32-NEXT: addl %ecx, %ebp
1095 ; X32-NEXT: adcl %esi, %edi
1096 ; X32-NEXT: setb %cl
1097 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
1098 ; X32-NEXT: mull %ebx
1099 ; X32-NEXT: movl %edx, %ebx
1100 ; X32-NEXT: addl %edi, %eax
1101 ; X32-NEXT: movzbl %cl, %ecx
1102 ; X32-NEXT: adcl %ecx, %ebx
1103 ; X32-NEXT: addl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Folded Reload
1104 ; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %ebx # 4-byte Folded Reload
1105 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
1106 ; X32-NEXT: addl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Folded Reload
1107 ; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Folded Reload
1108 ; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Folded Reload
1109 ; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %ebx # 4-byte Folded Reload
1110 ; X32-NEXT: addl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Folded Reload
1111 ; X32-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1112 ; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Folded Reload
1113 ; X32-NEXT: movl %ebp, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1114 ; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Folded Reload
1115 ; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %ebx # 4-byte Folded Reload
1116 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
1117 ; X32-NEXT: addl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Folded Reload
1118 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Reload
1119 ; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Folded Reload
1120 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Reload
1121 ; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Folded Reload
1122 ; X32-NEXT: movl (%esp), %edi # 4-byte Reload
1123 ; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Folded Reload
1124 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Reload
1125 ; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Folded Reload
1126 ; X32-NEXT: movl %ebp, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1127 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Reload
1128 ; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Folded Reload
1129 ; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Folded Reload
1130 ; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %ebx # 4-byte Folded Reload
1131 ; X32-NEXT: addl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Folded Reload
1132 ; X32-NEXT: movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1133 ; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Folded Reload
1134 ; X32-NEXT: movl %esi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1135 ; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Folded Reload
1136 ; X32-NEXT: movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
1137 ; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Folded Reload
1138 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Reload
1139 ; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Folded Reload
1140 ; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Folded Reload
1141 ; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Folded Reload
1142 ; X32-NEXT: adcl {{[-0-9]+}}(%e{{[sb]}}p), %ebx # 4-byte Folded Reload
1143 ; X32-NEXT: movl {{[0-9]+}}(%esp), %ecx
1144 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Reload
1145 ; X32-NEXT: movl %esi, (%ecx)
1146 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Reload
1147 ; X32-NEXT: movl %esi, 4(%ecx)
1148 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Reload
1149 ; X32-NEXT: movl %esi, 8(%ecx)
1150 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Reload
1151 ; X32-NEXT: movl %esi, 12(%ecx)
1152 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Reload
1153 ; X32-NEXT: movl %esi, 16(%ecx)
1154 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Reload
1155 ; X32-NEXT: movl %esi, 20(%ecx)
1156 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Reload
1157 ; X32-NEXT: movl %esi, 24(%ecx)
1158 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Reload
1159 ; X32-NEXT: movl %esi, 28(%ecx)
1160 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Reload
1161 ; X32-NEXT: movl %esi, 32(%ecx)
1162 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Reload
1163 ; X32-NEXT: movl %esi, 36(%ecx)
1164 ; X32-NEXT: movl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Reload
1165 ; X32-NEXT: movl %esi, 40(%ecx)
1166 ; X32-NEXT: movl %edi, 44(%ecx)
1167 ; X32-NEXT: movl %edx, 48(%ecx)
1168 ; X32-NEXT: movl %ebp, 52(%ecx)
1169 ; X32-NEXT: movl %eax, 56(%ecx)
1170 ; X32-NEXT: movl %ebx, 60(%ecx)
1171 ; X32-NEXT: addl $180, %esp
1172 ; X32-NEXT: popl %esi
1173 ; X32-NEXT: popl %edi
1174 ; X32-NEXT: popl %ebx
1175 ; X32-NEXT: popl %ebp
1178 ; X64-LABEL: test_512:
1180 ; X64-NEXT: pushq %rbp
1181 ; X64-NEXT: pushq %r15
1182 ; X64-NEXT: pushq %r14
1183 ; X64-NEXT: pushq %r13
1184 ; X64-NEXT: pushq %r12
1185 ; X64-NEXT: pushq %rbx
1186 ; X64-NEXT: pushq %rax
1187 ; X64-NEXT: movq %rdx, (%rsp) # 8-byte Spill
1188 ; X64-NEXT: movq %rdi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
1189 ; X64-NEXT: movq (%rdi), %r9
1190 ; X64-NEXT: movq 8(%rdi), %r15
1191 ; X64-NEXT: movq 24(%rdi), %r12
1192 ; X64-NEXT: movq 16(%rdi), %rax
1193 ; X64-NEXT: movq %rsi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
1194 ; X64-NEXT: movq (%rsi), %rdi
1195 ; X64-NEXT: movq 8(%rsi), %r14
1196 ; X64-NEXT: movq %rax, %rsi
1197 ; X64-NEXT: movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
1198 ; X64-NEXT: mulq %rdi
1199 ; X64-NEXT: movq %rdx, %rcx
1200 ; X64-NEXT: movq %rax, %r11
1201 ; X64-NEXT: movq %r12, %rax
1202 ; X64-NEXT: movq %r12, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
1203 ; X64-NEXT: mulq %rdi
1204 ; X64-NEXT: movq %rdx, %rbp
1205 ; X64-NEXT: movq %rax, %rbx
1206 ; X64-NEXT: addq %rcx, %rbx
1207 ; X64-NEXT: adcq $0, %rbp
1208 ; X64-NEXT: movq %rsi, %rax
1209 ; X64-NEXT: mulq %r14
1210 ; X64-NEXT: movq %rdx, %rcx
1211 ; X64-NEXT: movq %rax, %r10
1212 ; X64-NEXT: addq %rbx, %r10
1213 ; X64-NEXT: adcq %rbp, %rcx
1214 ; X64-NEXT: setb %al
1215 ; X64-NEXT: movzbl %al, %esi
1216 ; X64-NEXT: movq %r12, %rax
1217 ; X64-NEXT: mulq %r14
1218 ; X64-NEXT: movq %r14, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
1219 ; X64-NEXT: movq %rdx, %r8
1220 ; X64-NEXT: movq %rax, %r13
1221 ; X64-NEXT: addq %rcx, %r13
1222 ; X64-NEXT: adcq %rsi, %r8
1223 ; X64-NEXT: movq %r9, %rax
1224 ; X64-NEXT: movq %rdi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
1225 ; X64-NEXT: mulq %rdi
1226 ; X64-NEXT: movq %rdx, %rcx
1227 ; X64-NEXT: movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
1228 ; X64-NEXT: movq %r15, %rax
1229 ; X64-NEXT: mulq %rdi
1230 ; X64-NEXT: movq %rdx, %rbx
1231 ; X64-NEXT: movq %rax, %rbp
1232 ; X64-NEXT: addq %rcx, %rbp
1233 ; X64-NEXT: adcq $0, %rbx
1234 ; X64-NEXT: movq %r9, %rax
1235 ; X64-NEXT: movq %r9, %r12
1236 ; X64-NEXT: movq %r9, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
1237 ; X64-NEXT: mulq %r14
1238 ; X64-NEXT: movq %rdx, %rcx
1239 ; X64-NEXT: addq %rbp, %rax
1240 ; X64-NEXT: movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
1241 ; X64-NEXT: adcq %rbx, %rcx
1242 ; X64-NEXT: setb %sil
1243 ; X64-NEXT: movq %r15, %rdi
1244 ; X64-NEXT: movq %r15, %rax
1245 ; X64-NEXT: mulq %r14
1246 ; X64-NEXT: movq %rdx, %r15
1247 ; X64-NEXT: movq %rax, %rbx
1248 ; X64-NEXT: addq %rcx, %rbx
1249 ; X64-NEXT: movzbl %sil, %eax
1250 ; X64-NEXT: adcq %rax, %r15
1251 ; X64-NEXT: addq %r11, %rbx
1252 ; X64-NEXT: adcq %r10, %r15
1253 ; X64-NEXT: adcq $0, %r13
1254 ; X64-NEXT: movq %r8, %r14
1255 ; X64-NEXT: adcq $0, %r14
1256 ; X64-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rsi # 8-byte Reload
1257 ; X64-NEXT: movq 16(%rsi), %r8
1258 ; X64-NEXT: movq %r9, %rax
1259 ; X64-NEXT: mulq %r8
1260 ; X64-NEXT: movq %rdx, %r10
1261 ; X64-NEXT: movq %rax, %r9
1262 ; X64-NEXT: movq %rdi, %rax
1263 ; X64-NEXT: movq %rdi, %r11
1264 ; X64-NEXT: movq %rdi, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
1265 ; X64-NEXT: mulq %r8
1266 ; X64-NEXT: movq %rdx, %rcx
1267 ; X64-NEXT: movq %rax, %rbp
1268 ; X64-NEXT: addq %r10, %rbp
1269 ; X64-NEXT: adcq $0, %rcx
1270 ; X64-NEXT: movq 24(%rsi), %rdi
1271 ; X64-NEXT: movq %r12, %rax
1272 ; X64-NEXT: mulq %rdi
1273 ; X64-NEXT: movq %rdx, %rsi
1274 ; X64-NEXT: addq %rbp, %rax
1275 ; X64-NEXT: movq %rax, %rbp
1276 ; X64-NEXT: adcq %rcx, %rsi
1277 ; X64-NEXT: setb %cl
1278 ; X64-NEXT: movq %r11, %rax
1279 ; X64-NEXT: mulq %rdi
1280 ; X64-NEXT: movq %rdx, %r11
1281 ; X64-NEXT: movq %rax, %r12
1282 ; X64-NEXT: addq %rsi, %r12
1283 ; X64-NEXT: movzbl %cl, %eax
1284 ; X64-NEXT: adcq %rax, %r11
1285 ; X64-NEXT: addq %rbx, %r9
1286 ; X64-NEXT: movq %r9, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
1287 ; X64-NEXT: adcq %r15, %rbp
1288 ; X64-NEXT: movq %rbp, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
1289 ; X64-NEXT: adcq $0, %r12
1290 ; X64-NEXT: adcq $0, %r11
1291 ; X64-NEXT: addq %r13, %r12
1292 ; X64-NEXT: adcq %r14, %r11
1293 ; X64-NEXT: setb %r9b
1294 ; X64-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rbx # 8-byte Reload
1295 ; X64-NEXT: movq %rbx, %rax
1296 ; X64-NEXT: mulq %r8
1297 ; X64-NEXT: movq %rdx, %rcx
1298 ; X64-NEXT: movq %rax, %r14
1299 ; X64-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %r10 # 8-byte Reload
1300 ; X64-NEXT: movq %r10, %rax
1301 ; X64-NEXT: mulq %r8
1302 ; X64-NEXT: movq %rdx, %rsi
1303 ; X64-NEXT: movq %rax, %rbp
1304 ; X64-NEXT: addq %rcx, %rbp
1305 ; X64-NEXT: adcq $0, %rsi
1306 ; X64-NEXT: movq %rbx, %rax
1307 ; X64-NEXT: mulq %rdi
1308 ; X64-NEXT: movq %rdx, %rcx
1309 ; X64-NEXT: addq %rbp, %rax
1310 ; X64-NEXT: movq %rax, %rbp
1311 ; X64-NEXT: adcq %rsi, %rcx
1312 ; X64-NEXT: setb %bl
1313 ; X64-NEXT: movq %r10, %rax
1314 ; X64-NEXT: mulq %rdi
1315 ; X64-NEXT: addq %rcx, %rax
1316 ; X64-NEXT: movzbl %bl, %ecx
1317 ; X64-NEXT: adcq %rcx, %rdx
1318 ; X64-NEXT: addq %r12, %r14
1319 ; X64-NEXT: movq %r14, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
1320 ; X64-NEXT: adcq %r11, %rbp
1321 ; X64-NEXT: movq %rbp, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
1322 ; X64-NEXT: movzbl %r9b, %ecx
1323 ; X64-NEXT: adcq %rcx, %rax
1324 ; X64-NEXT: movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
1325 ; X64-NEXT: adcq $0, %rdx
1326 ; X64-NEXT: movq %rdx, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
1327 ; X64-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rcx # 8-byte Reload
1328 ; X64-NEXT: movq 32(%rcx), %r10
1329 ; X64-NEXT: imulq %r10, %rdi
1330 ; X64-NEXT: movq %r10, %rax
1331 ; X64-NEXT: mulq %r8
1332 ; X64-NEXT: movq %rax, %r11
1333 ; X64-NEXT: addq %rdi, %rdx
1334 ; X64-NEXT: movq 40(%rcx), %r9
1335 ; X64-NEXT: imulq %r9, %r8
1336 ; X64-NEXT: addq %rdx, %r8
1337 ; X64-NEXT: movq 48(%rcx), %rax
1338 ; X64-NEXT: movq %rax, %rdi
1339 ; X64-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rbx # 8-byte Reload
1340 ; X64-NEXT: imulq %rbx, %rdi
1341 ; X64-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rsi # 8-byte Reload
1342 ; X64-NEXT: mulq %rsi
1343 ; X64-NEXT: movq %rax, %r12
1344 ; X64-NEXT: addq %rdi, %rdx
1345 ; X64-NEXT: movq 56(%rcx), %rbp
1346 ; X64-NEXT: imulq %rsi, %rbp
1347 ; X64-NEXT: addq %rdx, %rbp
1348 ; X64-NEXT: addq %r11, %r12
1349 ; X64-NEXT: adcq %r8, %rbp
1350 ; X64-NEXT: movq %rsi, %rax
1351 ; X64-NEXT: movq %rsi, %rcx
1352 ; X64-NEXT: mulq %r10
1353 ; X64-NEXT: movq %rdx, %rdi
1354 ; X64-NEXT: movq %rax, {{[-0-9]+}}(%r{{[sb]}}p) # 8-byte Spill
1355 ; X64-NEXT: movq %rbx, %rax
1356 ; X64-NEXT: movq %rbx, %r11
1357 ; X64-NEXT: mulq %r10
1358 ; X64-NEXT: movq %rdx, %rsi
1359 ; X64-NEXT: movq %rax, %rbx
1360 ; X64-NEXT: addq %rdi, %rbx
1361 ; X64-NEXT: adcq $0, %rsi
1362 ; X64-NEXT: movq %rcx, %rax
1363 ; X64-NEXT: mulq %r9
1364 ; X64-NEXT: movq %rdx, %rdi
1365 ; X64-NEXT: movq %rax, %r10
1366 ; X64-NEXT: addq %rbx, %r10
1367 ; X64-NEXT: adcq %rsi, %rdi
1368 ; X64-NEXT: setb %bl
1369 ; X64-NEXT: movq %r11, %rax
1370 ; X64-NEXT: mulq %r9
1371 ; X64-NEXT: movq %rdx, %r15
1372 ; X64-NEXT: movq %rax, %r13
1373 ; X64-NEXT: addq %rdi, %r13
1374 ; X64-NEXT: movzbl %bl, %eax
1375 ; X64-NEXT: adcq %rax, %r15
1376 ; X64-NEXT: addq %r12, %r13
1377 ; X64-NEXT: adcq %rbp, %r15
1378 ; X64-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rdx # 8-byte Reload
1379 ; X64-NEXT: movq 56(%rdx), %rcx
1380 ; X64-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Reload
1381 ; X64-NEXT: imulq %rax, %rcx
1382 ; X64-NEXT: movq 48(%rdx), %rbp
1383 ; X64-NEXT: movq %rdx, %rsi
1384 ; X64-NEXT: movq %rax, %r11
1385 ; X64-NEXT: mulq %rbp
1386 ; X64-NEXT: movq %rax, %r12
1387 ; X64-NEXT: addq %rcx, %rdx
1388 ; X64-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %r8 # 8-byte Reload
1389 ; X64-NEXT: imulq %r8, %rbp
1390 ; X64-NEXT: addq %rdx, %rbp
1391 ; X64-NEXT: movq 32(%rsi), %rdi
1392 ; X64-NEXT: movq 40(%rsi), %rbx
1393 ; X64-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Reload
1394 ; X64-NEXT: movq %rax, %rsi
1395 ; X64-NEXT: imulq %rbx, %rsi
1396 ; X64-NEXT: mulq %rdi
1397 ; X64-NEXT: movq %rax, %rcx
1398 ; X64-NEXT: addq %rsi, %rdx
1399 ; X64-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %r14 # 8-byte Reload
1400 ; X64-NEXT: imulq %rdi, %r14
1401 ; X64-NEXT: addq %rdx, %r14
1402 ; X64-NEXT: addq %r12, %rcx
1403 ; X64-NEXT: adcq %rbp, %r14
1404 ; X64-NEXT: movq %rdi, %rax
1405 ; X64-NEXT: mulq %r11
1406 ; X64-NEXT: movq %rdx, %rbp
1407 ; X64-NEXT: movq %rax, %rsi
1408 ; X64-NEXT: movq %rbx, %rax
1409 ; X64-NEXT: mulq %r11
1410 ; X64-NEXT: movq %rdx, %r11
1411 ; X64-NEXT: movq %rax, %r12
1412 ; X64-NEXT: addq %rbp, %r12
1413 ; X64-NEXT: adcq $0, %r11
1414 ; X64-NEXT: movq %rdi, %rax
1415 ; X64-NEXT: mulq %r8
1416 ; X64-NEXT: movq %rdx, %rbp
1417 ; X64-NEXT: movq %rax, %rdi
1418 ; X64-NEXT: addq %r12, %rdi
1419 ; X64-NEXT: adcq %r11, %rbp
1420 ; X64-NEXT: setb %r9b
1421 ; X64-NEXT: movq %rbx, %rax
1422 ; X64-NEXT: mulq %r8
1423 ; X64-NEXT: addq %rbp, %rax
1424 ; X64-NEXT: movzbl %r9b, %ebp
1425 ; X64-NEXT: adcq %rbp, %rdx
1426 ; X64-NEXT: addq %rcx, %rax
1427 ; X64-NEXT: adcq %r14, %rdx
1428 ; X64-NEXT: addq {{[-0-9]+}}(%r{{[sb]}}p), %rsi # 8-byte Folded Reload
1429 ; X64-NEXT: adcq %r10, %rdi
1430 ; X64-NEXT: adcq %r13, %rax
1431 ; X64-NEXT: adcq %r15, %rdx
1432 ; X64-NEXT: addq {{[-0-9]+}}(%r{{[sb]}}p), %rsi # 8-byte Folded Reload
1433 ; X64-NEXT: adcq {{[-0-9]+}}(%r{{[sb]}}p), %rdi # 8-byte Folded Reload
1434 ; X64-NEXT: adcq {{[-0-9]+}}(%r{{[sb]}}p), %rax # 8-byte Folded Reload
1435 ; X64-NEXT: adcq {{[-0-9]+}}(%r{{[sb]}}p), %rdx # 8-byte Folded Reload
1436 ; X64-NEXT: movq (%rsp), %rcx # 8-byte Reload
1437 ; X64-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rbp # 8-byte Reload
1438 ; X64-NEXT: movq %rbp, (%rcx)
1439 ; X64-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rbp # 8-byte Reload
1440 ; X64-NEXT: movq %rbp, 8(%rcx)
1441 ; X64-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rbp # 8-byte Reload
1442 ; X64-NEXT: movq %rbp, 16(%rcx)
1443 ; X64-NEXT: movq {{[-0-9]+}}(%r{{[sb]}}p), %rbp # 8-byte Reload
1444 ; X64-NEXT: movq %rbp, 24(%rcx)
1445 ; X64-NEXT: movq %rsi, 32(%rcx)
1446 ; X64-NEXT: movq %rdi, 40(%rcx)
1447 ; X64-NEXT: movq %rax, 48(%rcx)
1448 ; X64-NEXT: movq %rdx, 56(%rcx)
1449 ; X64-NEXT: addq $8, %rsp
1450 ; X64-NEXT: popq %rbx
1451 ; X64-NEXT: popq %r12
1452 ; X64-NEXT: popq %r13
1453 ; X64-NEXT: popq %r14
1454 ; X64-NEXT: popq %r15
1455 ; X64-NEXT: popq %rbp
1457 %av = load i512, i512* %a
1458 %bv = load i512, i512* %b
1459 %r = mul i512 %av, %bv
1460 store i512 %r, i512* %out