-#------------------------------------------------------------------------------
-#
-# Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>
-#
-# This program and the accompanying materials
-# are licensed and made available under the terms and conditions of the BSD License
-# which accompanies this distribution. The full text of the license may be found at
-# http://opensource.org/licenses/bsd-license.php
-#
-# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
-# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
-#
-#------------------------------------------------------------------------------
-
- .text
- .align 2
- GCC_ASM_EXPORT(__udivmoddi4)
-
-ASM_PFX(__udivmoddi4):
- stmfd sp!, {r4, r5, r6, r7, lr}
- add r7, sp, #12
- stmfd sp!, {r10, r11}
- sub sp, sp, #20
- stmia sp, {r2-r3}
- ldr r6, [sp, #48]
- orrs r2, r2, r3
- mov r10, r0
- mov r11, r1
- beq L2
- subs ip, r1, #0
- bne L4
- cmp r3, #0
- bne L6
- cmp r6, #0
- beq L8
- mov r1, r2
- bl ASM_PFX(__umodsi3)
- mov r1, #0
- stmia r6, {r0-r1}
-L8:
- ldr r1, [sp, #0]
- mov r0, r10
- b L45
-L6:
- cmp r6, #0
- movne r1, #0
- stmneia r6, {r0-r1}
- b L2
-L4:
- ldr r1, [sp, #0]
- cmp r1, #0
- bne L12
- ldr r2, [sp, #4]
- cmp r2, #0
- bne L14
- cmp r6, #0
- beq L16
- mov r1, r2
- mov r0, r11
- bl ASM_PFX(__umodsi3)
- mov r1, #0
- stmia r6, {r0-r1}
-L16:
- ldr r1, [sp, #4]
- mov r0, r11
-L45:
- bl ASM_PFX(__udivsi3)
-L46:
- mov r10, r0
- mov r11, #0
- b L10
-L14:
- subs r1, r0, #0
- bne L18
- cmp r6, #0
- beq L16
- ldr r1, [sp, #4]
- mov r0, r11
- bl ASM_PFX(__umodsi3)
- mov r4, r10
- mov r5, r0
- stmia r6, {r4-r5}
- b L16
-L18:
- sub r3, r2, #1
- tst r2, r3
- bne L22
- cmp r6, #0
- movne r4, r0
- andne r5, ip, r3
- stmneia r6, {r4-r5}
-L24:
- rsb r3, r2, #0
- and r3, r2, r3
- clz r3, r3
- rsb r3, r3, #31
- mov r0, ip, lsr r3
- b L46
-L22:
- clz r2, r2
- clz r3, ip
- rsb r3, r3, r2
- cmp r3, #30
- bhi L48
- rsb r2, r3, #31
- add lr, r3, #1
- mov r3, r1, asl r2
- str r3, [sp, #12]
- mov r3, r1, lsr lr
- ldr r0, [sp, #0]
- mov r5, ip, lsr lr
- orr r4, r3, ip, asl r2
- str r0, [sp, #8]
- b L29
-L12:
- ldr r3, [sp, #4]
- cmp r3, #0
- bne L30
- sub r3, r1, #1
- tst r1, r3
- bne L32
- cmp r6, #0
- andne r3, r3, r0
- movne r2, r3
- movne r3, #0
- stmneia r6, {r2-r3}
-L34:
- cmp r1, #1
- beq L10
- rsb r3, r1, #0
- and r3, r1, r3
- clz r3, r3
- rsb r0, r3, #31
- mov r1, ip, lsr r0
- rsb r3, r0, #32
- mov r0, r10, lsr r0
- orr ip, r0, ip, asl r3
- str r1, [sp, #12]
- str ip, [sp, #8]
- ldrd r10, [sp, #8]
- b L10
-L32:
- clz r2, r1
- clz r3, ip
- rsb r3, r3, r2
- rsb r4, r3, #31
- mov r2, r0, asl r4
- mvn r1, r3
- and r2, r2, r1, asr #31
- add lr, r3, #33
- str r2, [sp, #8]
- add r2, r3, #1
- mov r3, r3, asr #31
- and r0, r3, r0, asl r1
- mov r3, r10, lsr r2
- orr r3, r3, ip, asl r4
- and r3, r3, r1, asr #31
- orr r0, r0, r3
- mov r3, ip, lsr lr
- str r0, [sp, #12]
- mov r0, r10, lsr lr
- and r5, r3, r2, asr #31
- rsb r3, lr, #31
- mov r3, r3, asr #31
- orr r0, r0, ip, asl r1
- and r3, r3, ip, lsr r2
- and r0, r0, r2, asr #31
- orr r4, r3, r0
- b L29
-L30:
- clz r2, r3
- clz r3, ip
- rsb r3, r3, r2
- cmp r3, #31
- bls L37
-L48:
- cmp r6, #0
- stmneia r6, {r10-r11}
- b L2
-L37:
- rsb r1, r3, #31
- mov r0, r0, asl r1
- add lr, r3, #1
- mov r2, #0
- str r0, [sp, #12]
- mov r0, r10, lsr lr
- str r2, [sp, #8]
- sub r2, r3, #31
- and r0, r0, r2, asr #31
- mov r3, ip, lsr lr
- orr r4, r0, ip, asl r1
- and r5, r3, r2, asr #31
-L29:
- mov ip, #0
- mov r10, ip
- b L40
-L41:
- ldr r1, [sp, #12]
- ldr r2, [sp, #8]
- mov r3, r4, lsr #31
- orr r5, r3, r5, asl #1
- mov r3, r1, lsr #31
- orr r4, r3, r4, asl #1
- mov r3, r2, lsr #31
- orr r0, r3, r1, asl #1
- orr r1, ip, r2, asl #1
- ldmia sp, {r2-r3}
- str r0, [sp, #12]
- subs r2, r2, r4
- sbc r3, r3, r5
- str r1, [sp, #8]
- subs r0, r2, #1
- sbc r1, r3, #0
- mov r2, r1, asr #31
- ldmia sp, {r0-r1}
- mov r3, r2
- and ip, r2, #1
- and r3, r3, r1
- and r2, r2, r0
- subs r4, r4, r2
- sbc r5, r5, r3
- add r10, r10, #1
-L40:
- cmp r10, lr
- bne L41
- ldrd r0, [sp, #8]
- adds r0, r0, r0
- adc r1, r1, r1
- cmp r6, #0
- orr r10, r0, ip
- mov r11, r1
- stmneia r6, {r4-r5}
- b L10
-L2:
- mov r10, #0
- mov r11, #0
-L10:
- mov r0, r10
- mov r1, r11
- sub sp, r7, #20
- ldmfd sp!, {r10, r11}
- ldmfd sp!, {r4, r5, r6, r7, pc}
+#------------------------------------------------------------------------------ \r
+#\r
+# Copyright (c) 2008 - 2009, Apple Inc. All rights reserved.<BR>\r
+#\r
+# This program and the accompanying materials\r
+# are licensed and made available under the terms and conditions of the BSD License\r
+# which accompanies this distribution. The full text of the license may be found at\r
+# http://opensource.org/licenses/bsd-license.php\r
+#\r
+# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,\r
+# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.\r
+#\r
+#------------------------------------------------------------------------------\r
+\r
+ .text\r
+ .align 2\r
+ GCC_ASM_EXPORT(__udivmoddi4)\r
+ \r
+ASM_PFX(__udivmoddi4):\r
+ stmfd sp!, {r4, r5, r6, r7, lr}\r
+ add r7, sp, #12\r
+ stmfd sp!, {r10, r11}\r
+ sub sp, sp, #20\r
+ stmia sp, {r2-r3}\r
+ ldr r6, [sp, #48]\r
+ orrs r2, r2, r3\r
+ mov r10, r0\r
+ mov r11, r1\r
+ beq L2\r
+ subs ip, r1, #0\r
+ bne L4\r
+ cmp r3, #0\r
+ bne L6\r
+ cmp r6, #0\r
+ beq L8\r
+ mov r1, r2\r
+ bl ASM_PFX(__umodsi3)\r
+ mov r1, #0\r
+ stmia r6, {r0-r1}\r
+L8:\r
+ ldr r1, [sp, #0]\r
+ mov r0, r10\r
+ b L45\r
+L6:\r
+ cmp r6, #0\r
+ movne r1, #0\r
+ stmneia r6, {r0-r1}\r
+ b L2\r
+L4:\r
+ ldr r1, [sp, #0]\r
+ cmp r1, #0\r
+ bne L12\r
+ ldr r2, [sp, #4]\r
+ cmp r2, #0\r
+ bne L14\r
+ cmp r6, #0\r
+ beq L16\r
+ mov r1, r2\r
+ mov r0, r11\r
+ bl ASM_PFX(__umodsi3)\r
+ mov r1, #0\r
+ stmia r6, {r0-r1}\r
+L16:\r
+ ldr r1, [sp, #4]\r
+ mov r0, r11\r
+L45:\r
+ bl ASM_PFX(__udivsi3)\r
+L46:\r
+ mov r10, r0\r
+ mov r11, #0\r
+ b L10\r
+L14:\r
+ subs r1, r0, #0\r
+ bne L18\r
+ cmp r6, #0\r
+ beq L16\r
+ ldr r1, [sp, #4]\r
+ mov r0, r11\r
+ bl ASM_PFX(__umodsi3)\r
+ mov r4, r10\r
+ mov r5, r0\r
+ stmia r6, {r4-r5}\r
+ b L16\r
+L18:\r
+ sub r3, r2, #1\r
+ tst r2, r3\r
+ bne L22\r
+ cmp r6, #0\r
+ movne r4, r0\r
+ andne r5, ip, r3\r
+ stmneia r6, {r4-r5}\r
+L24:\r
+ rsb r3, r2, #0\r
+ and r3, r2, r3\r
+ clz r3, r3\r
+ rsb r3, r3, #31\r
+ mov r0, ip, lsr r3\r
+ b L46\r
+L22:\r
+ clz r2, r2\r
+ clz r3, ip\r
+ rsb r3, r3, r2\r
+ cmp r3, #30\r
+ bhi L48\r
+ rsb r2, r3, #31\r
+ add lr, r3, #1\r
+ mov r3, r1, asl r2\r
+ str r3, [sp, #12]\r
+ mov r3, r1, lsr lr\r
+ ldr r0, [sp, #0]\r
+ mov r5, ip, lsr lr\r
+ orr r4, r3, ip, asl r2\r
+ str r0, [sp, #8]\r
+ b L29\r
+L12:\r
+ ldr r3, [sp, #4]\r
+ cmp r3, #0\r
+ bne L30\r
+ sub r3, r1, #1\r
+ tst r1, r3\r
+ bne L32\r
+ cmp r6, #0\r
+ andne r3, r3, r0\r
+ movne r2, r3\r
+ movne r3, #0\r
+ stmneia r6, {r2-r3}\r
+L34:\r
+ cmp r1, #1\r
+ beq L10\r
+ rsb r3, r1, #0\r
+ and r3, r1, r3\r
+ clz r3, r3\r
+ rsb r0, r3, #31\r
+ mov r1, ip, lsr r0\r
+ rsb r3, r0, #32\r
+ mov r0, r10, lsr r0\r
+ orr ip, r0, ip, asl r3\r
+ str r1, [sp, #12]\r
+ str ip, [sp, #8]\r
+ ldrd r10, [sp, #8]\r
+ b L10\r
+L32:\r
+ clz r2, r1\r
+ clz r3, ip\r
+ rsb r3, r3, r2\r
+ rsb r4, r3, #31\r
+ mov r2, r0, asl r4\r
+ mvn r1, r3\r
+ and r2, r2, r1, asr #31\r
+ add lr, r3, #33\r
+ str r2, [sp, #8]\r
+ add r2, r3, #1\r
+ mov r3, r3, asr #31\r
+ and r0, r3, r0, asl r1\r
+ mov r3, r10, lsr r2\r
+ orr r3, r3, ip, asl r4\r
+ and r3, r3, r1, asr #31\r
+ orr r0, r0, r3\r
+ mov r3, ip, lsr lr\r
+ str r0, [sp, #12]\r
+ mov r0, r10, lsr lr\r
+ and r5, r3, r2, asr #31\r
+ rsb r3, lr, #31\r
+ mov r3, r3, asr #31\r
+ orr r0, r0, ip, asl r1\r
+ and r3, r3, ip, lsr r2\r
+ and r0, r0, r2, asr #31\r
+ orr r4, r3, r0\r
+ b L29\r
+L30:\r
+ clz r2, r3\r
+ clz r3, ip\r
+ rsb r3, r3, r2\r
+ cmp r3, #31\r
+ bls L37\r
+L48:\r
+ cmp r6, #0\r
+ stmneia r6, {r10-r11}\r
+ b L2\r
+L37:\r
+ rsb r1, r3, #31\r
+ mov r0, r0, asl r1\r
+ add lr, r3, #1\r
+ mov r2, #0\r
+ str r0, [sp, #12]\r
+ mov r0, r10, lsr lr\r
+ str r2, [sp, #8]\r
+ sub r2, r3, #31\r
+ and r0, r0, r2, asr #31\r
+ mov r3, ip, lsr lr\r
+ orr r4, r0, ip, asl r1\r
+ and r5, r3, r2, asr #31\r
+L29:\r
+ mov ip, #0\r
+ mov r10, ip\r
+ b L40\r
+L41:\r
+ ldr r1, [sp, #12]\r
+ ldr r2, [sp, #8]\r
+ mov r3, r4, lsr #31\r
+ orr r5, r3, r5, asl #1\r
+ mov r3, r1, lsr #31\r
+ orr r4, r3, r4, asl #1\r
+ mov r3, r2, lsr #31\r
+ orr r0, r3, r1, asl #1\r
+ orr r1, ip, r2, asl #1\r
+ ldmia sp, {r2-r3}\r
+ str r0, [sp, #12]\r
+ subs r2, r2, r4\r
+ sbc r3, r3, r5\r
+ str r1, [sp, #8]\r
+ subs r0, r2, #1\r
+ sbc r1, r3, #0\r
+ mov r2, r1, asr #31\r
+ ldmia sp, {r0-r1}\r
+ mov r3, r2\r
+ and ip, r2, #1\r
+ and r3, r3, r1\r
+ and r2, r2, r0\r
+ subs r4, r4, r2\r
+ sbc r5, r5, r3\r
+ add r10, r10, #1\r
+L40:\r
+ cmp r10, lr\r
+ bne L41\r
+ ldrd r0, [sp, #8]\r
+ adds r0, r0, r0\r
+ adc r1, r1, r1\r
+ cmp r6, #0\r
+ orr r10, r0, ip\r
+ mov r11, r1\r
+ stmneia r6, {r4-r5}\r
+ b L10\r
+L2:\r
+ mov r10, #0\r
+ mov r11, #0\r
+L10:\r
+ mov r0, r10\r
+ mov r1, r11\r
+ sub sp, r7, #20\r
+ ldmfd sp!, {r10, r11}\r
+ ldmfd sp!, {r4, r5, r6, r7, pc}\r