github.com/aergoio/aergo@v1.3.1/libtool/src/gmp-6.1.2/mpn/m88k/mc88110/addmul_1.s (about) 1 ; mc88110 __gmpn_addmul_1 -- Multiply a limb vector with a single limb and 2 ; store the product in a second limb vector. 3 4 ; Copyright 1996, 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 either: 10 ; 11 ; * the GNU Lesser General Public License as published by the Free 12 ; Software Foundation; either version 3 of the License, or (at your 13 ; option) any later version. 14 ; 15 ; or 16 ; 17 ; * the GNU General Public License as published by the Free Software 18 ; Foundation; either version 2 of the License, or (at your option) any 19 ; later version. 20 ; 21 ; or both in parallel, as here. 22 ; 23 ; The GNU MP Library is distributed in the hope that it will be useful, but 24 ; WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 25 ; or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 26 ; for more details. 27 ; 28 ; You should have received copies of the GNU General Public License and the 29 ; GNU Lesser General Public License along with the GNU MP Library. If not, 30 ; see https://www.gnu.org/licenses/. 31 32 33 ; INPUT PARAMETERS 34 ; res_ptr r2 35 ; s1_ptr r3 36 ; size r4 37 ; s2_limb r5 38 39 text 40 align 16 41 global ___gmpn_addmul_1 42 ___gmpn_addmul_1: 43 lda r3,r3[r4] 44 lda r8,r2[r4] ; RES_PTR in r8 since r2 is retval 45 subu r4,r0,r4 46 addu.co r2,r0,r0 ; r2 = cy = 0 47 48 ld r6,r3[r4] 49 addu r4,r4,1 50 subu r8,r8,4 51 bcnd.n eq0,r4,Lend 52 mulu.d r10,r6,r5 53 54 Loop: ld r7,r8[r4] 55 ld r6,r3[r4] 56 addu.cio r9,r11,r2 57 addu.ci r2,r10,r0 58 addu.co r9,r9,r7 59 st r9,r8[r4] 60 addu r4,r4,1 61 mulu.d r10,r6,r5 62 bcnd ne0,r4,Loop 63 64 Lend: ld r7,r8,0 65 addu.cio r9,r11,r2 66 addu.ci r2,r10,r0 67 addu.co r9,r9,r7 68 st r9,r8,0 69 jmp.n r1 70 addu.ci r2,r2,r0