Browse Source

* move/fill*/index*/comp* routines immediately exit if length is negative

Jonas Maebe 23 years ago
parent
commit
f44ebfed94
1 changed files with 17 additions and 22 deletions
  1. 17 22
      rtl/powerpc/powerpc.inc

+ 17 - 22
rtl/powerpc/powerpc.inc

@@ -300,7 +300,7 @@ asm
         { setup for aligning x to multiple of 4}
         rlwinm    r10,r3,0,31-2+1,31
         rlwimi    r5,r5,16,0,15
-        beq       cr6,LFillCharDone
+        ble       cr6,LFillCharDone
         { get the start of the data in the cache (and mark it as "will be }
         { modified")                                                      }
         dcbst     0,r3
@@ -413,22 +413,15 @@ asm
         r3              x
         r4              count
         r5              value
-        r13             value.value
-        r14             ptr to dest word
-        r15             increment 1
-        r16             increment 2
-        r17             scratch
-        r18             scratch
-        f1              value.value.value.value
 }
                 cmpwi   cr0,r3,0
                 mtctr   r4
                 subi    r3,r3,4
-                ble    .FillWordEnd    //if count<=0 Then Exit
-.FillWordLoop:
+                ble    LFillDWordEnd    //if count<=0 Then Exit
+LFillDWordLoop:
                 stwu    r5,4(r3)
-                bdnz    .FillWordLoop
-.FillWordEnd:
+                bdnz    LFillDWordLoop
+LFillDWordEnd:
 end ['R3','R4','R5','CTR'];
 
 
@@ -445,7 +438,7 @@ asm
                 mr      r0,r3
                 { assume not found }
                 li      r3,-1
-                beq     LIndexByteDone
+                ble     LIndexByteDone
 LIndexByteLoop:
                 lbzu    r9,1(r10)
                 cmplw   r9,r5
@@ -470,7 +463,7 @@ asm
                 mr      r0,r3
                 { assume not found }
                 li      r3,-1
-                beq     LIndexWordDone
+                ble     LIndexWordDone
 LIndexWordLoop:
                 lhzu    r9,2(r10)
                 cmplw   r9,r5
@@ -495,7 +488,7 @@ asm
                 mr      r0,r3
                 { assume not found }
                 li      r3,-1
-                beq     LIndexDWordDone
+                ble     LIndexDWordDone
 LIndexDWordLoop:
                 lwzu    r9,4(r30)
                 cmplw   r9,r5
@@ -520,7 +513,7 @@ asm
         subi    r11,r3,1
         subi    r4,r4,1
         li      r3,0
-        beq     LCompByteDone
+        ble     LCompByteDone
 LCompByteLoop:
         { load next chars }
         lbzu    r9,1(r11)
@@ -546,7 +539,7 @@ asm
         subi    r11,r3,2
         subi    r4,r4,2
         li      r3,0
-        beq     LCompWordDone
+        ble     LCompWordDone
 LCompWordLoop:
         { load next chars }
         lhzu    r9,2(r11)
@@ -573,7 +566,7 @@ asm
         subi    r11,r3,4
         subi    r4,r4,4
         li      r3,0
-        beq     LCompDWordDone
+        ble     LCompDWordDone
 LCompDWordLoop:
         { load next chars }
         lwzu    r9,4(r11)
@@ -596,12 +589,11 @@ asm
         cmplwi  r4,0
         mtctr   r4
         subi    r9,r3,1
-        mr      r0,r9
+        subi    r0,r3,1
         { assume not found }
         li      r3,-1
         { if yes, do nothing }
-        beq     LIndexChar0Done
-        subi    r3,r3,1
+        ble     LIndexChar0Done
 LIndexChar0Loop:
         lbzu    r10,1(r9)
         cmplwi  cr1,r10,0
@@ -965,7 +957,10 @@ end ['R3','R10'];
 
 {
   $Log$
-  Revision 1.23  2002-10-17 10:12:50  jonas
+  Revision 1.24  2002-10-20 13:40:55  jonas
+    * move/fill*/index*/comp* routines immediately exit if length is negative
+
+  Revision 1.23  2002/10/17 10:12:50  jonas
     * fixed return value of declocked()
 
   Revision 1.22  2002/10/05 14:20:16  peter