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