Home | History | Annotate | Line # | Download | only in ultrasparc1234
      1      1.1  mrg dnl  SPARC v9 64-bit mpn_submul_1 -- Multiply a limb vector with a limb and
      2      1.1  mrg dnl  subtract the result from a second limb vector.
      3      1.1  mrg 
      4  1.1.1.2  mrg dnl  Copyright 2001-2003 Free Software Foundation, Inc.
      5      1.1  mrg 
      6      1.1  mrg dnl  This file is part of the GNU MP Library.
      7  1.1.1.2  mrg dnl
      8      1.1  mrg dnl  The GNU MP Library is free software; you can redistribute it and/or modify
      9  1.1.1.2  mrg dnl  it under the terms of either:
     10  1.1.1.2  mrg dnl
     11  1.1.1.2  mrg dnl    * the GNU Lesser General Public License as published by the Free
     12  1.1.1.2  mrg dnl      Software Foundation; either version 3 of the License, or (at your
     13  1.1.1.2  mrg dnl      option) any later version.
     14  1.1.1.2  mrg dnl
     15  1.1.1.2  mrg dnl  or
     16  1.1.1.2  mrg dnl
     17  1.1.1.2  mrg dnl    * the GNU General Public License as published by the Free Software
     18  1.1.1.2  mrg dnl      Foundation; either version 2 of the License, or (at your option) any
     19  1.1.1.2  mrg dnl      later version.
     20  1.1.1.2  mrg dnl
     21  1.1.1.2  mrg dnl  or both in parallel, as here.
     22  1.1.1.2  mrg dnl
     23      1.1  mrg dnl  The GNU MP Library is distributed in the hope that it will be useful, but
     24      1.1  mrg dnl  WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
     25  1.1.1.2  mrg dnl  or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
     26  1.1.1.2  mrg dnl  for more details.
     27  1.1.1.2  mrg dnl
     28  1.1.1.2  mrg dnl  You should have received copies of the GNU General Public License and the
     29  1.1.1.2  mrg dnl  GNU Lesser General Public License along with the GNU MP Library.  If not,
     30  1.1.1.2  mrg dnl  see https://www.gnu.org/licenses/.
     31      1.1  mrg 
     32      1.1  mrg include(`../config.m4')
     33      1.1  mrg 
     34      1.1  mrg C		   cycles/limb
     35      1.1  mrg C UltraSPARC 1&2:     18
     36      1.1  mrg C UltraSPARC 3:	      23
     37      1.1  mrg 
     38      1.1  mrg C INPUT PARAMETERS
     39      1.1  mrg C rp	i0
     40      1.1  mrg C up	i1
     41      1.1  mrg C n	i2
     42      1.1  mrg C v	i3
     43      1.1  mrg 
     44      1.1  mrg ASM_START()
     45      1.1  mrg 	REGISTER(%g2,#scratch)
     46      1.1  mrg 
     47      1.1  mrg PROLOGUE(mpn_submul_1)
     48      1.1  mrg 	save	%sp,-176,%sp
     49      1.1  mrg 
     50      1.1  mrg 	sllx	%i2, 3, %g2
     51      1.1  mrg 	or	%g0, %i1, %o1
     52      1.1  mrg 	add	%g2, 15, %o0
     53      1.1  mrg 	or	%g0, %i2, %o2
     54      1.1  mrg 	and	%o0, -16, %o0
     55      1.1  mrg 	sub	%sp, %o0, %sp
     56      1.1  mrg 	add	%sp, 2223, %o0
     57      1.1  mrg 	or	%g0, %o0, %l0
     58      1.1  mrg 	call	mpn_mul_1
     59      1.1  mrg 	or	%g0, %i3, %o3
     60      1.1  mrg 	or	%g0, %o0, %l1		C preserve carry value from mpn_mul_1
     61      1.1  mrg 	or	%g0, %i0, %o0
     62      1.1  mrg 	or	%g0, %i0, %o1
     63      1.1  mrg 	or	%g0, %l0, %o2
     64      1.1  mrg 	call	mpn_sub_n
     65      1.1  mrg 	or	%g0, %i2, %o3
     66      1.1  mrg 	ret
     67      1.1  mrg 	restore	%l1, %o0, %o0		C sum carry values
     68      1.1  mrg EPILOGUE(mpn_submul_1)
     69