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