Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(25)

Side by Side Diff: gcc/gmp/mpn/pa64/aorslsh1_n.asm

Issue 3050029: [gcc] GCC 4.5.0=>4.5.1 (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/nacl-toolchain.git
Patch Set: Created 10 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « gcc/gmp/mpn/pa64/addmul_1.asm ('k') | gcc/gmp/mpn/pa64/sub_n.asm » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 dnl PA64 mpn_addlsh1_n/mpn_sublsh1_n -- rp[] = up[] +- (vp[] << 1).
2
3 dnl Copyright 2003 Free Software Foundation, Inc.
4
5 dnl This file is part of the GNU MP Library.
6
7 dnl The GNU MP Library is free software; you can redistribute it and/or modify
8 dnl it under the terms of the GNU Lesser General Public License as published
9 dnl by the Free Software Foundation; either version 3 of the License, or (at
10 dnl your option) any later version.
11
12 dnl The GNU MP Library is distributed in the hope that it will be useful, but
13 dnl WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
14 dnl or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
15 dnl License for more details.
16
17 dnl You should have received a copy of the GNU Lesser General Public License
18 dnl along with the GNU MP Library. If not, see http://www.gnu.org/licenses/.
19
20 include(`../config.m4')
21
22 C cycles/limb
23 C 8000,8200: 2
24 C 8500,8600,8700: 1.75
25
26 C TODO
27 C * Write special feed-in code for each (n mod 8). (See the ia64 code.)
28 C * Try to make this run at closer to 1.5 c/l.
29 C * Set up register aliases (define(`u0',`%r19')).
30 C * Explicitly align loop.
31
32 dnl INPUT PARAMETERS
33 define(`rp',`%r26')
34 define(`up',`%r25')
35 define(`vp',`%r24')
36 define(`n',`%r23')
37
38 ifdef(`OPERATION_addlsh1_n',`
39 define(ADCSBC, `add,dc')
40 define(INITC, `ldi 0,')
41 define(func, mpn_addlsh1_n)
42 ')
43 ifdef(`OPERATION_sublsh1_n',`
44 define(ADCSBC, `sub,db')
45 define(INITC, `ldi 1,')
46 define(func, mpn_sublsh1_n)
47 ')
48
49 MULFUNC_PROLOGUE(mpn_addlsh1_n mpn_sublsh1_n)
50
51 ifdef(`HAVE_ABI_2_0w',`
52 define(LEVEL, `.level 2.0w')
53 define(RETREG, `%r28')
54 define(CLRRET1, `dnl')
55 ')
56 ifdef(`HAVE_ABI_2_0n',`
57 define(LEVEL, `.level 2.0')
58 define(RETREG, `%r29')
59 define(CLRRET1, `ldi 0, %r28')
60 ')
61
62 LEVEL
63 PROLOGUE(func)
64 std,ma %r3, 0x100(%r30) C save reg
65
66 INITC %r1 C init saved cy
67
68 C Primitive code for the first (n mod 8) limbs:
69 extrd,u n, 63, 3, %r22 C count for loop0
70 comib,= 0, %r22, L(unrolled) C skip loop0?
71 copy %r0, %r28
72 LDEF(loop0)
73 ldd 0(vp), %r21
74 ldo 8(vp), vp
75 ldd 0(up), %r19
76 ldo 8(up), up
77 shrpd %r21, %r28, 63, %r31
78 addi -1, %r1, %r0 C restore cy
79 ADCSBC %r19, %r31, %r29
80 std %r29, 0(rp)
81 add,dc %r0, %r0, %r1 C save cy
82 copy %r21, %r28
83 addib,> -1, %r22, L(loop0)
84 ldo 8(rp), rp
85
86 addib,>= -8, n, L(unrolled)
87 addi -1, %r1, %r0 C restore cy
88
89 shrpd %r0, %r28, 63, %r28
90 ADCSBC %r0, %r28, RETREG
91 ifdef(`OPERATION_sublsh1_n',
92 ` sub %r0, RETREG, RETREG')
93 CLRRET1
94
95 bve (%r2)
96 ldd,mb -0x100(%r30), %r3
97
98
99 LDEF(unrolled)
100 std %r4, -0xf8(%r30) C save reg
101 ldd 0(vp), %r4
102 std %r5, -0xf0(%r30) C save reg
103 ldd 8(vp), %r5
104 std %r6, -0xe8(%r30) C save reg
105 ldd 16(vp), %r6
106 std %r7, -0xe0(%r30) C save reg
107
108 ldd 24(vp), %r7
109 shrpd %r4, %r28, 63, %r31
110 std %r8, -0xd8(%r30) C save reg
111 ldd 32(vp), %r8
112 shrpd %r5, %r4, 63, %r4
113 std %r9, -0xd0(%r30) C save reg
114 ldd 40(vp), %r9
115 shrpd %r6, %r5, 63, %r5
116 ldd 48(vp), %r3
117 shrpd %r7, %r6, 63, %r6
118 ldd 56(vp), %r28
119 shrpd %r8, %r7, 63, %r7
120 ldd 0(up), %r19
121 shrpd %r9, %r8, 63, %r8
122 ldd 8(up), %r20
123 shrpd %r3, %r9, 63, %r9
124 ldd 16(up), %r21
125 shrpd %r28, %r3, 63, %r3
126 ldd 24(up), %r22
127
128 nop C alignment FIXME
129 addib,<= -8, n, L(end)
130 addi -1, %r1, %r0 C restore cy
131 LDEF(loop)
132 ADCSBC %r19, %r31, %r29
133 ldd 32(up), %r19
134 std %r29, 0(rp)
135 ADCSBC %r20, %r4, %r29
136 ldd 40(up), %r20
137 std %r29, 8(rp)
138 ADCSBC %r21, %r5, %r29
139 ldd 48(up), %r21
140 std %r29, 16(rp)
141 ADCSBC %r22, %r6, %r29
142 ldd 56(up), %r22
143 std %r29, 24(rp)
144 ADCSBC %r19, %r7, %r29
145 ldd 64(vp), %r4
146 std %r29, 32(rp)
147 ADCSBC %r20, %r8, %r29
148 ldd 72(vp), %r5
149 std %r29, 40(rp)
150 ADCSBC %r21, %r9, %r29
151 ldd 80(vp), %r6
152 std %r29, 48(rp)
153 ADCSBC %r22, %r3, %r29
154 std %r29, 56(rp)
155
156 add,dc %r0, %r0, %r1 C save cy
157
158 ldd 88(vp), %r7
159 shrpd %r4, %r28, 63, %r31
160 ldd 96(vp), %r8
161 shrpd %r5, %r4, 63, %r4
162 ldd 104(vp), %r9
163 shrpd %r6, %r5, 63, %r5
164 ldd 112(vp), %r3
165 shrpd %r7, %r6, 63, %r6
166 ldd 120(vp), %r28
167 shrpd %r8, %r7, 63, %r7
168 ldd 64(up), %r19
169 shrpd %r9, %r8, 63, %r8
170 ldd 72(up), %r20
171 shrpd %r3, %r9, 63, %r9
172 ldd 80(up), %r21
173 shrpd %r28, %r3, 63, %r3
174 ldd 88(up), %r22
175
176 ldo 64(vp), vp
177 ldo 64(rp), rp
178 ldo 64(up), up
179 addib,> -8, n, L(loop)
180 addi -1, %r1, %r0 C restore cy
181 LDEF(end)
182 ADCSBC %r19, %r31, %r29
183 ldd 32(up), %r19
184 std %r29, 0(rp)
185 ADCSBC %r20, %r4, %r29
186 ldd 40(up), %r20
187 std %r29, 8(rp)
188 ADCSBC %r21, %r5, %r29
189 ldd 48(up), %r21
190 std %r29, 16(rp)
191 ADCSBC %r22, %r6, %r29
192 ldd 56(up), %r22
193 std %r29, 24(rp)
194 ADCSBC %r19, %r7, %r29
195 ldd -0xf8(%r30), %r4 C restore reg
196 std %r29, 32(rp)
197 ADCSBC %r20, %r8, %r29
198 ldd -0xf0(%r30), %r5 C restore reg
199 std %r29, 40(rp)
200 ADCSBC %r21, %r9, %r29
201 ldd -0xe8(%r30), %r6 C restore reg
202 std %r29, 48(rp)
203 ADCSBC %r22, %r3, %r29
204 ldd -0xe0(%r30), %r7 C restore reg
205 std %r29, 56(rp)
206
207 shrpd %r0, %r28, 63, %r28
208 ldd -0xd8(%r30), %r8 C restore reg
209 ADCSBC %r0, %r28, RETREG
210 ifdef(`OPERATION_sublsh1_n',
211 ` sub %r0, RETREG, RETREG')
212 CLRRET1
213
214 ldd -0xd0(%r30), %r9 C restore reg
215 bve (%r2)
216 ldd,mb -0x100(%r30), %r3 C restore reg
217 EPILOGUE()
OLDNEW
« no previous file with comments | « gcc/gmp/mpn/pa64/addmul_1.asm ('k') | gcc/gmp/mpn/pa64/sub_n.asm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698