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