1 /* PowerPC64 mpn_lshift -- rp[] = up[] << cnt
2 Copyright (C) 2003-2020 Free Software Foundation, Inc.
3 This file is part of the GNU C Library.
5 The GNU C Library is free software; you can redistribute it and/or
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.
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
13 Lesser General Public License for more details.
15 You should have received a copy of the GNU Lesser General Public
16 License along with the GNU C Library; if not, see
17 <https://www.gnu.org/licenses/>. */
33 ENTRY_TOCLESS (__mpn_lshift, 5)
36 cfi_offset(U1, U1SAVE)
37 cfi_offset(U0, U0SAVE)
56 L(b11): sld r8, r10, CNT
79 L(b10): sld r12, r10, CNT
88 L(gt2): ld U0, -24(UP)
101 L(b00): ld U1, -16(UP)
114 L(gt4): addi UP, UP, -32
125 L(gt1): ld U0, -16(UP)
141 L(top): sld r12, U0, CNT
146 L(L00): sld r8, U1, CNT
151 L(L11): sld r12, U0, CNT
156 L(L10): sld r8, U1, CNT
166 L(end): sld r12, U0, CNT
169 L(cj4): or r11, r8, r9
172 L(cj3): or r10, r12, r7
174 L(cj2): std r10, -32(RP)
177 L(ret): ld U1, U1SAVE(r1)