Explorar o código

* fixed fpc_set_set_byte and fpc_set_unset_byte

Jonas Maebe %!s(int64=22) %!d(string=hai) anos
pai
achega
6bd01c68d2
Modificáronse 1 ficheiros con 22 adicións e 20 borrados
  1. 22 20
      rtl/powerpc/set.inc

+ 22 - 20
rtl/powerpc/set.inc

@@ -78,15 +78,15 @@ function fpc_set_set_byte(const source: fpc_normal_set; b : byte): fpc_normal_se
 }
 asm
        // copy source to result
-       li       r0,8
-       mtctr    r0
-       subi     r4,r4,4
-       subi     r3,r3,4
-Lset_set_byte_copy:
-       lwzu     r0,4(r4)
-       stwu     r0,4(r3)
-       bdnz     Lset_set_byte_copy
-       subi     r3,r3,32
+       lfd      f0,0(r4)
+       lfd      f1,8(r4)
+       lfd      f2,16(r4)
+       lfd      f3,24(r4)
+       stfd     f0,0(r3)
+       stfd     f1,8(r3)
+       stfd     f2,16(r3)
+       stfd     f3,24(r3)
+
        // get the index of the correct *dword* in the set
        // r0 := (r5 rotl(32-3)) and (0x0fffffff8)
        rlwinm   r0,r5,31-3+1,3,31-2
@@ -95,7 +95,7 @@ Lset_set_byte_copy:
        li       r0,1
        // generate bit which has to be inserted
        // (can't use rlwimi, since that one only works for constants)
-       slw      r5,r0,r5
+       rlwnm    r5,r0,r5,0,31
        // insert it
        or       r5,r4,r5
        // store result
@@ -113,15 +113,14 @@ function fpc_set_unset_byte(const source: fpc_normal_set; b : byte): fpc_normal_
 }
 asm
        // copy source to result
-       li       r0,8
-       mtctr    r0
-       subi     r4,r4,4
-       subi     r3,r3,4
-Lset_unset_byte_copy:
-       lwzu     r0,4(r4)
-       stwu     r0,4(r3)
-       bdnz     Lset_unset_byte_copy
-       subi     r3,r3,32
+       lfd      f0,0(r4)
+       lfd      f1,8(r4)
+       lfd      f2,16(r4)
+       lfd      f3,24(r4)
+       stfd     f0,0(r3)
+       stfd     f1,8(r3)
+       stfd     f2,16(r3)
+       stfd     f3,24(r3)
        // get the index of the correct *dword* in the set
        // r0 := (r4 rotl(32-3)) and (0x0fffffff8)
        rlwinm   r0,r5,31-3+1,3,31-2
@@ -524,7 +523,10 @@ end;
 
 {
   $Log$
-  Revision 1.19  2003-05-02 15:10:53  jonas
+  Revision 1.20  2003-05-11 11:06:34  jonas
+    * fixed fpc_set_set_byte and fpc_set_unset_byte
+
+  Revision 1.19  2003/05/02 15:10:53  jonas
     * fixed fpc_set_set_range
 
   Revision 1.18  2003/04/26 15:29:34  jonas