]> git.ipfire.org Git - thirdparty/glibc.git/blame - sysdeps/powerpc/powerpc32/addmul_1.S
Update copyright dates with scripts/update-copyrights
[thirdparty/glibc.git] / sysdeps / powerpc / powerpc32 / addmul_1.S
CommitLineData
9a0a462c 1/* Multiply a limb vector by a single limb, for PowerPC.
581c785b 2 Copyright (C) 1993-2022 Free Software Foundation, Inc.
4cca6b86
UD
3 This file is part of the GNU C Library.
4
5 The GNU C Library is free software; you can redistribute it and/or
41bdb6e2
AJ
6 modify it under the terms of the GNU Lesser General Public
7 License as published by the Free Software Foundation; either
8 version 2.1 of the License, or (at your option) any later version.
4cca6b86
UD
9
10 The GNU C Library is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
41bdb6e2 13 Lesser General Public License for more details.
4cca6b86 14
41bdb6e2 15 You should have received a copy of the GNU Lesser General Public
59ba27a6 16 License along with the GNU C Library; if not, see
5a82c748 17 <https://www.gnu.org/licenses/>. */
4cca6b86
UD
18
19#include <sysdep.h>
9a0a462c
UD
20
21/* mp_limb_t mpn_addmul_1 (mp_ptr res_ptr, mp_srcptr s1_ptr,
22 mp_size_t s1_size, mp_limb_t s2_limb)
23 Calculate res+s1*s2 and put result back in res; return carry. */
b5510883 24ENTRY (__mpn_addmul_1)
217eb19b
UD
25 mtctr r5
26
27 lwz r0,0(r4)
28 mullw r7,r0,r6
29 mulhwu r10,r0,r6
30 lwz r9,0(r3)
31 addc r8,r7,r9
32 addi r3,r3,-4 /* adjust res_ptr */
4e141d64 33 bdz L(1)
9a0a462c 34
4e141d64 35L(0): lwzu r0,4(r4)
217eb19b
UD
36 stwu r8,4(r3)
37 mullw r8,r0,r6
38 adde r7,r8,r10
39 mulhwu r10,r0,r6
40 lwz r9,4(r3)
41 addze r10,r10
42 addc r8,r7,r9
4e141d64 43 bdnz L(0)
9a0a462c 44
4e141d64 45L(1): stw r8,4(r3)
217eb19b 46 addze r3,r10
9a0a462c 47 blr
b5510883 48END (__mpn_addmul_1)