1! Z8000 __gmpn_mul_1 -- Multiply a limb vector with a limb and store 2! the result in a second limb vector. 3 4! Copyright 1993, 1994, 1995, 2000 Free Software Foundation, Inc. 5 6! This file is part of the GNU MP Library. 7 8! The GNU MP Library is free software; you can redistribute it and/or modify 9! it under the terms of the GNU Lesser General Public License as published by 10! the Free Software Foundation; either version 3 of the License, or (at your 11! option) any later version. 12 13! The GNU MP Library is distributed in the hope that it will be useful, but 14! WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 15! or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public 16! License for more details. 17 18! You should have received a copy of the GNU Lesser General Public License 19! along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. 20 21 22! INPUT PARAMETERS 23! res_ptr r7 24! s1_ptr r6 25! size r5 26! s2_limb r4 27 28 unseg 29 .text 30 even 31 global ___gmpn_mul_1 32___gmpn_mul_1: 33 sub r2,r2 ! zero carry limb 34 and r4,r4 35 jr mi,Lneg 36 37Lpos: pop r1,@r6 38 ld r9,r1 39 mult rr8,r4 40 and r1,r1 ! shift msb of loaded limb into cy 41 jr mi,Lp ! branch if loaded limb's msb is set 42 add r8,r4 ! hi_limb += sign_comp2 43Lp: add r9,r2 ! lo_limb += cy_limb 44 xor r2,r2 45 adc r2,r8 46 ld @r7,r9 47 inc r7,#2 48 dec r5 49 jr ne,Lpos 50 ret t 51 52Lneg: pop r1,@r6 53 ld r9,r1 54 mult rr8,r4 55 add r8,r1 ! hi_limb += sign_comp1 56 and r1,r1 57 jr mi,Ln 58 add r8,r4 ! hi_limb += sign_comp2 59Ln: add r9,r2 ! lo_limb += cy_limb 60 xor r2,r2 61 adc r2,r8 62 ld @r7,r9 63 inc r7,#2 64 dec r5 65 jr ne,Lneg 66 ret t 67