dnl S/390-32 mpn_lshiftc. dnl Copyright 2011 Free Software Foundation, Inc. dnl This file is part of the GNU MP Library. dnl The GNU MP Library is free software; you can redistribute it and/or modify dnl it under the terms of the GNU Lesser General Public License as published dnl by the Free Software Foundation; either version 3 of the License, or (at dnl your option) any later version. dnl The GNU MP Library is distributed in the hope that it will be useful, but dnl WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY dnl or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public dnl License for more details. dnl You should have received a copy of the GNU Lesser General Public License dnl along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. include(`../config.m4') C cycles/limb C z900 7 C z990 3.375 C z9 ? C z10 ? C z196 ? C TODO C * C INPUT PARAMETERS define(`rp', `%r2') define(`up', `%r3') define(`n', `%r4') define(`cnt', `%r5') ASM_START() PROLOGUE(mpn_lshiftc) lr %r1, n sll %r1, 2 stm %r6, %r13, 24(%r15) la up, 0(%r1,up) C put up near end of U la rp, 0(%r1,rp) C put rp near end of R ahi up, -20 ahi rp, -16 lhi %r8, 32 sr %r8, cnt l %r12, 16(up) srl %r12, 0(%r8) C return value lhi %r13, -1 lhi %r7, 3 nr %r7, n srl n, 2 je L(b0) chi %r7, 2 jl L(b1) je L(b2) L(b3): l %r10, 16(up) l %r11, 12(up) l %r9, 8(up) ahi up, -8 lr %r8, %r11 sldl %r10, 0(cnt) sldl %r8, 0(cnt) xr %r10, %r13 xr %r8, %r13 st %r10, 12(rp) st %r8, 8(rp) ahi rp, -8 ltr n, n je L(end) j L(top) L(b2): l %r10, 16(up) l %r11, 12(up) ahi up, -4 sldl %r10, 0(cnt) xr %r10, %r13 st %r10, 12(rp) ahi rp, -4 ltr n, n je L(end) j L(top) L(b1): ltr n, n je L(end) j L(top) L(b0): l %r10,16(up) l %r8, 12(up) l %r6, 8(up) l %r0, 4(up) ahi up, -12 lr %r11, %r8 lr %r9, %r6 lr %r7, %r0 sldl %r10,0(cnt) sldl %r8, 0(cnt) sldl %r6, 0(cnt) xr %r10, %r13 xr %r8, %r13 xr %r6, %r13 st %r10, 12(rp) st %r8, 8(rp) st %r6, 4(rp) ahi rp, -12 ahi n, -1 je L(end) ALIGN(8) L(top): l %r10, 16(up) l %r8, 12(up) l %r6, 8(up) l %r0, 4(up) l %r1, 0(up) lr %r11, %r8 lr %r9, %r6 lr %r7, %r0 ahi up, -16 sldl %r10, 0(cnt) sldl %r8, 0(cnt) sldl %r6, 0(cnt) sldl %r0, 0(cnt) xr %r10, %r13 xr %r8, %r13 xr %r6, %r13 xr %r0, %r13 st %r10, 12(rp) st %r8, 8(rp) st %r6, 4(rp) st %r0, 0(rp) ahi rp, -16 brct n, L(top) L(end): l %r10, 16(up) sll %r10, 0(cnt) xr %r10, %r13 st %r10, 12(rp) lr %r2, %r12 lm %r6, %r13, 24(%r15) br %r14 EPILOGUE()