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
54Loop:     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
64Lend:     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
71