openblas: update to 0.3.29
[oi-userland.git] / components / runtime / clisp / patches / arisparc64.d.patch
blobb8fb99a4ef5841655d9d67d01af61a893c15b9a8
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 @@
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
15 @@ -90,11 +90,11 @@
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
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
49 @@ -713,28 +713,28 @@
50 #endif
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
105 # extern uintD addto_loop_down (uintD* sourceptr, uintD* destptr, uintC count);
106 @@ -831,28 +831,28 @@
107 #endif
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
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
215 # extern uintD subfrom_loop_down (uintD* sourceptr, uintD* destptr, uintC count);
216 @@ -1135,16 +1135,16 @@
217 #endif
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
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
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
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
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
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
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
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