• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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
4
5define void @test_512(i512* %a, i512* %b, i512* %out) nounwind {
6; X32-LABEL: test_512:
7; X32:       # %bb.0:
8; X32-NEXT:    pushl %ebp
9; X32-NEXT:    pushl %ebx
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
22; X32-NEXT:    mull %edi
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
26; X32-NEXT:    mull %edi
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
34; X32-NEXT:    mull %ecx
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
40; X32-NEXT:    setb %cl
41; X32-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
42; X32-NEXT:    mull %ebp
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
53; X32-NEXT:    mull %edi
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
58; X32-NEXT:    mull %edi
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
66; X32-NEXT:    mull %ebp
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
71; X32-NEXT:    setb %cl
72; X32-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %ebx # 4-byte Reload
73; X32-NEXT:    movl %ebx, %eax
74; X32-NEXT:    mull %esi
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
89; X32-NEXT:    mull %ebp
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
93; X32-NEXT:    mull %ebp
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
209; X32-NEXT:    setb %bl
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
276; X32-NEXT:    setb %bl
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
355; X32-NEXT:    setb %bl
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
483; X32-NEXT:    setb %bl
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
511; X32-NEXT:    setb %bl
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
633; X32-NEXT:    setb %bl
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
789; X32-NEXT:    setb %bl
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
843; X32-NEXT:    setb %bl
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
887; X32-NEXT:    setb %cl
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
917; X32-NEXT:    setb %cl
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
1176; X32-NEXT:    retl
1177;
1178; X64-LABEL: test_512:
1179; X64:       # %bb.0:
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
1456; X64-NEXT:    retq
1457  %av = load i512, i512* %a
1458  %bv = load i512, i512* %b
1459  %r = mul i512 %av, %bv
1460  store i512 %r, i512* %out
1461  ret void
1462}
1463