Home | History | Annotate | Line # | Download | only in alpha
      1      1.1  mrg dnl  Alpha mpn_rshift -- Shift a number right.
      2      1.1  mrg 
      3      1.1  mrg dnl  Copyright 1994, 1995, 2000, 2009 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      cycles/limb
     34      1.1  mrg C EV4:     ?
     35      1.1  mrg C EV5:     3.25
     36      1.1  mrg C EV6:     1.75
     37      1.1  mrg 
     38      1.1  mrg C  INPUT PARAMETERS
     39      1.1  mrg C  rp	r16
     40      1.1  mrg C  up	r17
     41      1.1  mrg C  n	r18
     42      1.1  mrg C  cnt	r19
     43      1.1  mrg 
     44      1.1  mrg 
     45      1.1  mrg ASM_START()
     46      1.1  mrg PROLOGUE(mpn_rshift)
     47      1.1  mrg 	ldq	r4,0(r17)	C load first limb
     48      1.1  mrg 	subq	r31,r19,r20
     49      1.1  mrg 	subq	r18,1,r18
     50      1.1  mrg 	and	r18,4-1,r28	C number of limbs in first loop
     51      1.1  mrg 	sll	r4,r20,r0	C compute function result
     52      1.1  mrg 
     53      1.1  mrg 	beq	r28,L(L0)
     54      1.1  mrg 	subq	r18,r28,r18
     55      1.1  mrg 
     56      1.1  mrg 	ALIGN(8)
     57      1.1  mrg L(top0):
     58      1.1  mrg 	ldq	r3,8(r17)
     59      1.1  mrg 	addq	r16,8,r16
     60      1.1  mrg 	srl	r4,r19,r5
     61      1.1  mrg 	addq	r17,8,r17
     62      1.1  mrg 	subq	r28,1,r28
     63      1.1  mrg 	sll	r3,r20,r6
     64      1.1  mrg 	bis	r3,r3,r4
     65      1.1  mrg 	bis	r5,r6,r8
     66      1.1  mrg 	stq	r8,-8(r16)
     67      1.1  mrg 	bne	r28,L(top0)
     68      1.1  mrg 
     69      1.1  mrg L(L0):	srl	r4,r19,r24
     70      1.1  mrg 	beq	r18,L(end)
     71      1.1  mrg C warm up phase 1
     72      1.1  mrg 	ldq	r1,8(r17)
     73      1.1  mrg 	subq	r18,4,r18
     74      1.1  mrg 	ldq	r2,16(r17)
     75      1.1  mrg 	ldq	r3,24(r17)
     76      1.1  mrg 	ldq	r4,32(r17)
     77      1.1  mrg C warm up phase 2
     78      1.1  mrg 	sll	r1,r20,r7
     79      1.1  mrg 	srl	r1,r19,r21
     80      1.1  mrg 	sll	r2,r20,r8
     81      1.1  mrg 	beq	r18,L(end1)
     82      1.1  mrg 	ldq	r1,40(r17)
     83      1.1  mrg 	srl	r2,r19,r22
     84      1.1  mrg 	ldq	r2,48(r17)
     85      1.1  mrg 	sll	r3,r20,r5
     86      1.1  mrg 	bis	r7,r24,r7
     87      1.1  mrg 	srl	r3,r19,r23
     88      1.1  mrg 	bis	r8,r21,r8
     89      1.1  mrg 	sll	r4,r20,r6
     90      1.1  mrg 	ldq	r3,56(r17)
     91      1.1  mrg 	srl	r4,r19,r24
     92      1.1  mrg 	ldq	r4,64(r17)
     93      1.1  mrg 	subq	r18,4,r18
     94      1.1  mrg 	beq	r18,L(end2)
     95      1.1  mrg 	ALIGN(16)
     96      1.1  mrg C main loop
     97      1.1  mrg L(top):	stq	r7,0(r16)
     98      1.1  mrg 	bis	r5,r22,r5
     99      1.1  mrg 	stq	r8,8(r16)
    100      1.1  mrg 	bis	r6,r23,r6
    101      1.1  mrg 
    102      1.1  mrg 	sll	r1,r20,r7
    103      1.1  mrg 	subq	r18,4,r18
    104      1.1  mrg 	srl	r1,r19,r21
    105      1.1  mrg 	unop	C ldq	r31,-96(r17)
    106      1.1  mrg 
    107      1.1  mrg 	sll	r2,r20,r8
    108      1.1  mrg 	ldq	r1,72(r17)
    109      1.1  mrg 	srl	r2,r19,r22
    110      1.1  mrg 	ldq	r2,80(r17)
    111      1.1  mrg 
    112      1.1  mrg 	stq	r5,16(r16)
    113      1.1  mrg 	bis	r7,r24,r7
    114      1.1  mrg 	stq	r6,24(r16)
    115      1.1  mrg 	bis	r8,r21,r8
    116      1.1  mrg 
    117      1.1  mrg 	sll	r3,r20,r5
    118      1.1  mrg 	unop	C ldq	r31,-96(r17)
    119      1.1  mrg 	srl	r3,r19,r23
    120      1.1  mrg 	addq	r16,32,r16
    121      1.1  mrg 
    122      1.1  mrg 	sll	r4,r20,r6
    123      1.1  mrg 	ldq	r3,88(r17)
    124      1.1  mrg 	srl	r4,r19,r24
    125      1.1  mrg 	ldq	r4,96(r17)
    126      1.1  mrg 
    127      1.1  mrg 	addq	r17,32,r17
    128      1.1  mrg 	bne	r18,L(top)
    129      1.1  mrg C cool down phase 2/1
    130      1.1  mrg L(end2):
    131      1.1  mrg 	stq	r7,0(r16)
    132      1.1  mrg 	bis	r5,r22,r5
    133      1.1  mrg 	stq	r8,8(r16)
    134      1.1  mrg 	bis	r6,r23,r6
    135      1.1  mrg 	sll	r1,r20,r7
    136      1.1  mrg 	srl	r1,r19,r21
    137      1.1  mrg 	sll	r2,r20,r8
    138      1.1  mrg 	srl	r2,r19,r22
    139      1.1  mrg 	stq	r5,16(r16)
    140      1.1  mrg 	bis	r7,r24,r7
    141      1.1  mrg 	stq	r6,24(r16)
    142      1.1  mrg 	bis	r8,r21,r8
    143      1.1  mrg 	sll	r3,r20,r5
    144      1.1  mrg 	srl	r3,r19,r23
    145      1.1  mrg 	sll	r4,r20,r6
    146      1.1  mrg 	srl	r4,r19,r24
    147      1.1  mrg C cool down phase 2/2
    148      1.1  mrg 	stq	r7,32(r16)
    149      1.1  mrg 	bis	r5,r22,r5
    150      1.1  mrg 	stq	r8,40(r16)
    151      1.1  mrg 	bis	r6,r23,r6
    152      1.1  mrg 	stq	r5,48(r16)
    153      1.1  mrg 	stq	r6,56(r16)
    154      1.1  mrg C cool down phase 2/3
    155      1.1  mrg 	stq	r24,64(r16)
    156      1.1  mrg 	ret	r31,(r26),1
    157      1.1  mrg 
    158      1.1  mrg C cool down phase 1/1
    159      1.1  mrg L(end1):
    160      1.1  mrg 	srl	r2,r19,r22
    161      1.1  mrg 	sll	r3,r20,r5
    162      1.1  mrg 	bis	r7,r24,r7
    163      1.1  mrg 	srl	r3,r19,r23
    164      1.1  mrg 	bis	r8,r21,r8
    165      1.1  mrg 	sll	r4,r20,r6
    166      1.1  mrg 	srl	r4,r19,r24
    167      1.1  mrg C cool down phase 1/2
    168      1.1  mrg 	stq	r7,0(r16)
    169      1.1  mrg 	bis	r5,r22,r5
    170      1.1  mrg 	stq	r8,8(r16)
    171      1.1  mrg 	bis	r6,r23,r6
    172      1.1  mrg 	stq	r5,16(r16)
    173      1.1  mrg 	stq	r6,24(r16)
    174      1.1  mrg 	stq	r24,32(r16)
    175      1.1  mrg 	ret	r31,(r26),1
    176      1.1  mrg 
    177      1.1  mrg L(end):	stq	r24,0(r16)
    178      1.1  mrg 	ret	r31,(r26),1
    179      1.1  mrg EPILOGUE(mpn_rshift)
    180      1.1  mrg ASM_END()
    181