slightly tuned largeInt - largeInt for intel
authorClaus Gittinger <cg@exept.de>
Thu, 20 May 1999 00:27:15 +0200
changeset 4214 ba20de3793e2
parent 4213 a66f711d86df
child 4215 d3d8a954cd3c
slightly tuned largeInt - largeInt for intel
LargeInt.st
LargeInteger.st
--- a/LargeInt.st	Thu May 20 00:16:51 1999 +0200
+++ b/LargeInt.st	Thu May 20 00:27:15 1999 +0200
@@ -2372,6 +2372,20 @@
         __myDigits = __ByteArrayInstPtr(_digitByteArray)->ba_element;
 
         __index = 1;
+#ifdef i386
+        while (__index < __minLen) {
+            __diff = __borrow + ((unsigned short *)(__myDigits+__index-1))[0] - ((unsigned short *)(__otherDigits+__index-1))[0];
+            if (__diff >= 0) {
+                __borrow = 0;
+            } else {
+                __borrow = -1;
+                __diff += 0x10000;
+            }
+            ((unsigned short *)(__resultDigits+__index-1))[0] = __diff;
+            __index += 2;
+        }
+#endif
+
         while (__index <= __minLen) {
             __diff = __borrow + __myDigits[__index-1] - __otherDigits[__index-1];
             if (__diff >= 0) {
@@ -3317,5 +3331,5 @@
 !LargeInteger class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Attic/LargeInt.st,v 1.103 1999-05-19 22:16:51 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Attic/LargeInt.st,v 1.104 1999-05-19 22:27:15 cg Exp $'
 ! !
--- a/LargeInteger.st	Thu May 20 00:16:51 1999 +0200
+++ b/LargeInteger.st	Thu May 20 00:27:15 1999 +0200
@@ -2372,6 +2372,20 @@
         __myDigits = __ByteArrayInstPtr(_digitByteArray)->ba_element;
 
         __index = 1;
+#ifdef i386
+        while (__index < __minLen) {
+            __diff = __borrow + ((unsigned short *)(__myDigits+__index-1))[0] - ((unsigned short *)(__otherDigits+__index-1))[0];
+            if (__diff >= 0) {
+                __borrow = 0;
+            } else {
+                __borrow = -1;
+                __diff += 0x10000;
+            }
+            ((unsigned short *)(__resultDigits+__index-1))[0] = __diff;
+            __index += 2;
+        }
+#endif
+
         while (__index <= __minLen) {
             __diff = __borrow + __myDigits[__index-1] - __otherDigits[__index-1];
             if (__diff >= 0) {
@@ -3317,5 +3331,5 @@
 !LargeInteger class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/LargeInteger.st,v 1.103 1999-05-19 22:16:51 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/LargeInteger.st,v 1.104 1999-05-19 22:27:15 cg Exp $'
 ! !