Index: gcc/gmp/mpn/x86/divrem_2.asm |
diff --git a/gcc/gmp/mpn/x86/divrem_2.asm b/gcc/gmp/mpn/x86/divrem_2.asm |
deleted file mode 100644 |
index bbadda921cef3f79a8ff87f2a787e91ab8fc3449..0000000000000000000000000000000000000000 |
--- a/gcc/gmp/mpn/x86/divrem_2.asm |
+++ /dev/null |
@@ -1,188 +0,0 @@ |
-dnl x86 mpn_divrem_2 -- Divide an mpn number by a normalized 2-limb number. |
- |
-dnl Copyright 2007, 2008 Free Software Foundation, Inc. |
- |
-dnl This file is part of the GNU MP Library. |
- |
-dnl The GNU MP Library is free software; you can redistribute it and/or modify |
-dnl it under the terms of the GNU Lesser General Public License as published |
-dnl by the Free Software Foundation; either version 3 of the License, or (at |
-dnl your option) any later version. |
- |
-dnl The GNU MP Library is distributed in the hope that it will be useful, but |
-dnl WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY |
-dnl or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public |
-dnl License for more details. |
- |
-dnl You should have received a copy of the GNU Lesser General Public License |
-dnl along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. |
- |
-include(`../config.m4') |
- |
- |
-C norm frac |
-C 486 |
-C P5 |
-C P6-13 29.2 |
-C P6-15 *26 |
-C K6 |
-C K7 22 |
-C K8 *19 |
-C P4-f1 |
-C P4-f2 *65 |
-C P4-f3 |
-C P4-f4 *72 |
- |
-C A star means numbers not updated for the latest version of the code. |
- |
- |
-C TODO |
-C * Perhaps keep ecx or esi in stack slot, freeing up a reg for q0. |
-C * The loop has not been carefully tuned. We should at the very least do |
-C some local insn swapping. |
-C * The code outside the main loop is what gcc generated. Clean up! |
-C * Clean up stack slot usage. |
- |
-C INPUT PARAMETERS |
-C qp |
-C fn |
-C up_param |
-C un_param |
-C dp |
- |
- |
-C eax ebx ecx edx esi edi ebp |
-C cnt qp |
- |
-ASM_START() |
- TEXT |
- ALIGN(16) |
-PROLOGUE(mpn_divrem_2) |
- push %ebp |
- push %edi |
- push %esi |
- push %ebx |
- sub $36, %esp |
- mov 68(%esp), %ecx C un |
- mov 72(%esp), %esi C dp |
- movl $0, 32(%esp) |
- lea 0(,%ecx,4), %edi |
- add 64(%esp), %edi C up |
- mov (%esi), %ebx |
- mov 4(%esi), %eax |
- mov %ebx, 20(%esp) |
- sub $12, %edi |
- mov %eax, 24(%esp) |
- mov %edi, 12(%esp) |
- mov 8(%edi), %ebx |
- mov 4(%edi), %ebp |
- cmp %eax, %ebx |
- jb L(8) |
- seta %dl |
- cmp 20(%esp), %ebp |
- setae %al |
- or %dl, %al |
- jne L(35) |
-L(8): |
- mov 60(%esp), %esi C fn |
- lea -3(%esi,%ecx), %edi |
- test %edi, %edi |
- js L(9) |
- mov 24(%esp), %edx |
- mov $-1, %esi |
- mov %esi, %eax |
- mov %esi, %ecx |
- not %edx |
- divl 24(%esp) |
- mov %eax, %esi |
- imul 24(%esp), %eax |
- mov %eax, (%esp) |
- mov %esi, %eax |
- mull 20(%esp) |
- mov (%esp), %eax |
- add 20(%esp), %eax |
- adc $0, %ecx |
- add %eax, %edx |
- adc $0, %ecx |
- mov %ecx, %eax |
- js L(32) |
-L(36): dec %esi |
- sub 24(%esp), %edx |
- sbb $0, %eax |
- jns L(36) |
-L(32): |
- mov %esi, 16(%esp) C di |
- mov %edi, %ecx C un |
- mov 12(%esp), %esi C up |
- mov 24(%esp), %eax |
- neg %eax |
- mov %eax, 4(%esp) C -d1 |
- ALIGN(16) |
- nop |
- |
-C eax ebx ecx edx esi edi ebp 0 4 8 12 16 20 24 28 32 56 60 |
-C n2 un up n1 q0 -d1 di d0 d1 msl qp fn |
- |
-L(loop): |
- mov 16(%esp), %eax C di |
- mul %ebx |
- add %ebp, %eax |
- mov %eax, (%esp) C q0 |
- adc %ebx, %edx |
- mov %edx, %edi C q |
- imul 4(%esp), %edx |
- mov 20(%esp), %eax |
- lea (%edx, %ebp), %ebx C n1 -= ... |
- mul %edi |
- xor %ebp, %ebp |
- cmp 60(%esp), %ecx |
- jl L(19) |
- mov (%esi), %ebp |
- sub $4, %esi |
-L(19): sub 20(%esp), %ebp |
- sbb 24(%esp), %ebx |
- sub %eax, %ebp |
- sbb %edx, %ebx |
- mov 20(%esp), %eax C d1 |
- inc %edi |
- xor %edx, %edx |
- cmp (%esp), %ebx |
- adc $-1, %edx C mask |
- add %edx, %edi C q-- |
- and %edx, %eax C d0 or 0 |
- and 24(%esp), %edx C d1 or 0 |
- add %eax, %ebp |
- adc %edx, %ebx |
- cmp 24(%esp), %ebx |
- jae L(fix) |
-L(bck): mov 56(%esp), %edx |
- mov %edi, (%edx, %ecx, 4) |
- dec %ecx |
- jns L(loop) |
- |
-L(9): mov 64(%esp), %esi C up |
- mov %ebp, (%esi) |
- mov %ebx, 4(%esi) |
- mov 32(%esp), %eax |
- add $36, %esp |
- pop %ebx |
- pop %esi |
- pop %edi |
- pop %ebp |
- ret |
- |
-L(fix): seta %dl |
- cmp 20(%esp), %ebp |
- setae %al |
- or %dl, %al |
- je L(bck) |
- inc %edi |
- sub 20(%esp), %ebp |
- sbb 24(%esp), %ebx |
- jmp L(bck) |
- |
-L(35): sub 20(%esp), %ebp |
- sbb 24(%esp), %ebx |
- movl $1, 32(%esp) |
- jmp L(8) |
-EPILOGUE() |