~ubuntu-branches/ubuntu/quantal/gclcvs/quantal

« back to all changes in this revision

Viewing changes to gmp3/mpn/a29k/rshift.s

  • Committer: Bazaar Package Importer
  • Author(s): Camm Maguire
  • Date: 2004-06-24 15:13:46 UTC
  • Revision ID: james.westby@ubuntu.com-20040624151346-xh0xaaktyyp7aorc
Tags: 2.7.0-26
C_GC_OFFSET is 2 on m68k-linux

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
; 29000 __gmpn_rshift --
 
2
 
 
3
; Copyright 1992, 1994, 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       lr2
 
25
; s1_ptr        lr3
 
26
; s2_ptr        lr4
 
27
; size          lr5
 
28
 
 
29
; We use the loadm/storem instructions and operate on chunks of 8
 
30
; limbs/per iteration, until less than 8 limbs remain.
 
31
 
 
32
        .sect .lit,lit
 
33
        .text
 
34
        .align  4
 
35
        .global ___gmpn_rshift
 
36
        .word   0x60000
 
37
___gmpn_rshift:
 
38
        load    0,0,gr119,lr3
 
39
        add     lr3,lr3,4
 
40
 
 
41
        subr    gr116,lr5,32
 
42
        sll     gr96,gr119,gr116        ; return value
 
43
        sub     lr4,lr4,1               ; actual loop count is SIZE - 1
 
44
 
 
45
        srl     gr117,lr4,3             ; chuck count = (actual count) / 8
 
46
        cpeq    gr118,gr117,0
 
47
        jmpt    gr118,Ltail
 
48
         mtsr   fc,gr116
 
49
 
 
50
        sub     gr117,gr117,2           ; count for jmpfdec
 
51
 
 
52
; Main loop working 8 limbs/iteration.
 
53
Loop:   mtsrim  cr,(8-1)
 
54
        loadm   0,0,gr100,lr3
 
55
        add     lr3,lr3,32
 
56
 
 
57
        extract gr98,gr100,gr119
 
58
        extract gr99,gr101,gr100
 
59
        extract gr100,gr102,gr101
 
60
        extract gr101,gr103,gr102
 
61
        extract gr102,gr104,gr103
 
62
        extract gr103,gr105,gr104
 
63
        extract gr104,gr106,gr105
 
64
        extract gr105,gr107,gr106
 
65
 
 
66
        mtsrim  cr,(8-1)
 
67
        storem  0,0,gr98,lr2
 
68
        add     lr2,lr2,32
 
69
        jmpfdec gr117,Loop
 
70
         or     gr119,gr107,0
 
71
 
 
72
; Code for the last up-to-7 limbs.
 
73
 
 
74
        and     lr4,lr4,(8-1)
 
75
Ltail:  cpeq    gr118,lr4,0
 
76
        jmpt    gr118,Lend
 
77
         sub    lr4,lr4,2               ; count for jmpfdec
 
78
 
 
79
Loop2:  load    0,0,gr100,lr3
 
80
        add     lr3,lr3,4
 
81
        extract gr117,gr100,gr119
 
82
        store   0,0,gr117,lr2
 
83
        add     lr2,lr2,4
 
84
        jmpfdec lr4,Loop2
 
85
         or     gr119,gr100,0
 
86
 
 
87
Lend:   srl     gr117,gr119,lr5
 
88
        jmpi    lr0
 
89
         store  0,0,gr117,lr2