• 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
5target datalayout = "e-m:e-i64:64-f80:128-n8:16:32:64-S128"
6
7define void @test(i256* %a, i256* %b, i256* %out) #0 {
8; X32-LABEL: test:
9; X32:       # %bb.0: # %entry
10; X32-NEXT:    pushl %ebp
11; X32-NEXT:    .cfi_def_cfa_offset 8
12; X32-NEXT:    pushl %ebx
13; X32-NEXT:    .cfi_def_cfa_offset 12
14; X32-NEXT:    pushl %edi
15; X32-NEXT:    .cfi_def_cfa_offset 16
16; X32-NEXT:    pushl %esi
17; X32-NEXT:    .cfi_def_cfa_offset 20
18; X32-NEXT:    subl $72, %esp
19; X32-NEXT:    .cfi_def_cfa_offset 92
20; X32-NEXT:    .cfi_offset %esi, -20
21; X32-NEXT:    .cfi_offset %edi, -16
22; X32-NEXT:    .cfi_offset %ebx, -12
23; X32-NEXT:    .cfi_offset %ebp, -8
24; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
25; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
26; X32-NEXT:    movl 12(%ecx), %esi
27; X32-NEXT:    movl 8(%ecx), %ebx
28; X32-NEXT:    movl %ebx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
29; X32-NEXT:    movl (%eax), %edi
30; X32-NEXT:    movl %edi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
31; X32-NEXT:    movl %ebx, %eax
32; X32-NEXT:    mull %edi
33; X32-NEXT:    movl %edx, %ebp
34; X32-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
35; X32-NEXT:    movl %esi, %eax
36; X32-NEXT:    movl %esi, %ecx
37; X32-NEXT:    movl %esi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
38; X32-NEXT:    mull %edi
39; X32-NEXT:    movl %edx, %esi
40; X32-NEXT:    movl %eax, %edi
41; X32-NEXT:    addl %ebp, %edi
42; X32-NEXT:    adcl $0, %esi
43; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
44; X32-NEXT:    movl 4(%eax), %ebp
45; X32-NEXT:    movl %ebx, %eax
46; X32-NEXT:    mull %ebp
47; X32-NEXT:    movl %ebp, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
48; X32-NEXT:    movl %edx, %ebx
49; X32-NEXT:    addl %edi, %eax
50; X32-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
51; X32-NEXT:    adcl %esi, %ebx
52; X32-NEXT:    setb {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Folded Spill
53; X32-NEXT:    movl %ecx, %eax
54; X32-NEXT:    mull %ebp
55; X32-NEXT:    addl %ebx, %eax
56; X32-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
57; X32-NEXT:    movzbl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 1-byte Folded Reload
58; X32-NEXT:    adcl %eax, %edx
59; X32-NEXT:    movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
60; X32-NEXT:    movl {{[0-9]+}}(%esp), %edi
61; X32-NEXT:    movl (%edi), %eax
62; X32-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
63; X32-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
64; X32-NEXT:    mull %ecx
65; X32-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
66; X32-NEXT:    movl %edx, %esi
67; X32-NEXT:    movl 4(%edi), %eax
68; X32-NEXT:    movl %eax, %edi
69; X32-NEXT:    mull %ecx
70; X32-NEXT:    movl %edx, %ebx
71; X32-NEXT:    movl %eax, %ebp
72; X32-NEXT:    addl %esi, %ebp
73; X32-NEXT:    adcl $0, %ebx
74; X32-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
75; X32-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Reload
76; X32-NEXT:    mull %esi
77; X32-NEXT:    movl %edx, %ecx
78; X32-NEXT:    addl %ebp, %eax
79; X32-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
80; X32-NEXT:    adcl %ebx, %ecx
81; X32-NEXT:    setb %bl
82; X32-NEXT:    movl %edi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
83; X32-NEXT:    movl %edi, %eax
84; X32-NEXT:    mull %esi
85; X32-NEXT:    movl %eax, %ebp
86; X32-NEXT:    addl %ecx, %ebp
87; X32-NEXT:    movzbl %bl, %eax
88; X32-NEXT:    adcl %eax, %edx
89; X32-NEXT:    addl {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Folded Reload
90; X32-NEXT:    adcl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Folded Reload
91; X32-NEXT:    movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
92; X32-NEXT:    adcl $0, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill
93; X32-NEXT:    adcl $0, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill
94; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
95; X32-NEXT:    movl 8(%eax), %ecx
96; X32-NEXT:    movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
97; X32-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Reload
98; X32-NEXT:    movl %esi, %eax
99; X32-NEXT:    mull %ecx
100; X32-NEXT:    movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
101; X32-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
102; X32-NEXT:    movl %edi, %eax
103; X32-NEXT:    mull %ecx
104; X32-NEXT:    movl %edx, %ebx
105; X32-NEXT:    movl %eax, %edi
106; X32-NEXT:    addl {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Folded Reload
107; X32-NEXT:    adcl $0, %ebx
108; X32-NEXT:    movl {{[0-9]+}}(%esp), %eax
109; X32-NEXT:    movl 12(%eax), %ecx
110; X32-NEXT:    movl %esi, %eax
111; X32-NEXT:    mull %ecx
112; X32-NEXT:    movl %ecx, (%esp) # 4-byte Spill
113; X32-NEXT:    movl %edx, %esi
114; X32-NEXT:    addl %edi, %eax
115; X32-NEXT:    movl %eax, %edi
116; X32-NEXT:    adcl %ebx, %esi
117; X32-NEXT:    setb %bl
118; X32-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
119; X32-NEXT:    mull %ecx
120; X32-NEXT:    movl %eax, %ecx
121; X32-NEXT:    addl %esi, %ecx
122; X32-NEXT:    movzbl %bl, %eax
123; X32-NEXT:    adcl %eax, %edx
124; X32-NEXT:    addl %ebp, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill
125; X32-NEXT:    adcl {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Folded Reload
126; X32-NEXT:    movl %edi, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
127; X32-NEXT:    adcl $0, %ecx
128; X32-NEXT:    adcl $0, %edx
129; X32-NEXT:    addl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Folded Reload
130; X32-NEXT:    adcl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Folded Reload
131; X32-NEXT:    movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
132; X32-NEXT:    setb {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Folded Spill
133; X32-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Reload
134; X32-NEXT:    movl %esi, %eax
135; X32-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Reload
136; X32-NEXT:    mull %edi
137; X32-NEXT:    movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
138; X32-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
139; X32-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
140; X32-NEXT:    mull %edi
141; X32-NEXT:    movl %edx, %ebx
142; X32-NEXT:    movl %eax, %ebp
143; X32-NEXT:    addl {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Folded Reload
144; X32-NEXT:    adcl $0, %ebx
145; X32-NEXT:    movl %esi, %eax
146; X32-NEXT:    movl (%esp), %edi # 4-byte Reload
147; X32-NEXT:    mull %edi
148; X32-NEXT:    movl %edx, %esi
149; X32-NEXT:    addl %ebp, %eax
150; X32-NEXT:    movl %eax, %ebp
151; X32-NEXT:    adcl %ebx, %esi
152; X32-NEXT:    setb {{[-0-9]+}}(%e{{[sb]}}p) # 1-byte Folded Spill
153; X32-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
154; X32-NEXT:    mull %edi
155; X32-NEXT:    movl %edi, %ebx
156; X32-NEXT:    addl %esi, %eax
157; X32-NEXT:    movzbl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 1-byte Folded Reload
158; X32-NEXT:    adcl %esi, %edx
159; X32-NEXT:    addl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Folded Spill
160; X32-NEXT:    adcl {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Folded Reload
161; X32-NEXT:    movl %ebp, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
162; X32-NEXT:    movzbl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 1-byte Folded Reload
163; X32-NEXT:    adcl %ecx, %eax
164; X32-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
165; X32-NEXT:    adcl $0, %edx
166; X32-NEXT:    movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
167; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
168; X32-NEXT:    movl 16(%ecx), %edi
169; X32-NEXT:    imull %edi, %ebx
170; X32-NEXT:    movl %edi, %eax
171; X32-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Reload
172; X32-NEXT:    mull %ebp
173; X32-NEXT:    movl %eax, (%esp) # 4-byte Spill
174; X32-NEXT:    addl %ebx, %edx
175; X32-NEXT:    movl 20(%ecx), %eax
176; X32-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
177; X32-NEXT:    imull %eax, %ebp
178; X32-NEXT:    addl %edx, %ebp
179; X32-NEXT:    movl 24(%ecx), %eax
180; X32-NEXT:    movl %eax, %ecx
181; X32-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %ebx # 4-byte Reload
182; X32-NEXT:    imull %ebx, %ecx
183; X32-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Reload
184; X32-NEXT:    mull %esi
185; X32-NEXT:    addl %ecx, %edx
186; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
187; X32-NEXT:    movl 28(%ecx), %ecx
188; X32-NEXT:    imull %esi, %ecx
189; X32-NEXT:    addl %edx, %ecx
190; X32-NEXT:    addl (%esp), %eax # 4-byte Folded Reload
191; X32-NEXT:    movl %eax, (%esp) # 4-byte Spill
192; X32-NEXT:    adcl %ebp, %ecx
193; X32-NEXT:    movl %esi, %eax
194; X32-NEXT:    mull %edi
195; X32-NEXT:    movl %edx, %ebp
196; X32-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
197; X32-NEXT:    movl %ebx, %eax
198; X32-NEXT:    mull %edi
199; X32-NEXT:    movl %edx, %esi
200; X32-NEXT:    movl %eax, %ebx
201; X32-NEXT:    addl %ebp, %ebx
202; X32-NEXT:    adcl $0, %esi
203; X32-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
204; X32-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Reload
205; X32-NEXT:    mull %ebp
206; X32-NEXT:    movl %edx, %edi
207; X32-NEXT:    addl %ebx, %eax
208; X32-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
209; X32-NEXT:    adcl %esi, %edi
210; X32-NEXT:    setb %bl
211; X32-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
212; X32-NEXT:    mull %ebp
213; X32-NEXT:    addl %edi, %eax
214; X32-NEXT:    movzbl %bl, %esi
215; X32-NEXT:    adcl %esi, %edx
216; X32-NEXT:    addl (%esp), %eax # 4-byte Folded Reload
217; X32-NEXT:    movl %eax, (%esp) # 4-byte Spill
218; X32-NEXT:    adcl %ecx, %edx
219; X32-NEXT:    movl %edx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
220; X32-NEXT:    movl {{[0-9]+}}(%esp), %ebx
221; X32-NEXT:    movl 28(%ebx), %ecx
222; X32-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Reload
223; X32-NEXT:    imull %esi, %ecx
224; X32-NEXT:    movl 24(%ebx), %edi
225; X32-NEXT:    movl %esi, %eax
226; X32-NEXT:    mull %edi
227; X32-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
228; X32-NEXT:    addl %ecx, %edx
229; X32-NEXT:    imull {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Folded Reload
230; X32-NEXT:    addl %edx, %edi
231; X32-NEXT:    movl 16(%ebx), %ebp
232; X32-NEXT:    movl 20(%ebx), %ebx
233; X32-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
234; X32-NEXT:    movl %eax, %ecx
235; X32-NEXT:    imull %ebx, %ecx
236; X32-NEXT:    movl %ebx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
237; X32-NEXT:    mull %ebp
238; X32-NEXT:    addl %ecx, %edx
239; X32-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
240; X32-NEXT:    imull %ebp, %ecx
241; X32-NEXT:    addl %edx, %ecx
242; X32-NEXT:    addl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Folded Reload
243; X32-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
244; X32-NEXT:    adcl %edi, %ecx
245; X32-NEXT:    movl %ecx, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
246; X32-NEXT:    movl %ebp, %eax
247; X32-NEXT:    mull %esi
248; X32-NEXT:    movl %edx, %edi
249; X32-NEXT:    movl %eax, {{[-0-9]+}}(%e{{[sb]}}p) # 4-byte Spill
250; X32-NEXT:    movl %ebx, %eax
251; X32-NEXT:    mull %esi
252; X32-NEXT:    movl %edx, %ecx
253; X32-NEXT:    movl %eax, %ebx
254; X32-NEXT:    addl %edi, %ebx
255; X32-NEXT:    adcl $0, %ecx
256; X32-NEXT:    movl %ebp, %eax
257; X32-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %ebp # 4-byte Reload
258; X32-NEXT:    mull %ebp
259; X32-NEXT:    movl %edx, %edi
260; X32-NEXT:    movl %eax, %esi
261; X32-NEXT:    addl %ebx, %esi
262; X32-NEXT:    adcl %ecx, %edi
263; X32-NEXT:    setb %cl
264; X32-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Reload
265; X32-NEXT:    mull %ebp
266; X32-NEXT:    addl %edi, %eax
267; X32-NEXT:    movzbl %cl, %ecx
268; X32-NEXT:    adcl %ecx, %edx
269; X32-NEXT:    addl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Folded Reload
270; X32-NEXT:    adcl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Folded Reload
271; X32-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Reload
272; X32-NEXT:    addl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Folded Reload
273; X32-NEXT:    adcl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Folded Reload
274; X32-NEXT:    adcl (%esp), %eax # 4-byte Folded Reload
275; X32-NEXT:    adcl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Folded Reload
276; X32-NEXT:    addl {{[-0-9]+}}(%e{{[sb]}}p), %ecx # 4-byte Folded Reload
277; X32-NEXT:    movl %ecx, %ebx
278; X32-NEXT:    adcl {{[-0-9]+}}(%e{{[sb]}}p), %esi # 4-byte Folded Reload
279; X32-NEXT:    adcl {{[-0-9]+}}(%e{{[sb]}}p), %eax # 4-byte Folded Reload
280; X32-NEXT:    adcl {{[-0-9]+}}(%e{{[sb]}}p), %edx # 4-byte Folded Reload
281; X32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
282; X32-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Reload
283; X32-NEXT:    movl %edi, (%ecx)
284; X32-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Reload
285; X32-NEXT:    movl %edi, 4(%ecx)
286; X32-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Reload
287; X32-NEXT:    movl %edi, 8(%ecx)
288; X32-NEXT:    movl {{[-0-9]+}}(%e{{[sb]}}p), %edi # 4-byte Reload
289; X32-NEXT:    movl %edi, 12(%ecx)
290; X32-NEXT:    movl %ebx, 16(%ecx)
291; X32-NEXT:    movl %esi, 20(%ecx)
292; X32-NEXT:    movl %eax, 24(%ecx)
293; X32-NEXT:    movl %edx, 28(%ecx)
294; X32-NEXT:    addl $72, %esp
295; X32-NEXT:    .cfi_def_cfa_offset 20
296; X32-NEXT:    popl %esi
297; X32-NEXT:    .cfi_def_cfa_offset 16
298; X32-NEXT:    popl %edi
299; X32-NEXT:    .cfi_def_cfa_offset 12
300; X32-NEXT:    popl %ebx
301; X32-NEXT:    .cfi_def_cfa_offset 8
302; X32-NEXT:    popl %ebp
303; X32-NEXT:    .cfi_def_cfa_offset 4
304; X32-NEXT:    retl
305;
306; X64-LABEL: test:
307; X64:       # %bb.0: # %entry
308; X64-NEXT:    pushq %r15
309; X64-NEXT:    .cfi_def_cfa_offset 16
310; X64-NEXT:    pushq %r14
311; X64-NEXT:    .cfi_def_cfa_offset 24
312; X64-NEXT:    pushq %rbx
313; X64-NEXT:    .cfi_def_cfa_offset 32
314; X64-NEXT:    .cfi_offset %rbx, -32
315; X64-NEXT:    .cfi_offset %r14, -24
316; X64-NEXT:    .cfi_offset %r15, -16
317; X64-NEXT:    movq %rdx, %r9
318; X64-NEXT:    movq (%rdi), %r11
319; X64-NEXT:    movq 8(%rdi), %r8
320; X64-NEXT:    movq 16(%rdi), %rbx
321; X64-NEXT:    movq 16(%rsi), %r10
322; X64-NEXT:    movq (%rsi), %rcx
323; X64-NEXT:    movq 8(%rsi), %r15
324; X64-NEXT:    movq 24(%rdi), %rdi
325; X64-NEXT:    imulq %rcx, %rdi
326; X64-NEXT:    movq %rcx, %rax
327; X64-NEXT:    mulq %rbx
328; X64-NEXT:    movq %rax, %r14
329; X64-NEXT:    addq %rdi, %rdx
330; X64-NEXT:    imulq %r15, %rbx
331; X64-NEXT:    addq %rdx, %rbx
332; X64-NEXT:    movq %r10, %rdi
333; X64-NEXT:    imulq %r8, %rdi
334; X64-NEXT:    movq %r10, %rax
335; X64-NEXT:    mulq %r11
336; X64-NEXT:    movq %rax, %r10
337; X64-NEXT:    addq %rdi, %rdx
338; X64-NEXT:    movq 24(%rsi), %rdi
339; X64-NEXT:    imulq %r11, %rdi
340; X64-NEXT:    addq %rdx, %rdi
341; X64-NEXT:    addq %r14, %r10
342; X64-NEXT:    adcq %rbx, %rdi
343; X64-NEXT:    movq %r11, %rax
344; X64-NEXT:    mulq %rcx
345; X64-NEXT:    movq %rdx, %rsi
346; X64-NEXT:    movq %rax, %r14
347; X64-NEXT:    movq %r8, %rax
348; X64-NEXT:    mulq %rcx
349; X64-NEXT:    movq %rdx, %rcx
350; X64-NEXT:    movq %rax, %rbx
351; X64-NEXT:    addq %rsi, %rbx
352; X64-NEXT:    adcq $0, %rcx
353; X64-NEXT:    movq %r11, %rax
354; X64-NEXT:    mulq %r15
355; X64-NEXT:    movq %rdx, %rsi
356; X64-NEXT:    movq %rax, %r11
357; X64-NEXT:    addq %rbx, %r11
358; X64-NEXT:    adcq %rcx, %rsi
359; X64-NEXT:    setb %al
360; X64-NEXT:    movzbl %al, %ecx
361; X64-NEXT:    movq %r8, %rax
362; X64-NEXT:    mulq %r15
363; X64-NEXT:    addq %rsi, %rax
364; X64-NEXT:    adcq %rcx, %rdx
365; X64-NEXT:    addq %r10, %rax
366; X64-NEXT:    adcq %rdi, %rdx
367; X64-NEXT:    movq %r14, (%r9)
368; X64-NEXT:    movq %r11, 8(%r9)
369; X64-NEXT:    movq %rax, 16(%r9)
370; X64-NEXT:    movq %rdx, 24(%r9)
371; X64-NEXT:    popq %rbx
372; X64-NEXT:    .cfi_def_cfa_offset 24
373; X64-NEXT:    popq %r14
374; X64-NEXT:    .cfi_def_cfa_offset 16
375; X64-NEXT:    popq %r15
376; X64-NEXT:    .cfi_def_cfa_offset 8
377; X64-NEXT:    retq
378entry:
379  %av = load i256, i256* %a
380  %bv = load i256, i256* %b
381  %r = mul i256 %av, %bv
382  store i256 %r, i256* %out
383  ret void
384}
385
386attributes #0 = { norecurse nounwind uwtable }
387