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

« back to all changes in this revision

Viewing changes to src/gmp/mpn/pa32/hppa2_0/sub_n.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
dnl  HP-PA 2.0 32-bit mpn_sub_n -- Subtract two limb vectors of the same
 
2
dnl  length > 0 and store difference in a third limb vector.
 
3
 
 
4
dnl  Copyright 1997, 1998, 2000, 2001, 2002 Free Software Foundation, Inc.
 
5
 
 
6
dnl  This file is part of the GNU MP Library.
 
7
 
 
8
dnl  The GNU MP Library is free software; you can redistribute it and/or modify
 
9
dnl  it under the terms of the GNU Lesser General Public License as published
 
10
dnl  by the Free Software Foundation; either version 2.1 of the License, or (at
 
11
dnl  your option) any later version.
 
12
 
 
13
dnl  The GNU MP Library is distributed in the hope that it will be useful, but
 
14
dnl  WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
 
15
dnl  or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
 
16
dnl  License for more details.
 
17
 
 
18
dnl  You should have received a copy of the GNU Lesser General Public License
 
19
dnl  along with the GNU MP Library; see the file COPYING.LIB.  If not, write to
 
20
dnl  the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
 
21
dnl  MA 02111-1307, USA.
 
22
 
 
23
include(`../config.m4')
 
24
 
 
25
C INPUT PARAMETERS
 
26
C res_ptr       gr26
 
27
C s1_ptr        gr25
 
28
C s2_ptr        gr24
 
29
C size          gr23
 
30
 
 
31
C This runs at 2 cycles/limb on PA8000.
 
32
 
 
33
ASM_START()
 
34
PROLOGUE(mpn_sub_n)
 
35
        sub             %r0,%r23,%r22
 
36
        zdep            %r22,30,3,%r28          C r28 = 2 * (-n & 7)
 
37
        zdep            %r22,29,3,%r22          C r22 = 4 * (-n & 7)
 
38
        sub             %r25,%r22,%r25          C offset s1_ptr
 
39
        sub             %r24,%r22,%r24          C offset s2_ptr
 
40
        blr             %r28,%r0                C branch into loop
 
41
        sub             %r26,%r22,%r26          C offset res_ptr and set carry
 
42
 
 
43
        .label  L(loop)
 
44
        ldw             0(%r25),%r20
 
45
        ldw             0(%r24),%r31
 
46
        subb            %r20,%r31,%r20
 
47
        stw             %r20,0(%r26)
 
48
 
 
49
        .label  L(7)
 
50
        ldw             4(%r25),%r21
 
51
        ldw             4(%r24),%r19
 
52
        subb            %r21,%r19,%r21
 
53
        stw             %r21,4(%r26)
 
54
 
 
55
        .label  L(6)
 
56
        ldw             8(%r25),%r20
 
57
        ldw             8(%r24),%r31
 
58
        subb            %r20,%r31,%r20
 
59
        stw             %r20,8(%r26)
 
60
 
 
61
        .label  L(5)
 
62
        ldw             12(%r25),%r21
 
63
        ldw             12(%r24),%r19
 
64
        subb            %r21,%r19,%r21
 
65
        stw             %r21,12(%r26)
 
66
 
 
67
        .label  L(4)
 
68
        ldw             16(%r25),%r20
 
69
        ldw             16(%r24),%r31
 
70
        subb            %r20,%r31,%r20
 
71
        stw             %r20,16(%r26)
 
72
 
 
73
        .label  L(3)
 
74
        ldw             20(%r25),%r21
 
75
        ldw             20(%r24),%r19
 
76
        subb            %r21,%r19,%r21
 
77
        stw             %r21,20(%r26)
 
78
 
 
79
        .label  L(2)
 
80
        ldw             24(%r25),%r20
 
81
        ldw             24(%r24),%r31
 
82
        subb            %r20,%r31,%r20
 
83
        stw             %r20,24(%r26)
 
84
 
 
85
        .label  L(1)
 
86
        ldw             28(%r25),%r21
 
87
        ldo             32(%r25),%r25
 
88
        ldw             28(%r24),%r19
 
89
        subb            %r21,%r19,%r21
 
90
        stw             %r21,28(%r26)
 
91
        ldo             32(%r24),%r24
 
92
        addib,>         -8,%r23,L(loop)
 
93
        ldo             32(%r26),%r26
 
94
 
 
95
        addc            %r0,%r0,%r28
 
96
        bv              (%r2)
 
97
        subi            1,%r28,%r28
 
98
EPILOGUE()