1 1.1 mrg dnl HP-PA mpn_lshift -- Shift a number left. 2 1.1 mrg 3 1.1.1.2 mrg dnl Copyright 1992, 1994, 2000-2002 Free Software Foundation, Inc. 4 1.1 mrg 5 1.1 mrg dnl This file is part of the GNU MP Library. 6 1.1.1.2 mrg dnl 7 1.1 mrg dnl The GNU MP Library is free software; you can redistribute it and/or modify 8 1.1.1.2 mrg dnl it under the terms of either: 9 1.1.1.2 mrg dnl 10 1.1.1.2 mrg dnl * the GNU Lesser General Public License as published by the Free 11 1.1.1.2 mrg dnl Software Foundation; either version 3 of the License, or (at your 12 1.1.1.2 mrg dnl option) any later version. 13 1.1.1.2 mrg dnl 14 1.1.1.2 mrg dnl or 15 1.1.1.2 mrg dnl 16 1.1.1.2 mrg dnl * the GNU General Public License as published by the Free Software 17 1.1.1.2 mrg dnl Foundation; either version 2 of the License, or (at your option) any 18 1.1.1.2 mrg dnl later version. 19 1.1.1.2 mrg dnl 20 1.1.1.2 mrg dnl or both in parallel, as here. 21 1.1.1.2 mrg dnl 22 1.1 mrg dnl The GNU MP Library is distributed in the hope that it will be useful, but 23 1.1 mrg dnl WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 24 1.1.1.2 mrg dnl or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 25 1.1.1.2 mrg dnl for more details. 26 1.1.1.2 mrg dnl 27 1.1.1.2 mrg dnl You should have received copies of the GNU General Public License and the 28 1.1.1.2 mrg dnl GNU Lesser General Public License along with the GNU MP Library. If not, 29 1.1.1.2 mrg dnl see https://www.gnu.org/licenses/. 30 1.1 mrg 31 1.1 mrg include(`../config.m4') 32 1.1 mrg 33 1.1 mrg C INPUT PARAMETERS 34 1.1 mrg C res_ptr gr26 35 1.1 mrg C s_ptr gr25 36 1.1 mrg C size gr24 37 1.1 mrg C cnt gr23 38 1.1 mrg 39 1.1 mrg ASM_START() 40 1.1 mrg PROLOGUE(mpn_lshift) 41 1.1 mrg sh2add %r24,%r25,%r25 42 1.1 mrg sh2add %r24,%r26,%r26 43 1.1 mrg ldws,mb -4(0,%r25),%r22 44 1.1 mrg subi 32,%r23,%r1 45 1.1 mrg mtsar %r1 46 1.1 mrg addib,= -1,%r24,L(0004) 47 1.1 mrg vshd %r0,%r22,%r28 C compute carry out limb 48 1.1 mrg ldws,mb -4(0,%r25),%r29 49 1.1 mrg addib,= -1,%r24,L(0002) 50 1.1 mrg vshd %r22,%r29,%r20 51 1.1 mrg 52 1.1 mrg LDEF(loop) 53 1.1 mrg ldws,mb -4(0,%r25),%r22 54 1.1 mrg stws,mb %r20,-4(0,%r26) 55 1.1 mrg addib,= -1,%r24,L(0003) 56 1.1 mrg vshd %r29,%r22,%r20 57 1.1 mrg ldws,mb -4(0,%r25),%r29 58 1.1 mrg stws,mb %r20,-4(0,%r26) 59 1.1 mrg addib,<> -1,%r24,L(loop) 60 1.1 mrg vshd %r22,%r29,%r20 61 1.1 mrg 62 1.1 mrg LDEF(0002) 63 1.1 mrg stws,mb %r20,-4(0,%r26) 64 1.1 mrg vshd %r29,%r0,%r20 65 1.1 mrg bv 0(%r2) 66 1.1 mrg stw %r20,-4(0,%r26) 67 1.1 mrg 68 1.1 mrg LDEF(0003) 69 1.1 mrg stws,mb %r20,-4(0,%r26) 70 1.1 mrg 71 1.1 mrg LDEF(0004) 72 1.1 mrg vshd %r22,%r0,%r20 73 1.1 mrg bv 0(%r2) 74 1.1 mrg stw %r20,-4(0,%r26) 75 1.1 mrg EPILOGUE() 76