1 --- src.orig/arisparc64.d Thu Dec 6 00:06:32 2007 |
|
2 +++ src/arisparc64.d Mon Feb 2 15:35:22 2009 |
|
3 @@ -75,9 +75,9 @@ |
|
4 |
|
5 # extern struct { uint32 lo; uint32 hi; } mulu32_ (uint32 arg1, uint32 arg2); |
|
6 # 2^32*hi+lo := arg1*arg2. |
|
7 -C(mulu32_:) # Input in %o0,%o1, Output in %o0,%g1 |
|
8 +C(mulu32_:) # Input in %o0,%o1, Output in %o0,%g3 |
|
9 umul %o0,%o1,%o2 |
|
10 - rd %y,%g1 |
|
11 + rd %y,%g3 |
|
12 retl |
|
13 _ srl %o2,0,%o0 |
|
14 |
|
15 @@ -90,11 +90,11 @@ |
|
16 |
|
17 # extern struct { uint32 q; uint32 r; } divu_6432_3232_ (uint32 xhi, uint32 xlo, uint32 y); |
|
18 # x = 2^32*xhi+xlo = q*y+r schreiben. Sei bekannt, dass 0 <= x < 2^32*y . |
|
19 -C(divu_6432_3232_:) # Input in %o0,%o1,%o2, Output in %o0,%g1 |
|
20 +C(divu_6432_3232_:) # Input in %o0,%o1,%o2, Output in %o0,%g3 |
|
21 wr %o0,%g0,%y |
|
22 udiv %o1,%o2,%o0 # x durch y dividieren, %o0 := q |
|
23 - umul %o0,%o2,%g1 # %g1 := (q*y) mod 2^32 |
|
24 - sub %o1,%g1,%g1 # %g1 := (xlo-q*y) mod 2^32 = r |
|
25 + umul %o0,%o2,%g3 # %g3 := (q*y) mod 2^32 |
|
26 + sub %o1,%g3,%g3 # %g3 := (xlo-q*y) mod 2^32 = r |
|
27 retl |
|
28 _ srl %o0,0,%o0 |
|
29 |
|
30 @@ -104,13 +104,13 @@ |
|
31 wr %g0,%g0,%y |
|
32 udiv %o0,%o1,%o2 # dividieren, Quotient nach %o2 |
|
33 #if 0 # Who says that %y has some meaningful contents after `udiv' ?? |
|
34 - rd %y,%g1 # Rest aus %y |
|
35 + rd %y,%g3 # Rest aus %y |
|
36 #else |
|
37 - umul %o2,%o1,%g1 # %g1 := (q*y) mod 2^32 |
|
38 - sub %o0,%g1,%g1 # %g1 := (x-q*y) mod 2^32 = r |
|
39 + umul %o2,%o1,%g3 # %g3 := (q*y) mod 2^32 |
|
40 + sub %o0,%g3,%g3 # %g3 := (x-q*y) mod 2^32 = r |
|
41 #endif |
|
42 - sll %g1,16,%g1 # in die oberen 16 Bit schieben |
|
43 - or %o2,%g1,%o0 |
|
44 + sll %g3,16,%g3 # in die oberen 16 Bit schieben |
|
45 + or %o2,%g3,%o0 |
|
46 retl |
|
47 _ srl %o0,0,%o0 |
|
48 |
|
49 @@ -713,28 +713,28 @@ |
|
50 #endif |
|
51 |
|
52 # extern uintD add_loop_down (uintD* sourceptr1, uintD* sourceptr2, uintD* destptr, uintC count); |
|
53 -C(add_loop_down:) # Input in %o0,%o1,%o2,%o3, verändert %g1, Output in %o0 |
|
54 +C(add_loop_down:) # Input in %o0,%o1,%o2,%o3, verändert %g3, Output in %o0 |
|
55 #if STANDARD_LOOPS |
|
56 # srl %o3,0,%o3 # zero-extend %o3 = count |
|
57 brz,pn %o3,2f |
|
58 - _ mov %g0,%g1 # Carry := 0 |
|
59 + _ mov %g0,%g3 # Carry := 0 |
|
60 1: sub %o0,4,%o0 |
|
61 lduw [%o0],%o4 # source1-digit, zero-extend |
|
62 sub %o1,4,%o1 |
|
63 lduw [%o1],%o5 # source2-digit, zero-extend |
|
64 - add %g1,%o4,%g1 # zum Carry addieren |
|
65 - add %g1,%o5,%g1 # zum Carry addieren |
|
66 - st %g1,[%o2] # Digit ablegen |
|
67 + add %g3,%o4,%g3 # zum Carry addieren |
|
68 + add %g3,%o5,%g3 # zum Carry addieren |
|
69 + st %g3,[%o2] # Digit ablegen |
|
70 subcc %o3,1,%o3 |
|
71 bne,pt %xcc,1b |
|
72 - _ srlx %g1,32,%g1 # neuer Carry |
|
73 + _ srlx %g3,32,%g3 # neuer Carry |
|
74 2: retl |
|
75 - _ mov %g1,%o0 |
|
76 + _ mov %g3,%o0 |
|
77 #endif |
|
78 #if COUNTER_LOOPS |
|
79 # srl %o3,0,%o3 # zero-extend %o3 = count |
|
80 brz,pn %o3,2f |
|
81 - _ mov %g0,%g1 # Carry := 0 |
|
82 + _ mov %g0,%g3 # Carry := 0 |
|
83 sub %o0,4,%o0 |
|
84 sub %o1,4,%o1 |
|
85 sllx %o3,2,%o3 # %o3 = 4*count |
|
86 @@ -743,14 +743,14 @@ |
|
87 sub %o2,%o3,%o2 # %o2 = &destptr[-count] |
|
88 1: lduw [%o0+%o3],%o4 # source1-digit, zero-extend |
|
89 lduw [%o1+%o3],%o5 # source2-digit, zero-extend |
|
90 - add %g1,%o4,%g1 # zum Carry addieren |
|
91 - add %g1,%o5,%g1 # zum Carry addieren |
|
92 - st %g1,[%o2+%o3] # Digit ablegen |
|
93 + add %g3,%o4,%g3 # zum Carry addieren |
|
94 + add %g3,%o5,%g3 # zum Carry addieren |
|
95 + st %g3,[%o2+%o3] # Digit ablegen |
|
96 subcc %o3,4,%o3 |
|
97 bne,pt %xcc,1b |
|
98 - _ srlx %g1,32,%g1 # neuer Carry |
|
99 + _ srlx %g3,32,%g3 # neuer Carry |
|
100 2: retl |
|
101 - _ mov %g1,%o0 |
|
102 + _ mov %g3,%o0 |
|
103 #endif |
|
104 |
|
105 # extern uintD addto_loop_down (uintD* sourceptr, uintD* destptr, uintC count); |
|
106 @@ -831,28 +831,28 @@ |
|
107 #endif |
|
108 |
|
109 # extern uintD sub_loop_down (uintD* sourceptr1, uintD* sourceptr2, uintD* destptr, uintC count); |
|
110 -C(sub_loop_down:) # Input in %o0,%o1,%o2,%o3, verändert %g1, Output in %o0 |
|
111 +C(sub_loop_down:) # Input in %o0,%o1,%o2,%o3, verändert %g3, Output in %o0 |
|
112 #if STANDARD_LOOPS |
|
113 # srl %o3,0,%o3 # zero-extend %o3 = count |
|
114 brz,pn %o3,2f |
|
115 - _ mov %g0,%g1 # Carry := 0 |
|
116 + _ mov %g0,%g3 # Carry := 0 |
|
117 1: sub %o0,4,%o0 |
|
118 lduw [%o0],%o4 # source1-digit, zero-extend |
|
119 sub %o1,4,%o1 |
|
120 lduw [%o1],%o5 # source2-digit, zero-extend |
|
121 - add %g1,%o4,%g1 # zum Carry addieren |
|
122 - sub %g1,%o5,%g1 # vom Carry subtrahieren |
|
123 - st %g1,[%o2] # Digit ablegen |
|
124 + add %g3,%o4,%g3 # zum Carry addieren |
|
125 + sub %g3,%o5,%g3 # vom Carry subtrahieren |
|
126 + st %g3,[%o2] # Digit ablegen |
|
127 subcc %o3,1,%o3 |
|
128 bne,pt %xcc,1b |
|
129 - _ srax %g1,32,%g1 # neuer Carry |
|
130 + _ srax %g3,32,%g3 # neuer Carry |
|
131 2: retl |
|
132 - _ srl %g1,0,%o0 |
|
133 + _ srl %g3,0,%o0 |
|
134 #endif |
|
135 #if COUNTER_LOOPS |
|
136 # srl %o3,0,%o3 # zero-extend %o3 = count |
|
137 brz,pn %o3,2f |
|
138 - _ mov %g0,%g1 # Carry := 0 |
|
139 + _ mov %g0,%g3 # Carry := 0 |
|
140 sub %o0,4,%o0 |
|
141 sub %o1,4,%o1 |
|
142 sllx %o3,2,%o3 # %o3 = 4*count |
|
143 @@ -861,39 +861,39 @@ |
|
144 sub %o2,%o3,%o2 # %o2 = &destptr[-count] |
|
145 1: lduw [%o0+%o3],%o4 # source1-digit, zero-extend |
|
146 lduw [%o1+%o3],%o5 # source2-digit, zero-extend |
|
147 - add %g1,%o4,%g1 # zum Carry addieren |
|
148 - sub %g1,%o5,%g1 # vom Carry subtrahieren |
|
149 - st %g1,[%o2+%o3] # Digit ablegen |
|
150 + add %g3,%o4,%g3 # zum Carry addieren |
|
151 + sub %g3,%o5,%g3 # vom Carry subtrahieren |
|
152 + st %g3,[%o2+%o3] # Digit ablegen |
|
153 subcc %o3,4,%o3 |
|
154 bne,pt %xcc,1b |
|
155 - _ srax %g1,32,%g1 # neuer Carry |
|
156 + _ srax %g3,32,%g3 # neuer Carry |
|
157 2: retl |
|
158 - _ srl %g1,0,%o0 |
|
159 + _ srl %g3,0,%o0 |
|
160 #endif |
|
161 |
|
162 # extern uintD subx_loop_down (uintD* sourceptr1, uintD* sourceptr2, uintD* destptr, uintC count, uintD carry); |
|
163 -C(subx_loop_down:) # Input in %o0,%o1,%o2,%o3,%o4, verändert %g1, Output in %o0 |
|
164 +C(subx_loop_down:) # Input in %o0,%o1,%o2,%o3,%o4, verändert %g3, Output in %o0 |
|
165 #if STANDARD_LOOPS |
|
166 # srl %o3,0,%o3 # zero-extend %o3 = count |
|
167 brz,pn %o3,2f |
|
168 - _ sra %o4,0,%g1 # Carry, sign-extend |
|
169 + _ sra %o4,0,%g3 # Carry, sign-extend |
|
170 1: sub %o0,4,%o0 |
|
171 lduw [%o0],%o4 # source1-digit, zero-extend |
|
172 sub %o1,4,%o1 |
|
173 lduw [%o1],%o5 # source2-digit, zero-extend |
|
174 - add %g1,%o4,%g1 # zum Carry addieren |
|
175 - sub %g1,%o5,%g1 # vom Carry subtrahieren |
|
176 - st %g1,[%o2] # Digit ablegen |
|
177 + add %g3,%o4,%g3 # zum Carry addieren |
|
178 + sub %g3,%o5,%g3 # vom Carry subtrahieren |
|
179 + st %g3,[%o2] # Digit ablegen |
|
180 subcc %o3,1,%o3 |
|
181 bne,pt %xcc,1b |
|
182 - _ srax %g1,32,%g1 # neuer Carry |
|
183 + _ srax %g3,32,%g3 # neuer Carry |
|
184 2: retl |
|
185 - _ srl %g1,0,%o0 |
|
186 + _ srl %g3,0,%o0 |
|
187 #endif |
|
188 #if COUNTER_LOOPS |
|
189 # srl %o3,0,%o3 # zero-extend %o3 = count |
|
190 brz,pn %o3,2f |
|
191 - _ sra %o4,0,%g1 # Carry, sign-extend |
|
192 + _ sra %o4,0,%g3 # Carry, sign-extend |
|
193 sub %o0,4,%o0 |
|
194 sub %o1,4,%o1 |
|
195 sllx %o3,2,%o3 # %o3 = 4*count |
|
196 @@ -902,14 +902,14 @@ |
|
197 sub %o2,%o3,%o2 # %o2 = &destptr[-count] |
|
198 1: lduw [%o0+%o3],%o4 # source1-digit, zero-extend |
|
199 lduw [%o1+%o3],%o5 # source2-digit, zero-extend |
|
200 - add %g1,%o4,%g1 # zum Carry addieren |
|
201 - sub %g1,%o5,%g1 # vom Carry subtrahieren |
|
202 - st %g1,[%o2+%o3] # Digit ablegen |
|
203 + add %g3,%o4,%g3 # zum Carry addieren |
|
204 + sub %g3,%o5,%g3 # vom Carry subtrahieren |
|
205 + st %g3,[%o2+%o3] # Digit ablegen |
|
206 subcc %o3,4,%o3 |
|
207 bne,pt %xcc,1b |
|
208 - _ srax %g1,32,%g1 # neuer Carry |
|
209 + _ srax %g3,32,%g3 # neuer Carry |
|
210 2: retl |
|
211 - _ srl %g1,0,%o0 |
|
212 + _ srl %g3,0,%o0 |
|
213 #endif |
|
214 |
|
215 # extern uintD subfrom_loop_down (uintD* sourceptr, uintD* destptr, uintC count); |
|
216 @@ -1135,16 +1135,16 @@ |
|
217 #endif |
|
218 |
|
219 # extern uintD shiftright_loop_up (uintD* ptr, uintC count, uintC i); |
|
220 -C(shiftright_loop_up:) # Input in %o0,%o1,%o2, verändert %g1, Output in %o0 |
|
221 +C(shiftright_loop_up:) # Input in %o0,%o1,%o2, verändert %g3, Output in %o0 |
|
222 #ifdef SLOWER |
|
223 # srl %o1,0,%o1 # zero-extend %o1 = count |
|
224 brz,pn %o1,2f |
|
225 _ or %g0,%g0,%o3 # Carry := 0 |
|
226 - mov 32,%g1 |
|
227 - sub %g1,%o2,%g1 # 32-i |
|
228 + mov 32,%g3 |
|
229 + sub %g3,%o2,%g3 # 32-i |
|
230 1: lduw [%o0],%o4 # Digit, zero-extend |
|
231 subcc %o1,1,%o1 |
|
232 - sllx %o4,%g1,%o4 # shiften |
|
233 + sllx %o4,%g3,%o4 # shiften |
|
234 or %o3,%o4,%o3 # und mit altem Carry kombinieren |
|
235 srlx %o3,32,%o4 |
|
236 st %o4,[%o0] # und ablegen |
|
237 @@ -1157,13 +1157,13 @@ |
|
238 # srl %o1,0,%o1 # zero-extend %o1 = count |
|
239 brz,pn %o1,2f |
|
240 _ or %g0,%g0,%o3 # Carry := 0 |
|
241 - sub %g0,%o2,%g1 # 32-i (mod 32) |
|
242 + sub %g0,%o2,%g3 # 32-i (mod 32) |
|
243 1: ld [%o0],%o4 # Digit |
|
244 subcc %o1,1,%o1 |
|
245 srl %o4,%o2,%o5 # shiften |
|
246 or %o3,%o5,%o5 # und mit altem Carry kombinieren |
|
247 st %o5,[%o0] # und ablegen |
|
248 - sll %o4,%g1,%o3 # neuer Carry |
|
249 + sll %o4,%g3,%o3 # neuer Carry |
|
250 bne,pt %xcc,1b |
|
251 _ add %o0,4,%o0 |
|
252 2: retl |
|
253 @@ -1171,14 +1171,14 @@ |
|
254 #endif |
|
255 |
|
256 # extern uintD shiftrightsigned_loop_up (uintD* ptr, uintC count, uintC i); |
|
257 -C(shiftrightsigned_loop_up:) # Input in %o0,%o1,%o2, verändert %g1, Output in %o0 |
|
258 +C(shiftrightsigned_loop_up:) # Input in %o0,%o1,%o2, verändert %g3, Output in %o0 |
|
259 #ifdef SLOWER |
|
260 # srl %o1,0,%o1 # zero-extend %o1 = count |
|
261 - mov 32,%g1 |
|
262 - sub %g1,%o2,%g1 # 32-i |
|
263 + mov 32,%g3 |
|
264 + sub %g3,%o2,%g3 # 32-i |
|
265 ldsw [%o0],%o3 # erstes Digit, sign-extend |
|
266 subcc %o1,1,%o1 |
|
267 - sllx %o3,%g1,%o3 # shiften |
|
268 + sllx %o3,%g3,%o3 # shiften |
|
269 srlx %o3,32,%o4 |
|
270 st %o4,[%o0] # und ablegen |
|
271 sllx %o3,32,%o3 # neuer Carry |
|
272 @@ -1186,7 +1186,7 @@ |
|
273 _ add %o0,4,%o0 |
|
274 1: lduw [%o0],%o4 # Digit, zero-extend |
|
275 subcc %o1,1,%o1 |
|
276 - sllx %o4,%g1,%o4 # shiften |
|
277 + sllx %o4,%g3,%o4 # shiften |
|
278 or %o3,%o4,%o3 # und mit altem Carry kombinieren |
|
279 srlx %o3,32,%o4 |
|
280 st %o4,[%o0] # und ablegen |
|
281 @@ -1198,10 +1198,10 @@ |
|
282 #else |
|
283 # srl %o1,0,%o1 # zero-extend %o1 = count |
|
284 ld [%o0],%o4 # erstes Digit |
|
285 - sub %g0,%o2,%g1 # 32-i (mod 32) |
|
286 + sub %g0,%o2,%g3 # 32-i (mod 32) |
|
287 sra %o4,%o2,%o5 # shiften |
|
288 st %o5,[%o0] # und ablegen |
|
289 - sll %o4,%g1,%o3 # neuer Carry |
|
290 + sll %o4,%g3,%o3 # neuer Carry |
|
291 subcc %o1,1,%o1 |
|
292 be,pn %xcc,2f |
|
293 _ add %o0,4,%o0 |
|
294 @@ -1210,7 +1210,7 @@ |
|
295 srl %o4,%o2,%o5 # shiften |
|
296 or %o3,%o5,%o5 # und mit altem Carry kombinieren |
|
297 st %o5,[%o0] # und ablegen |
|
298 - sll %o4,%g1,%o3 # neuer Carry |
|
299 + sll %o4,%g3,%o3 # neuer Carry |
|
300 bne,pt %xcc,1b |
|
301 _ add %o0,4,%o0 |
|
302 2: retl |
|
303 @@ -1218,16 +1218,16 @@ |
|
304 #endif |
|
305 |
|
306 # extern uintD shiftrightcopy_loop_up (uintD* sourceptr, uintD* destptr, uintC count, uintC i, uintD carry); |
|
307 -C(shiftrightcopy_loop_up:) # Input in %o0,%o1,%o2,%o3,%o4, verändert %g1,%g2, Output in %o0 |
|
308 +C(shiftrightcopy_loop_up:) # Input in %o0,%o1,%o2,%o3,%o4, verändert %g3,%g2, Output in %o0 |
|
309 #ifdef SLOWER |
|
310 # srl %o2,0,%o2 # zero-extend %o2 = count |
|
311 - sub %g0,%o3,%g1 # 64-i (mod 64) |
|
312 + sub %g0,%o3,%g3 # 64-i (mod 64) |
|
313 brz,pn %o2,2f |
|
314 - _ sllx %o4,%g1,%o4 # erster Carry |
|
315 - add %g1,32,%g1 # 32-i |
|
316 + _ sllx %o4,%g3,%o4 # erster Carry |
|
317 + add %g3,32,%g3 # 32-i |
|
318 1: lduw [%o0],%o5 # Digit, zero-extend |
|
319 add %o0,4,%o0 |
|
320 - sllx %o5,%g1,%o5 # shiften |
|
321 + sllx %o5,%g3,%o5 # shiften |
|
322 or %o4,%o5,%o4 # und mit altem Carry kombinieren |
|
323 srlx %o4,32,%o5 |
|
324 st %o5,[%o1] # und ablegen |
|
325 @@ -1239,15 +1239,15 @@ |
|
326 _ srlx %o4,32,%o0 |
|
327 #else |
|
328 # srl %o2,0,%o2 # zero-extend %o2 = count |
|
329 - sub %g0,%o3,%g1 # 32-i (mod 32) |
|
330 + sub %g0,%o3,%g3 # 32-i (mod 32) |
|
331 brz,pn %o2,2f |
|
332 - _ sll %o4,%g1,%g2 # erster Carry |
|
333 + _ sll %o4,%g3,%g2 # erster Carry |
|
334 1: ld [%o0],%o4 # Digit |
|
335 add %o0,4,%o0 |
|
336 srl %o4,%o3,%o5 # shiften |
|
337 or %g2,%o5,%o5 # und mit altem Carry kombinieren |
|
338 st %o5,[%o1] # und ablegen |
|
339 - sll %o4,%g1,%g2 # neuer Carry |
|
340 + sll %o4,%g3,%g2 # neuer Carry |
|
341 subcc %o2,1,%o2 |
|
342 bne,pt %xcc,1b |
|
343 _ add %o1,4,%o1 |
|
344 @@ -1290,58 +1290,58 @@ |
|
345 _ srl %o3,0,%o0 |
|
346 |
|
347 # extern void mulu_loop_down (uintD digit, uintD* sourceptr, uintD* destptr, uintC len); |
|
348 -C(mulu_loop_down:) # Input in %o0,%o1,%o2,%o3, verändert %g1 |
|
349 +C(mulu_loop_down:) # Input in %o0,%o1,%o2,%o3, verändert %g3 |
|
350 # srl %o3,0,%o3 # zero-extend %o3 = len |
|
351 mov 0,%o4 # Carry |
|
352 1: sub %o1,4,%o1 |
|
353 - ld [%o1],%g1 # nächstes Digit |
|
354 + ld [%o1],%g3 # nächstes Digit |
|
355 sub %o2,4,%o2 |
|
356 - # mit digit multiplizieren: %o0 * %g1 -> %o5|%g1 |
|
357 - umul %g1,%o0,%g1 |
|
358 + # mit digit multiplizieren: %o0 * %g3 -> %o5|%g3 |
|
359 + umul %g3,%o0,%g3 |
|
360 rd %y,%o5 |
|
361 - addcc %o4,%g1,%g1 # und bisherigen Carry addieren |
|
362 + addcc %o4,%g3,%g3 # und bisherigen Carry addieren |
|
363 addx %g0,%o5,%o4 # High-Digit gibt neuen Carry |
|
364 subcc %o3,1,%o3 |
|
365 bne,pt %xcc,1b |
|
366 - _ st %g1,[%o2] # Low-Digit ablegen |
|
367 + _ st %g3,[%o2] # Low-Digit ablegen |
|
368 retl |
|
369 _ st %o4,[%o2-4] # letzten Carry ablegen |
|
370 |
|
371 # extern uintD muluadd_loop_down (uintD digit, uintD* sourceptr, uintD* destptr, uintC len); |
|
372 -C(muluadd_loop_down:) # Input in %o0,%o1,%o2,%o3, verändert %g1,%g2, Output in %o0 |
|
373 +C(muluadd_loop_down:) # Input in %o0,%o1,%o2,%o3, verändert %g3,%g2, Output in %o0 |
|
374 # srl %o3,0,%o3 # zero-extend %o3 = len |
|
375 mov 0,%o4 # Carry |
|
376 1: sub %o1,4,%o1 |
|
377 ld [%o1],%o5 # nächstes source-Digit |
|
378 sub %o2,4,%o2 |
|
379 - # mit digit multiplizieren: %o0 * %o5 -> %g2|%g1 |
|
380 - umul %o0,%o5,%g1 |
|
381 + # mit digit multiplizieren: %o0 * %o5 -> %g2|%g3 |
|
382 + umul %o0,%o5,%g3 |
|
383 rd %y,%g2 |
|
384 ld [%o2],%o5 # nächstes dest-digit |
|
385 - addcc %o4,%g1,%g1 # und bisherigen Carry addieren |
|
386 + addcc %o4,%g3,%g3 # und bisherigen Carry addieren |
|
387 addx %g0,%g2,%o4 # High-Digit gibt neuen Carry |
|
388 - addcc %o5,%g1,%g1 # addieren |
|
389 + addcc %o5,%g3,%g3 # addieren |
|
390 addx %g0,%o4,%o4 |
|
391 subcc %o3,1,%o3 |
|
392 bne,pt %xcc,1b |
|
393 - _ st %g1,[%o2] # Low-Digit ablegen |
|
394 + _ st %g3,[%o2] # Low-Digit ablegen |
|
395 retl |
|
396 _ srl %o4,0,%o0 # letzter Carry |
|
397 |
|
398 # extern uintD mulusub_loop_down (uintD digit, uintD* sourceptr, uintD* destptr, uintC len); |
|
399 -C(mulusub_loop_down:) # Input in %o0,%o1,%o2,%o3, verändert %g1,%g2, Output in %o0 |
|
400 +C(mulusub_loop_down:) # Input in %o0,%o1,%o2,%o3, verändert %g3,%g2, Output in %o0 |
|
401 # srl %o3,0,%o3 # zero-extend %o3 = len |
|
402 mov 0,%o4 # Carry |
|
403 1: sub %o1,4,%o1 |
|
404 ld [%o1],%o5 # nächstes source-Digit |
|
405 sub %o2,4,%o2 |
|
406 - # mit digit multiplizieren: %o0 * %o5 -> %g2|%g1 |
|
407 - umul %o0,%o5,%g1 |
|
408 + # mit digit multiplizieren: %o0 * %o5 -> %g2|%g3 |
|
409 + umul %o0,%o5,%g3 |
|
410 rd %y,%g2 |
|
411 ld [%o2],%o5 # nächstes dest-digit |
|
412 - addcc %o4,%g1,%g1 # und bisherigen Carry addieren |
|
413 + addcc %o4,%g3,%g3 # und bisherigen Carry addieren |
|
414 addx %g0,%g2,%o4 # High-Digit gibt neuen Carry |
|
415 - subcc %o5,%g1,%o5 # davon das Low-Digit subtrahieren |
|
416 + subcc %o5,%g3,%o5 # davon das Low-Digit subtrahieren |
|
417 addx %g0,%o4,%o4 |
|
418 subcc %o3,1,%o3 |
|
419 bne,pt %xcc,1b |
|
420 @@ -1350,7 +1350,7 @@ |
|
421 _ srl %o4,0,%o0 # letzter Carry |
|
422 |
|
423 # extern uintD divu_loop_up (uintD digit, uintD* ptr, uintC len); |
|
424 -C(divu_loop_up:) # Input in %o0,%o1,%o2, verändert %g1, Output in %o0 |
|
425 +C(divu_loop_up:) # Input in %o0,%o1,%o2, verändert %g3, Output in %o0 |
|
426 # srl %o2,0,%o2 # zero-extend %o2 = len |
|
427 brz,pn %o2,2f |
|
428 _ mov 0,%o3 # Rest |
|
429 @@ -1360,8 +1360,8 @@ |
|
430 or %o3,%o4,%o3 # zusammen |
|
431 udivx %o3,%o0,%o4 # durch digit dividieren |
|
432 st %o4,[%o1] # Quotient ablegen |
|
433 - umul %o0,%o4,%g1 |
|
434 - sub %o3,%g1,%o3 # Rest in den unteren 32 Bit von %o3 |
|
435 + umul %o0,%o4,%g3 |
|
436 + sub %o3,%g3,%o3 # Rest in den unteren 32 Bit von %o3 |
|
437 subcc %o2,1,%o2 |
|
438 bne,pt %xcc,1b |
|
439 _ add %o1,4,%o1 |
|
440 @@ -1369,7 +1369,7 @@ |
|
441 _ srl %o3,0,%o0 # Rest als Ergebnis |
|
442 |
|
443 # extern uintD divucopy_loop_up (uintD digit, uintD* sourceptr, uintD* destptr, uintC len); |
|
444 -C(divucopy_loop_up:) # Input in %o0,%o1,%o2,%o3, verändert %g1, Output in %o0 |
|
445 +C(divucopy_loop_up:) # Input in %o0,%o1,%o2,%o3, verändert %g3, Output in %o0 |
|
446 # srl %o3,0,%o3 # zero-extend %o3 = len |
|
447 brz,pn %o3,2f |
|
448 _ mov 0,%o4 # Rest |
|
449 @@ -1380,8 +1380,8 @@ |
|
450 or %o4,%o5,%o4 # zusammen |
|
451 udivx %o4,%o0,%o5 # durch digit dividieren |
|
452 st %o5,[%o2] # Quotient ablegen |
|
453 - umul %o0,%o5,%g1 |
|
454 - sub %o4,%g1,%o4 # Rest in den unteren 32 Bit von %o4 |
|
455 + umul %o0,%o5,%g3 |
|
456 + sub %o4,%g3,%o4 # Rest in den unteren 32 Bit von %o4 |
|
457 subcc %o3,1,%o3 |
|
458 bne,pt %xcc,1b |
|
459 _ add %o2,4,%o2 |
|