diff options
Diffstat (limited to 'linden/indra/libgcrypt/libgcrypt-1.2.2/mpi/power/mpih-rshift.S')
-rw-r--r--[-rwxr-xr-x] | linden/indra/libgcrypt/libgcrypt-1.2.2/mpi/power/mpih-rshift.S | 128 |
1 files changed, 64 insertions, 64 deletions
diff --git a/linden/indra/libgcrypt/libgcrypt-1.2.2/mpi/power/mpih-rshift.S b/linden/indra/libgcrypt/libgcrypt-1.2.2/mpi/power/mpih-rshift.S index 0e85ae3..f131a86 100755..100644 --- a/linden/indra/libgcrypt/libgcrypt-1.2.2/mpi/power/mpih-rshift.S +++ b/linden/indra/libgcrypt/libgcrypt-1.2.2/mpi/power/mpih-rshift.S | |||
@@ -1,64 +1,64 @@ | |||
1 | /* IBM POWER rshift | 1 | /* IBM POWER rshift |
2 | * | 2 | * |
3 | * Copyright (C) 1992, 1994, 1999, 2002 Free Software Foundation, Inc. | 3 | * Copyright (C) 1992, 1994, 1999, 2002 Free Software Foundation, Inc. |
4 | * | 4 | * |
5 | * This file is part of Libgcrypt. | 5 | * This file is part of Libgcrypt. |
6 | * | 6 | * |
7 | * Libgcrypt is free software; you can redistribute it and/or modify | 7 | * Libgcrypt is free software; you can redistribute it and/or modify |
8 | * it under the terms of the GNU Lesser General Public License as | 8 | * it under the terms of the GNU Lesser General Public License as |
9 | * published by the Free Software Foundation; either version 2.1 of | 9 | * published by the Free Software Foundation; either version 2.1 of |
10 | * the License, or (at your option) any later version. | 10 | * the License, or (at your option) any later version. |
11 | * | 11 | * |
12 | * Libgcrypt is distributed in the hope that it will be useful, | 12 | * Libgcrypt is distributed in the hope that it will be useful, |
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | 13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
15 | * GNU Lesser General Public License for more details. | 15 | * GNU Lesser General Public License for more details. |
16 | * | 16 | * |
17 | * You should have received a copy of the GNU Lesser General Public | 17 | * You should have received a copy of the GNU Lesser General Public |
18 | * License along with this program; if not, write to the Free Software | 18 | * License along with this program; if not, write to the Free Software |
19 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA | 19 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA |
20 | */ | 20 | */ |
21 | 21 | ||
22 | #include "sysdep.h" | 22 | #include "sysdep.h" |
23 | #include "asm-syntax.h" | 23 | #include "asm-syntax.h" |
24 | 24 | ||
25 | 25 | ||
26 | /* | 26 | /* |
27 | # INPUT PARAMETERS | 27 | # INPUT PARAMETERS |
28 | # res_ptr r3 | 28 | # res_ptr r3 |
29 | # s_ptr r4 | 29 | # s_ptr r4 |
30 | # size r5 | 30 | # size r5 |
31 | # cnt r6 | 31 | # cnt r6 |
32 | */ | 32 | */ |
33 | 33 | ||
34 | .toc | 34 | .toc |
35 | .extern _gcry_mpih_rshift[DS] | 35 | .extern _gcry_mpih_rshift[DS] |
36 | .extern ._gcry_mpih_rshift | 36 | .extern ._gcry_mpih_rshift |
37 | .csect [PR] | 37 | .csect [PR] |
38 | .align 2 | 38 | .align 2 |
39 | .globl _gcry_mpih_rshift | 39 | .globl _gcry_mpih_rshift |
40 | .globl ._gcry_mpih_rshift | 40 | .globl ._gcry_mpih_rshift |
41 | .csect _gcry_mpih_rshift[DS] | 41 | .csect _gcry_mpih_rshift[DS] |
42 | _gcry_mpih_rshift: | 42 | _gcry_mpih_rshift: |
43 | .long ._gcry_mpih_rshift, TOC[tc0], 0 | 43 | .long ._gcry_mpih_rshift, TOC[tc0], 0 |
44 | .csect [PR] | 44 | .csect [PR] |
45 | ._gcry_mpih_rshift: | 45 | ._gcry_mpih_rshift: |
46 | sfi 8,6,32 | 46 | sfi 8,6,32 |
47 | mtctr 5 # put limb count in CTR loop register | 47 | mtctr 5 # put limb count in CTR loop register |
48 | l 0,0(4) # read least significant limb | 48 | l 0,0(4) # read least significant limb |
49 | ai 9,3,-4 # adjust res_ptr since it's offset in the stu:s | 49 | ai 9,3,-4 # adjust res_ptr since it's offset in the stu:s |
50 | sle 3,0,8 # compute carry limb, and init MQ register | 50 | sle 3,0,8 # compute carry limb, and init MQ register |
51 | bdz Lend2 # if just one limb, skip loop | 51 | bdz Lend2 # if just one limb, skip loop |
52 | lu 0,4(4) # read 2:nd least significant limb | 52 | lu 0,4(4) # read 2:nd least significant limb |
53 | sleq 7,0,8 # compute least significant limb of result | 53 | sleq 7,0,8 # compute least significant limb of result |
54 | bdz Lend # if just two limb, skip loop | 54 | bdz Lend # if just two limb, skip loop |
55 | Loop: lu 0,4(4) # load next higher limb | 55 | Loop: lu 0,4(4) # load next higher limb |
56 | stu 7,4(9) # store previous result during read latency | 56 | stu 7,4(9) # store previous result during read latency |
57 | sleq 7,0,8 # compute result limb | 57 | sleq 7,0,8 # compute result limb |
58 | bdn Loop # loop back until CTR is zero | 58 | bdn Loop # loop back until CTR is zero |
59 | Lend: stu 7,4(9) # store 2:nd most significant limb | 59 | Lend: stu 7,4(9) # store 2:nd most significant limb |
60 | Lend2: sre 7,0,6 # compute most significant limb | 60 | Lend2: sre 7,0,6 # compute most significant limb |
61 | st 7,4(9) # store it | 61 | st 7,4(9) # store it |
62 | br | 62 | br |
63 | 63 | ||
64 | 64 | ||