[BACK]Return to lshift.s CVS log [TXT][DIR] Up to [local] / OpenXM_contrib / gmp / mpn / pa64w

Annotation of OpenXM_contrib/gmp/mpn/pa64w/lshift.s, Revision 1.1.1.1

1.1       maekawa     1: ; HP-PA 2.0 __gmpn_lshift --
                      2:
                      3: ; Copyright (C) 1997, 2000 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; see the file COPYING.LIB.  If not, write to
                     19: ; the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
                     20: ; MA 02111-1307, USA.
                     21:
                     22:
                     23: ; INPUT PARAMETERS
                     24: ; res_ptr      gr26
                     25: ; s1_ptr       gr25
                     26: ; size         gr24
                     27: ; cnt          gr23
                     28:
                     29: ; This runs at 1.5 cycles/limb on PA8000.
                     30:
                     31:        .level  2.0w
                     32:        .code
                     33:        .export __gmpn_lshift,entry
                     34: __gmpn_lshift
                     35:        .proc
                     36:        .callinfo frame=0,args_saved
                     37:        .entry
                     38:
                     39:        shladd          %r24,3,%r25,%r25
                     40:        shladd          %r24,3,%r26,%r26
                     41:        subi            64,%r23,%r23
                     42:        mtsar           %r23
                     43:        ldd             -8(%r25),%r21
                     44:        addib,=         -1,%r24,L$end
                     45:        shrpd           %r0,%r21,%sar,%r29      ; compute carry out limb
                     46:        depw,z          %r24,31,3,%r28          ; r28 = (size & 7)
                     47:        sub             %r0,%r24,%r22
                     48:        depw,z          %r22,28,3,%r22          ; r22 = 8 * (-size & 7)
                     49:        add             %r25,%r22,%r25          ; offset s1_ptr
                     50:        blr             %r28,%r0                ; branch into jump table
                     51:        add             %r26,%r22,%r26          ; offset res_ptr
                     52:        b               L$0
                     53:        nop
                     54:        b               L$1
                     55:        copy            %r21,%r20
                     56:        b               L$2
                     57:        nop
                     58:        b               L$3
                     59:        copy            %r21,%r20
                     60:        b               L$4
                     61:        nop
                     62:        b               L$5
                     63:        copy            %r21,%r20
                     64:        b               L$6
                     65:        nop
                     66:        b               L$7
                     67:        copy            %r21,%r20
                     68:
                     69: L$loop
                     70: L$0    ldd             -16(%r25),%r20
                     71:        shrpd           %r21,%r20,%sar,%r21
                     72:        std             %r21,-8(%r26)
                     73: L$7    ldd             -24(%r25),%r21
                     74:        shrpd           %r20,%r21,%sar,%r20
                     75:        std             %r20,-16(%r26)
                     76: L$6    ldd             -32(%r25),%r20
                     77:        shrpd           %r21,%r20,%sar,%r21
                     78:        std             %r21,-24(%r26)
                     79: L$5    ldd             -40(%r25),%r21
                     80:        shrpd           %r20,%r21,%sar,%r20
                     81:        std             %r20,-32(%r26)
                     82: L$4    ldd             -48(%r25),%r20
                     83:        shrpd           %r21,%r20,%sar,%r21
                     84:        std             %r21,-40(%r26)
                     85: L$3    ldd             -56(%r25),%r21
                     86:        shrpd           %r20,%r21,%sar,%r20
                     87:        std             %r20,-48(%r26)
                     88: L$2    ldd             -64(%r25),%r20
                     89:        shrpd           %r21,%r20,%sar,%r21
                     90:        std             %r21,-56(%r26)
                     91: L$1    ldd             -72(%r25),%r21
                     92:        ldo             -64(%r25),%r25
                     93:        shrpd           %r20,%r21,%sar,%r20
                     94:        std             %r20,-64(%r26)
                     95:        addib,>         -8,%r24,L$loop
                     96:        ldo             -64(%r26),%r26
                     97:
                     98: L$end  shrpd           %r21,%r0,%sar,%r21
                     99:        std             %r21,-8(%r26)
                    100:        bve             (%r2)
                    101:        .exit
                    102:        copy            %r29,%r28
                    103:        .procend

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>