Lines Matching +full:0 +full:x64
3 ; RUN: llc < %s -mtriple=x86_64-linux | FileCheck %s --check-prefix=X64-LINUX
4 ; RUN: llc < %s -mtriple=x86_64-win32 | FileCheck %s --check-prefix=X64-WIN32
13 ; X86: # %bb.0: # %entry
17 ; X64-LINUX-LABEL: test1:
18 ; X64-LINUX: # %bb.0: # %entry
19 ; X64-LINUX-NEXT: # kill: def $edi killed $edi def $rdi
20 ; X64-LINUX-NEXT: leal 128(%rdi), %eax
21 ; X64-LINUX-NEXT: retq
23 ; X64-WIN32-LABEL: test1:
24 ; X64-WIN32: # %bb.0: # %entry
25 ; X64-WIN32-NEXT: # kill: def $ecx killed $ecx def $rcx
26 ; X64-WIN32-NEXT: leal 128(%rcx), %eax
27 ; X64-WIN32-NEXT: retq
35 ; X86: # %bb.0: # %entry
36 ; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
41 ; X64-LINUX-LABEL: test1b:
42 ; X64-LINUX: # %bb.0: # %entry
43 ; X64-LINUX-NEXT: movl (%rdi), %eax
44 ; X64-LINUX-NEXT: subl $-128, %eax
45 ; X64-LINUX-NEXT: retq
47 ; X64-WIN32-LABEL: test1b:
48 ; X64-WIN32: # %bb.0: # %entry
49 ; X64-WIN32-NEXT: movl (%rcx), %eax
50 ; X64-WIN32-NEXT: subl $-128, %eax
51 ; X64-WIN32-NEXT: retq
60 ; X86: # %bb.0: # %entry
61 ; X86-NEXT: addl $-2147483648, %eax # imm = 0x80000000
62 ; X86-NEXT: adcl $0, %edx
65 ; X64-LINUX-LABEL: test2:
66 ; X64-LINUX: # %bb.0: # %entry
67 ; X64-LINUX-NEXT: movq %rdi, %rax
68 ; X64-LINUX-NEXT: subq $-2147483648, %rax # imm = 0x80000000
69 ; X64-LINUX-NEXT: retq
71 ; X64-WIN32-LABEL: test2:
72 ; X64-WIN32: # %bb.0: # %entry
73 ; X64-WIN32-NEXT: movq %rcx, %rax
74 ; X64-WIN32-NEXT: subq $-2147483648, %rax # imm = 0x80000000
75 ; X64-WIN32-NEXT: retq
82 ; X86: # %bb.0: # %entry
84 ; X86-NEXT: adcl $0, %edx
87 ; X64-LINUX-LABEL: test3:
88 ; X64-LINUX: # %bb.0: # %entry
89 ; X64-LINUX-NEXT: leaq 128(%rdi), %rax
90 ; X64-LINUX-NEXT: retq
92 ; X64-WIN32-LABEL: test3:
93 ; X64-WIN32: # %bb.0: # %entry
94 ; X64-WIN32-NEXT: leaq 128(%rcx), %rax
95 ; X64-WIN32-NEXT: retq
103 ; X86: # %bb.0: # %entry
104 ; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx
108 ; X86-NEXT: adcl $0, %edx
111 ; X64-LINUX-LABEL: test3b:
112 ; X64-LINUX: # %bb.0: # %entry
113 ; X64-LINUX-NEXT: movq (%rdi), %rax
114 ; X64-LINUX-NEXT: subq $-128, %rax
115 ; X64-LINUX-NEXT: retq
117 ; X64-WIN32-LABEL: test3b:
118 ; X64-WIN32: # %bb.0: # %entry
119 ; X64-WIN32-NEXT: movq (%rcx), %rax
120 ; X64-WIN32-NEXT: subq $-128, %rax
121 ; X64-WIN32-NEXT: retq
130 ; X86: # %bb.0: # %entry
131 ; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
132 ; X86-NEXT: addl {{[0-9]+}}(%esp), %eax
135 ; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
136 ; X86-NEXT: movl $0, (%eax)
141 ; X64-LINUX-LABEL: test4:
142 ; X64-LINUX: # %bb.0: # %entry
143 ; X64-LINUX-NEXT: addl %esi, %edi
144 ; X64-LINUX-NEXT: jo .LBB5_2
145 ; X64-LINUX-NEXT: # %bb.1: # %normal
146 ; X64-LINUX-NEXT: movl $0, (%rdx)
147 ; X64-LINUX-NEXT: .LBB5_2: # %overflow
148 ; X64-LINUX-NEXT: xorl %eax, %eax
149 ; X64-LINUX-NEXT: retq
151 ; X64-WIN32-LABEL: test4:
152 ; X64-WIN32: # %bb.0: # %entry
153 ; X64-WIN32-NEXT: addl %edx, %ecx
154 ; X64-WIN32-NEXT: jo .LBB5_2
155 ; X64-WIN32-NEXT: # %bb.1: # %normal
156 ; X64-WIN32-NEXT: movl $0, (%r8)
157 ; X64-WIN32-NEXT: .LBB5_2: # %overflow
158 ; X64-WIN32-NEXT: xorl %eax, %eax
159 ; X64-WIN32-NEXT: retq
162 %sum = extractvalue {i32, i1} %t, 0
167 store i32 0, i32* %X
176 ; X86: # %bb.0: # %entry
177 ; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
178 ; X86-NEXT: addl {{[0-9]+}}(%esp), %eax
181 ; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
182 ; X86-NEXT: movl $0, (%eax)
187 ; X64-LINUX-LABEL: test5:
188 ; X64-LINUX: # %bb.0: # %entry
189 ; X64-LINUX-NEXT: addl %esi, %edi
190 ; X64-LINUX-NEXT: jb .LBB6_2
191 ; X64-LINUX-NEXT: # %bb.1: # %normal
192 ; X64-LINUX-NEXT: movl $0, (%rdx)
193 ; X64-LINUX-NEXT: .LBB6_2: # %carry
194 ; X64-LINUX-NEXT: xorl %eax, %eax
195 ; X64-LINUX-NEXT: retq
197 ; X64-WIN32-LABEL: test5:
198 ; X64-WIN32: # %bb.0: # %entry
199 ; X64-WIN32-NEXT: addl %edx, %ecx
200 ; X64-WIN32-NEXT: jb .LBB6_2
201 ; X64-WIN32-NEXT: # %bb.1: # %normal
202 ; X64-WIN32-NEXT: movl $0, (%r8)
203 ; X64-WIN32-NEXT: .LBB6_2: # %carry
204 ; X64-WIN32-NEXT: xorl %eax, %eax
205 ; X64-WIN32-NEXT: retq
208 %sum = extractvalue {i32, i1} %t, 0
213 store i32 0, i32* %X
222 ; X86: # %bb.0: # %entry
223 ; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
224 ; X86-NEXT: movl {{[0-9]+}}(%esp), %edx
225 ; X86-NEXT: addl {{[0-9]+}}(%esp), %edx
228 ; X64-LINUX-LABEL: test6:
229 ; X64-LINUX: # %bb.0: # %entry
230 ; X64-LINUX-NEXT: # kill: def $esi killed $esi def $rsi
231 ; X64-LINUX-NEXT: shlq $32, %rsi
232 ; X64-LINUX-NEXT: leaq (%rsi,%rdi), %rax
233 ; X64-LINUX-NEXT: retq
235 ; X64-WIN32-LABEL: test6:
236 ; X64-WIN32: # %bb.0: # %entry
237 ; X64-WIN32-NEXT: # kill: def $edx killed $edx def $rdx
238 ; X64-WIN32-NEXT: shlq $32, %rdx
239 ; X64-WIN32-NEXT: leaq (%rdx,%rcx), %rax
240 ; X64-WIN32-NEXT: retq
250 ; X86: # %bb.0: # %entry
251 ; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
252 ; X86-NEXT: addl {{[0-9]+}}(%esp), %eax
256 ; X64-LINUX-LABEL: test7:
257 ; X64-LINUX: # %bb.0: # %entry
258 ; X64-LINUX-NEXT: movl %edi, %eax
259 ; X64-LINUX-NEXT: addl %esi, %eax
260 ; X64-LINUX-NEXT: setb %dl
261 ; X64-LINUX-NEXT: retq
263 ; X64-WIN32-LABEL: test7:
264 ; X64-WIN32: # %bb.0: # %entry
265 ; X64-WIN32-NEXT: movl %ecx, %eax
266 ; X64-WIN32-NEXT: addl %edx, %eax
267 ; X64-WIN32-NEXT: setb %dl
268 ; X64-WIN32-NEXT: retq
277 ; X86: # %bb.0: # %entry
278 ; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
279 ; X86-NEXT: movl {{[0-9]+}}(%esp), %edx
280 ; X86-NEXT: addl {{[0-9]+}}(%esp), %eax
281 ; X86-NEXT: adcl {{[0-9]+}}(%esp), %edx
285 ; X64-LINUX-LABEL: test8:
286 ; X64-LINUX: # %bb.0: # %entry
287 ; X64-LINUX-NEXT: movq %rdi, %rax
288 ; X64-LINUX-NEXT: addq %rsi, %rax
289 ; X64-LINUX-NEXT: setb %dl
290 ; X64-LINUX-NEXT: retq
292 ; X64-WIN32-LABEL: test8:
293 ; X64-WIN32: # %bb.0: # %entry
294 ; X64-WIN32-NEXT: movq %rcx, %rax
295 ; X64-WIN32-NEXT: addq %rdx, %rax
296 ; X64-WIN32-NEXT: setb %dl
297 ; X64-WIN32-NEXT: retq
302 %res.0 = trunc i65 %sum to i64
304 %res.1 = icmp ne i65 %overflow, 0
305 %final0 = insertvalue {i64, i1} undef, i64 %res.0, 0
312 ; X86: # %bb.0: # %entry
313 ; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
315 ; X86-NEXT: cmpl $10, {{[0-9]+}}(%esp)
320 ; X64-LINUX-LABEL: test9:
321 ; X64-LINUX: # %bb.0: # %entry
322 ; X64-LINUX-NEXT: movl %esi, %eax
323 ; X64-LINUX-NEXT: xorl %ecx, %ecx
324 ; X64-LINUX-NEXT: cmpl $10, %edi
325 ; X64-LINUX-NEXT: sete %cl
326 ; X64-LINUX-NEXT: subl %ecx, %eax
327 ; X64-LINUX-NEXT: retq
329 ; X64-WIN32-LABEL: test9:
330 ; X64-WIN32: # %bb.0: # %entry
331 ; X64-WIN32-NEXT: movl %edx, %eax
332 ; X64-WIN32-NEXT: xorl %edx, %edx
333 ; X64-WIN32-NEXT: cmpl $10, %ecx
334 ; X64-WIN32-NEXT: sete %dl
335 ; X64-WIN32-NEXT: subl %edx, %eax
336 ; X64-WIN32-NEXT: retq
346 ; X86: # %bb.0: # %entry
347 ; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
352 ; X64-LINUX-LABEL: test10:
353 ; X64-LINUX: # %bb.0: # %entry
354 ; X64-LINUX-NEXT: incl %edi
355 ; X64-LINUX-NEXT: seto %al
356 ; X64-LINUX-NEXT: retq
358 ; X64-WIN32-LABEL: test10:
359 ; X64-WIN32: # %bb.0: # %entry
360 ; X64-WIN32-NEXT: incl %ecx
361 ; X64-WIN32-NEXT: seto %al
362 ; X64-WIN32-NEXT: retq
371 ; X86: # %bb.0: # %entry
375 ; X64-LINUX-LABEL: test11:
376 ; X64-LINUX: # %bb.0: # %entry
377 ; X64-LINUX-NEXT: subl $-128, (%rdi)
378 ; X64-LINUX-NEXT: retq
380 ; X64-WIN32-LABEL: test11:
381 ; X64-WIN32: # %bb.0: # %entry
382 ; X64-WIN32-NEXT: subl $-128, (%rcx)
383 ; X64-WIN32-NEXT: retq
393 ; X86: # %bb.0: # %entry
394 ; X86-NEXT: addl $-2147483648, (%eax) # imm = 0x80000000
395 ; X86-NEXT: adcl $0, 4(%eax)
398 ; X64-LINUX-LABEL: test12:
399 ; X64-LINUX: # %bb.0: # %entry
400 ; X64-LINUX-NEXT: subq $-2147483648, (%rdi) # imm = 0x80000000
401 ; X64-LINUX-NEXT: retq
403 ; X64-WIN32-LABEL: test12:
404 ; X64-WIN32: # %bb.0: # %entry
405 ; X64-WIN32-NEXT: subq $-2147483648, (%rcx) # imm = 0x80000000
406 ; X64-WIN32-NEXT: retq
416 ; X86: # %bb.0: # %entry
418 ; X86-NEXT: adcl $0, 4(%eax)
421 ; X64-LINUX-LABEL: test13:
422 ; X64-LINUX: # %bb.0: # %entry
423 ; X64-LINUX-NEXT: subq $-128, (%rdi)
424 ; X64-LINUX-NEXT: retq
426 ; X64-WIN32-LABEL: test13:
427 ; X64-WIN32: # %bb.0: # %entry
428 ; X64-WIN32-NEXT: subq $-128, (%rcx)
429 ; X64-WIN32-NEXT: retq
439 ; X86: # %bb.0:
441 ; X86-NEXT: subl {{[0-9]+}}(%esp), %eax
444 ; X64-LINUX-LABEL: inc_not:
445 ; X64-LINUX: # %bb.0:
446 ; X64-LINUX-NEXT: movl %edi, %eax
447 ; X64-LINUX-NEXT: negl %eax
448 ; X64-LINUX-NEXT: retq
450 ; X64-WIN32-LABEL: inc_not:
451 ; X64-WIN32: # %bb.0:
452 ; X64-WIN32-NEXT: movl %ecx, %eax
453 ; X64-WIN32-NEXT: negl %eax
454 ; X64-WIN32-NEXT: retq
462 ; X86: # %bb.0:
465 ; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
468 ; X86-NEXT: subl {{[0-9]+}}(%esp), %edx
470 ; X86-NEXT: subl {{[0-9]+}}(%esp), %esi
472 ; X86-NEXT: subl {{[0-9]+}}(%esp), %edi
473 ; X86-NEXT: subl {{[0-9]+}}(%esp), %ecx
482 ; X64-LINUX-LABEL: inc_not_vec:
483 ; X64-LINUX: # %bb.0:
484 ; X64-LINUX-NEXT: pxor %xmm1, %xmm1
485 ; X64-LINUX-NEXT: psubd %xmm0, %xmm1
486 ; X64-LINUX-NEXT: movdqa %xmm1, %xmm0
487 ; X64-LINUX-NEXT: retq
489 ; X64-WIN32-LABEL: inc_not_vec:
490 ; X64-WIN32: # %bb.0:
491 ; X64-WIN32-NEXT: pxor %xmm0, %xmm0
492 ; X64-WIN32-NEXT: psubd (%rcx), %xmm0
493 ; X64-WIN32-NEXT: retq
501 ; X86: # %bb.0:
502 ; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
503 ; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx
505 ; X86-NEXT: subl {{[0-9]+}}(%esp), %edx
510 ; X64-LINUX-LABEL: uaddo1_not:
511 ; X64-LINUX: # %bb.0:
512 ; X64-LINUX-NEXT: negl %edi
513 ; X64-LINUX-NEXT: movl %edi, (%rsi)
514 ; X64-LINUX-NEXT: setae (%rdx)
515 ; X64-LINUX-NEXT: retq
517 ; X64-WIN32-LABEL: uaddo1_not:
518 ; X64-WIN32: # %bb.0:
519 ; X64-WIN32-NEXT: negl %ecx
520 ; X64-WIN32-NEXT: movl %ecx, (%rdx)
521 ; X64-WIN32-NEXT: setae (%r8)
522 ; X64-WIN32-NEXT: retq
525 %r0 = extractvalue {i32, i1} %uaddo, 0
534 ; X86: # %bb.0:
535 ; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
536 ; X86-NEXT: subl {{[0-9]+}}(%esp), %eax
539 ; X64-LINUX-LABEL: add_to_sub:
540 ; X64-LINUX: # %bb.0:
541 ; X64-LINUX-NEXT: movl %esi, %eax
542 ; X64-LINUX-NEXT: subl %edi, %eax
543 ; X64-LINUX-NEXT: retq
545 ; X64-WIN32-LABEL: add_to_sub:
546 ; X64-WIN32: # %bb.0:
547 ; X64-WIN32-NEXT: movl %edx, %eax
548 ; X64-WIN32-NEXT: subl %ecx, %eax
549 ; X64-WIN32-NEXT: retq
562 ; X86: # %bb.0: # %entry
563 ; X86-NEXT: movl {{[0-9]+}}(%esp), %eax
575 ; X64-LINUX-LABEL: add_i32_128_flag:
576 ; X64-LINUX: # %bb.0: # %entry
577 ; X64-LINUX-NEXT: subl $-128, %edi
578 ; X64-LINUX-NEXT: je .LBB19_1
579 ; X64-LINUX-NEXT: # %bb.2: # %if.then
580 ; X64-LINUX-NEXT: jmp bar_i32 # TAILCALL
581 ; X64-LINUX-NEXT: .LBB19_1: # %if.end
582 ; X64-LINUX-NEXT: retq
584 ; X64-WIN32-LABEL: add_i32_128_flag:
585 ; X64-WIN32: # %bb.0: # %entry
586 ; X64-WIN32-NEXT: subl $-128, %ecx
587 ; X64-WIN32-NEXT: je .LBB19_1
588 ; X64-WIN32-NEXT: # %bb.2: # %if.then
589 ; X64-WIN32-NEXT: jmp bar_i32 # TAILCALL
590 ; X64-WIN32-NEXT: .LBB19_1: # %if.end
591 ; X64-WIN32-NEXT: retq
594 %tobool = icmp eq i32 %add, 0
608 ; X86: # %bb.0: # %entry
609 ; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx
611 ; X86-NEXT: addl {{[0-9]+}}(%esp), %eax
612 ; X86-NEXT: adcl $0, %ecx
627 ; X64-LINUX-LABEL: add_i64_128_flag:
628 ; X64-LINUX: # %bb.0: # %entry
629 ; X64-LINUX-NEXT: subq $-128, %rdi
630 ; X64-LINUX-NEXT: je .LBB20_1
631 ; X64-LINUX-NEXT: # %bb.2: # %if.then
632 ; X64-LINUX-NEXT: jmp bar_i64 # TAILCALL
633 ; X64-LINUX-NEXT: .LBB20_1: # %if.end
634 ; X64-LINUX-NEXT: retq
636 ; X64-WIN32-LABEL: add_i64_128_flag:
637 ; X64-WIN32: # %bb.0: # %entry
638 ; X64-WIN32-NEXT: subq $-128, %rcx
639 ; X64-WIN32-NEXT: je .LBB20_1
640 ; X64-WIN32-NEXT: # %bb.2: # %if.then
641 ; X64-WIN32-NEXT: jmp bar_i64 # TAILCALL
642 ; X64-WIN32-NEXT: .LBB20_1: # %if.end
643 ; X64-WIN32-NEXT: retq
646 %tobool = icmp eq i64 %add, 0
660 ; X86: # %bb.0: # %entry
661 ; X86-NEXT: movl {{[0-9]+}}(%esp), %ecx
662 ; X86-NEXT: movl $-2147483648, %eax # imm = 0x80000000
663 ; X86-NEXT: addl {{[0-9]+}}(%esp), %eax
664 ; X86-NEXT: adcl $0, %ecx
679 ; X64-LINUX-LABEL: add_i64_2147483648_flag:
680 ; X64-LINUX: # %bb.0: # %entry
681 ; X64-LINUX-NEXT: subq $-2147483648, %rdi # imm = 0x80000000
682 ; X64-LINUX-NEXT: je .LBB21_1
683 ; X64-LINUX-NEXT: # %bb.2: # %if.then
684 ; X64-LINUX-NEXT: jmp bar_i64 # TAILCALL
685 ; X64-LINUX-NEXT: .LBB21_1: # %if.end
686 ; X64-LINUX-NEXT: retq
688 ; X64-WIN32-LABEL: add_i64_2147483648_flag:
689 ; X64-WIN32: # %bb.0: # %entry
690 ; X64-WIN32-NEXT: subq $-2147483648, %rcx # imm = 0x80000000
691 ; X64-WIN32-NEXT: je .LBB21_1
692 ; X64-WIN32-NEXT: # %bb.2: # %if.then
693 ; X64-WIN32-NEXT: jmp bar_i64 # TAILCALL
694 ; X64-WIN32-NEXT: .LBB21_1: # %if.end
695 ; X64-WIN32-NEXT: retq
698 %tobool = icmp eq i64 %add, 0