[BACK]Return to submul_1.asm CVS log [TXT][DIR] Up to [local] / OpenXM_contrib / gmp / mpn / powerpc64

Diff for /OpenXM_contrib/gmp/mpn/powerpc64/Attic/submul_1.asm between version 1.1.1.1 and 1.1.1.2

version 1.1.1.1, 2000/09/09 14:12:39 version 1.1.1.2, 2003/08/25 16:06:24
Line 1 
Line 1 
 # PowerPC-64 mpn_submul_1 -- Multiply a limb vector with a limb and subtract  dnl  PowerPC-64 mpn_submul_1 -- Multiply a limb vector with a limb and subtract
 # the result from a second limb vector.  dnl  the result from a second limb vector.
   
 # Copyright (C) 1999, 2000 Free Software Foundation, Inc.  dnl  Copyright 1999, 2000, 2001 Free Software Foundation, Inc.
   
 # This file is part of the GNU MP Library.  dnl  This file is part of the GNU MP Library.
   
 # The GNU MP Library is free software; you can redistribute it and/or modify  dnl  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  dnl  it under the terms of the GNU Lesser General Public License as published
 # the Free Software Foundation; either version 2.1 of the License, or (at your  dnl  by the Free Software Foundation; either version 2.1 of the License, or (at
 # option) any later version.  dnl  your option) any later version.
   
 # The GNU MP Library is distributed in the hope that it will be useful, but  dnl  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  dnl  WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
 # or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public  dnl  or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
 # License for more details.  dnl  License for more details.
   
 # You should have received a copy of the GNU Lesser General Public License  dnl  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  dnl  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,  dnl  the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
 # MA 02111-1307, USA.  dnl  MA 02111-1307, USA.
   
   include(`../config.m4')
   
 # INPUT PARAMETERS  C INPUT PARAMETERS
 # res_ptr       r3  C res_ptr       r3
 # s1_ptr        r4  C s1_ptr        r4
 # size          r5  C size          r5
 # s2_limb       r6  C s2_limb       r6
   C cy_limb       r7
   
 include(`../config.m4')  C PPC630: 6 to 18 cycles/limb, depending on multiplier.  This cannot be
   C improved unless floating-point operations are used instead of the slow
   C mulld/mulhdu.
   
 ASM_START()  ASM_START()
 PROLOGUE(mpn_submul_1)  PROLOGUE(mpn_submul_1)
         mtctr   5          li      r7,0                    C cy_limb = 0
         li      9,0             # cy_limb = 0  
         addic   0,0,0  PROLOGUE(mpn_submul_1c)
         cal     3,-8(3)          mtctr   r5
         cal     4,-8(4)          addic   r0,r0,0
           cal     r3,-8(r3)
           cal     r4,-8(r4)
 .Loop:  .Loop:
         ldu     0,8(4)          ldu     r0,8(r4)
         ld      10,8(3)          ld      r10,8(r3)
         mulld   7,0,6          mulld   r9,r0,r6
         adde    7,7,9          adde    r9,r9,r7
         mulhdu  9,0,6          mulhdu  r7,r0,r6
         addze   9,9          addze   r7,r7
         subfc   7,7,10          subfc   r9,r9,r10
         stdu    7,8(3)          stdu    r9,8(r3)
         subfe   11,11,11        # invert ...          subfe   r11,r11,r11             C invert ...
         addic   11,11,1         # ... carry          addic   r11,r11,1               C ... carry
         bdnz    .Loop          bdnz    .Loop
   
         addze   3,9          addze   r3,r7
         blr          blr
 EPILOGUE(mpn_submul_1)  EPILOGUE(mpn_submul_1)
   EPILOGUE(mpn_submul_1c)

Legend:
Removed from v.1.1.1.1  
changed lines
  Added in v.1.1.1.2

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>