mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-10-25 22:12:57 +02:00
8e0dfbe3df
In https://reviews.llvm.org/D25347, Geoff noticed that we still have useless copy that we can eliminate after register allocation. At the time the allocation is chosen for those copies, they are not useless but, because of changes in the surrounding code, later on they might become useless. The Greedy allocator already has a mechanism to deal with such cases with a late recoloring. However, we missed to record the some of the missed hints. This commit fixes that. llvm-svn: 287070
1238 lines
48 KiB
LLVM
1238 lines
48 KiB
LLVM
; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
|
|
; RUN: llc < %s -mtriple=i386-unknown | FileCheck %s --check-prefix=X32
|
|
; RUN: llc < %s -mtriple=x86_64-unknown | FileCheck %s --check-prefix=X64
|
|
|
|
define void @test_512(i512* %a, i512* %b, i512* %out) nounwind {
|
|
; X32-LABEL: test_512:
|
|
; X32: # BB#0:
|
|
; X32-NEXT: pushl %ebp
|
|
; X32-NEXT: movl %esp, %ebp
|
|
; X32-NEXT: pushl %ebx
|
|
; X32-NEXT: pushl %edi
|
|
; X32-NEXT: pushl %esi
|
|
; X32-NEXT: andl $-8, %esp
|
|
; X32-NEXT: subl $656, %esp # imm = 0x290
|
|
; X32-NEXT: movl 8(%ebp), %eax
|
|
; X32-NEXT: movl 48(%eax), %ecx
|
|
; X32-NEXT: movl %ecx, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: movl 52(%eax), %ecx
|
|
; X32-NEXT: movl %ecx, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: movl 56(%eax), %ecx
|
|
; X32-NEXT: movl %ecx, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: movl 60(%eax), %ecx
|
|
; X32-NEXT: movl %ecx, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: movl 40(%eax), %ecx
|
|
; X32-NEXT: movl %ecx, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: movl 44(%eax), %ecx
|
|
; X32-NEXT: movl %ecx, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: movl 32(%eax), %ecx
|
|
; X32-NEXT: movl %ecx, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: movl 36(%eax), %ecx
|
|
; X32-NEXT: movl %ecx, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: movl (%eax), %ecx
|
|
; X32-NEXT: movl %ecx, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: movl 4(%eax), %ecx
|
|
; X32-NEXT: movl %ecx, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: movl 16(%eax), %ecx
|
|
; X32-NEXT: movl %ecx, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: movl 20(%eax), %ecx
|
|
; X32-NEXT: movl %ecx, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: movl 8(%eax), %ecx
|
|
; X32-NEXT: movl %ecx, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: movl 12(%eax), %ecx
|
|
; X32-NEXT: movl %ecx, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: movl 24(%eax), %ecx
|
|
; X32-NEXT: movl %ecx, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: movl 28(%eax), %eax
|
|
; X32-NEXT: movl %eax, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: movl 12(%ebp), %eax
|
|
; X32-NEXT: movl 48(%eax), %ecx
|
|
; X32-NEXT: movl %ecx, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: movl 52(%eax), %ecx
|
|
; X32-NEXT: movl %ecx, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: movl 56(%eax), %ecx
|
|
; X32-NEXT: movl %ecx, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: movl 60(%eax), %ecx
|
|
; X32-NEXT: movl %ecx, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: movl 32(%eax), %ecx
|
|
; X32-NEXT: movl %ecx, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: movl 36(%eax), %ecx
|
|
; X32-NEXT: movl %ecx, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: movl 40(%eax), %ecx
|
|
; X32-NEXT: movl %ecx, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: movl 44(%eax), %ecx
|
|
; X32-NEXT: movl %ecx, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: movl (%eax), %ecx
|
|
; X32-NEXT: movl %ecx, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: movl 4(%eax), %ecx
|
|
; X32-NEXT: movl %ecx, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: movl 8(%eax), %ecx
|
|
; X32-NEXT: movl %ecx, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: movl 12(%eax), %ecx
|
|
; X32-NEXT: movl %ecx, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: movl 16(%eax), %esi
|
|
; X32-NEXT: movl 20(%eax), %edi
|
|
; X32-NEXT: movl 24(%eax), %ebx
|
|
; X32-NEXT: movl 28(%eax), %eax
|
|
; X32-NEXT: movl %eax, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl %eax
|
|
; X32-NEXT: pushl %ebx
|
|
; X32-NEXT: movl %ebx, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: pushl %edi
|
|
; X32-NEXT: pushl %esi
|
|
; X32-NEXT: leal {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: pushl %eax
|
|
; X32-NEXT: calll __multi3
|
|
; X32-NEXT: addl $32, %esp
|
|
; X32-NEXT: leal {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl %edi
|
|
; X32-NEXT: movl %edi, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: pushl %esi
|
|
; X32-NEXT: movl %esi, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl %eax
|
|
; X32-NEXT: calll __multi3
|
|
; X32-NEXT: addl $32, %esp
|
|
; X32-NEXT: leal {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl %ebx
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl %eax
|
|
; X32-NEXT: calll __multi3
|
|
; X32-NEXT: addl $32, %esp
|
|
; X32-NEXT: leal {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl %edi
|
|
; X32-NEXT: pushl %esi
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %edi # 4-byte Reload
|
|
; X32-NEXT: pushl %edi
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %ebx # 4-byte Reload
|
|
; X32-NEXT: pushl %ebx
|
|
; X32-NEXT: pushl %eax
|
|
; X32-NEXT: calll __multi3
|
|
; X32-NEXT: addl $32, %esp
|
|
; X32-NEXT: leal {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %esi # 4-byte Reload
|
|
; X32-NEXT: pushl %esi
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl %eax
|
|
; X32-NEXT: calll __multi3
|
|
; X32-NEXT: addl $32, %esp
|
|
; X32-NEXT: leal {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl %esi
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %esi # 4-byte Reload
|
|
; X32-NEXT: pushl %esi
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl %edi
|
|
; X32-NEXT: pushl %ebx
|
|
; X32-NEXT: pushl %eax
|
|
; X32-NEXT: calll __multi3
|
|
; X32-NEXT: addl $32, %esp
|
|
; X32-NEXT: leal {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %ebx # 4-byte Reload
|
|
; X32-NEXT: pushl %ebx
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %edi # 4-byte Reload
|
|
; X32-NEXT: pushl %edi
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl %eax
|
|
; X32-NEXT: calll __multi3
|
|
; X32-NEXT: addl $32, %esp
|
|
; X32-NEXT: leal {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl %esi
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl %eax
|
|
; X32-NEXT: calll __multi3
|
|
; X32-NEXT: addl $32, %esp
|
|
; X32-NEXT: leal {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl %ebx
|
|
; X32-NEXT: pushl %edi
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %edi # 4-byte Reload
|
|
; X32-NEXT: pushl %edi
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %esi # 4-byte Reload
|
|
; X32-NEXT: pushl %esi
|
|
; X32-NEXT: pushl %eax
|
|
; X32-NEXT: calll __multi3
|
|
; X32-NEXT: addl $32, %esp
|
|
; X32-NEXT: leal {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %ebx # 4-byte Reload
|
|
; X32-NEXT: pushl %ebx
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl %eax
|
|
; X32-NEXT: calll __multi3
|
|
; X32-NEXT: addl $32, %esp
|
|
; X32-NEXT: leal {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl %edi
|
|
; X32-NEXT: pushl %esi
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl %eax
|
|
; X32-NEXT: calll __multi3
|
|
; X32-NEXT: addl $32, %esp
|
|
; X32-NEXT: leal {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl %ebx
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %ebx # 4-byte Reload
|
|
; X32-NEXT: pushl %ebx
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl %eax
|
|
; X32-NEXT: calll __multi3
|
|
; X32-NEXT: addl $32, %esp
|
|
; X32-NEXT: leal {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl %edi
|
|
; X32-NEXT: pushl %esi
|
|
; X32-NEXT: pushl %eax
|
|
; X32-NEXT: calll __multi3
|
|
; X32-NEXT: addl $32, %esp
|
|
; X32-NEXT: leal {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %esi # 4-byte Reload
|
|
; X32-NEXT: pushl %esi
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %edi # 4-byte Reload
|
|
; X32-NEXT: pushl %edi
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl %ebx
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl %eax
|
|
; X32-NEXT: calll __multi3
|
|
; X32-NEXT: addl $32, %esp
|
|
; X32-NEXT: leal {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %ebx # 4-byte Reload
|
|
; X32-NEXT: pushl %ebx
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl %eax
|
|
; X32-NEXT: calll __multi3
|
|
; X32-NEXT: addl $32, %esp
|
|
; X32-NEXT: leal {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl %esi
|
|
; X32-NEXT: pushl %edi
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %esi # 4-byte Reload
|
|
; X32-NEXT: pushl %esi
|
|
; X32-NEXT: pushl %ebx
|
|
; X32-NEXT: pushl %eax
|
|
; X32-NEXT: calll __multi3
|
|
; X32-NEXT: addl $32, %esp
|
|
; X32-NEXT: leal {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %edi # 4-byte Reload
|
|
; X32-NEXT: pushl %edi
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl %eax
|
|
; X32-NEXT: calll __multi3
|
|
; X32-NEXT: addl $32, %esp
|
|
; X32-NEXT: leal {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: pushl %esi
|
|
; X32-NEXT: pushl %ebx
|
|
; X32-NEXT: pushl %edi
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %ebx # 4-byte Reload
|
|
; X32-NEXT: pushl %ebx
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl %eax
|
|
; X32-NEXT: calll __multi3
|
|
; X32-NEXT: addl $32, %esp
|
|
; X32-NEXT: leal {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl %edi
|
|
; X32-NEXT: pushl %ebx
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl %eax
|
|
; X32-NEXT: calll __multi3
|
|
; X32-NEXT: addl $32, %esp
|
|
; X32-NEXT: leal {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl %eax
|
|
; X32-NEXT: calll __multi3
|
|
; X32-NEXT: addl $32, %esp
|
|
; X32-NEXT: leal {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl %eax
|
|
; X32-NEXT: calll __multi3
|
|
; X32-NEXT: addl $32, %esp
|
|
; X32-NEXT: leal {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %edi # 4-byte Reload
|
|
; X32-NEXT: pushl %edi
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %ebx # 4-byte Reload
|
|
; X32-NEXT: pushl %ebx
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl %eax
|
|
; X32-NEXT: calll __multi3
|
|
; X32-NEXT: addl $32, %esp
|
|
; X32-NEXT: leal {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl %esi
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl %eax
|
|
; X32-NEXT: calll __multi3
|
|
; X32-NEXT: addl $32, %esp
|
|
; X32-NEXT: leal {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl %edi
|
|
; X32-NEXT: pushl %ebx
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %esi # 4-byte Reload
|
|
; X32-NEXT: pushl %esi
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %ebx # 4-byte Reload
|
|
; X32-NEXT: pushl %ebx
|
|
; X32-NEXT: pushl %eax
|
|
; X32-NEXT: calll __multi3
|
|
; X32-NEXT: addl $32, %esp
|
|
; X32-NEXT: leal {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl %eax
|
|
; X32-NEXT: calll __multi3
|
|
; X32-NEXT: addl $32, %esp
|
|
; X32-NEXT: leal {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %edi # 4-byte Reload
|
|
; X32-NEXT: pushl %edi
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl %esi
|
|
; X32-NEXT: pushl %ebx
|
|
; X32-NEXT: pushl %eax
|
|
; X32-NEXT: calll __multi3
|
|
; X32-NEXT: addl $32, %esp
|
|
; X32-NEXT: leal {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %esi # 4-byte Reload
|
|
; X32-NEXT: pushl %esi
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %ebx # 4-byte Reload
|
|
; X32-NEXT: pushl %ebx
|
|
; X32-NEXT: pushl %eax
|
|
; X32-NEXT: calll __multi3
|
|
; X32-NEXT: addl $32, %esp
|
|
; X32-NEXT: leal {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl %edi
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %edi # 4-byte Reload
|
|
; X32-NEXT: pushl %edi
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl %eax
|
|
; X32-NEXT: calll __multi3
|
|
; X32-NEXT: addl $32, %esp
|
|
; X32-NEXT: leal {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl %esi
|
|
; X32-NEXT: pushl %ebx
|
|
; X32-NEXT: pushl %eax
|
|
; X32-NEXT: calll __multi3
|
|
; X32-NEXT: addl $32, %esp
|
|
; X32-NEXT: leal {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: pushl %edi
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %edi # 4-byte Reload
|
|
; X32-NEXT: pushl %edi
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %esi # 4-byte Reload
|
|
; X32-NEXT: pushl %esi
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl %ebx
|
|
; X32-NEXT: pushl %eax
|
|
; X32-NEXT: calll __multi3
|
|
; X32-NEXT: addl $32, %esp
|
|
; X32-NEXT: leal {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl $0
|
|
; X32-NEXT: pushl %edi
|
|
; X32-NEXT: pushl %esi
|
|
; X32-NEXT: pushl %eax
|
|
; X32-NEXT: calll __multi3
|
|
; X32-NEXT: addl $32, %esp
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %edx
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %esi
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %ecx
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: addl {{[0-9]+}}(%esp), %ecx
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: adcl $0, %esi
|
|
; X32-NEXT: adcl $0, %edx
|
|
; X32-NEXT: addl {{[0-9]+}}(%esp), %ecx
|
|
; X32-NEXT: movl %ecx, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: movl %eax, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: adcl $0, %eax
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %ecx
|
|
; X32-NEXT: adcl $0, %ecx
|
|
; X32-NEXT: addl %esi, %eax
|
|
; X32-NEXT: adcl %edx, %ecx
|
|
; X32-NEXT: movl $0, %edi
|
|
; X32-NEXT: adcl $0, %edi
|
|
; X32-NEXT: sbbl %edx, %edx
|
|
; X32-NEXT: andl $1, %edx
|
|
; X32-NEXT: addl {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %ecx
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %edi
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %edx
|
|
; X32-NEXT: movl %edx, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %edx
|
|
; X32-NEXT: movl %edx, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %ebx
|
|
; X32-NEXT: movl %ebx, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: addl %edx, %ebx
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %esi
|
|
; X32-NEXT: movl %esi, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %edx
|
|
; X32-NEXT: movl %edx, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: adcl %esi, %edx
|
|
; X32-NEXT: movl %edx, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %esi
|
|
; X32-NEXT: movl %esi, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %edx
|
|
; X32-NEXT: movl %edx, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: adcl %esi, %edx
|
|
; X32-NEXT: movl %edx, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %esi
|
|
; X32-NEXT: movl %esi, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %edx
|
|
; X32-NEXT: movl %edx, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: adcl %esi, %edx
|
|
; X32-NEXT: addl %eax, %ebx
|
|
; X32-NEXT: movl %ebx, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: adcl %ecx, {{[0-9]+}}(%esp) # 4-byte Folded Spill
|
|
; X32-NEXT: adcl %edi, {{[0-9]+}}(%esp) # 4-byte Folded Spill
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %edx # 4-byte Folded Reload
|
|
; X32-NEXT: movl %edx, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: addl {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: movl %eax, %ecx
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %edx
|
|
; X32-NEXT: adcl $0, %edx
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %esi
|
|
; X32-NEXT: adcl $0, %esi
|
|
; X32-NEXT: addl {{[0-9]+}}(%esp), %ecx
|
|
; X32-NEXT: movl %ecx, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: movl %eax, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: adcl $0, %eax
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %ecx
|
|
; X32-NEXT: adcl $0, %ecx
|
|
; X32-NEXT: addl %edx, %eax
|
|
; X32-NEXT: adcl %esi, %ecx
|
|
; X32-NEXT: movl $0, %edx
|
|
; X32-NEXT: adcl $0, %edx
|
|
; X32-NEXT: sbbl %esi, %esi
|
|
; X32-NEXT: andl $1, %esi
|
|
; X32-NEXT: addl {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %ecx
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %edx
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %esi
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %edi
|
|
; X32-NEXT: movl %edi, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %ebx # 4-byte Reload
|
|
; X32-NEXT: addl %edi, %ebx
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %edi
|
|
; X32-NEXT: movl %edi, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: adcl %edi, {{[0-9]+}}(%esp) # 4-byte Folded Spill
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %edi
|
|
; X32-NEXT: movl %edi, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: adcl %edi, {{[0-9]+}}(%esp) # 4-byte Folded Spill
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %edi
|
|
; X32-NEXT: movl %edi, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: adcl %edi, {{[0-9]+}}(%esp) # 4-byte Folded Spill
|
|
; X32-NEXT: addl %eax, %ebx
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %edi # 4-byte Reload
|
|
; X32-NEXT: adcl %ecx, %edi
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %eax # 4-byte Reload
|
|
; X32-NEXT: adcl %edx, %eax
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %ecx # 4-byte Reload
|
|
; X32-NEXT: adcl %esi, %ecx
|
|
; X32-NEXT: addl {{[0-9]+}}(%esp), %ebx
|
|
; X32-NEXT: movl %ebx, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %edi
|
|
; X32-NEXT: movl %edi, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %eax # 4-byte Folded Reload
|
|
; X32-NEXT: movl %eax, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %ecx # 4-byte Folded Reload
|
|
; X32-NEXT: movl %ecx, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: adcl $0, {{[0-9]+}}(%esp) # 4-byte Folded Spill
|
|
; X32-NEXT: adcl $0, {{[0-9]+}}(%esp) # 4-byte Folded Spill
|
|
; X32-NEXT: adcl $0, {{[0-9]+}}(%esp) # 4-byte Folded Spill
|
|
; X32-NEXT: adcl $0, {{[0-9]+}}(%esp) # 4-byte Folded Spill
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: addl {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: movl %eax, %ecx
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %edi
|
|
; X32-NEXT: adcl $0, %edi
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %ebx
|
|
; X32-NEXT: adcl $0, %ebx
|
|
; X32-NEXT: addl {{[0-9]+}}(%esp), %ecx
|
|
; X32-NEXT: movl %ecx, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: movl %eax, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %edx
|
|
; X32-NEXT: adcl $0, %edx
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %esi
|
|
; X32-NEXT: adcl $0, %esi
|
|
; X32-NEXT: addl %edi, %edx
|
|
; X32-NEXT: adcl %ebx, %esi
|
|
; X32-NEXT: movl $0, %eax
|
|
; X32-NEXT: adcl $0, %eax
|
|
; X32-NEXT: sbbl %ebx, %ebx
|
|
; X32-NEXT: andl $1, %ebx
|
|
; X32-NEXT: addl {{[0-9]+}}(%esp), %edx
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %esi
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: movl %eax, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %ebx
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %ecx
|
|
; X32-NEXT: movl %ecx, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %eax # 4-byte Reload
|
|
; X32-NEXT: addl %ecx, %eax
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %edi
|
|
; X32-NEXT: movl %edi, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %ecx # 4-byte Reload
|
|
; X32-NEXT: adcl %edi, %ecx
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %edi
|
|
; X32-NEXT: movl %edi, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: adcl %edi, {{[0-9]+}}(%esp) # 4-byte Folded Spill
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %edi
|
|
; X32-NEXT: movl %edi, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %edi # 4-byte Reload
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %edi # 4-byte Folded Reload
|
|
; X32-NEXT: addl %edx, %eax
|
|
; X32-NEXT: movl %eax, %edx
|
|
; X32-NEXT: adcl %esi, %ecx
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %esi # 4-byte Reload
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %esi # 4-byte Folded Reload
|
|
; X32-NEXT: adcl %ebx, %edi
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %eax # 4-byte Reload
|
|
; X32-NEXT: addl {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: movl %eax, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %eax # 4-byte Reload
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: movl %eax, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %eax # 4-byte Reload
|
|
; X32-NEXT: adcl %eax, {{[0-9]+}}(%esp) # 4-byte Folded Spill
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %eax # 4-byte Reload
|
|
; X32-NEXT: adcl %eax, {{[0-9]+}}(%esp) # 4-byte Folded Spill
|
|
; X32-NEXT: movl %edx, %eax
|
|
; X32-NEXT: adcl $0, %eax
|
|
; X32-NEXT: adcl $0, %ecx
|
|
; X32-NEXT: movl %esi, %edx
|
|
; X32-NEXT: adcl $0, %edx
|
|
; X32-NEXT: movl %edi, %esi
|
|
; X32-NEXT: adcl $0, %esi
|
|
; X32-NEXT: addl {{[0-9]+}}(%esp), %eax # 4-byte Folded Reload
|
|
; X32-NEXT: movl %eax, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %ecx # 4-byte Folded Reload
|
|
; X32-NEXT: movl %ecx, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %edx # 4-byte Folded Reload
|
|
; X32-NEXT: movl %edx, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %esi # 4-byte Folded Reload
|
|
; X32-NEXT: movl %esi, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: movl $0, %eax
|
|
; X32-NEXT: adcl $0, %eax
|
|
; X32-NEXT: movl %eax, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: movl $0, %eax
|
|
; X32-NEXT: adcl $0, %eax
|
|
; X32-NEXT: movl %eax, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: movl $0, %eax
|
|
; X32-NEXT: adcl $0, %eax
|
|
; X32-NEXT: movl %eax, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: sbbl %eax, %eax
|
|
; X32-NEXT: andl $1, %eax
|
|
; X32-NEXT: movl %eax, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: addl {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %ecx
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %ecx
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %edx
|
|
; X32-NEXT: adcl $0, %edx
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %esi
|
|
; X32-NEXT: adcl $0, %esi
|
|
; X32-NEXT: addl {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: movl %eax, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %ecx
|
|
; X32-NEXT: movl %ecx, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: adcl $0, %eax
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %ecx
|
|
; X32-NEXT: adcl $0, %ecx
|
|
; X32-NEXT: addl %edx, %eax
|
|
; X32-NEXT: adcl %esi, %ecx
|
|
; X32-NEXT: movl $0, %edx
|
|
; X32-NEXT: adcl $0, %edx
|
|
; X32-NEXT: sbbl %esi, %esi
|
|
; X32-NEXT: andl $1, %esi
|
|
; X32-NEXT: addl {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %ecx
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %edx
|
|
; X32-NEXT: movl %edx, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %esi
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %edi # 4-byte Reload
|
|
; X32-NEXT: addl {{[0-9]+}}(%esp), %edi # 4-byte Folded Reload
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %ebx # 4-byte Reload
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %ebx # 4-byte Folded Reload
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %edx # 4-byte Reload
|
|
; X32-NEXT: adcl %edx, {{[0-9]+}}(%esp) # 4-byte Folded Spill
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %edx # 4-byte Reload
|
|
; X32-NEXT: adcl %edx, {{[0-9]+}}(%esp) # 4-byte Folded Spill
|
|
; X32-NEXT: addl %eax, %edi
|
|
; X32-NEXT: adcl %ecx, %ebx
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %eax # 4-byte Reload
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %eax # 4-byte Folded Reload
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %ecx # 4-byte Reload
|
|
; X32-NEXT: adcl %esi, %ecx
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %edx # 4-byte Reload
|
|
; X32-NEXT: addl {{[0-9]+}}(%esp), %edx
|
|
; X32-NEXT: movl %edx, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %edx # 4-byte Reload
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %edx
|
|
; X32-NEXT: movl %edx, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %edx # 4-byte Reload
|
|
; X32-NEXT: adcl %edx, {{[0-9]+}}(%esp) # 4-byte Folded Spill
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %edx # 4-byte Reload
|
|
; X32-NEXT: adcl %edx, {{[0-9]+}}(%esp) # 4-byte Folded Spill
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %edi # 4-byte Folded Reload
|
|
; X32-NEXT: movl %edi, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %ebx # 4-byte Folded Reload
|
|
; X32-NEXT: movl %ebx, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %eax # 4-byte Folded Reload
|
|
; X32-NEXT: movl %eax, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %ecx # 4-byte Folded Reload
|
|
; X32-NEXT: movl %ecx, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: addl {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %ecx
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %ecx
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %edi
|
|
; X32-NEXT: adcl $0, %edi
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %ebx
|
|
; X32-NEXT: adcl $0, %ebx
|
|
; X32-NEXT: addl {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: movl %eax, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %ecx
|
|
; X32-NEXT: movl %ecx, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %edx
|
|
; X32-NEXT: adcl $0, %edx
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %esi
|
|
; X32-NEXT: adcl $0, %esi
|
|
; X32-NEXT: addl %edi, %edx
|
|
; X32-NEXT: adcl %ebx, %esi
|
|
; X32-NEXT: movl $0, %eax
|
|
; X32-NEXT: adcl $0, %eax
|
|
; X32-NEXT: sbbl %ecx, %ecx
|
|
; X32-NEXT: andl $1, %ecx
|
|
; X32-NEXT: addl {{[0-9]+}}(%esp), %edx
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %esi
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: movl %eax, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %ecx
|
|
; X32-NEXT: movl %ecx, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %edi
|
|
; X32-NEXT: addl {{[0-9]+}}(%esp), %edi
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %ebx
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %ebx
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %ecx
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %ecx
|
|
; X32-NEXT: addl %edx, %edi
|
|
; X32-NEXT: movl %edi, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: adcl %esi, %ebx
|
|
; X32-NEXT: movl %ebx, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %eax # 4-byte Folded Reload
|
|
; X32-NEXT: movl %eax, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %ecx # 4-byte Folded Reload
|
|
; X32-NEXT: movl %ecx, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %edx
|
|
; X32-NEXT: addl {{[0-9]+}}(%esp), %edx
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: movl %eax, %esi
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: adcl $0, %eax
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %ecx
|
|
; X32-NEXT: adcl $0, %ecx
|
|
; X32-NEXT: addl {{[0-9]+}}(%esp), %edx
|
|
; X32-NEXT: movl %edx, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %esi
|
|
; X32-NEXT: movl %esi, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %esi
|
|
; X32-NEXT: adcl $0, %esi
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %edi
|
|
; X32-NEXT: adcl $0, %edi
|
|
; X32-NEXT: addl %eax, %esi
|
|
; X32-NEXT: adcl %ecx, %edi
|
|
; X32-NEXT: movl $0, %eax
|
|
; X32-NEXT: adcl $0, %eax
|
|
; X32-NEXT: sbbl %ecx, %ecx
|
|
; X32-NEXT: andl $1, %ecx
|
|
; X32-NEXT: addl {{[0-9]+}}(%esp), %esi
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %edi
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: movl %eax, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %ecx
|
|
; X32-NEXT: movl %ecx, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: leal {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl {{[0-9]+}}(%esp) # 4-byte Folded Reload
|
|
; X32-NEXT: pushl %eax
|
|
; X32-NEXT: calll __multi3
|
|
; X32-NEXT: addl $32, %esp
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %ebx
|
|
; X32-NEXT: addl {{[0-9]+}}(%esp), %ebx
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %ecx
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %ecx
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %edx
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %edx
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %eax
|
|
; X32-NEXT: addl %esi, %ebx
|
|
; X32-NEXT: adcl %edi, %ecx
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %edx # 4-byte Folded Reload
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %eax # 4-byte Folded Reload
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %esi
|
|
; X32-NEXT: addl {{[0-9]+}}(%esp), %esi
|
|
; X32-NEXT: movl %esi, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %esi
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %esi
|
|
; X32-NEXT: movl %esi, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %edi # 4-byte Reload
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %edi # 4-byte Folded Reload
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %esi # 4-byte Reload
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %esi # 4-byte Folded Reload
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %ebx # 4-byte Folded Reload
|
|
; X32-NEXT: movl %ebx, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %ecx # 4-byte Folded Reload
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %edx # 4-byte Folded Reload
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %eax # 4-byte Folded Reload
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %ebx # 4-byte Reload
|
|
; X32-NEXT: addl {{[0-9]+}}(%esp), %ebx # 4-byte Folded Reload
|
|
; X32-NEXT: movl %ebx, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %ebx # 4-byte Reload
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %ebx # 4-byte Folded Reload
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %edi # 4-byte Folded Reload
|
|
; X32-NEXT: movl %edi, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %esi # 4-byte Folded Reload
|
|
; X32-NEXT: movl %esi, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %esi # 4-byte Reload
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %esi # 4-byte Folded Reload
|
|
; X32-NEXT: movl %esi, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %ecx # 4-byte Folded Reload
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %edx # 4-byte Folded Reload
|
|
; X32-NEXT: adcl {{[0-9]+}}(%esp), %eax # 4-byte Folded Reload
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %esi
|
|
; X32-NEXT: movl %esi, {{[0-9]+}}(%esp) # 4-byte Spill
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %esi
|
|
; X32-NEXT: movl 16(%ebp), %edi
|
|
; X32-NEXT: movl %esi, 4(%edi)
|
|
; X32-NEXT: movl 16(%ebp), %esi
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %edi # 4-byte Reload
|
|
; X32-NEXT: movl %edi, (%esi)
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %edi # 4-byte Reload
|
|
; X32-NEXT: movl %edi, 8(%esi)
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %edi # 4-byte Reload
|
|
; X32-NEXT: movl %edi, 12(%esi)
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %edi # 4-byte Reload
|
|
; X32-NEXT: movl %edi, 16(%esi)
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %edi # 4-byte Reload
|
|
; X32-NEXT: movl %edi, 20(%esi)
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %edi # 4-byte Reload
|
|
; X32-NEXT: movl %edi, 24(%esi)
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %edi # 4-byte Reload
|
|
; X32-NEXT: movl %edi, 28(%esi)
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %edi # 4-byte Reload
|
|
; X32-NEXT: movl %edi, 32(%esi)
|
|
; X32-NEXT: movl %ebx, 36(%esi)
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %edi # 4-byte Reload
|
|
; X32-NEXT: movl %edi, 40(%esi)
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %edi # 4-byte Reload
|
|
; X32-NEXT: movl %edi, 44(%esi)
|
|
; X32-NEXT: movl {{[0-9]+}}(%esp), %edi # 4-byte Reload
|
|
; X32-NEXT: movl %edi, 48(%esi)
|
|
; X32-NEXT: movl %ecx, 52(%esi)
|
|
; X32-NEXT: movl %edx, 56(%esi)
|
|
; X32-NEXT: movl %eax, 60(%esi)
|
|
; X32-NEXT: leal -12(%ebp), %esp
|
|
; X32-NEXT: popl %esi
|
|
; X32-NEXT: popl %edi
|
|
; X32-NEXT: popl %ebx
|
|
; X32-NEXT: popl %ebp
|
|
; X32-NEXT: retl
|
|
;
|
|
; X64-LABEL: test_512:
|
|
; X64: # BB#0:
|
|
; X64-NEXT: pushq %rbp
|
|
; X64-NEXT: pushq %r15
|
|
; X64-NEXT: pushq %r14
|
|
; X64-NEXT: pushq %r13
|
|
; X64-NEXT: pushq %r12
|
|
; X64-NEXT: pushq %rbx
|
|
; X64-NEXT: pushq %rax
|
|
; X64-NEXT: movq %rdx, (%rsp) # 8-byte Spill
|
|
; X64-NEXT: movq 24(%rdi), %rbp
|
|
; X64-NEXT: movq 16(%rdi), %r11
|
|
; X64-NEXT: movq %rsi, -{{[0-9]+}}(%rsp) # 8-byte Spill
|
|
; X64-NEXT: movq (%rsi), %rdx
|
|
; X64-NEXT: movq 8(%rsi), %r8
|
|
; X64-NEXT: movq %r11, %rax
|
|
; X64-NEXT: movq %rdx, %rsi
|
|
; X64-NEXT: mulq %rsi
|
|
; X64-NEXT: movq %rdx, %r10
|
|
; X64-NEXT: movq %rax, -{{[0-9]+}}(%rsp) # 8-byte Spill
|
|
; X64-NEXT: movq %rbp, %rax
|
|
; X64-NEXT: movq %rbp, -{{[0-9]+}}(%rsp) # 8-byte Spill
|
|
; X64-NEXT: mulq %rsi
|
|
; X64-NEXT: movq %rsi, %r9
|
|
; X64-NEXT: movq %rdx, %rbx
|
|
; X64-NEXT: movq %rax, %rsi
|
|
; X64-NEXT: addq %r10, %rsi
|
|
; X64-NEXT: adcq $0, %rbx
|
|
; X64-NEXT: movq %r11, %rax
|
|
; X64-NEXT: movq %r11, -{{[0-9]+}}(%rsp) # 8-byte Spill
|
|
; X64-NEXT: mulq %r8
|
|
; X64-NEXT: movq %rdx, %rcx
|
|
; X64-NEXT: movq %rax, %r12
|
|
; X64-NEXT: addq %rsi, %r12
|
|
; X64-NEXT: adcq $0, %rcx
|
|
; X64-NEXT: addq %rbx, %rcx
|
|
; X64-NEXT: sbbq %rbx, %rbx
|
|
; X64-NEXT: andl $1, %ebx
|
|
; X64-NEXT: movq %rbp, %rax
|
|
; X64-NEXT: mulq %r8
|
|
; X64-NEXT: movq %rdx, %rsi
|
|
; X64-NEXT: movq %rax, %rbp
|
|
; X64-NEXT: addq %rcx, %rbp
|
|
; X64-NEXT: adcq %rbx, %rsi
|
|
; X64-NEXT: xorl %ecx, %ecx
|
|
; X64-NEXT: movq %r9, %rbx
|
|
; X64-NEXT: movq %rbx, -{{[0-9]+}}(%rsp) # 8-byte Spill
|
|
; X64-NEXT: movq %rbx, %rax
|
|
; X64-NEXT: mulq %rcx
|
|
; X64-NEXT: movq %rdx, %r13
|
|
; X64-NEXT: movq %rax, %r10
|
|
; X64-NEXT: movq %r11, %rax
|
|
; X64-NEXT: mulq %rcx
|
|
; X64-NEXT: movq %rdx, %r9
|
|
; X64-NEXT: movq %r9, -{{[0-9]+}}(%rsp) # 8-byte Spill
|
|
; X64-NEXT: movq %rax, %r15
|
|
; X64-NEXT: movq %r15, -{{[0-9]+}}(%rsp) # 8-byte Spill
|
|
; X64-NEXT: addq %r10, %r15
|
|
; X64-NEXT: adcq %r13, %r9
|
|
; X64-NEXT: addq %rbp, %r15
|
|
; X64-NEXT: adcq %rsi, %r9
|
|
; X64-NEXT: movq %rdi, -{{[0-9]+}}(%rsp) # 8-byte Spill
|
|
; X64-NEXT: movq (%rdi), %r14
|
|
; X64-NEXT: movq %r14, %rax
|
|
; X64-NEXT: mulq %rbx
|
|
; X64-NEXT: movq %rax, -{{[0-9]+}}(%rsp) # 8-byte Spill
|
|
; X64-NEXT: movq %rdx, %r11
|
|
; X64-NEXT: movq 8(%rdi), %rcx
|
|
; X64-NEXT: movq %rcx, %rax
|
|
; X64-NEXT: movq %rcx, -{{[0-9]+}}(%rsp) # 8-byte Spill
|
|
; X64-NEXT: mulq %rbx
|
|
; X64-NEXT: movq %rdx, %rbp
|
|
; X64-NEXT: movq %rax, %rsi
|
|
; X64-NEXT: addq %r11, %rsi
|
|
; X64-NEXT: adcq $0, %rbp
|
|
; X64-NEXT: movq %r14, %rax
|
|
; X64-NEXT: movq %r8, -{{[0-9]+}}(%rsp) # 8-byte Spill
|
|
; X64-NEXT: mulq %r8
|
|
; X64-NEXT: movq %rdx, %rbx
|
|
; X64-NEXT: addq %rsi, %rax
|
|
; X64-NEXT: movq %rax, -{{[0-9]+}}(%rsp) # 8-byte Spill
|
|
; X64-NEXT: adcq $0, %rbx
|
|
; X64-NEXT: addq %rbp, %rbx
|
|
; X64-NEXT: sbbq %rdi, %rdi
|
|
; X64-NEXT: andl $1, %edi
|
|
; X64-NEXT: movq %rcx, %rax
|
|
; X64-NEXT: mulq %r8
|
|
; X64-NEXT: movq %rdx, %rsi
|
|
; X64-NEXT: movq %rax, %rbp
|
|
; X64-NEXT: addq %rbx, %rbp
|
|
; X64-NEXT: adcq %rdi, %rsi
|
|
; X64-NEXT: movq %r14, %rcx
|
|
; X64-NEXT: movq %rcx, %rax
|
|
; X64-NEXT: xorl %edx, %edx
|
|
; X64-NEXT: mulq %rdx
|
|
; X64-NEXT: movq %rdx, %r14
|
|
; X64-NEXT: movq %rax, %r11
|
|
; X64-NEXT: addq %r11, %r10
|
|
; X64-NEXT: adcq %r14, %r13
|
|
; X64-NEXT: addq %rbp, %r10
|
|
; X64-NEXT: adcq %rsi, %r13
|
|
; X64-NEXT: addq -{{[0-9]+}}(%rsp), %r10 # 8-byte Folded Reload
|
|
; X64-NEXT: adcq %r12, %r13
|
|
; X64-NEXT: adcq $0, %r15
|
|
; X64-NEXT: adcq $0, %r9
|
|
; X64-NEXT: movq %r9, -{{[0-9]+}}(%rsp) # 8-byte Spill
|
|
; X64-NEXT: movq -{{[0-9]+}}(%rsp), %rsi # 8-byte Reload
|
|
; X64-NEXT: movq 16(%rsi), %r8
|
|
; X64-NEXT: movq %rcx, %rax
|
|
; X64-NEXT: movq %rcx, %r9
|
|
; X64-NEXT: movq %r9, -{{[0-9]+}}(%rsp) # 8-byte Spill
|
|
; X64-NEXT: mulq %r8
|
|
; X64-NEXT: movq %rdx, %rdi
|
|
; X64-NEXT: movq %rax, %r12
|
|
; X64-NEXT: movq -{{[0-9]+}}(%rsp), %rcx # 8-byte Reload
|
|
; X64-NEXT: movq %rcx, %rax
|
|
; X64-NEXT: mulq %r8
|
|
; X64-NEXT: movq %rdx, %rbx
|
|
; X64-NEXT: movq %rax, %rbp
|
|
; X64-NEXT: addq %rdi, %rbp
|
|
; X64-NEXT: adcq $0, %rbx
|
|
; X64-NEXT: movq 24(%rsi), %rdi
|
|
; X64-NEXT: movq %r9, %rax
|
|
; X64-NEXT: mulq %rdi
|
|
; X64-NEXT: movq %rdx, %rsi
|
|
; X64-NEXT: addq %rbp, %rax
|
|
; X64-NEXT: movq %rax, -{{[0-9]+}}(%rsp) # 8-byte Spill
|
|
; X64-NEXT: adcq $0, %rsi
|
|
; X64-NEXT: addq %rbx, %rsi
|
|
; X64-NEXT: sbbq %rbp, %rbp
|
|
; X64-NEXT: andl $1, %ebp
|
|
; X64-NEXT: movq %rcx, %rax
|
|
; X64-NEXT: mulq %rdi
|
|
; X64-NEXT: movq %rdx, %rbx
|
|
; X64-NEXT: movq %rax, %r9
|
|
; X64-NEXT: addq %rsi, %r9
|
|
; X64-NEXT: adcq %rbp, %rbx
|
|
; X64-NEXT: movq %r8, %rax
|
|
; X64-NEXT: xorl %ecx, %ecx
|
|
; X64-NEXT: mulq %rcx
|
|
; X64-NEXT: movq %rdx, -{{[0-9]+}}(%rsp) # 8-byte Spill
|
|
; X64-NEXT: movq %rax, %rbp
|
|
; X64-NEXT: addq %rbp, %r11
|
|
; X64-NEXT: adcq %rdx, %r14
|
|
; X64-NEXT: addq %r9, %r11
|
|
; X64-NEXT: adcq %rbx, %r14
|
|
; X64-NEXT: addq %r10, %r12
|
|
; X64-NEXT: movq %r12, -{{[0-9]+}}(%rsp) # 8-byte Spill
|
|
; X64-NEXT: adcq %r13, -{{[0-9]+}}(%rsp) # 8-byte Folded Spill
|
|
; X64-NEXT: adcq $0, %r11
|
|
; X64-NEXT: adcq $0, %r14
|
|
; X64-NEXT: addq %r15, %r11
|
|
; X64-NEXT: adcq -{{[0-9]+}}(%rsp), %r14 # 8-byte Folded Reload
|
|
; X64-NEXT: adcq $0, %rcx
|
|
; X64-NEXT: movq %rcx, %r13
|
|
; X64-NEXT: sbbq %r9, %r9
|
|
; X64-NEXT: andl $1, %r9d
|
|
; X64-NEXT: movq -{{[0-9]+}}(%rsp), %rcx # 8-byte Reload
|
|
; X64-NEXT: movq %rcx, %rax
|
|
; X64-NEXT: mulq %r8
|
|
; X64-NEXT: movq %rdx, %r15
|
|
; X64-NEXT: movq %rax, %r12
|
|
; X64-NEXT: movq -{{[0-9]+}}(%rsp), %r10 # 8-byte Reload
|
|
; X64-NEXT: movq %r10, %rax
|
|
; X64-NEXT: mulq %r8
|
|
; X64-NEXT: movq %rdx, %rsi
|
|
; X64-NEXT: movq %rax, %rbx
|
|
; X64-NEXT: addq %r15, %rbx
|
|
; X64-NEXT: adcq $0, %rsi
|
|
; X64-NEXT: movq %rcx, %rax
|
|
; X64-NEXT: mulq %rdi
|
|
; X64-NEXT: movq %rdx, %rcx
|
|
; X64-NEXT: addq %rbx, %rax
|
|
; X64-NEXT: movq %rax, %rbx
|
|
; X64-NEXT: adcq $0, %rcx
|
|
; X64-NEXT: addq %rsi, %rcx
|
|
; X64-NEXT: sbbq %rsi, %rsi
|
|
; X64-NEXT: andl $1, %esi
|
|
; X64-NEXT: movq %r10, %rax
|
|
; X64-NEXT: mulq %rdi
|
|
; X64-NEXT: addq %rcx, %rax
|
|
; X64-NEXT: adcq %rsi, %rdx
|
|
; X64-NEXT: movq -{{[0-9]+}}(%rsp), %rsi # 8-byte Reload
|
|
; X64-NEXT: addq %rbp, %rsi
|
|
; X64-NEXT: movq -{{[0-9]+}}(%rsp), %rcx # 8-byte Reload
|
|
; X64-NEXT: adcq -{{[0-9]+}}(%rsp), %rcx # 8-byte Folded Reload
|
|
; X64-NEXT: addq %rax, %rsi
|
|
; X64-NEXT: adcq %rdx, %rcx
|
|
; X64-NEXT: addq %r11, %r12
|
|
; X64-NEXT: movq %r12, -{{[0-9]+}}(%rsp) # 8-byte Spill
|
|
; X64-NEXT: adcq %r14, %rbx
|
|
; X64-NEXT: movq %rbx, -{{[0-9]+}}(%rsp) # 8-byte Spill
|
|
; X64-NEXT: adcq %r13, %rsi
|
|
; X64-NEXT: movq %rsi, -{{[0-9]+}}(%rsp) # 8-byte Spill
|
|
; X64-NEXT: adcq %r9, %rcx
|
|
; X64-NEXT: movq %rcx, -{{[0-9]+}}(%rsp) # 8-byte Spill
|
|
; X64-NEXT: movq -{{[0-9]+}}(%rsp), %rcx # 8-byte Reload
|
|
; X64-NEXT: movq 32(%rcx), %rsi
|
|
; X64-NEXT: imulq %rsi, %rdi
|
|
; X64-NEXT: movq %rsi, %rax
|
|
; X64-NEXT: mulq %r8
|
|
; X64-NEXT: movq %rax, %r11
|
|
; X64-NEXT: addq %rdi, %rdx
|
|
; X64-NEXT: movq 40(%rcx), %r9
|
|
; X64-NEXT: imulq %r9, %r8
|
|
; X64-NEXT: addq %rdx, %r8
|
|
; X64-NEXT: movq 48(%rcx), %rax
|
|
; X64-NEXT: movq %rcx, %rbx
|
|
; X64-NEXT: movq %rax, %rdi
|
|
; X64-NEXT: movq -{{[0-9]+}}(%rsp), %rcx # 8-byte Reload
|
|
; X64-NEXT: imulq %rcx, %rdi
|
|
; X64-NEXT: movq -{{[0-9]+}}(%rsp), %rbp # 8-byte Reload
|
|
; X64-NEXT: mulq %rbp
|
|
; X64-NEXT: movq %rax, %r12
|
|
; X64-NEXT: addq %rdi, %rdx
|
|
; X64-NEXT: movq 56(%rbx), %rbx
|
|
; X64-NEXT: imulq %rbp, %rbx
|
|
; X64-NEXT: addq %rdx, %rbx
|
|
; X64-NEXT: addq %r11, %r12
|
|
; X64-NEXT: adcq %r8, %rbx
|
|
; X64-NEXT: movq %rbp, %rax
|
|
; X64-NEXT: movq %rbp, %r8
|
|
; X64-NEXT: mulq %rsi
|
|
; X64-NEXT: movq %rdx, %rdi
|
|
; X64-NEXT: movq %rax, -{{[0-9]+}}(%rsp) # 8-byte Spill
|
|
; X64-NEXT: movq %rcx, %rax
|
|
; X64-NEXT: mulq %rsi
|
|
; X64-NEXT: movq %rdx, %rsi
|
|
; X64-NEXT: movq %rax, %rbp
|
|
; X64-NEXT: addq %rdi, %rbp
|
|
; X64-NEXT: adcq $0, %rsi
|
|
; X64-NEXT: movq %r8, %rax
|
|
; X64-NEXT: mulq %r9
|
|
; X64-NEXT: movq %rdx, %rdi
|
|
; X64-NEXT: movq %rax, %r11
|
|
; X64-NEXT: addq %rbp, %r11
|
|
; X64-NEXT: adcq $0, %rdi
|
|
; X64-NEXT: addq %rsi, %rdi
|
|
; X64-NEXT: sbbq %rsi, %rsi
|
|
; X64-NEXT: andl $1, %esi
|
|
; X64-NEXT: movq %rcx, %rax
|
|
; X64-NEXT: mulq %r9
|
|
; X64-NEXT: movq %rdx, %r14
|
|
; X64-NEXT: movq %rax, %r15
|
|
; X64-NEXT: addq %rdi, %r15
|
|
; X64-NEXT: adcq %rsi, %r14
|
|
; X64-NEXT: addq %r12, %r15
|
|
; X64-NEXT: adcq %rbx, %r14
|
|
; X64-NEXT: movq -{{[0-9]+}}(%rsp), %rdx # 8-byte Reload
|
|
; X64-NEXT: movq 56(%rdx), %rcx
|
|
; X64-NEXT: movq -{{[0-9]+}}(%rsp), %r8 # 8-byte Reload
|
|
; X64-NEXT: imulq %r8, %rcx
|
|
; X64-NEXT: movq 48(%rdx), %rbp
|
|
; X64-NEXT: movq %rdx, %rbx
|
|
; X64-NEXT: movq %r8, %rax
|
|
; X64-NEXT: mulq %rbp
|
|
; X64-NEXT: movq %rax, %rsi
|
|
; X64-NEXT: addq %rcx, %rdx
|
|
; X64-NEXT: movq -{{[0-9]+}}(%rsp), %r10 # 8-byte Reload
|
|
; X64-NEXT: imulq %r10, %rbp
|
|
; X64-NEXT: addq %rdx, %rbp
|
|
; X64-NEXT: movq 32(%rbx), %rdi
|
|
; X64-NEXT: movq 40(%rbx), %r12
|
|
; X64-NEXT: movq -{{[0-9]+}}(%rsp), %rax # 8-byte Reload
|
|
; X64-NEXT: movq %rax, %rcx
|
|
; X64-NEXT: imulq %r12, %rcx
|
|
; X64-NEXT: mulq %rdi
|
|
; X64-NEXT: movq %rax, %r9
|
|
; X64-NEXT: addq %rcx, %rdx
|
|
; X64-NEXT: movq -{{[0-9]+}}(%rsp), %r13 # 8-byte Reload
|
|
; X64-NEXT: imulq %rdi, %r13
|
|
; X64-NEXT: addq %rdx, %r13
|
|
; X64-NEXT: addq %rsi, %r9
|
|
; X64-NEXT: adcq %rbp, %r13
|
|
; X64-NEXT: movq %rdi, %rax
|
|
; X64-NEXT: mulq %r8
|
|
; X64-NEXT: movq %rdx, %rcx
|
|
; X64-NEXT: movq %rax, %rsi
|
|
; X64-NEXT: movq %r12, %rax
|
|
; X64-NEXT: mulq %r8
|
|
; X64-NEXT: movq %rdx, %rbx
|
|
; X64-NEXT: movq %rax, %rbp
|
|
; X64-NEXT: addq %rcx, %rbp
|
|
; X64-NEXT: adcq $0, %rbx
|
|
; X64-NEXT: movq %rdi, %rax
|
|
; X64-NEXT: mulq %r10
|
|
; X64-NEXT: movq %rdx, %rcx
|
|
; X64-NEXT: movq %rax, %rdi
|
|
; X64-NEXT: addq %rbp, %rdi
|
|
; X64-NEXT: adcq $0, %rcx
|
|
; X64-NEXT: addq %rbx, %rcx
|
|
; X64-NEXT: sbbq %rbp, %rbp
|
|
; X64-NEXT: andl $1, %ebp
|
|
; X64-NEXT: movq %r12, %rax
|
|
; X64-NEXT: mulq %r10
|
|
; X64-NEXT: addq %rcx, %rax
|
|
; X64-NEXT: adcq %rbp, %rdx
|
|
; X64-NEXT: addq %r9, %rax
|
|
; X64-NEXT: adcq %r13, %rdx
|
|
; X64-NEXT: addq -{{[0-9]+}}(%rsp), %rsi # 8-byte Folded Reload
|
|
; X64-NEXT: adcq %r11, %rdi
|
|
; X64-NEXT: adcq %r15, %rax
|
|
; X64-NEXT: adcq %r14, %rdx
|
|
; X64-NEXT: addq -{{[0-9]+}}(%rsp), %rsi # 8-byte Folded Reload
|
|
; X64-NEXT: adcq -{{[0-9]+}}(%rsp), %rdi # 8-byte Folded Reload
|
|
; X64-NEXT: adcq -{{[0-9]+}}(%rsp), %rax # 8-byte Folded Reload
|
|
; X64-NEXT: adcq -{{[0-9]+}}(%rsp), %rdx # 8-byte Folded Reload
|
|
; X64-NEXT: movq (%rsp), %rcx # 8-byte Reload
|
|
; X64-NEXT: movq -{{[0-9]+}}(%rsp), %rbp # 8-byte Reload
|
|
; X64-NEXT: movq %rbp, (%rcx)
|
|
; X64-NEXT: movq -{{[0-9]+}}(%rsp), %rbp # 8-byte Reload
|
|
; X64-NEXT: movq %rbp, 8(%rcx)
|
|
; X64-NEXT: movq -{{[0-9]+}}(%rsp), %rbp # 8-byte Reload
|
|
; X64-NEXT: movq %rbp, 16(%rcx)
|
|
; X64-NEXT: movq -{{[0-9]+}}(%rsp), %rbp # 8-byte Reload
|
|
; X64-NEXT: movq %rbp, 24(%rcx)
|
|
; X64-NEXT: movq %rsi, 32(%rcx)
|
|
; X64-NEXT: movq %rdi, 40(%rcx)
|
|
; X64-NEXT: movq %rax, 48(%rcx)
|
|
; X64-NEXT: movq %rdx, 56(%rcx)
|
|
; X64-NEXT: addq $8, %rsp
|
|
; X64-NEXT: popq %rbx
|
|
; X64-NEXT: popq %r12
|
|
; X64-NEXT: popq %r13
|
|
; X64-NEXT: popq %r14
|
|
; X64-NEXT: popq %r15
|
|
; X64-NEXT: popq %rbp
|
|
; X64-NEXT: retq
|
|
%av = load i512, i512* %a
|
|
%bv = load i512, i512* %b
|
|
%r = mul i512 %av, %bv
|
|
store i512 %r, i512* %out
|
|
ret void
|
|
}
|