author | Mike Sullivan <Mike.Sullivan@Oracle.COM> |
Mon, 01 Sep 2014 09:20:27 -0700 | |
changeset 2062 | cc09b5cf2427 |
parent 328 | 38a06e74a699 |
permissions | -rw-r--r-- |
328
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
1 |
--- src.orig/arisparc.d Thu Dec 6 00:06:32 2007 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
2 |
+++ src/arisparc.d Mon Feb 2 15:35:22 2009 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
3 |
@@ -100,11 +100,11 @@ |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
4 |
|
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
5 |
# extern struct { uint32 lo; uint32 hi; } mulu32_ (uint32 arg1, uint32 arg2); |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
6 |
# 2^32*hi+lo := arg1*arg2. |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
7 |
-C(mulu32_:) # Input in %o0,%o1, Output in %o0,%g1 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
8 |
+C(mulu32_:) # Input in %o0,%o1, Output in %o0,%g3 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
9 |
#ifdef sparcv8 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
10 |
umul %o0,%o1,%o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
11 |
retl |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
12 |
- _ rd %y,%g1 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
13 |
+ _ rd %y,%g3 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
14 |
#else |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
15 |
mov %o1,%y |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
16 |
sra %o0,31,%o3 # Wartetakt, nötig z.B. für SUN SPARCstation IPC |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
17 |
@@ -143,7 +143,7 @@ |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
18 |
mulscc %o2,%o0,%o2 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
19 |
mulscc %o2,%g0,%o2 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
20 |
and %o3,%o1,%o3 # %o3 = (0 falls %o0>=0, %o1 falls %o0<0) |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
21 |
- add %o2,%o3,%g1 # hi |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
22 |
+ add %o2,%o3,%g3 # hi |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
23 |
retl |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
24 |
_ rd %y,%o0 # lo |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
25 |
#endif |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
26 |
@@ -216,7 +216,7 @@ |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
27 |
|
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
28 |
# extern struct { uint32 q; uint32 r; } divu_6432_3232_ (uint32 xhi, uint32 xlo, uint32 y); |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
29 |
# x = 2^32*xhi+xlo = q*y+r schreiben. Sei bekannt, dass 0 <= x < 2^32*y . |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
30 |
-C(divu_6432_3232_:) # Input in %o0,%o1,%o2, Output in %o0,%g1 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
31 |
+C(divu_6432_3232_:) # Input in %o0,%o1,%o2, Output in %o0,%g3 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
32 |
#if defined(sparcv8) |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
33 |
# Problem: Is udiv worth using (gmp-2.0.2 doesn't use it) ?? |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
34 |
wr %o0,%g0,%y |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
35 |
@@ -224,9 +224,9 @@ |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
36 |
nop # wait 2 | processors such as Ross Hypersparc, |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
37 |
nop # wait 3 | but not for most of the others. |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
38 |
udiv %o1,%o2,%o0 # x durch y dividieren, %o0 := q |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
39 |
- umul %o0,%o2,%g1 # %g1 := (q*y) mod 2^32 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
40 |
+ umul %o0,%o2,%g3 # %g3 := (q*y) mod 2^32 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
41 |
retl |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
42 |
- _ sub %o1,%g1,%g1 # %g1 := (xlo-q*y) mod 2^32 = r |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
43 |
+ _ sub %o1,%g3,%g3 # %g3 := (xlo-q*y) mod 2^32 = r |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
44 |
#else |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
45 |
# %o0 = xhi, %o1 = xlo, %o2 = y |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
46 |
# Divisions-Einzelschritte: |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
47 |
@@ -305,20 +305,20 @@ |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
48 |
_ subcc %o0,%o2,%o3 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
49 |
subcc %o3,%o2,%o0 # muss der Quotient nochmals erhöht werden? |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
50 |
bcs Ll03 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
51 |
- _ mov %o3,%g1 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
52 |
+ _ mov %o3,%g3 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
53 |
# Quotient 2 mal erhöhen, Rest %o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
54 |
- mov %o0,%g1 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
55 |
+ mov %o0,%g3 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
56 |
retl |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
57 |
_ add %o1,2,%o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
58 |
Ll02: # kein Additions-Überlauf. |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
59 |
# Wegen y>=2^31 muss der Quotient noch höchstens 1 mal erhöht werden: |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
60 |
bcs Ll04 # %o0 < %o2 -> Rest %o0 und Quotient %o1 OK |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
61 |
- _ mov %o3,%g1 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
62 |
+ _ mov %o3,%g3 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
63 |
Ll03: # Quotient %o1 erhöhen, Rest = %o0-%o2 = %o3 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
64 |
retl |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
65 |
_ add %o1,1,%o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
66 |
Ll04: # Quotient %o1 und Rest %o0 OK |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
67 |
- mov %o0,%g1 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
68 |
+ mov %o0,%g3 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
69 |
retl |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
70 |
_ mov %o1,%o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
71 |
# Parallelschiene zu La01..La32: |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
72 |
@@ -366,20 +366,20 @@ |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
73 |
_ subcc %o3,%o2,%o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
74 |
subcc %o0,%o2,%o3 # muss der Quotient nochmals erhöht werden? |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
75 |
bcs Ll06 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
76 |
- _ mov %o0,%g1 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
77 |
+ _ mov %o0,%g3 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
78 |
# Quotient 2 mal erhöhen, Rest %o3 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
79 |
- mov %o3,%g1 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
80 |
+ mov %o3,%g3 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
81 |
retl |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
82 |
_ add %o1,2,%o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
83 |
Ll05: # kein Additions-Überlauf. |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
84 |
# Wegen y>=2^31 muss der Quotient noch höchstens 1 mal erhöht werden: |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
85 |
bcs Ll07 # %o3 < %o2 -> Rest %o3 und Quotient %o1 OK |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
86 |
- _ mov %o0,%g1 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
87 |
+ _ mov %o0,%g3 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
88 |
Ll06: # Quotient %o1 erhöhen, Rest = %o3-%o2 = %o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
89 |
retl |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
90 |
_ add %o1,1,%o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
91 |
Ll07: # Quotient %o1 und Rest %o3 OK |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
92 |
- mov %o3,%g1 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
93 |
+ mov %o3,%g3 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
94 |
retl |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
95 |
_ mov %o1,%o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
96 |
Lsmalldiv: # Division durch y < 2^31 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
97 |
@@ -416,7 +416,7 @@ |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
98 |
Lc29: SB0(); SA0(Ld30) # Bit 2 des Quotienten bestimmen |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
99 |
Lc30: SB0(); SA0(Ld31) # Bit 1 des Quotienten bestimmen |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
100 |
Lc31: SB0(); SA0(Ld32) # Bit 0 des Quotienten bestimmen |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
101 |
-Lc32: mov %o0,%g1 # Rest aus %o0 in %g1 abspeichern |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
102 |
+Lc32: mov %o0,%g3 # Rest aus %o0 in %g3 abspeichern |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
103 |
retl |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
104 |
_ xor %o1,-1,%o0 # Quotient nach %o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
105 |
# Parallelschiene zu Lc01..Lc32: |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
106 |
@@ -451,7 +451,7 @@ |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
107 |
Ld29: SB1(); SA1(Lc30) |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
108 |
Ld30: SB1(); SA1(Lc31) |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
109 |
Ld31: SB1(); SA1(Lc32) |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
110 |
-Ld32: mov %o3,%g1 # Rest aus %o3 in %g1 abspeichern |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
111 |
+Ld32: mov %o3,%g3 # Rest aus %o3 in %g3 abspeichern |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
112 |
retl |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
113 |
_ xor %o1,-1,%o0 # Quotient nach %o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
114 |
Levendiv: # Division durch gerades y. |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
115 |
@@ -493,7 +493,7 @@ |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
116 |
Le30: SB0(); SA0(Lf31) # Bit 1 des Quotienten bestimmen |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
117 |
Le31: SB0(); SA0(Lf32) # Bit 0 des Quotienten bestimmen |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
118 |
Le32: SB0() # Bit 0 des Restes bestimmen |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
119 |
- mov %o0,%g1 # Rest aus %o0 in %g1 abspeichern |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
120 |
+ mov %o0,%g3 # Rest aus %o0 in %g3 abspeichern |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
121 |
retl |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
122 |
_ xor %o1,-1,%o0 # Quotient nach %o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
123 |
# Parallelschiene zu Le01..Le32: |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
124 |
@@ -529,7 +529,7 @@ |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
125 |
Lf30: SB1(); SA1(Le31) |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
126 |
Lf31: SB1(); SA1(Le32) |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
127 |
Lf32: SB1() |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
128 |
- mov %o3,%g1 # Rest aus %o0 in %g1 abspeichern |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
129 |
+ mov %o3,%g3 # Rest aus %o0 in %g3 abspeichern |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
130 |
retl |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
131 |
_ xor %o1,-1,%o0 # Quotient nach %o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
132 |
#endif |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
133 |
@@ -1205,18 +1205,18 @@ |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
134 |
#endif |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
135 |
|
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
136 |
# extern uintD add_loop_down (uintD* sourceptr1, uintD* sourceptr2, uintD* destptr, uintC count); |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
137 |
-C(add_loop_down:) # Input in %o0,%o1,%o2,%o3, verändert %g1, Output in %o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
138 |
+C(add_loop_down:) # Input in %o0,%o1,%o2,%o3, verändert %g3, Output in %o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
139 |
#if STANDARD_LOOPS |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
140 |
andcc %o3,%o3,%g0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
141 |
be Ll49 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
142 |
- _ mov %g0,%g1 # Carry := 0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
143 |
+ _ mov %g0,%g3 # Carry := 0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
144 |
sub %o0,4,%o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
145 |
Ll48: ld [%o0],%o4 # source1-digit |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
146 |
sub %o1,4,%o1 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
147 |
ld [%o1],%o5 # source2-digit |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
148 |
- subcc %g0,%g1,%g0 # carry |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
149 |
+ subcc %g0,%g3,%g0 # carry |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
150 |
addxcc %o4,%o5,%o4 # addieren |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
151 |
- addx %g0,%g0,%g1 # neuer Carry |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
152 |
+ addx %g0,%g0,%g3 # neuer Carry |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
153 |
sub %o2,4,%o2 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
154 |
st %o4,[%o2] # Digit ablegen |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
155 |
subcc %o3,1,%o3 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
156 |
@@ -1223,12 +1223,12 @@ |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
157 |
bne Ll48 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
158 |
_ sub %o0,4,%o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
159 |
Ll49: retl |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
160 |
- _ mov %g1,%o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
161 |
+ _ mov %g3,%o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
162 |
#endif |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
163 |
#if COUNTER_LOOPS |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
164 |
andcc %o3,%o3,%g0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
165 |
be Ll49 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
166 |
- _ mov %g0,%g1 # Carry := 0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
167 |
+ _ mov %g0,%g3 # Carry := 0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
168 |
sub %o0,4,%o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
169 |
sub %o1,4,%o1 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
170 |
sll %o3,2,%o3 # %o3 = 4*count |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
171 |
@@ -1237,14 +1237,14 @@ |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
172 |
sub %o2,%o3,%o2 # %o2 = &destptr[-count] |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
173 |
Ll48: ld [%o0+%o3],%o4 # source1-digit |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
174 |
ld [%o1+%o3],%o5 # source2-digit |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
175 |
- subcc %g0,%g1,%g0 # carry |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
176 |
+ subcc %g0,%g3,%g0 # carry |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
177 |
addxcc %o4,%o5,%o4 # addieren |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
178 |
- addx %g0,%g0,%g1 # neuer Carry |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
179 |
+ addx %g0,%g0,%g3 # neuer Carry |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
180 |
subcc %o3,4,%o3 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
181 |
bne Ll48 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
182 |
_ st %o4,[%o2+%o3] # Digit ablegen |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
183 |
Ll49: retl |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
184 |
- _ mov %g1,%o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
185 |
+ _ mov %g3,%o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
186 |
#endif |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
187 |
#if UNROLLED_LOOPS |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
188 |
and %o3,7,%o4 # count mod 8 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
189 |
@@ -1257,7 +1257,7 @@ |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
190 |
sub %o5,%o4,%o5 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
191 |
jmp %o5 # Sprung nach _add_loop_down+4*(12+4*8-4*(count mod 8)) |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
192 |
_ subcc %g0,%g0,%g0 # carry löschen |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
193 |
-Ll48: subcc %g0,%g1,%g0 # carry |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
194 |
+Ll48: subcc %g0,%g3,%g0 # carry |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
195 |
ld [%o0+28],%o4 # source1-digit |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
196 |
ld [%o1+28],%o5 # source2-digit |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
197 |
addxcc %o5,%o4,%o5 # addieren |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
198 |
@@ -1290,7 +1290,7 @@ |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
199 |
ld [%o1],%o5 # source2-digit |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
200 |
addxcc %o5,%o4,%o5 # addieren |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
201 |
st %o5,[%o2] # Digit ablegen |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
202 |
- addx %g0,%g0,%g1 # neuer Carry |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
203 |
+ addx %g0,%g0,%g3 # neuer Carry |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
204 |
sub %o0,32,%o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
205 |
sub %o1,32,%o1 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
206 |
subcc %o3,8,%o3 # noch mindestens 8 Digits abzuarbeiten? |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
207 |
@@ -1297,7 +1297,7 @@ |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
208 |
bcc Ll48 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
209 |
_ sub %o2,32,%o2 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
210 |
retl |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
211 |
- _ mov %g1,%o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
212 |
+ _ mov %g3,%o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
213 |
#endif |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
214 |
|
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
215 |
# extern uintD addto_loop_down (uintD* sourceptr, uintD* destptr, uintC count); |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
216 |
@@ -1431,18 +1431,18 @@ |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
217 |
#endif |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
218 |
|
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
219 |
# extern uintD sub_loop_down (uintD* sourceptr1, uintD* sourceptr2, uintD* destptr, uintC count); |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
220 |
-C(sub_loop_down:) # Input in %o0,%o1,%o2,%o3, verändert %g1, Output in %o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
221 |
+C(sub_loop_down:) # Input in %o0,%o1,%o2,%o3, verändert %g3, Output in %o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
222 |
#if STANDARD_LOOPS |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
223 |
andcc %o3,%o3,%g0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
224 |
be Ll56 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
225 |
- _ mov %g0,%g1 # Carry := 0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
226 |
+ _ mov %g0,%g3 # Carry := 0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
227 |
sub %o0,4,%o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
228 |
Ll55: ld [%o0],%o4 # source1-digit |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
229 |
sub %o1,4,%o1 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
230 |
ld [%o1],%o5 # source2-digit |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
231 |
- subcc %g0,%g1,%g0 # carry |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
232 |
+ subcc %g0,%g3,%g0 # carry |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
233 |
subxcc %o4,%o5,%o4 # subtrahieren |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
234 |
- addx %g0,%g0,%g1 # neuer Carry |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
235 |
+ addx %g0,%g0,%g3 # neuer Carry |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
236 |
sub %o2,4,%o2 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
237 |
st %o4,[%o2] # Digit ablegen |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
238 |
subcc %o3,1,%o3 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
239 |
@@ -1449,12 +1449,12 @@ |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
240 |
bne Ll55 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
241 |
_ sub %o0,4,%o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
242 |
Ll56: retl |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
243 |
- _ mov %g1,%o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
244 |
+ _ mov %g3,%o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
245 |
#endif |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
246 |
#if COUNTER_LOOPS |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
247 |
andcc %o3,%o3,%g0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
248 |
be Ll56 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
249 |
- _ mov %g0,%g1 # Carry := 0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
250 |
+ _ mov %g0,%g3 # Carry := 0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
251 |
sub %o0,4,%o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
252 |
sub %o1,4,%o1 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
253 |
sll %o3,2,%o3 # %o3 = 4*count |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
254 |
@@ -1463,14 +1463,14 @@ |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
255 |
sub %o2,%o3,%o2 # %o2 = &destptr[-count] |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
256 |
Ll55: ld [%o0+%o3],%o4 # source1-digit |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
257 |
ld [%o1+%o3],%o5 # source2-digit |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
258 |
- subcc %g0,%g1,%g0 # carry |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
259 |
+ subcc %g0,%g3,%g0 # carry |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
260 |
subxcc %o4,%o5,%o4 # subtrahieren |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
261 |
- addx %g0,%g0,%g1 # neuer Carry |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
262 |
+ addx %g0,%g0,%g3 # neuer Carry |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
263 |
subcc %o3,4,%o3 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
264 |
bne Ll55 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
265 |
_ st %o4,[%o2+%o3] # Digit ablegen |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
266 |
Ll56: retl |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
267 |
- _ mov %g1,%o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
268 |
+ _ mov %g3,%o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
269 |
#endif |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
270 |
#if UNROLLED_LOOPS |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
271 |
and %o3,7,%o4 # count mod 8 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
272 |
@@ -1483,7 +1483,7 @@ |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
273 |
sub %o5,%o4,%o5 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
274 |
jmp %o5 # Sprung nach _sub_loop_down+4*(12+4*8-4*(count mod 8)) |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
275 |
_ subcc %g0,%g0,%g0 # carry löschen |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
276 |
-Ll55: subcc %g0,%g1,%g0 # carry |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
277 |
+Ll55: subcc %g0,%g3,%g0 # carry |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
278 |
ld [%o0+28],%o4 # source1-digit |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
279 |
ld [%o1+28],%o5 # source2-digit |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
280 |
subxcc %o4,%o5,%o4 # subtrahieren |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
281 |
@@ -1516,7 +1516,7 @@ |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
282 |
ld [%o1],%o5 # source2-digit |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
283 |
subxcc %o4,%o5,%o4 # subtrahieren |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
284 |
st %o4,[%o2] # Digit ablegen |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
285 |
- addx %g0,%g0,%g1 # neuer Carry |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
286 |
+ addx %g0,%g0,%g3 # neuer Carry |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
287 |
sub %o0,32,%o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
288 |
sub %o1,32,%o1 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
289 |
subcc %o3,8,%o3 # noch mindestens 8 Digits abzuarbeiten? |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
290 |
@@ -1523,22 +1523,22 @@ |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
291 |
bcc Ll55 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
292 |
_ sub %o2,32,%o2 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
293 |
retl |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
294 |
- _ mov %g1,%o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
295 |
+ _ mov %g3,%o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
296 |
#endif |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
297 |
|
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
298 |
# extern uintD subx_loop_down (uintD* sourceptr1, uintD* sourceptr2, uintD* destptr, uintC count, uintD carry); |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
299 |
-C(subx_loop_down:) # Input in %o0,%o1,%o2,%o3,%o4, verändert %g1, Output in %o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
300 |
+C(subx_loop_down:) # Input in %o0,%o1,%o2,%o3,%o4, verändert %g3, Output in %o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
301 |
#if STANDARD_LOOPS |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
302 |
andcc %o3,%o3,%g0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
303 |
be Ll58 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
304 |
- _ mov %o4,%g1 # Carry |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
305 |
+ _ mov %o4,%g3 # Carry |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
306 |
sub %o0,4,%o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
307 |
Ll57: ld [%o0],%o4 # source1-digit |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
308 |
sub %o1,4,%o1 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
309 |
ld [%o1],%o5 # source2-digit |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
310 |
- subcc %g0,%g1,%g0 # carry |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
311 |
+ subcc %g0,%g3,%g0 # carry |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
312 |
subxcc %o4,%o5,%o4 # subtrahieren |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
313 |
- addx %g0,%g0,%g1 # neuer Carry |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
314 |
+ addx %g0,%g0,%g3 # neuer Carry |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
315 |
sub %o2,4,%o2 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
316 |
st %o4,[%o2] # Digit ablegen |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
317 |
subcc %o3,1,%o3 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
318 |
@@ -1545,12 +1545,12 @@ |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
319 |
bne Ll57 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
320 |
_ sub %o0,4,%o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
321 |
Ll58: retl |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
322 |
- _ mov %g1,%o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
323 |
+ _ mov %g3,%o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
324 |
#endif |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
325 |
#if COUNTER_LOOPS |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
326 |
andcc %o3,%o3,%g0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
327 |
be Ll58 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
328 |
- _ mov %o4,%g1 # Carry |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
329 |
+ _ mov %o4,%g3 # Carry |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
330 |
sub %o0,4,%o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
331 |
sub %o1,4,%o1 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
332 |
sll %o3,2,%o3 # %o3 = 4*count |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
333 |
@@ -1559,27 +1559,27 @@ |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
334 |
sub %o2,%o3,%o2 # %o2 = &destptr[-count] |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
335 |
Ll57: ld [%o0+%o3],%o4 # source1-digit |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
336 |
ld [%o1+%o3],%o5 # source2-digit |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
337 |
- subcc %g0,%g1,%g0 # carry |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
338 |
+ subcc %g0,%g3,%g0 # carry |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
339 |
subxcc %o4,%o5,%o4 # subtrahieren |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
340 |
- addx %g0,%g0,%g1 # neuer Carry |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
341 |
+ addx %g0,%g0,%g3 # neuer Carry |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
342 |
subcc %o3,4,%o3 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
343 |
bne Ll57 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
344 |
_ st %o4,[%o2+%o3] # Digit ablegen |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
345 |
Ll58: retl |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
346 |
- _ mov %g1,%o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
347 |
+ _ mov %g3,%o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
348 |
#endif |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
349 |
#if UNROLLED_LOOPS |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
350 |
and %o3,7,%o5 # count mod 8 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
351 |
- sll %o5,2,%g1 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
352 |
- sub %o0,%g1,%o0 # %o0 = &sourceptr1[-(count mod 8)] |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
353 |
- sub %o1,%g1,%o1 # %o1 = &sourceptr2[-(count mod 8)] |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
354 |
- sub %o2,%g1,%o2 # %o2 = &destptr[-(count mod 8)] |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
355 |
+ sll %o5,2,%g3 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
356 |
+ sub %o0,%g3,%o0 # %o0 = &sourceptr1[-(count mod 8)] |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
357 |
+ sub %o1,%g3,%o1 # %o1 = &sourceptr2[-(count mod 8)] |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
358 |
+ sub %o2,%g3,%o2 # %o2 = &destptr[-(count mod 8)] |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
359 |
sll %o5,4,%o5 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
360 |
- set _subx_loop_down+176,%g1 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
361 |
- sub %g1,%o5,%g1 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
362 |
- jmp %g1 # Sprung nach _subx_loop_down+4*(12+4*8-4*(count mod 8)) |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
363 |
+ set _subx_loop_down+176,%g3 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
364 |
+ sub %g3,%o5,%g3 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
365 |
+ jmp %g3 # Sprung nach _subx_loop_down+4*(12+4*8-4*(count mod 8)) |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
366 |
_ subcc %g0,%o4,%g0 # carry initialisieren |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
367 |
-Ll57: subcc %g0,%g1,%g0 # carry |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
368 |
+Ll57: subcc %g0,%g3,%g0 # carry |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
369 |
ld [%o0+28],%o4 # source1-digit |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
370 |
ld [%o1+28],%o5 # source2-digit |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
371 |
subxcc %o4,%o5,%o4 # subtrahieren |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
372 |
@@ -1612,7 +1612,7 @@ |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
373 |
ld [%o1],%o5 # source2-digit |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
374 |
subxcc %o4,%o5,%o4 # subtrahieren |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
375 |
st %o4,[%o2] # Digit ablegen |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
376 |
- addx %g0,%g0,%g1 # neuer Carry |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
377 |
+ addx %g0,%g0,%g3 # neuer Carry |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
378 |
sub %o0,32,%o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
379 |
sub %o1,32,%o1 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
380 |
subcc %o3,8,%o3 # noch mindestens 8 Digits abzuarbeiten? |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
381 |
@@ -1619,7 +1619,7 @@ |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
382 |
bcc Ll57 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
383 |
_ sub %o2,32,%o2 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
384 |
retl |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
385 |
- _ mov %g1,%o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
386 |
+ _ mov %g3,%o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
387 |
#endif |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
388 |
|
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
389 |
# extern uintD subfrom_loop_down (uintD* sourceptr, uintD* destptr, uintC count); |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
390 |
@@ -1831,10 +1831,10 @@ |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
391 |
_ mov %o3,%o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
392 |
|
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
393 |
# extern uintD shiftleft_loop_down (uintD* ptr, uintC count, uintC i, uintD carry); |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
394 |
-C(shiftleft_loop_down:) # Input in %o0,%o1,%o2,%o3, verändert %g1, Output in %o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
395 |
+C(shiftleft_loop_down:) # Input in %o0,%o1,%o2,%o3, verändert %g3, Output in %o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
396 |
andcc %o1,%o1,%g0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
397 |
be Ll72 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
398 |
- _ sub %g0,%o2,%g1 # 32-i (mod 32) |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
399 |
+ _ sub %g0,%o2,%g3 # 32-i (mod 32) |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
400 |
sub %o0,4,%o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
401 |
Ll71: ld [%o0],%o4 # Digit |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
402 |
subcc %o1,1,%o1 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
403 |
@@ -1841,7 +1841,7 @@ |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
404 |
sll %o4,%o2,%o5 # dessen niedere (32-i) Bits |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
405 |
or %o3,%o5,%o5 # mit dem alten Carry kombinieren |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
406 |
st %o5,[%o0] # Digit ablegen |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
407 |
- srl %o4,%g1,%o3 # dessen höchste i Bits liefern den neuen Carry |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
408 |
+ srl %o4,%g3,%o3 # dessen höchste i Bits liefern den neuen Carry |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
409 |
bne Ll71 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
410 |
_ sub %o0,4,%o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
411 |
Ll72: retl |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
412 |
@@ -1848,11 +1848,11 @@ |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
413 |
_ mov %o3,%o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
414 |
|
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
415 |
# extern uintD shiftleftcopy_loop_down (uintD* sourceptr, uintD* destptr, uintC count, uintC i); |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
416 |
-C(shiftleftcopy_loop_down:) # Input in %o0,%o1,%o2,%o3, verändert %g1,%g2, Output in %o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
417 |
+C(shiftleftcopy_loop_down:) # Input in %o0,%o1,%o2,%o3, verändert %g3,%g2, Output in %o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
418 |
andcc %o2,%o2,%g0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
419 |
be Ll74 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
420 |
_ mov 0,%o4 # Carry := 0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
421 |
- sub %g0,%o3,%g1 # 32-i (mod 32) |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
422 |
+ sub %g0,%o3,%g3 # 32-i (mod 32) |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
423 |
sub %o0,4,%o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
424 |
Ll73: ld [%o0],%o5 # Digit |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
425 |
subcc %o2,1,%o2 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
426 |
@@ -1860,7 +1860,7 @@ |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
427 |
or %o4,%g2,%g2 # mit dem alten Carry kombinieren |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
428 |
sub %o1,4,%o1 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
429 |
st %g2,[%o1] # Digit ablegen |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
430 |
- srl %o5,%g1,%o4 # dessen höchste i Bits liefern den neuen Carry |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
431 |
+ srl %o5,%g3,%o4 # dessen höchste i Bits liefern den neuen Carry |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
432 |
bne Ll73 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
433 |
_ sub %o0,4,%o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
434 |
Ll74: retl |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
435 |
@@ -1883,17 +1883,17 @@ |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
436 |
_ mov %o2,%o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
437 |
|
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
438 |
# extern uintD shiftright_loop_up (uintD* ptr, uintC count, uintC i); |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
439 |
-C(shiftright_loop_up:) # Input in %o0,%o1,%o2, verändert %g1, Output in %o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
440 |
+C(shiftright_loop_up:) # Input in %o0,%o1,%o2, verändert %g3, Output in %o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
441 |
andcc %o1,%o1,%g0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
442 |
be Ll78 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
443 |
_ or %g0,%g0,%o3 # Carry := 0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
444 |
- sub %g0,%o2,%g1 # 32-i (mod 32) |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
445 |
+ sub %g0,%o2,%g3 # 32-i (mod 32) |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
446 |
Ll77: ld [%o0],%o4 # Digit |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
447 |
subcc %o1,1,%o1 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
448 |
srl %o4,%o2,%o5 # shiften |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
449 |
or %o3,%o5,%o5 # und mit altem Carry kombinieren |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
450 |
st %o5,[%o0] # und ablegen |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
451 |
- sll %o4,%g1,%o3 # neuer Carry |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
452 |
+ sll %o4,%g3,%o3 # neuer Carry |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
453 |
bne Ll77 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
454 |
_ add %o0,4,%o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
455 |
Ll78: retl |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
456 |
@@ -1900,12 +1900,12 @@ |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
457 |
_ mov %o3,%o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
458 |
|
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
459 |
# extern uintD shiftrightsigned_loop_up (uintD* ptr, uintC count, uintC i); |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
460 |
-C(shiftrightsigned_loop_up:) # Input in %o0,%o1,%o2, verändert %g1, Output in %o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
461 |
+C(shiftrightsigned_loop_up:) # Input in %o0,%o1,%o2, verändert %g3, Output in %o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
462 |
ld [%o0],%o4 # erstes Digit |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
463 |
- sub %g0,%o2,%g1 # 32-i (mod 32) |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
464 |
+ sub %g0,%o2,%g3 # 32-i (mod 32) |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
465 |
sra %o4,%o2,%o5 # shiften |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
466 |
st %o5,[%o0] # und ablegen |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
467 |
- sll %o4,%g1,%o3 # neuer Carry |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
468 |
+ sll %o4,%g3,%o3 # neuer Carry |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
469 |
subcc %o1,1,%o1 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
470 |
be Ll80 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
471 |
_ add %o0,4,%o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
472 |
@@ -1914,7 +1914,7 @@ |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
473 |
srl %o4,%o2,%o5 # shiften |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
474 |
or %o3,%o5,%o5 # und mit altem Carry kombinieren |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
475 |
st %o5,[%o0] # und ablegen |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
476 |
- sll %o4,%g1,%o3 # neuer Carry |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
477 |
+ sll %o4,%g3,%o3 # neuer Carry |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
478 |
bne Ll79 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
479 |
_ add %o0,4,%o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
480 |
Ll80: retl |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
481 |
@@ -1921,17 +1921,17 @@ |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
482 |
_ mov %o3,%o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
483 |
|
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
484 |
# extern uintD shiftrightcopy_loop_up (uintD* sourceptr, uintD* destptr, uintC count, uintC i, uintD carry); |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
485 |
-C(shiftrightcopy_loop_up:) # Input in %o0,%o1,%o2,%o3,%o4, verändert %g1,%g2, Output in %o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
486 |
- sub %g0,%o3,%g1 # 32-i (mod 32) |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
487 |
+C(shiftrightcopy_loop_up:) # Input in %o0,%o1,%o2,%o3,%o4, verändert %g3,%g2, Output in %o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
488 |
+ sub %g0,%o3,%g3 # 32-i (mod 32) |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
489 |
andcc %o2,%o2,%g0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
490 |
be Ll82 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
491 |
- _ sll %o4,%g1,%g2 # erster Carry |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
492 |
+ _ sll %o4,%g3,%g2 # erster Carry |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
493 |
Ll81: ld [%o0],%o4 # Digit |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
494 |
add %o0,4,%o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
495 |
srl %o4,%o3,%o5 # shiften |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
496 |
or %g2,%o5,%o5 # und mit altem Carry kombinieren |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
497 |
st %o5,[%o1] # und ablegen |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
498 |
- sll %o4,%g1,%g2 # neuer Carry |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
499 |
+ sll %o4,%g3,%g2 # neuer Carry |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
500 |
subcc %o2,1,%o2 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
501 |
bne Ll81 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
502 |
_ add %o1,4,%o1 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
503 |
@@ -1982,7 +1982,7 @@ |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
504 |
call _mulu32_ # mit digit multiplizieren |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
505 |
_ mov %i0,%o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
506 |
addcc %l0,%o0,%o0 # und bisherigen Carry addieren |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
507 |
- addx %g0,%g1,%l0 # High-Digit gibt neuen Carry |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
508 |
+ addx %g0,%g3,%l0 # High-Digit gibt neuen Carry |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
509 |
sub %i2,4,%i2 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
510 |
subcc %i3,1,%i3 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
511 |
bne Ll86 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
512 |
@@ -1991,16 +1991,16 @@ |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
513 |
ret |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
514 |
_ restore |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
515 |
#else |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
516 |
-C(mulu_loop_down:) # Input in %o0,%o1,%o2,%o3, verändert %g1 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
517 |
+C(mulu_loop_down:) # Input in %o0,%o1,%o2,%o3, verändert %g3 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
518 |
mov 0,%o4 # Carry |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
519 |
-Ll87: ld [%o1-4],%g1 # nächstes Digit |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
520 |
- # mit digit multiplizieren: %o0 * %g1 -> %o5|%g1 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
521 |
+Ll87: ld [%o1-4],%g3 # nächstes Digit |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
522 |
+ # mit digit multiplizieren: %o0 * %g3 -> %o5|%g3 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
523 |
#ifdef sparcv8 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
524 |
sub %o1,4,%o1 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
525 |
- umul %g1,%o0,%g1 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
526 |
+ umul %g3,%o0,%g3 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
527 |
rd %y,%o5 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
528 |
#else |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
529 |
- mov %g1,%y |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
530 |
+ mov %g3,%y |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
531 |
sub %o1,4,%o1 # Wartetakt! |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
532 |
andcc %g0,%g0,%o5 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
533 |
mulscc %o5,%o0,%o5 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
534 |
@@ -2038,15 +2038,15 @@ |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
535 |
mulscc %o5,%g0,%o5 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
536 |
tst %o0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
537 |
bl,a Ll88 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
538 |
- __ add %o5,%g1,%o5 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
539 |
-Ll88: rd %y,%g1 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
540 |
+ __ add %o5,%g3,%o5 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
541 |
+Ll88: rd %y,%g3 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
542 |
#endif |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
543 |
- addcc %o4,%g1,%g1 # und bisherigen Carry addieren |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
544 |
+ addcc %o4,%g3,%g3 # und bisherigen Carry addieren |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
545 |
addx %g0,%o5,%o4 # High-Digit gibt neuen Carry |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
546 |
sub %o2,4,%o2 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
547 |
subcc %o3,1,%o3 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
548 |
bne Ll87 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
549 |
- _ st %g1,[%o2] # Low-Digit ablegen |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
550 |
+ _ st %g3,[%o2] # Low-Digit ablegen |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
551 |
retl |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
552 |
_ st %o4,[%o2-4] # letzten Carry ablegen |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
553 |
#endif |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
554 |
@@ -2063,7 +2063,7 @@ |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
555 |
sub %i2,4,%i2 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
556 |
ld [%i2],%o1 # nächstes dest-digit |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
557 |
addcc %l0,%o0,%o0 # und bisherigen Carry addieren |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
558 |
- addx %g0,%g1,%l0 # High-Digit gibt neuen Carry |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
559 |
+ addx %g0,%g3,%l0 # High-Digit gibt neuen Carry |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
560 |
addcc %o1,%o0,%o0 # addieren |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
561 |
addx %g0,%l0,%l0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
562 |
subcc %i3,1,%i3 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
563 |
@@ -2150,7 +2150,7 @@ |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
564 |
sub %i2,4,%i2 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
565 |
ld [%i2],%o1 # nächstes dest-digit |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
566 |
addcc %l0,%o0,%o0 # und bisherigen Carry addieren |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
567 |
- addx %g0,%g1,%l0 # High-Digit gibt neuen Carry |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
568 |
+ addx %g0,%g3,%l0 # High-Digit gibt neuen Carry |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
569 |
subcc %o1,%o0,%o1 # davon das Low-Digit subtrahieren |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
570 |
addx %g0,%l0,%l0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
571 |
subcc %i3,1,%i3 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
572 |
@@ -2230,16 +2230,16 @@ |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
573 |
save %sp,-96,%sp |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
574 |
andcc %i2,%i2,%g0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
575 |
be Ll92 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
576 |
- _ mov 0,%g1 # Rest |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
577 |
-Ll91: mov %g1,%o0 # Rest als High-Digit |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
578 |
+ _ mov 0,%g3 # Rest |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
579 |
+Ll91: mov %g3,%o0 # Rest als High-Digit |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
580 |
ld [%i1],%o1 # nächstes Digit als Low-Digit |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
581 |
call C(divu_6432_3232_) # zusammen durch digit dividieren |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
582 |
_ mov %i0,%o2 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
583 |
- st %o0,[%i1] # Quotient ablegen, Rest in %g1 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
584 |
+ st %o0,[%i1] # Quotient ablegen, Rest in %g3 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
585 |
subcc %i2,1,%i2 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
586 |
bne Ll91 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
587 |
_ add %i1,4,%i1 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
588 |
-Ll92: mov %g1,%i0 # Rest als Ergebnis |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
589 |
+Ll92: mov %g3,%i0 # Rest als Ergebnis |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
590 |
ret |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
591 |
_ restore |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
592 |
|
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
593 |
@@ -2248,17 +2248,17 @@ |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
594 |
save %sp,-96,%sp |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
595 |
andcc %i3,%i3,%g0 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
596 |
be Ll94 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
597 |
- _ mov 0,%g1 # Rest |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
598 |
-Ll93: mov %g1,%o0 # Rest als High-Digit |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
599 |
+ _ mov 0,%g3 # Rest |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
600 |
+Ll93: mov %g3,%o0 # Rest als High-Digit |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
601 |
ld [%i1],%o1 # nächstes Digit als Low-Digit |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
602 |
call C(divu_6432_3232_) # zusammen durch digit dividieren |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
603 |
_ mov %i0,%o2 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
604 |
- st %o0,[%i2] # Quotient ablegen, Rest in %g1 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
605 |
+ st %o0,[%i2] # Quotient ablegen, Rest in %g3 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
606 |
add %i1,4,%i1 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
607 |
subcc %i3,1,%i3 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
608 |
bne Ll93 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
609 |
_ add %i2,4,%i2 |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
610 |
-Ll94: mov %g1,%i0 # Rest als Ergebnis |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
611 |
+Ll94: mov %g3,%i0 # Rest als Ergebnis |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
612 |
ret |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
613 |
_ restore |
38a06e74a699
7054634 Move clisp to userland
Rich Burridge <rich.burridge@oracle.com>
parents:
diff
changeset
|
614 |