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