diff options
Diffstat (limited to 'vendor/gmp-6.3.0/mpn/sparc32/v8')
| -rw-r--r-- | vendor/gmp-6.3.0/mpn/sparc32/v8/addmul_1.asm | 109 | ||||
| -rw-r--r-- | vendor/gmp-6.3.0/mpn/sparc32/v8/gmp-mparam.h | 73 | ||||
| -rw-r--r-- | vendor/gmp-6.3.0/mpn/sparc32/v8/mul_1.asm | 93 | ||||
| -rw-r--r-- | vendor/gmp-6.3.0/mpn/sparc32/v8/submul_1.asm | 67 | ||||
| -rw-r--r-- | vendor/gmp-6.3.0/mpn/sparc32/v8/supersparc/gmp-mparam.h | 73 | ||||
| -rw-r--r-- | vendor/gmp-6.3.0/mpn/sparc32/v8/supersparc/udiv.asm | 131 | ||||
| -rw-r--r-- | vendor/gmp-6.3.0/mpn/sparc32/v8/udiv.asm | 131 | ||||
| -rw-r--r-- | vendor/gmp-6.3.0/mpn/sparc32/v8/umul.asm | 40 | 
8 files changed, 717 insertions, 0 deletions
| diff --git a/vendor/gmp-6.3.0/mpn/sparc32/v8/addmul_1.asm b/vendor/gmp-6.3.0/mpn/sparc32/v8/addmul_1.asm new file mode 100644 index 0000000..0bf1b24 --- /dev/null +++ b/vendor/gmp-6.3.0/mpn/sparc32/v8/addmul_1.asm @@ -0,0 +1,109 @@ +dnl  SPARC v8 mpn_addmul_1 -- Multiply a limb vector with a limb and +dnl  add the result to a second limb vector. + +dnl  Copyright 1992-1995, 2000 Free Software Foundation, Inc. + +dnl  This file is part of the GNU MP Library. +dnl +dnl  The GNU MP Library is free software; you can redistribute it and/or modify +dnl  it under the terms of either: +dnl +dnl    * the GNU Lesser General Public License as published by the Free +dnl      Software Foundation; either version 3 of the License, or (at your +dnl      option) any later version. +dnl +dnl  or +dnl +dnl    * the GNU General Public License as published by the Free Software +dnl      Foundation; either version 2 of the License, or (at your option) any +dnl      later version. +dnl +dnl  or both in parallel, as here. +dnl +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 General Public License +dnl  for more details. +dnl +dnl  You should have received copies of the GNU General Public License and the +dnl  GNU Lesser General Public License along with the GNU MP Library.  If not, +dnl  see https://www.gnu.org/licenses/. + + +include(`../config.m4') + +C INPUT PARAMETERS +C res_ptr	o0 +C s1_ptr	o1 +C size		o2 +C s2_limb	o3 + +ASM_START() +PROLOGUE(mpn_addmul_1) +	ld	[%o1+0],%o4 +	andcc	%o2,1,%g0 +	be	L(bx0) +	andcc	%o2,2,%g0 +L(bx1):	be	L(01) +	orcc	%g0,%g0,%g2 +L(b11):	add	%o0,-8,%o0 +	b	L(11) +	add	%o1,-8,%o1 +L(bx0):	be	L(b00) +	orcc	%g0,%g0,%g2 +L(b10):	add	%o0,-12,%o0 +	b	L(10) +	add	%o1,4,%o1 +L(b00):	add	%o0,-4,%o0 +	b	L(00) +	add	%o1,-4,%o1 + +L(top):	addcc	%g3,%g2,%g3	C 1 +	ld	[%o1+4],%o4	C 2 +	rd	%y,%g2		C 1 +	addx	%g0,%g2,%g2 +	ld	[%o0+0],%g1	C 2 +	addcc	%g1,%g3,%g3 +	st	%g3,[%o0+0]	C 1 +L(00):	umul	%o4,%o3,%g3	C 2 +	ld	[%o0+4],%g1	C 2 +	addxcc	%g3,%g2,%g3	C 2 +	ld	[%o1+8],%o4	C 3 +	rd	%y,%g2		C 2 +	addx	%g0,%g2,%g2 +	nop +	addcc	%g1,%g3,%g3 +	st	%g3,[%o0+4]	C 2 +L(11):	umul	%o4,%o3,%g3	C 3 +	addxcc	%g3,%g2,%g3	C 3 +	ld	[%o1+12],%o4	C 4 +	rd	%y,%g2		C 3 +	add	%o1,16,%o1 +	addx	%g0,%g2,%g2 +	ld	[%o0+8],%g1	C 2 +	addcc	%g1,%g3,%g3 +	st	%g3,[%o0+8]	C 3 +L(10):	umul	%o4,%o3,%g3	C 4 +	addxcc	%g3,%g2,%g3	C 4 +	ld	[%o1+0],%o4	C 1 +	rd	%y,%g2		C 4 +	addx	%g0,%g2,%g2 +	ld	[%o0+12],%g1	C 2 +	addcc	%g1,%g3,%g3 +	st	%g3,[%o0+12]	C 4 +	add	%o0,16,%o0 +	addx	%g0,%g2,%g2 +L(01):	addcc	%o2,-4,%o2 +	bg	L(top) +	umul	%o4,%o3,%g3	C 1 + +	addcc	%g3,%g2,%g3	C 4 +	rd	%y,%g2		C 4 +	addx	%g0,%g2,%g2 +	ld	[%o0+0],%g1	C 2 +	addcc	%g1,%g3,%g3 +	st	%g3,[%o0+0]	C 4 + +	retl +	addx	%g0,%g2,%o0 +EPILOGUE(mpn_addmul_1) diff --git a/vendor/gmp-6.3.0/mpn/sparc32/v8/gmp-mparam.h b/vendor/gmp-6.3.0/mpn/sparc32/v8/gmp-mparam.h new file mode 100644 index 0000000..e57897b --- /dev/null +++ b/vendor/gmp-6.3.0/mpn/sparc32/v8/gmp-mparam.h @@ -0,0 +1,73 @@ +/* SPARC v8 gmp-mparam.h -- Compiler/machine parameter header file. + +Copyright 1991, 1993, 1994, 1999-2004 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 either: + +  * the GNU Lesser General Public License as published by the Free +    Software Foundation; either version 3 of the License, or (at your +    option) any later version. + +or + +  * the GNU General Public License as published by the Free Software +    Foundation; either version 2 of the License, or (at your option) any +    later version. + +or both in parallel, as here. + +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 General Public License +for more details. + +You should have received copies of the GNU General Public License and the +GNU Lesser General Public License along with the GNU MP Library.  If not, +see https://www.gnu.org/licenses/.  */ + + +#define GMP_LIMB_BITS 32 +#define GMP_LIMB_BYTES 4 + +/* Generated by tuneup.c, 2004-02-07, gcc 2.95 */ + +#define MUL_TOOM22_THRESHOLD             10 +#define MUL_TOOM33_THRESHOLD             65 + +#define SQR_BASECASE_THRESHOLD            4 +#define SQR_TOOM2_THRESHOLD              18 +#define SQR_TOOM3_THRESHOLD              65 + +#define DIV_SB_PREINV_THRESHOLD           5 +#define DIV_DC_THRESHOLD                 24 +#define POWM_THRESHOLD                   38 + +#define HGCD_THRESHOLD                   69 +#define GCD_ACCEL_THRESHOLD               3 +#define GCD_DC_THRESHOLD                498 +#define JACOBI_BASE_METHOD                2 + +#define DIVREM_1_NORM_THRESHOLD           6 +#define DIVREM_1_UNNORM_THRESHOLD        11 +#define MOD_1_NORM_THRESHOLD              5 +#define MOD_1_UNNORM_THRESHOLD            9 +#define USE_PREINV_DIVREM_1               1 +#define USE_PREINV_MOD_1                  1 +#define DIVREM_2_THRESHOLD                0  /* always */ +#define DIVEXACT_1_THRESHOLD              0  /* always */ +#define MODEXACT_1_ODD_THRESHOLD          4 + +#define GET_STR_DC_THRESHOLD             14 +#define GET_STR_PRECOMPUTE_THRESHOLD     23 +#define SET_STR_THRESHOLD              1679 + +#define MUL_FFT_TABLE  { 272, 672, 1152, 2560, 10240, 24576, 0 } +#define MUL_FFT_MODF_THRESHOLD          264 +#define MUL_FFT_THRESHOLD              1792 + +#define SQR_FFT_TABLE  { 304, 672, 1152, 3584, 10240, 24576, 0 } +#define SQR_FFT_MODF_THRESHOLD          264 +#define SQR_FFT_THRESHOLD              1728 diff --git a/vendor/gmp-6.3.0/mpn/sparc32/v8/mul_1.asm b/vendor/gmp-6.3.0/mpn/sparc32/v8/mul_1.asm new file mode 100644 index 0000000..d03a0e6 --- /dev/null +++ b/vendor/gmp-6.3.0/mpn/sparc32/v8/mul_1.asm @@ -0,0 +1,93 @@ +dnl  SPARC v8 mpn_mul_1 -- Multiply a limb vector with a single limb and +dnl  store the product in a second limb vector. + +dnl  Copyright 1992, 1994, 1995, 2000 Free Software Foundation, Inc. + +dnl  This file is part of the GNU MP Library. +dnl +dnl  The GNU MP Library is free software; you can redistribute it and/or modify +dnl  it under the terms of either: +dnl +dnl    * the GNU Lesser General Public License as published by the Free +dnl      Software Foundation; either version 3 of the License, or (at your +dnl      option) any later version. +dnl +dnl  or +dnl +dnl    * the GNU General Public License as published by the Free Software +dnl      Foundation; either version 2 of the License, or (at your option) any +dnl      later version. +dnl +dnl  or both in parallel, as here. +dnl +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 General Public License +dnl  for more details. +dnl +dnl  You should have received copies of the GNU General Public License and the +dnl  GNU Lesser General Public License along with the GNU MP Library.  If not, +dnl  see https://www.gnu.org/licenses/. + + +include(`../config.m4') + +C INPUT PARAMETERS +C res_ptr	o0 +C s1_ptr	o1 +C size		o2 +C s2_limb	o3 + +ASM_START() +PROLOGUE(mpn_mul_1) +	ld	[%o1+0],%o4 +	andcc	%o2,1,%g0 +	be	L(bx0) +	andcc	%o2,2,%g0 +L(bx1):	be	L(01) +	orcc	%g0,%g0,%g2 +L(b11):	add	%o0,-8,%o0 +	b	L(11) +	add	%o1,-8,%o1 +L(bx0):	be	L(b00) +	orcc	%g0,%g0,%g2 +L(b10):	add	%o0,-12,%o0 +	b	L(10) +	add	%o1,4,%o1 +L(b00):	add	%o0,-4,%o0 +	b	L(00) +	add	%o1,-4,%o1 + +L(top):	addcc	%g3,%g2,%g3	C 1 +	ld	[%o1+4],%o4	C 2 +	st	%g3,[%o0+0]	C 1 +	rd	%y,%g2		C 1 +L(00):	umul	%o4,%o3,%g3	C 2 +	addxcc	%g3,%g2,%g3	C 2 +	ld	[%o1+8],%o4	C 3 +	st	%g3,[%o0+4]	C 2 +	rd	%y,%g2		C 2 +L(11):	umul	%o4,%o3,%g3	C 3 +	addxcc	%g3,%g2,%g3	C 3 +	ld	[%o1+12],%o4	C 4 +	add	%o1,16,%o1 +	st	%g3,[%o0+8]	C 3 +	rd	%y,%g2		C 3 +L(10):	umul	%o4,%o3,%g3	C 4 +	addxcc	%g3,%g2,%g3	C 4 +	ld	[%o1+0],%o4	C 1 +	st	%g3,[%o0+12]	C 4 +	add	%o0,16,%o0 +	rd	%y,%g2		C 4 +	addx	%g0,%g2,%g2 +L(01):	addcc	%o2,-4,%o2 +	bg	L(top) +	umul	%o4,%o3,%g3	C 1 + +	addcc	%g3,%g2,%g3	C 4 +	st	%g3,[%o0+0]	C 4 +	rd	%y,%g2		C 4 + +	retl +	addx	%g0,%g2,%o0 +EPILOGUE(mpn_mul_1) diff --git a/vendor/gmp-6.3.0/mpn/sparc32/v8/submul_1.asm b/vendor/gmp-6.3.0/mpn/sparc32/v8/submul_1.asm new file mode 100644 index 0000000..187314e --- /dev/null +++ b/vendor/gmp-6.3.0/mpn/sparc32/v8/submul_1.asm @@ -0,0 +1,67 @@ +dnl  SPARC v8 mpn_submul_1 -- Multiply a limb vector with a limb and +dnl  subtract the result from a second limb vector. + +dnl  Copyright 1992-1994, 2000 Free Software Foundation, Inc. + +dnl  This file is part of the GNU MP Library. +dnl +dnl  The GNU MP Library is free software; you can redistribute it and/or modify +dnl  it under the terms of either: +dnl +dnl    * the GNU Lesser General Public License as published by the Free +dnl      Software Foundation; either version 3 of the License, or (at your +dnl      option) any later version. +dnl +dnl  or +dnl +dnl    * the GNU General Public License as published by the Free Software +dnl      Foundation; either version 2 of the License, or (at your option) any +dnl      later version. +dnl +dnl  or both in parallel, as here. +dnl +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 General Public License +dnl  for more details. +dnl +dnl  You should have received copies of the GNU General Public License and the +dnl  GNU Lesser General Public License along with the GNU MP Library.  If not, +dnl  see https://www.gnu.org/licenses/. + + +include(`../config.m4') + +C INPUT PARAMETERS +C res_ptr	o0 +C s1_ptr	o1 +C size		o2 +C s2_limb	o3 + +ASM_START() +PROLOGUE(mpn_submul_1) +	sub	%g0,%o2,%o2		C negate ... +	sll	%o2,2,%o2		C ... and scale size +	sub	%o1,%o2,%o1		C o1 is offset s1_ptr +	sub	%o0,%o2,%g1		C g1 is offset res_ptr + +	mov	0,%o0			C clear cy_limb + +L(loop): +	ld	[%o1+%o2],%o4 +	ld	[%g1+%o2],%g2 +	umul	%o4,%o3,%o5 +	rd	%y,%g3 +	addcc	%o5,%o0,%o5 +	addx	%g3,0,%o0 +	subcc	%g2,%o5,%g2 +	addx	%o0,0,%o0 +	st	%g2,[%g1+%o2] + +	addcc	%o2,4,%o2 +	bne	L(loop) +	 nop + +	retl +	 nop +EPILOGUE(mpn_submul_1) diff --git a/vendor/gmp-6.3.0/mpn/sparc32/v8/supersparc/gmp-mparam.h b/vendor/gmp-6.3.0/mpn/sparc32/v8/supersparc/gmp-mparam.h new file mode 100644 index 0000000..1ac9239 --- /dev/null +++ b/vendor/gmp-6.3.0/mpn/sparc32/v8/supersparc/gmp-mparam.h @@ -0,0 +1,73 @@ +/* SuperSPARC gmp-mparam.h -- Compiler/machine parameter header file. + +Copyright 1991, 1993, 1994, 1999-2004 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 either: + +  * the GNU Lesser General Public License as published by the Free +    Software Foundation; either version 3 of the License, or (at your +    option) any later version. + +or + +  * the GNU General Public License as published by the Free Software +    Foundation; either version 2 of the License, or (at your option) any +    later version. + +or both in parallel, as here. + +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 General Public License +for more details. + +You should have received copies of the GNU General Public License and the +GNU Lesser General Public License along with the GNU MP Library.  If not, +see https://www.gnu.org/licenses/.  */ + + +#define GMP_LIMB_BITS 32 +#define GMP_LIMB_BYTES 4 + +/* Generated by tuneup.c, 2004-02-10, gcc 3.3 */ + +#define MUL_TOOM22_THRESHOLD             14 +#define MUL_TOOM33_THRESHOLD             81 + +#define SQR_BASECASE_THRESHOLD            5 +#define SQR_TOOM2_THRESHOLD              28 +#define SQR_TOOM3_THRESHOLD              86 + +#define DIV_SB_PREINV_THRESHOLD           0  /* always */ +#define DIV_DC_THRESHOLD                 26 +#define POWM_THRESHOLD                   79 + +#define HGCD_THRESHOLD                   97 +#define GCD_ACCEL_THRESHOLD               3 +#define GCD_DC_THRESHOLD                470 +#define JACOBI_BASE_METHOD                2 + +#define DIVREM_1_NORM_THRESHOLD           0  /* always */ +#define DIVREM_1_UNNORM_THRESHOLD         3 +#define MOD_1_NORM_THRESHOLD              0  /* always */ +#define MOD_1_UNNORM_THRESHOLD            3 +#define USE_PREINV_DIVREM_1               1 +#define USE_PREINV_MOD_1                  1 +#define DIVREM_2_THRESHOLD                0  /* always */ +#define DIVEXACT_1_THRESHOLD              0  /* always */ +#define MODEXACT_1_ODD_THRESHOLD          0  /* always */ + +#define GET_STR_DC_THRESHOLD             19 +#define GET_STR_PRECOMPUTE_THRESHOLD     34 +#define SET_STR_THRESHOLD              3524 + +#define MUL_FFT_TABLE  { 304, 800, 1408, 3584, 10240, 24576, 0 } +#define MUL_FFT_MODF_THRESHOLD          264 +#define MUL_FFT_THRESHOLD              2304 + +#define SQR_FFT_TABLE  { 336, 800, 1408, 3584, 10240, 24576, 0 } +#define SQR_FFT_MODF_THRESHOLD          280 +#define SQR_FFT_THRESHOLD              2304 diff --git a/vendor/gmp-6.3.0/mpn/sparc32/v8/supersparc/udiv.asm b/vendor/gmp-6.3.0/mpn/sparc32/v8/supersparc/udiv.asm new file mode 100644 index 0000000..12f66ce --- /dev/null +++ b/vendor/gmp-6.3.0/mpn/sparc32/v8/supersparc/udiv.asm @@ -0,0 +1,131 @@ +dnl  SuperSPARC mpn_udiv_qrnnd division support, used from longlong.h. +dnl  This is for SuperSPARC only, to compensate for its semi-functional +dnl  udiv instruction. + +dnl  Copyright 1993, 1994, 1996, 2000 Free Software Foundation, Inc. + +dnl  This file is part of the GNU MP Library. +dnl +dnl  The GNU MP Library is free software; you can redistribute it and/or modify +dnl  it under the terms of either: +dnl +dnl    * the GNU Lesser General Public License as published by the Free +dnl      Software Foundation; either version 3 of the License, or (at your +dnl      option) any later version. +dnl +dnl  or +dnl +dnl    * the GNU General Public License as published by the Free Software +dnl      Foundation; either version 2 of the License, or (at your option) any +dnl      later version. +dnl +dnl  or both in parallel, as here. +dnl +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 General Public License +dnl  for more details. +dnl +dnl  You should have received copies of the GNU General Public License and the +dnl  GNU Lesser General Public License along with the GNU MP Library.  If not, +dnl  see https://www.gnu.org/licenses/. + + +include(`../config.m4') + +C INPUT PARAMETERS +C rem_ptr	i0 +C n1		i1 +C n0		i2 +C d		i3 + +ASM_START() + +ifdef(`PIC', +`	TEXT +L(getpc): +	retl +	nop') + +	TEXT +	ALIGN(8) +L(C0):	.double	0r4294967296 +L(C1):	.double	0r2147483648 + +PROLOGUE(mpn_udiv_qrnnd) +	save	%sp,-104,%sp +	st	%i1,[%fp-8] +	ld	[%fp-8],%f10 + +ifdef(`PIC', +`L(pc):	call	L(getpc)		C put address of this insn in %o7 +	ldd	[%o7+L(C0)-L(pc)],%f8', +`	sethi	%hi(L(C0)),%o7 +	ldd	[%o7+%lo(L(C0))],%f8') + +	fitod	%f10,%f4 +	cmp	%i1,0 +	bge	L(248) +	mov	%i0,%i5 +	faddd	%f4,%f8,%f4 +L(248): +	st	%i2,[%fp-8] +	ld	[%fp-8],%f10 +	fmuld	%f4,%f8,%f6 +	cmp	%i2,0 +	bge	L(249) +	fitod	%f10,%f2 +	faddd	%f2,%f8,%f2 +L(249): +	st	%i3,[%fp-8] +	faddd	%f6,%f2,%f2 +	ld	[%fp-8],%f10 +	cmp	%i3,0 +	bge	L(250) +	fitod	%f10,%f4 +	faddd	%f4,%f8,%f4 +L(250): +	fdivd	%f2,%f4,%f2 + +ifdef(`PIC', +`	ldd	[%o7+L(C1)-L(pc)],%f4', +`	sethi	%hi(L(C1)),%o7 +	ldd	[%o7+%lo(L(C1))],%f4') + +	fcmped	%f2,%f4 +	nop +	fbge,a	L(251) +	fsubd	%f2,%f4,%f2 +	fdtoi	%f2,%f2 +	st	%f2,[%fp-8] +	b	L(252) +	ld	[%fp-8],%i4 +L(251): +	fdtoi	%f2,%f2 +	st	%f2,[%fp-8] +	ld	[%fp-8],%i4 +	sethi	%hi(-2147483648),%g2 +	xor	%i4,%g2,%i4 +L(252): +	umul	%i3,%i4,%g3 +	rd	%y,%i0 +	subcc	%i2,%g3,%o7 +	subxcc	%i1,%i0,%g0 +	be	L(253) +	cmp	%o7,%i3 + +	add	%i4,-1,%i0 +	add	%o7,%i3,%o7 +	st	%o7,[%i5] +	ret +	restore +L(253): +	blu	L(246) +	mov	%i4,%i0 +	add	%i4,1,%i0 +	sub	%o7,%i3,%o7 +L(246): +	st	%o7,[%i5] +	ret +	restore +EPILOGUE(mpn_udiv_qrnnd) diff --git a/vendor/gmp-6.3.0/mpn/sparc32/v8/udiv.asm b/vendor/gmp-6.3.0/mpn/sparc32/v8/udiv.asm new file mode 100644 index 0000000..12f66ce --- /dev/null +++ b/vendor/gmp-6.3.0/mpn/sparc32/v8/udiv.asm @@ -0,0 +1,131 @@ +dnl  SuperSPARC mpn_udiv_qrnnd division support, used from longlong.h. +dnl  This is for SuperSPARC only, to compensate for its semi-functional +dnl  udiv instruction. + +dnl  Copyright 1993, 1994, 1996, 2000 Free Software Foundation, Inc. + +dnl  This file is part of the GNU MP Library. +dnl +dnl  The GNU MP Library is free software; you can redistribute it and/or modify +dnl  it under the terms of either: +dnl +dnl    * the GNU Lesser General Public License as published by the Free +dnl      Software Foundation; either version 3 of the License, or (at your +dnl      option) any later version. +dnl +dnl  or +dnl +dnl    * the GNU General Public License as published by the Free Software +dnl      Foundation; either version 2 of the License, or (at your option) any +dnl      later version. +dnl +dnl  or both in parallel, as here. +dnl +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 General Public License +dnl  for more details. +dnl +dnl  You should have received copies of the GNU General Public License and the +dnl  GNU Lesser General Public License along with the GNU MP Library.  If not, +dnl  see https://www.gnu.org/licenses/. + + +include(`../config.m4') + +C INPUT PARAMETERS +C rem_ptr	i0 +C n1		i1 +C n0		i2 +C d		i3 + +ASM_START() + +ifdef(`PIC', +`	TEXT +L(getpc): +	retl +	nop') + +	TEXT +	ALIGN(8) +L(C0):	.double	0r4294967296 +L(C1):	.double	0r2147483648 + +PROLOGUE(mpn_udiv_qrnnd) +	save	%sp,-104,%sp +	st	%i1,[%fp-8] +	ld	[%fp-8],%f10 + +ifdef(`PIC', +`L(pc):	call	L(getpc)		C put address of this insn in %o7 +	ldd	[%o7+L(C0)-L(pc)],%f8', +`	sethi	%hi(L(C0)),%o7 +	ldd	[%o7+%lo(L(C0))],%f8') + +	fitod	%f10,%f4 +	cmp	%i1,0 +	bge	L(248) +	mov	%i0,%i5 +	faddd	%f4,%f8,%f4 +L(248): +	st	%i2,[%fp-8] +	ld	[%fp-8],%f10 +	fmuld	%f4,%f8,%f6 +	cmp	%i2,0 +	bge	L(249) +	fitod	%f10,%f2 +	faddd	%f2,%f8,%f2 +L(249): +	st	%i3,[%fp-8] +	faddd	%f6,%f2,%f2 +	ld	[%fp-8],%f10 +	cmp	%i3,0 +	bge	L(250) +	fitod	%f10,%f4 +	faddd	%f4,%f8,%f4 +L(250): +	fdivd	%f2,%f4,%f2 + +ifdef(`PIC', +`	ldd	[%o7+L(C1)-L(pc)],%f4', +`	sethi	%hi(L(C1)),%o7 +	ldd	[%o7+%lo(L(C1))],%f4') + +	fcmped	%f2,%f4 +	nop +	fbge,a	L(251) +	fsubd	%f2,%f4,%f2 +	fdtoi	%f2,%f2 +	st	%f2,[%fp-8] +	b	L(252) +	ld	[%fp-8],%i4 +L(251): +	fdtoi	%f2,%f2 +	st	%f2,[%fp-8] +	ld	[%fp-8],%i4 +	sethi	%hi(-2147483648),%g2 +	xor	%i4,%g2,%i4 +L(252): +	umul	%i3,%i4,%g3 +	rd	%y,%i0 +	subcc	%i2,%g3,%o7 +	subxcc	%i1,%i0,%g0 +	be	L(253) +	cmp	%o7,%i3 + +	add	%i4,-1,%i0 +	add	%o7,%i3,%o7 +	st	%o7,[%i5] +	ret +	restore +L(253): +	blu	L(246) +	mov	%i4,%i0 +	add	%i4,1,%i0 +	sub	%o7,%i3,%o7 +L(246): +	st	%o7,[%i5] +	ret +	restore +EPILOGUE(mpn_udiv_qrnnd) diff --git a/vendor/gmp-6.3.0/mpn/sparc32/v8/umul.asm b/vendor/gmp-6.3.0/mpn/sparc32/v8/umul.asm new file mode 100644 index 0000000..1a2e84b --- /dev/null +++ b/vendor/gmp-6.3.0/mpn/sparc32/v8/umul.asm @@ -0,0 +1,40 @@ +dnl  SPARC v8 mpn_umul_ppmm -- support for longlong.h for non-gcc. + +dnl  Copyright 1995, 1996, 2000 Free Software Foundation, Inc. + +dnl  This file is part of the GNU MP Library. +dnl +dnl  The GNU MP Library is free software; you can redistribute it and/or modify +dnl  it under the terms of either: +dnl +dnl    * the GNU Lesser General Public License as published by the Free +dnl      Software Foundation; either version 3 of the License, or (at your +dnl      option) any later version. +dnl +dnl  or +dnl +dnl    * the GNU General Public License as published by the Free Software +dnl      Foundation; either version 2 of the License, or (at your option) any +dnl      later version. +dnl +dnl  or both in parallel, as here. +dnl +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 General Public License +dnl  for more details. +dnl +dnl  You should have received copies of the GNU General Public License and the +dnl  GNU Lesser General Public License along with the GNU MP Library.  If not, +dnl  see https://www.gnu.org/licenses/. + + +include(`../config.m4') + +ASM_START() +PROLOGUE(mpn_umul_ppmm) +	umul	%o1,%o2,%g2 +	st	%g2,[%o0] +	retl +	rd	%y,%o0 +EPILOGUE(mpn_umul_ppmm) |