Reorganisation of the source tree
[ghc-hetmet.git] / ghc / rts / gmp / mpn / x86 / addsub_n.S
diff --git a/ghc/rts/gmp/mpn/x86/addsub_n.S b/ghc/rts/gmp/mpn/x86/addsub_n.S
deleted file mode 100644 (file)
index fe6f648..0000000
+++ /dev/null
@@ -1,174 +0,0 @@
-/* Currently not working and not used. */
-
-/*
-Copyright (C) 1999 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Lesser General Public License as published by
-the Free Software Foundation; either version 2.1 of the License, or (at your
-option) any later version.
-
-The GNU MP Library is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
-or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
-License for more details.
-
-You should have received a copy of the GNU Lesser General Public License
-along with the GNU MP Library; see the file COPYING.LIB.  If not, write to
-the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
-MA 02111-1307, USA.
-*/
-
-
-#define SAVE_BORROW_RESTORE_CARRY(r)   adcl r,r; shll $31,r
-#define SAVE_CARRY_RESTORE_BORROW(r)   adcl r,r
-
-       .globl  mpn_addsub_n_0
-       .globl  mpn_addsub_n_1
-
-/* Cute i386/i486/p6 addsub loop for the "full overlap" case r1==s2,r2==s1.
-   We let subtraction and addition alternate in being two limbs
-   ahead of the other, thereby avoiding some SAVE_RESTORE. */
-// r1 = r2 + r1    edi = esi + edi
-// r2 = r2 - r1    esi = esi - edi
-//                     s1  s2
-//                     r2  r1
-//     eax,ebx,ecx,edx,esi,edi,ebp
-mpn_addsub_n_0:
-       pushl   %edi
-       pushl   %esi
-       pushl   %ebx
-       pushl   %ebp
-
-       movl    20(%esp),%edi           /* res_ptr */
-       movl    24(%esp),%esi           /* s1_ptr */
-       movl    36(%esp),%ebp           /* size */
-
-       shrl    $2,%ebp
-       xorl    %edx,%edx
-       .align  4
-Loop0:                         // L=load E=execute S=store
-       movl    (%esi),%ebx     // sub 0 L
-       movl    4(%esi),%ecx    // sub 1 L
-       sbbl    (%edi),%ebx     // sub 0 LE
-       sbbl    4(%edi),%ecx    // sub 1 LE
-//     SAVE_BORROW_RESTORE_CARRY(%edx)
-       movl    (%esi),%eax     // add 0 L
-       adcl    %eax,(%edi)     // add 0 LES
-       movl    4(%esi),%eax    // add 1 L
-       adcl    %eax,4(%edi)    // add 1 LES
-       movl    %ebx,(%esi)     // sub 0 S
-       movl    %ecx,4(%esi)    // sub 1 S
-       movl    8(%esi),%ebx    // add 2 L
-       adcl    8(%edi),%ebx    // add 2 LE
-       movl    12(%esi),%ecx   // add 3 L
-       adcl    12(%edi),%ecx   // add 3 LE
-//     SAVE_CARRY_RESTORE_BORROW(%edx)
-       movl    8(%edi),%eax    // sub 2 L
-       sbbl    %eax,8(%esi)    // sub 2 LES
-       movl    12(%edi),%eax   // sub 3 L
-       sbbl    %eax,12(%esi)   // sub 3 LES
-       movl    %ebx,8(%edi)    // add 2 S
-       movl    %ecx,12(%edi)   // add 3 S
-       leal    16(%esi),%esi
-       leal    16(%edi),%edi
-       decl    %ebp
-       jnz     Loop0
-
-       popl    %ebp
-       popl    %ebx
-       popl    %esi
-       popl    %edi
-       ret
-
-/* Cute i386/i486/p6 addsub loop for the "full overlap" case r1==s1,r2==s2.
-   We let subtraction and addition alternate in being two limbs
-   ahead of the other, thereby avoiding some SAVE_RESTORE. */
-// r1 = r1 + r2    edi = edi + esi
-// r2 = r1 - r2    esi = edi - esi
-//                     s2  s1
-//                     r2  r1
-//     eax,ebx,ecx,edx,esi,edi,ebp
-mpn_addsub_n_1:
-       pushl   %edi
-       pushl   %esi
-       pushl   %ebx
-       pushl   %ebp
-
-       movl    20(%esp),%edi           /* res_ptr */
-       movl    24(%esp),%esi           /* s1_ptr */
-       movl    36(%esp),%ebp           /* size */
-
-       shrl    $2,%ebp
-       xorl    %edx,%edx
-       .align  4
-Loop1:                         // L=load E=execute S=store
-       movl    (%edi),%ebx     // sub 0 L
-       sbbl    (%esi),%ebx     // sub 0 LE
-       movl    4(%edi),%ecx    // sub 1 L
-       sbbl    4(%esi),%ecx    // sub 1 LE
-//     SAVE_BORROW_RESTORE_CARRY(%edx)
-       movl    (%esi),%eax     // add 0 L
-       adcl    %eax,(%edi)     // add 0 LES
-       movl    4(%esi),%eax    // add 1 L
-       adcl    %eax,4(%edi)    // add 1 LES
-       movl    %ebx,(%esi)     // sub 0 S
-       movl    %ecx,4(%esi)    // sub 1 S
-       movl    8(%esi),%ebx    // add 2 L
-       adcl    8(%edi),%ebx    // add 2 LE
-       movl    12(%esi),%ecx   // add 3 L
-       adcl    12(%edi),%ecx   // add 3 LE
-//     SAVE_CARRY_RESTORE_BORROW(%edx)
-       movl    8(%edi),%eax    // sub 2 L
-       sbbl    8(%esi),%eax    // sub 2 LES
-       movl    %eax,8(%esi)    // sub 2 S
-       movl    12(%edi),%eax   // sub 3 L
-       sbbl    12(%esi),%eax   // sub 3 LE
-       movl    %eax,12(%esi)   // sub 3 S
-       movl    %ebx,8(%edi)    // add 2 S
-       movl    %ecx,12(%edi)   // add 3 S
-       leal    16(%esi),%esi
-       leal    16(%edi),%edi
-       decl    %ebp
-       jnz     Loop1
-
-       popl    %ebp
-       popl    %ebx
-       popl    %esi
-       popl    %edi
-       ret
-
-       .globl  mpn_copy
-mpn_copy:
-       pushl   %edi
-       pushl   %esi
-       pushl   %ebx
-       pushl   %ebp
-
-       movl    20(%esp),%edi           /* res_ptr */
-       movl    24(%esp),%esi           /* s1_ptr */
-       movl    28(%esp),%ebp           /* size */
-
-       shrl    $2,%ebp
-       .align  4
-Loop2:
-       movl    (%esi),%eax
-       movl    4(%esi),%ebx
-       movl    %eax,(%edi)
-       movl    %ebx,4(%edi)
-       movl    8(%esi),%eax
-       movl    12(%esi),%ebx
-       movl    %eax,8(%edi)
-       movl    %ebx,12(%edi)
-       leal    16(%esi),%esi
-       leal    16(%edi),%edi
-       decl    %ebp
-       jnz     Loop2
-
-       popl    %ebp
-       popl    %ebx
-       popl    %esi
-       popl    %edi
-       ret