summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn van Groningen2003-05-16 14:53:22 +0000
committerJohn van Groningen2003-05-16 14:53:22 +0000
commit925708830090dcdd6a0fa08ce89a1f10cdd89027 (patch)
tree277a0dca8d93f084b3132f370bb90d808aef6747
parentmacintosh files (diff)
optimize toString for Int by computing the remainder of 10
using multiplication
-rw-r--r--macho/pstartup.a14
-rw-r--r--pstartup.a17
2 files changed, 27 insertions, 4 deletions
diff --git a/macho/pstartup.a b/macho/pstartup.a
index 8b44279..374d4ad 100644
--- a/macho/pstartup.a
+++ b/macho/pstartup.a
@@ -1727,17 +1727,29 @@ calculate_digits:
cmplwi 0,d0,10
blt last_digit
+#if 1
+ lis o0,-13107
+ subi o0,o0,13107
+ mulhwu o0,o0,d0
+ srwi o0,o0,3
+
+ slwi o1,o0,1
+ sub a1,d0,o1
+ slwi o1,o0,3
+ sub a1,a1,o1
+#else
li o1,10
divwu o0,d0,o1
mullw a1,o0,o1
sub a1,d0,a1
+#endif
addi a1,a1,48
+ mr d0,o0
stb a1,0(a2)
addi a2,a2,1
- mr d0,o0
b calculate_digits
last_digit:
diff --git a/pstartup.a b/pstartup.a
index 49a1dd8..16f7d80 100644
--- a/pstartup.a
+++ b/pstartup.a
@@ -1763,17 +1763,28 @@ calculate_digits:
cmplwi 0,d0,10
blt last_digit
+ if 1
+ lis o0,-13107
+ subi o0,o0,13107
+ mulhwu o0,o0,d0
+ srwi o0,o0,3
+
+ slwi o1,o0,1
+ sub a1,d0,o1
+ slwi o1,o0,3
+ sub a1,a1,o1
+ else
li o1,10
divwu o0,d0,o1
mullw a1,o0,o1
sub a1,d0,a1
+ endif
addi a1,a1,48
+ mr d0,o0
stb a1,0(a2)
- addi a2,a2,1
-
- mr d0,o0
+ addi a2,a2,1
b calculate_digits
last_digit: