2 * optimized for the PA7100, where it runs at 3.25 cycles/limb
4 * Copyright (C) 1992, 1994, 1998,
5 * 2001 Free Software Foundation, Inc.
7 * This file is part of GnuPG.
9 * GnuPG is free software; you can redistribute it and/or modify
10 * it under the terms of the GNU General Public License as published by
11 * the Free Software Foundation; either version 2 of the License, or
12 * (at your option) any later version.
14 * GnuPG is distributed in the hope that it will be useful,
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 * GNU General Public License for more details.
19 * You should have received a copy of the GNU General Public License
20 * along with this program; if not, write to the Free Software
21 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
29 * mpihelp_rshift( mpi_ptr_t wp, (gr26)
30 * mpi_ptr_t up, (gr25)
31 * mpi_size_t usize, (gr24)
32 * unsigned cnt) (gr23)
36 .export mpihelp_rshift
39 .callinfo frame=64,no_calls
42 ldws,ma 4(0,%r25),%r22
44 addib,= -1,%r24,L$r004
45 vshd %r22,%r0,%r28 ; compute carry out limb
46 ldws,ma 4(0,%r25),%r29
47 addib,<= -5,%r24,L$rrest
51 ldws,ma 4(0,%r25),%r22
52 stws,ma %r20,4(0,%r26)
54 ldws,ma 4(0,%r25),%r29
55 stws,ma %r20,4(0,%r26)
57 ldws,ma 4(0,%r25),%r22
58 stws,ma %r20,4(0,%r26)
60 ldws,ma 4(0,%r25),%r29
61 stws,ma %r20,4(0,%r26)
62 addib,> -4,%r24,L$roop
66 addib,= 4,%r24,L$rend1
69 ldws,ma 4(0,%r25),%r22
70 stws,ma %r20,4(0,%r26)
71 addib,<= -1,%r24,L$rend2
73 ldws,ma 4(0,%r25),%r29
74 stws,ma %r20,4(0,%r26)
75 addib,> -1,%r24,L$eroop
79 stws,ma %r20,4(0,%r26)
84 stws,ma %r20,4(0,%r26)