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

« back to all changes in this revision

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

  • Committer: Bazaar Package Importer
  • Author(s): Peter Van Eynde
  • Date: 2006-05-17 02:46:26 UTC
  • Revision ID: james.westby@ubuntu.com-20060517024626-lljr08ftv9g9vefl
Tags: upstream-0.9h-20060510
ImportĀ upstreamĀ versionĀ 0.9h-20060510

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# PowerPC-64 mpn_rshift -- Shift a number right.
 
2
 
 
3
# Copyright 1999, 2000, 2001, 2002 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
include(`../config.m4')
 
23
 
 
24
 
 
25
# ppc630: 2.25 cycles/limb
 
26
 
 
27
 
 
28
# INPUT PARAMETERS
 
29
# res_ptr       r3
 
30
# s1_ptr        r4
 
31
# size          r5
 
32
# cnt           r6
 
33
 
 
34
ASM_START()
 
35
PROLOGUE(mpn_rshift)
 
36
        mtctr   r5              # copy size into CTR
 
37
        addi    r7,r3,-8        # move adjusted res_ptr to free return reg
 
38
        subfic  r8,r6,64
 
39
        ld      r11,0(r4)       # load first s1 limb
 
40
        sld     r3,r11,r8       # compute function return value
 
41
        bdz     .Lend1
 
42
 
 
43
.Loop:  ldu     r10,8(r4)
 
44
        srd     r9,r11,r6
 
45
        sld     r12,r10,r8
 
46
        or      r9,r9,r12
 
47
        stdu    r9,8(r7)
 
48
        bdz     .Lend2
 
49
        ldu     r11,8(r4)
 
50
        srd     r9,r10,r6
 
51
        sld     r12,r11,r8
 
52
        or      r9,r9,r12
 
53
        stdu    r9,8(r7)
 
54
        bdnz    .Loop
 
55
 
 
56
.Lend1: srd     r0,r11,r6
 
57
        std     r0,8(r7)
 
58
        blr
 
59
 
 
60
.Lend2: srd     r0,r10,r6
 
61
        std     r0,8(r7)
 
62
        blr
 
63
EPILOGUE(mpn_rshift)