diff options
author | xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e> | 2013-07-03 11:28:17 +0000 |
---|---|---|
committer | xleroy <xleroy@fca1b0fc-160b-0410-b1d3-a4f43f01ea2e> | 2013-07-03 11:28:17 +0000 |
commit | 14ae5ba40c3217f7410c377bf36e21509b01eb8f (patch) | |
tree | f1d57929fb4310b6e8bdf8bf2edb3718c1169be9 /runtime/powerpc/i64_udiv.s | |
parent | 67976ff28a03fc57690ad792fd5e515010f803a5 (diff) |
powerpc: faster implementation of long division modeled on that for IA32
test: add one test (2^64-1) / (2^32+3) to exercise a special case of
this long division.
git-svn-id: https://yquem.inria.fr/compcert/svn/compcert/trunk@2288 fca1b0fc-160b-0410-b1d3-a4f43f01ea2e
Diffstat (limited to 'runtime/powerpc/i64_udiv.s')
-rw-r--r-- | runtime/powerpc/i64_udiv.s | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/runtime/powerpc/i64_udiv.s b/runtime/powerpc/i64_udiv.s index 7bca760..9443d59 100644 --- a/runtime/powerpc/i64_udiv.s +++ b/runtime/powerpc/i64_udiv.s @@ -41,11 +41,13 @@ .balign 16 .globl __i64_udiv __i64_udiv: - mflr r11 # save return address in r11 + mflr r0 + stw r0, 4(r1) # save return address in caller's frame bl __i64_udivmod # unsigned divide - mtlr r11 # restore return address - mr r3, r7 # R = quotient - mr r4, r8 + lwz r0, 4(r1) + mtlr r0 # restore return address + mr r3, r5 # result = quotient + mr r4, r6 blr .type __i64_udiv, @function .size __i64_udiv, .-__i64_udiv |