beta-0.89.2
[luatex.git] / source / libs / gmp / gmp-src / mpn / m88k / mc88110 / addmul_1.s
blob321221f23ca04c19032a3825748911b929ae93b0
1 ; mc88110 __gmpn_addmul_1 -- Multiply a limb vector with a single limb and
2 ; store the product in a second limb vector.
4 ; Copyright 1996, 2000 Free Software Foundation, Inc.
6 ; This file is part of the GNU MP Library.
8 ; The GNU MP Library is free software; you can redistribute it and/or modify
9 ; it under the terms of either:
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.
15 ; or
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.
21 ; or both in parallel, as here.
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.
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/.
33 ; INPUT PARAMETERS
34 ; res_ptr r2
35 ; s1_ptr r3
36 ; size r4
37 ; s2_limb r5
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
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
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
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