--- src.orig/arisparc64.d	Thu Dec  6 00:06:32 2007
+++ src/arisparc64.d	Mon Feb  2 15:35:22 2009
@@ -75,9 +75,9 @@
 
 # extern struct { uint32 lo; uint32 hi; } mulu32_ (uint32 arg1, uint32 arg2);
 # 2^32*hi+lo := arg1*arg2.
-C(mulu32_:) # Input in %o0,%o1, Output in %o0,%g1
+C(mulu32_:) # Input in %o0,%o1, Output in %o0,%g3
         umul %o0,%o1,%o2
-        rd %y,%g1
+        rd %y,%g3
         retl
        _ srl %o2,0,%o0
 
@@ -90,11 +90,11 @@
 
 # extern struct { uint32 q; uint32 r; } divu_6432_3232_ (uint32 xhi, uint32 xlo, uint32 y);
 # x = 2^32*xhi+xlo = q*y+r schreiben. Sei bekannt, dass 0 <= x < 2^32*y .
-C(divu_6432_3232_:) # Input in %o0,%o1,%o2, Output in %o0,%g1
+C(divu_6432_3232_:) # Input in %o0,%o1,%o2, Output in %o0,%g3
         wr %o0,%g0,%y
         udiv %o1,%o2,%o0        # x durch y dividieren, %o0 := q
-        umul %o0,%o2,%g1        # %g1 := (q*y) mod 2^32
-        sub %o1,%g1,%g1         # %g1 := (xlo-q*y) mod 2^32 = r
+        umul %o0,%o2,%g3        # %g3 := (q*y) mod 2^32
+        sub %o1,%g3,%g3         # %g3 := (xlo-q*y) mod 2^32 = r
         retl
        _ srl %o0,0,%o0
 
@@ -104,13 +104,13 @@
         wr %g0,%g0,%y
         udiv %o0,%o1,%o2        # dividieren, Quotient nach %o2
 #if 0 # Who says that %y has some meaningful contents after `udiv' ??
-        rd %y,%g1               # Rest aus %y
+        rd %y,%g3               # Rest aus %y
 #else
-        umul %o2,%o1,%g1        # %g1 := (q*y) mod 2^32
-        sub %o0,%g1,%g1         # %g1 := (x-q*y) mod 2^32 = r
+        umul %o2,%o1,%g3        # %g3 := (q*y) mod 2^32
+        sub %o0,%g3,%g3         # %g3 := (x-q*y) mod 2^32 = r
 #endif
-        sll %g1,16,%g1          # in die oberen 16 Bit schieben
-        or %o2,%g1,%o0
+        sll %g3,16,%g3          # in die oberen 16 Bit schieben
+        or %o2,%g3,%o0
         retl
        _ srl %o0,0,%o0
 
@@ -713,28 +713,28 @@
 #endif
 
 # extern uintD add_loop_down (uintD* sourceptr1, uintD* sourceptr2, uintD* destptr, uintC count);
-C(add_loop_down:) # Input in %o0,%o1,%o2,%o3, verändert %g1, Output in %o0
+C(add_loop_down:) # Input in %o0,%o1,%o2,%o3, verändert %g3, Output in %o0
 #if STANDARD_LOOPS
 #       srl %o3,0,%o3           # zero-extend %o3 = count
         brz,pn %o3,2f
-       _ mov %g0,%g1            # Carry := 0
+       _ mov %g0,%g3            # Carry := 0
 1:        sub %o0,4,%o0
           lduw [%o0],%o4        # source1-digit, zero-extend
           sub %o1,4,%o1
           lduw [%o1],%o5        # source2-digit, zero-extend
-          add %g1,%o4,%g1       # zum Carry addieren
-          add %g1,%o5,%g1       # zum Carry addieren
-          st %g1,[%o2]          # Digit ablegen
+          add %g3,%o4,%g3       # zum Carry addieren
+          add %g3,%o5,%g3       # zum Carry addieren
+          st %g3,[%o2]          # Digit ablegen
           subcc %o3,1,%o3
           bne,pt %xcc,1b
-         _ srlx %g1,32,%g1      # neuer Carry
+         _ srlx %g3,32,%g3      # neuer Carry
 2:      retl
-       _ mov %g1,%o0
+       _ mov %g3,%o0
 #endif
 #if COUNTER_LOOPS
 #       srl %o3,0,%o3           # zero-extend %o3 = count
         brz,pn %o3,2f
-       _ mov %g0,%g1            # Carry := 0
+       _ mov %g0,%g3            # Carry := 0
         sub %o0,4,%o0
         sub %o1,4,%o1
         sllx %o3,2,%o3          # %o3 = 4*count
@@ -743,14 +743,14 @@
         sub %o2,%o3,%o2         # %o2 = &destptr[-count]
 1:        lduw [%o0+%o3],%o4    # source1-digit, zero-extend
           lduw [%o1+%o3],%o5    # source2-digit, zero-extend
-          add %g1,%o4,%g1       # zum Carry addieren
-          add %g1,%o5,%g1       # zum Carry addieren
-          st %g1,[%o2+%o3]      # Digit ablegen
+          add %g3,%o4,%g3       # zum Carry addieren
+          add %g3,%o5,%g3       # zum Carry addieren
+          st %g3,[%o2+%o3]      # Digit ablegen
           subcc %o3,4,%o3
           bne,pt %xcc,1b
-         _ srlx %g1,32,%g1      # neuer Carry
+         _ srlx %g3,32,%g3      # neuer Carry
 2:      retl
-       _ mov %g1,%o0
+       _ mov %g3,%o0
 #endif
 
 # extern uintD addto_loop_down (uintD* sourceptr, uintD* destptr, uintC count);
@@ -831,28 +831,28 @@
 #endif
 
 # extern uintD sub_loop_down (uintD* sourceptr1, uintD* sourceptr2, uintD* destptr, uintC count);
-C(sub_loop_down:) # Input in %o0,%o1,%o2,%o3, verändert %g1, Output in %o0
+C(sub_loop_down:) # Input in %o0,%o1,%o2,%o3, verändert %g3, Output in %o0
 #if STANDARD_LOOPS
 #       srl %o3,0,%o3           # zero-extend %o3 = count
         brz,pn %o3,2f
-       _ mov %g0,%g1            # Carry := 0
+       _ mov %g0,%g3            # Carry := 0
 1:        sub %o0,4,%o0
           lduw [%o0],%o4        # source1-digit, zero-extend
           sub %o1,4,%o1
           lduw [%o1],%o5        # source2-digit, zero-extend
-          add %g1,%o4,%g1       # zum Carry addieren
-          sub %g1,%o5,%g1       # vom Carry subtrahieren
-          st %g1,[%o2]          # Digit ablegen
+          add %g3,%o4,%g3       # zum Carry addieren
+          sub %g3,%o5,%g3       # vom Carry subtrahieren
+          st %g3,[%o2]          # Digit ablegen
           subcc %o3,1,%o3
           bne,pt %xcc,1b
-         _ srax %g1,32,%g1      # neuer Carry
+         _ srax %g3,32,%g3      # neuer Carry
 2:      retl
-       _ srl %g1,0,%o0
+       _ srl %g3,0,%o0
 #endif
 #if COUNTER_LOOPS
 #       srl %o3,0,%o3           # zero-extend %o3 = count
         brz,pn %o3,2f
-       _ mov %g0,%g1            # Carry := 0
+       _ mov %g0,%g3            # Carry := 0
         sub %o0,4,%o0
         sub %o1,4,%o1
         sllx %o3,2,%o3          # %o3 = 4*count
@@ -861,39 +861,39 @@
         sub %o2,%o3,%o2         # %o2 = &destptr[-count]
 1:        lduw [%o0+%o3],%o4    # source1-digit, zero-extend
           lduw [%o1+%o3],%o5    # source2-digit, zero-extend
-          add %g1,%o4,%g1       # zum Carry addieren
-          sub %g1,%o5,%g1       # vom Carry subtrahieren
-          st %g1,[%o2+%o3]      # Digit ablegen
+          add %g3,%o4,%g3       # zum Carry addieren
+          sub %g3,%o5,%g3       # vom Carry subtrahieren
+          st %g3,[%o2+%o3]      # Digit ablegen
           subcc %o3,4,%o3
           bne,pt %xcc,1b
-         _ srax %g1,32,%g1      # neuer Carry
+         _ srax %g3,32,%g3      # neuer Carry
 2:      retl
-       _ srl %g1,0,%o0
+       _ srl %g3,0,%o0
 #endif
 
 # extern uintD subx_loop_down (uintD* sourceptr1, uintD* sourceptr2, uintD* destptr, uintC count, uintD carry);
-C(subx_loop_down:) # Input in %o0,%o1,%o2,%o3,%o4, verändert %g1, Output in %o0
+C(subx_loop_down:) # Input in %o0,%o1,%o2,%o3,%o4, verändert %g3, Output in %o0
 #if STANDARD_LOOPS
 #       srl %o3,0,%o3           # zero-extend %o3 = count
         brz,pn %o3,2f
-       _ sra %o4,0,%g1          # Carry, sign-extend
+       _ sra %o4,0,%g3          # Carry, sign-extend
 1:        sub %o0,4,%o0
           lduw [%o0],%o4        # source1-digit, zero-extend
           sub %o1,4,%o1
           lduw [%o1],%o5        # source2-digit, zero-extend
-          add %g1,%o4,%g1       # zum Carry addieren
-          sub %g1,%o5,%g1       # vom Carry subtrahieren
-          st %g1,[%o2]          # Digit ablegen
+          add %g3,%o4,%g3       # zum Carry addieren
+          sub %g3,%o5,%g3       # vom Carry subtrahieren
+          st %g3,[%o2]          # Digit ablegen
           subcc %o3,1,%o3
           bne,pt %xcc,1b
-         _ srax %g1,32,%g1      # neuer Carry
+         _ srax %g3,32,%g3      # neuer Carry
 2:      retl
-       _ srl %g1,0,%o0
+       _ srl %g3,0,%o0
 #endif
 #if COUNTER_LOOPS
 #       srl %o3,0,%o3           # zero-extend %o3 = count
         brz,pn %o3,2f
-       _ sra %o4,0,%g1          # Carry, sign-extend
+       _ sra %o4,0,%g3          # Carry, sign-extend
         sub %o0,4,%o0
         sub %o1,4,%o1
         sllx %o3,2,%o3          # %o3 = 4*count
@@ -902,14 +902,14 @@
         sub %o2,%o3,%o2         # %o2 = &destptr[-count]
 1:        lduw [%o0+%o3],%o4    # source1-digit, zero-extend
           lduw [%o1+%o3],%o5    # source2-digit, zero-extend
-          add %g1,%o4,%g1       # zum Carry addieren
-          sub %g1,%o5,%g1       # vom Carry subtrahieren
-          st %g1,[%o2+%o3]      # Digit ablegen
+          add %g3,%o4,%g3       # zum Carry addieren
+          sub %g3,%o5,%g3       # vom Carry subtrahieren
+          st %g3,[%o2+%o3]      # Digit ablegen
           subcc %o3,4,%o3
           bne,pt %xcc,1b
-         _ srax %g1,32,%g1      # neuer Carry
+         _ srax %g3,32,%g3      # neuer Carry
 2:      retl
-       _ srl %g1,0,%o0
+       _ srl %g3,0,%o0
 #endif
 
 # extern uintD subfrom_loop_down (uintD* sourceptr, uintD* destptr, uintC count);
@@ -1135,16 +1135,16 @@
 #endif
 
 # extern uintD shiftright_loop_up (uintD* ptr, uintC count, uintC i);
-C(shiftright_loop_up:) # Input in %o0,%o1,%o2, verändert %g1, Output in %o0
+C(shiftright_loop_up:) # Input in %o0,%o1,%o2, verändert %g3, Output in %o0
 #ifdef SLOWER
 #       srl %o1,0,%o1           # zero-extend %o1 = count
         brz,pn %o1,2f
        _ or %g0,%g0,%o3         # Carry := 0
-        mov 32,%g1
-        sub %g1,%o2,%g1         # 32-i
+        mov 32,%g3
+        sub %g3,%o2,%g3         # 32-i
 1:        lduw [%o0],%o4        # Digit, zero-extend
           subcc %o1,1,%o1
-          sllx %o4,%g1,%o4      # shiften
+          sllx %o4,%g3,%o4      # shiften
           or %o3,%o4,%o3        # und mit altem Carry kombinieren
           srlx %o3,32,%o4
           st %o4,[%o0]          # und ablegen
@@ -1157,13 +1157,13 @@
 #       srl %o1,0,%o1           # zero-extend %o1 = count
         brz,pn %o1,2f
        _ or %g0,%g0,%o3         # Carry := 0
-        sub %g0,%o2,%g1         # 32-i (mod 32)
+        sub %g0,%o2,%g3         # 32-i (mod 32)
 1:        ld [%o0],%o4          # Digit
           subcc %o1,1,%o1
           srl %o4,%o2,%o5       # shiften
           or %o3,%o5,%o5        # und mit altem Carry kombinieren
           st %o5,[%o0]          # und ablegen
-          sll %o4,%g1,%o3       # neuer Carry
+          sll %o4,%g3,%o3       # neuer Carry
           bne,pt %xcc,1b
          _ add %o0,4,%o0
 2:      retl
@@ -1171,14 +1171,14 @@
 #endif
 
 # extern uintD shiftrightsigned_loop_up (uintD* ptr, uintC count, uintC i);
-C(shiftrightsigned_loop_up:) # Input in %o0,%o1,%o2, verändert %g1, Output in %o0
+C(shiftrightsigned_loop_up:) # Input in %o0,%o1,%o2, verändert %g3, Output in %o0
 #ifdef SLOWER
 #       srl %o1,0,%o1           # zero-extend %o1 = count
-        mov 32,%g1
-        sub %g1,%o2,%g1         # 32-i
+        mov 32,%g3
+        sub %g3,%o2,%g3         # 32-i
         ldsw [%o0],%o3          # erstes Digit, sign-extend
         subcc %o1,1,%o1
-        sllx %o3,%g1,%o3        # shiften
+        sllx %o3,%g3,%o3        # shiften
         srlx %o3,32,%o4
         st %o4,[%o0]            # und ablegen
         sllx %o3,32,%o3         # neuer Carry
@@ -1186,7 +1186,7 @@
        _ add %o0,4,%o0
 1:        lduw [%o0],%o4        # Digit, zero-extend
           subcc %o1,1,%o1
-          sllx %o4,%g1,%o4      # shiften
+          sllx %o4,%g3,%o4      # shiften
           or %o3,%o4,%o3        # und mit altem Carry kombinieren
           srlx %o3,32,%o4
           st %o4,[%o0]          # und ablegen
@@ -1198,10 +1198,10 @@
 #else
 #       srl %o1,0,%o1           # zero-extend %o1 = count
         ld [%o0],%o4            # erstes Digit
-        sub %g0,%o2,%g1         # 32-i (mod 32)
+        sub %g0,%o2,%g3         # 32-i (mod 32)
         sra %o4,%o2,%o5         # shiften
         st %o5,[%o0]            # und ablegen
-        sll %o4,%g1,%o3         # neuer Carry
+        sll %o4,%g3,%o3         # neuer Carry
         subcc %o1,1,%o1
         be,pn %xcc,2f
        _ add %o0,4,%o0
@@ -1210,7 +1210,7 @@
           srl %o4,%o2,%o5       # shiften
           or %o3,%o5,%o5        # und mit altem Carry kombinieren
           st %o5,[%o0]          # und ablegen
-          sll %o4,%g1,%o3       # neuer Carry
+          sll %o4,%g3,%o3       # neuer Carry
           bne,pt %xcc,1b
          _ add %o0,4,%o0
 2:      retl
@@ -1218,16 +1218,16 @@
 #endif
 
 # extern uintD shiftrightcopy_loop_up (uintD* sourceptr, uintD* destptr, uintC count, uintC i, uintD carry);
-C(shiftrightcopy_loop_up:) # Input in %o0,%o1,%o2,%o3,%o4, verändert %g1,%g2, Output in %o0
+C(shiftrightcopy_loop_up:) # Input in %o0,%o1,%o2,%o3,%o4, verändert %g3,%g2, Output in %o0
 #ifdef SLOWER
 #       srl %o2,0,%o2           # zero-extend %o2 = count
-        sub %g0,%o3,%g1         # 64-i (mod 64)
+        sub %g0,%o3,%g3         # 64-i (mod 64)
         brz,pn %o2,2f
-       _ sllx %o4,%g1,%o4       # erster Carry
-        add %g1,32,%g1          # 32-i
+       _ sllx %o4,%g3,%o4       # erster Carry
+        add %g3,32,%g3          # 32-i
 1:        lduw [%o0],%o5        # Digit, zero-extend
           add %o0,4,%o0
-          sllx %o5,%g1,%o5      # shiften
+          sllx %o5,%g3,%o5      # shiften
           or %o4,%o5,%o4        # und mit altem Carry kombinieren
           srlx %o4,32,%o5
           st %o5,[%o1]          # und ablegen
@@ -1239,15 +1239,15 @@
        _ srlx %o4,32,%o0
 #else
 #       srl %o2,0,%o2           # zero-extend %o2 = count
-        sub %g0,%o3,%g1         # 32-i (mod 32)
+        sub %g0,%o3,%g3         # 32-i (mod 32)
         brz,pn %o2,2f
-       _ sll %o4,%g1,%g2        # erster Carry
+       _ sll %o4,%g3,%g2        # erster Carry
 1:        ld [%o0],%o4          # Digit
           add %o0,4,%o0
           srl %o4,%o3,%o5       # shiften
           or %g2,%o5,%o5        # und mit altem Carry kombinieren
           st %o5,[%o1]          # und ablegen
-          sll %o4,%g1,%g2       # neuer Carry
+          sll %o4,%g3,%g2       # neuer Carry
           subcc %o2,1,%o2
           bne,pt %xcc,1b
          _ add %o1,4,%o1
@@ -1290,58 +1290,58 @@
        _ srl %o3,0,%o0
 
 # extern void mulu_loop_down (uintD digit, uintD* sourceptr, uintD* destptr, uintC len);
-C(mulu_loop_down:) # Input in %o0,%o1,%o2,%o3, verändert %g1
+C(mulu_loop_down:) # Input in %o0,%o1,%o2,%o3, verändert %g3
 #       srl %o3,0,%o3           # zero-extend %o3 = len
         mov 0,%o4               # Carry
 1:        sub %o1,4,%o1
-          ld [%o1],%g1          # nächstes Digit
+          ld [%o1],%g3          # nächstes Digit
           sub %o2,4,%o2
-          # mit digit multiplizieren: %o0 * %g1 -> %o5|%g1
-          umul %g1,%o0,%g1
+          # mit digit multiplizieren: %o0 * %g3 -> %o5|%g3
+          umul %g3,%o0,%g3
           rd %y,%o5
-          addcc %o4,%g1,%g1     # und bisherigen Carry addieren
+          addcc %o4,%g3,%g3     # und bisherigen Carry addieren
           addx %g0,%o5,%o4      # High-Digit gibt neuen Carry
           subcc %o3,1,%o3
           bne,pt %xcc,1b
-         _ st %g1,[%o2]         # Low-Digit ablegen
+         _ st %g3,[%o2]         # Low-Digit ablegen
         retl
        _ st %o4,[%o2-4]         # letzten Carry ablegen
 
 # extern uintD muluadd_loop_down (uintD digit, uintD* sourceptr, uintD* destptr, uintC len);
-C(muluadd_loop_down:) # Input in %o0,%o1,%o2,%o3, verändert %g1,%g2, Output in %o0
+C(muluadd_loop_down:) # Input in %o0,%o1,%o2,%o3, verändert %g3,%g2, Output in %o0
 #       srl %o3,0,%o3           # zero-extend %o3 = len
         mov 0,%o4               # Carry
 1:        sub %o1,4,%o1
           ld [%o1],%o5          # nächstes source-Digit
           sub %o2,4,%o2
-          # mit digit multiplizieren: %o0 * %o5 -> %g2|%g1
-          umul %o0,%o5,%g1
+          # mit digit multiplizieren: %o0 * %o5 -> %g2|%g3
+          umul %o0,%o5,%g3
           rd %y,%g2
           ld [%o2],%o5          # nächstes dest-digit
-          addcc %o4,%g1,%g1     # und bisherigen Carry addieren
+          addcc %o4,%g3,%g3     # und bisherigen Carry addieren
           addx %g0,%g2,%o4      # High-Digit gibt neuen Carry
-          addcc %o5,%g1,%g1     # addieren
+          addcc %o5,%g3,%g3     # addieren
           addx %g0,%o4,%o4
           subcc %o3,1,%o3
           bne,pt %xcc,1b
-         _ st %g1,[%o2]         # Low-Digit ablegen
+         _ st %g3,[%o2]         # Low-Digit ablegen
         retl
        _ srl %o4,0,%o0          # letzter Carry
 
 # extern uintD mulusub_loop_down (uintD digit, uintD* sourceptr, uintD* destptr, uintC len);
-C(mulusub_loop_down:) # Input in %o0,%o1,%o2,%o3, verändert %g1,%g2, Output in %o0
+C(mulusub_loop_down:) # Input in %o0,%o1,%o2,%o3, verändert %g3,%g2, Output in %o0
 #       srl %o3,0,%o3           # zero-extend %o3 = len
         mov 0,%o4               # Carry
 1:        sub %o1,4,%o1
           ld [%o1],%o5          # nächstes source-Digit
           sub %o2,4,%o2
-          # mit digit multiplizieren: %o0 * %o5 -> %g2|%g1
-          umul %o0,%o5,%g1
+          # mit digit multiplizieren: %o0 * %o5 -> %g2|%g3
+          umul %o0,%o5,%g3
           rd %y,%g2
           ld [%o2],%o5          # nächstes dest-digit
-          addcc %o4,%g1,%g1     # und bisherigen Carry addieren
+          addcc %o4,%g3,%g3     # und bisherigen Carry addieren
           addx %g0,%g2,%o4      # High-Digit gibt neuen Carry
-          subcc %o5,%g1,%o5     # davon das Low-Digit subtrahieren
+          subcc %o5,%g3,%o5     # davon das Low-Digit subtrahieren
           addx %g0,%o4,%o4
           subcc %o3,1,%o3
           bne,pt %xcc,1b
@@ -1350,7 +1350,7 @@
        _ srl %o4,0,%o0          # letzter Carry
 
 # extern uintD divu_loop_up (uintD digit, uintD* ptr, uintC len);
-C(divu_loop_up:) # Input in %o0,%o1,%o2, verändert %g1, Output in %o0
+C(divu_loop_up:) # Input in %o0,%o1,%o2, verändert %g3, Output in %o0
 #       srl %o2,0,%o2           # zero-extend %o2 = len
         brz,pn %o2,2f
        _ mov 0,%o3              # Rest
@@ -1360,8 +1360,8 @@
           or %o3,%o4,%o3        # zusammen
           udivx %o3,%o0,%o4     # durch digit dividieren
           st %o4,[%o1]          # Quotient ablegen
-          umul %o0,%o4,%g1
-          sub %o3,%g1,%o3       # Rest in den unteren 32 Bit von %o3
+          umul %o0,%o4,%g3
+          sub %o3,%g3,%o3       # Rest in den unteren 32 Bit von %o3
           subcc %o2,1,%o2
           bne,pt %xcc,1b
          _ add %o1,4,%o1
@@ -1369,7 +1369,7 @@
        _ srl %o3,0,%o0          # Rest als Ergebnis
 
 # extern uintD divucopy_loop_up (uintD digit, uintD* sourceptr, uintD* destptr, uintC len);
-C(divucopy_loop_up:) # Input in %o0,%o1,%o2,%o3, verändert %g1, Output in %o0
+C(divucopy_loop_up:) # Input in %o0,%o1,%o2,%o3, verändert %g3, Output in %o0
 #       srl %o3,0,%o3           # zero-extend %o3 = len
         brz,pn %o3,2f
        _ mov 0,%o4              # Rest
@@ -1380,8 +1380,8 @@
           or %o4,%o5,%o4        # zusammen
           udivx %o4,%o0,%o5     # durch digit dividieren
           st %o5,[%o2]          # Quotient ablegen
-          umul %o0,%o5,%g1
-          sub %o4,%g1,%o4       # Rest in den unteren 32 Bit von %o4
+          umul %o0,%o5,%g3
+          sub %o4,%g3,%o4       # Rest in den unteren 32 Bit von %o4
           subcc %o3,1,%o3
           bne,pt %xcc,1b
          _ add %o2,4,%o2
