~ubuntu-branches/ubuntu/intrepid/ecl/intrepid

« back to all changes in this revision

Viewing changes to src/gmp/mpn/alpha/rshift.asm

  • Committer: Bazaar Package Importer
  • Author(s): Peter Van Eynde
  • Date: 2007-04-09 11:51:51 UTC
  • mfrom: (1.1.3 upstream)
  • Revision ID: james.westby@ubuntu.com-20070409115151-ql8cr0kalzx1jmla
Tags: 0.9i-20070324-2
Upload to unstable. 

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
dnl  Alpha mpn_rshift -- Shift a number right.
2
2
 
3
 
dnl  Copyright 1994, 1995, 2000 Free Software Foundation, Inc.
 
3
dnl  Copyright 1994, 1995, 2000, 2002 Free Software Foundation, Inc.
4
4
 
5
5
dnl  This file is part of the GNU MP Library.
6
6
 
15
15
dnl  License for more details.
16
16
 
17
17
dnl  You should have received a copy of the GNU Lesser General Public License
18
 
dnl  along with the GNU MP Library; see the file COPYING.LIB.  If not, write to
19
 
dnl  the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
20
 
dnl  MA 02111-1307, USA.
 
18
dnl  along with the GNU MP Library; see the file COPYING.LIB.  If not, write
 
19
dnl  to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
 
20
dnl  Boston, MA 02110-1301, USA.
21
21
 
22
22
include(`../config.m4')
23
23
 
24
 
dnl  INPUT PARAMETERS
25
 
dnl  res_ptr    r16
26
 
dnl  s1_ptr     r17
27
 
dnl  size       r18
28
 
dnl  cnt        r19
29
 
 
30
 
dnl  This code runs at 4.8 cycles/limb on the 21064.  With infinite unrolling,
31
 
dnl  it would take 4 cycles/limb.  It should be possible to get down to 3
32
 
dnl  cycles/limb since both ldq and stq can be paired with the other used
33
 
dnl  instructions.  But there are many restrictions in the 21064 pipeline that
34
 
dnl  makes it hard, if not impossible, to get down to 3 cycles/limb:
35
 
 
36
 
dnl  1. ldq has a 3 cycle delay, srl and sll have a 2 cycle delay.
37
 
dnl  2. Only aligned instruction pairs can be paired.
38
 
dnl  3. The store buffer or silo might not be able to deal with the bandwidth.
 
24
C      cycles/limb
 
25
C EV4:     4.75
 
26
C EV5:     3.75
 
27
C EV6:     2
 
28
 
 
29
C  INPUT PARAMETERS
 
30
C  rp   r16
 
31
C  up   r17
 
32
C  n    r18
 
33
C  cnt  r19
 
34
 
39
35
 
40
36
ASM_START()
41
37
PROLOGUE(mpn_rshift)
50
46
        subq    r18,r20,r18
51
47
 
52
48
        ALIGN(8)
53
 
$Loop0:
54
 
        ldq     r3,0(r17)
 
49
$Loop0: ldq     r3,0(r17)
55
50
        addq    r16,8,r16
56
51
        addq    r17,8,r17
57
52
        subq    r20,1,r20