]> git.proxmox.com Git - mirror_edk2.git/blobdiff - ArmPkg/Library/CompilerIntrinsicsLib/Arm/uldiv.S
ARM Packages: Removed trailing spaces
[mirror_edk2.git] / ArmPkg / Library / CompilerIntrinsicsLib / Arm / uldiv.S
index 75761deca0957edbd73af9c7827f08adb344abfc..4481c6d6777e6e6204897004e2d5eeadeb90191d 100755 (executable)
-//------------------------------------------------------------------------------ 
-//
-// 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
-       .globl ASM_PFX(__aeabi_uldivmod)
-
-//        
-//UINT64
-//EFIAPI
-//__aeabi_uldivmod (
-//  IN  UINT64   Dividend  
-//  IN  UINT64   Divisor
-//  )
-//
-ASM_PFX(__aeabi_uldivmod):
-  stmdb   sp!, {r4, r5, r6, lr}
-  mov     r4, r1
-  mov     r5, r0
-  mov     r6, #0  // 0x0
-  orrs    ip, r3, r2, lsr #31
-  bne     ASM_PFX(__aeabi_uldivmod_label1)
-  tst     r2, r2
-  beq     ASM_PFX(_ll_div0)
-  movs    ip, r2, lsr #15
-  addeq   r6, r6, #16     // 0x10
-  mov     ip, r2, lsl r6
-  movs    lr, ip, lsr #23
-  moveq   ip, ip, lsl #8
-  addeq   r6, r6, #8      // 0x8
-  movs    lr, ip, lsr #27
-  moveq   ip, ip, lsl #4
-  addeq   r6, r6, #4      // 0x4
-  movs    lr, ip, lsr #29
-  moveq   ip, ip, lsl #2
-  addeq   r6, r6, #2      // 0x2
-  movs    lr, ip, lsr #30
-  moveq   ip, ip, lsl #1
-  addeq   r6, r6, #1      // 0x1
-  b       ASM_PFX(_ll_udiv_small)
-ASM_PFX(__aeabi_uldivmod_label1):
-  tst     r3, #-2147483648        // 0x80000000
-  bne     ASM_PFX(__aeabi_uldivmod_label2)
-  movs    ip, r3, lsr #15
-  addeq   r6, r6, #16     // 0x10
-  mov     ip, r3, lsl r6
-  movs    lr, ip, lsr #23
-  moveq   ip, ip, lsl #8
-  addeq   r6, r6, #8      // 0x8
-  movs    lr, ip, lsr #27
-  moveq   ip, ip, lsl #4
-  addeq   r6, r6, #4      // 0x4
-  movs    lr, ip, lsr #29
-  moveq   ip, ip, lsl #2
-  addeq   r6, r6, #2      // 0x2
-  movs    lr, ip, lsr #30
-  addeq   r6, r6, #1      // 0x1
-  rsb     r3, r6, #32     // 0x20
-  moveq   ip, ip, lsl #1
-  orr     ip, ip, r2, lsr r3
-  mov     lr, r2, lsl r6
-  b       ASM_PFX(_ll_udiv_big)
-ASM_PFX(__aeabi_uldivmod_label2):
-  mov     ip, r3
-  mov     lr, r2
-  b       ASM_PFX(_ll_udiv_ginormous)
-  
-ASM_PFX(_ll_udiv_small):
-  cmp     r4, ip, lsl #1
-  mov     r3, #0  // 0x0
-  subcs   r4, r4, ip, lsl #1
-  addcs   r3, r3, #2      // 0x2
-  cmp     r4, ip
-  subcs   r4, r4, ip
-  adcs    r3, r3, #0      // 0x0
-  add     r2, r6, #32     // 0x20
-  cmp     r2, #32 // 0x20
-  rsb     ip, ip, #0      // 0x0
-  bcc     ASM_PFX(_ll_udiv_small_label1)
-  orrs    r0, r4, r5, lsr #30
-  moveq   r4, r5
-  moveq   r5, #0  // 0x0
-  subeq   r2, r2, #32     // 0x20
-ASM_PFX(_ll_udiv_small_label1):
-  mov     r1, #0  // 0x0
-  cmp     r2, #16 // 0x10
-  bcc     ASM_PFX(_ll_udiv_small_label2)
-  movs    r0, r4, lsr #14
-  moveq   r4, r4, lsl #16
-  addeq   r1, r1, #16     // 0x10
-ASM_PFX(_ll_udiv_small_label2):
-  sub     lr, r2, r1
-  cmp     lr, #8  // 0x8
-  bcc     ASM_PFX(_ll_udiv_small_label3)
-  movs    r0, r4, lsr #22
-  moveq   r4, r4, lsl #8
-  addeq   r1, r1, #8      // 0x8
-ASM_PFX(_ll_udiv_small_label3):
-  rsb     r0, r1, #32     // 0x20
-  sub     r2, r2, r1
-  orr     r4, r4, r5, lsr r0
-  mov     r5, r5, lsl r1
-  cmp     r2, #1  // 0x1
-  bcc     ASM_PFX(_ll_udiv_small_label5)
-  sub     r2, r2, #1      // 0x1
-  and     r0, r2, #7      // 0x7
-  eor     r0, r0, #7      // 0x7
-  adds    r0, r0, r0, lsl #1
-  add     pc, pc, r0, lsl #2
-  nop                     // (mov r0,r0)
-ASM_PFX(_ll_udiv_small_label4):
-  adcs    r5, r5, r5
-  adcs    r4, ip, r4, lsl #1
-  rsbcc   r4, ip, r4
-  adcs    r5, r5, r5
-  adcs    r4, ip, r4, lsl #1
-  rsbcc   r4, ip, r4
-  adcs    r5, r5, r5
-  adcs    r4, ip, r4, lsl #1
-  rsbcc   r4, ip, r4
-  adcs    r5, r5, r5
-  adcs    r4, ip, r4, lsl #1
-  rsbcc   r4, ip, r4
-  adcs    r5, r5, r5
-  adcs    r4, ip, r4, lsl #1
-  rsbcc   r4, ip, r4
-  adcs    r5, r5, r5
-  adcs    r4, ip, r4, lsl #1
-  rsbcc   r4, ip, r4
-  adcs    r5, r5, r5
-  adcs    r4, ip, r4, lsl #1
-  rsbcc   r4, ip, r4
-  adcs    r5, r5, r5
-  adcs    r4, ip, r4, lsl #1
-  sub     r2, r2, #8      // 0x8
-  tst     r2, r2
-  rsbcc   r4, ip, r4
-  bpl     ASM_PFX(_ll_udiv_small_label4)
-ASM_PFX(_ll_udiv_small_label5):
-  mov     r2, r4, lsr r6
-  bic     r4, r4, r2, lsl r6
-  adcs    r0, r5, r5
-  adc     r1, r4, r4
-  add     r1, r1, r3, lsl r6
-  mov     r3, #0  // 0x0
-  ldmia   sp!, {r4, r5, r6, pc}
-  
-ASM_PFX(_ll_udiv_big):
-  subs    r0, r5, lr
-  mov     r3, #0  // 0x0
-  sbcs    r1, r4, ip
-  movcs   r5, r0
-  movcs   r4, r1
-  adcs    r3, r3, #0      // 0x0
-  subs    r0, r5, lr
-  sbcs    r1, r4, ip
-  movcs   r5, r0
-  movcs   r4, r1
-  adcs    r3, r3, #0      // 0x0
-  subs    r0, r5, lr
-  sbcs    r1, r4, ip
-  movcs   r5, r0
-  movcs   r4, r1
-  adcs    r3, r3, #0      // 0x0
-  mov     r1, #0  // 0x0
-  rsbs    lr, lr, #0      // 0x0
-  rsc     ip, ip, #0      // 0x0
-  cmp     r6, #16 // 0x10
-  bcc     ASM_PFX(_ll_udiv_big_label1)
-  movs    r0, r4, lsr #14
-  moveq   r4, r4, lsl #16
-  addeq   r1, r1, #16     // 0x10
-ASM_PFX(_ll_udiv_big_label1):
-  sub     r2, r6, r1
-  cmp     r2, #8  // 0x8
-  bcc     ASM_PFX(_ll_udiv_big_label2)
-  movs    r0, r4, lsr #22
-  moveq   r4, r4, lsl #8
-  addeq   r1, r1, #8      // 0x8
-ASM_PFX(_ll_udiv_big_label2):
-  rsb     r0, r1, #32     // 0x20
-  sub     r2, r6, r1
-  orr     r4, r4, r5, lsr r0
-  mov     r5, r5, lsl r1
-  cmp     r2, #1  // 0x1
-  bcc     ASM_PFX(_ll_udiv_big_label4)
-  sub     r2, r2, #1      // 0x1
-  and     r0, r2, #3      // 0x3
-  rsb     r0, r0, #3      // 0x3
-  adds    r0, r0, r0, lsl #1
-  add     pc, pc, r0, lsl #3
-  nop                     // (mov r0,r0)
-ASM_PFX(_ll_udiv_big_label3):
-  adcs    r5, r5, r5
-  adcs    r4, r4, r4
-  adcs    r0, lr, r5
-  adcs    r1, ip, r4
-  movcs   r5, r0
-  movcs   r4, r1
-  adcs    r5, r5, r5
-  adcs    r4, r4, r4
-  adcs    r0, lr, r5
-  adcs    r1, ip, r4
-  movcs   r5, r0
-  movcs   r4, r1
-  adcs    r5, r5, r5
-  adcs    r4, r4, r4
-  adcs    r0, lr, r5
-  adcs    r1, ip, r4
-  movcs   r5, r0
-  movcs   r4, r1
-  sub     r2, r2, #4      // 0x4
-  adcs    r5, r5, r5
-  adcs    r4, r4, r4
-  adcs    r0, lr, r5
-  adcs    r1, ip, r4
-  tst     r2, r2
-  movcs   r5, r0
-  movcs   r4, r1
-  bpl     ASM_PFX(_ll_udiv_big_label3)
-ASM_PFX(_ll_udiv_big_label4):
-  mov     r1, #0  // 0x0
-  mov     r2, r5, lsr r6
-  bic     r5, r5, r2, lsl r6
-  adcs    r0, r5, r5
-  adc     r1, r1, #0      // 0x0
-  movs    lr, r3, lsl r6
-  mov     r3, r4, lsr r6
-  bic     r4, r4, r3, lsl r6
-  adc     r1, r1, #0      // 0x0
-  adds    r0, r0, lr
-  orr     r2, r2, r4, ror r6
-  adc     r1, r1, #0      // 0x0
-  ldmia   sp!, {r4, r5, r6, pc}
-  
-ASM_PFX(_ll_udiv_ginormous):
-  subs    r2, r5, lr
-  mov     r1, #0  // 0x0
-  sbcs    r3, r4, ip
-  adc     r0, r1, r1
-  movcc   r2, r5
-  movcc   r3, r4
-  ldmia   sp!, {r4, r5, r6, pc}
-  
-ASM_PFX(_ll_div0):
-  ldmia   sp!, {r4, r5, r6, lr}
-  mov     r0, #0  // 0x0
-  mov     r1, #0  // 0x0
-  b       ASM_PFX(__aeabi_ldiv0)
-  
-ASM_PFX(__aeabi_ldiv0):
-  bx      r14
-
-
+//------------------------------------------------------------------------------\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
+\r
+\r
+  .text\r
+  .align 2\r
+  GCC_ASM_EXPORT(__aeabi_uldivmod)\r
+\r
+//\r
+//UINT64\r
+//EFIAPI\r
+//__aeabi_uldivmod (\r
+//  IN  UINT64   Dividend\r
+//  IN  UINT64   Divisor\r
+//  )\r
+//\r
+ASM_PFX(__aeabi_uldivmod):\r
+  stmdb   sp!, {r4, r5, r6, lr}\r
+  mov     r4, r1\r
+  mov     r5, r0\r
+  mov     r6, #0  // 0x0\r
+  orrs    ip, r3, r2, lsr #31\r
+  bne     ASM_PFX(__aeabi_uldivmod_label1)\r
+  tst     r2, r2\r
+  beq     ASM_PFX(_ll_div0)\r
+  movs    ip, r2, lsr #15\r
+  addeq   r6, r6, #16     // 0x10\r
+  mov     ip, r2, lsl r6\r
+  movs    lr, ip, lsr #23\r
+  moveq   ip, ip, lsl #8\r
+  addeq   r6, r6, #8      // 0x8\r
+  movs    lr, ip, lsr #27\r
+  moveq   ip, ip, lsl #4\r
+  addeq   r6, r6, #4      // 0x4\r
+  movs    lr, ip, lsr #29\r
+  moveq   ip, ip, lsl #2\r
+  addeq   r6, r6, #2      // 0x2\r
+  movs    lr, ip, lsr #30\r
+  moveq   ip, ip, lsl #1\r
+  addeq   r6, r6, #1      // 0x1\r
+  b       ASM_PFX(_ll_udiv_small)\r
+ASM_PFX(__aeabi_uldivmod_label1):\r
+  tst     r3, #-2147483648        // 0x80000000\r
+  bne     ASM_PFX(__aeabi_uldivmod_label2)\r
+  movs    ip, r3, lsr #15\r
+  addeq   r6, r6, #16     // 0x10\r
+  mov     ip, r3, lsl r6\r
+  movs    lr, ip, lsr #23\r
+  moveq   ip, ip, lsl #8\r
+  addeq   r6, r6, #8      // 0x8\r
+  movs    lr, ip, lsr #27\r
+  moveq   ip, ip, lsl #4\r
+  addeq   r6, r6, #4      // 0x4\r
+  movs    lr, ip, lsr #29\r
+  moveq   ip, ip, lsl #2\r
+  addeq   r6, r6, #2      // 0x2\r
+  movs    lr, ip, lsr #30\r
+  addeq   r6, r6, #1      // 0x1\r
+  rsb     r3, r6, #32     // 0x20\r
+  moveq   ip, ip, lsl #1\r
+  orr     ip, ip, r2, lsr r3\r
+  mov     lr, r2, lsl r6\r
+  b       ASM_PFX(_ll_udiv_big)\r
+ASM_PFX(__aeabi_uldivmod_label2):\r
+  mov     ip, r3\r
+  mov     lr, r2\r
+  b       ASM_PFX(_ll_udiv_ginormous)\r
+\r
+ASM_PFX(_ll_udiv_small):\r
+  cmp     r4, ip, lsl #1\r
+  mov     r3, #0  // 0x0\r
+  subcs   r4, r4, ip, lsl #1\r
+  addcs   r3, r3, #2      // 0x2\r
+  cmp     r4, ip\r
+  subcs   r4, r4, ip\r
+  adcs    r3, r3, #0      // 0x0\r
+  add     r2, r6, #32     // 0x20\r
+  cmp     r2, #32 // 0x20\r
+  rsb     ip, ip, #0      // 0x0\r
+  bcc     ASM_PFX(_ll_udiv_small_label1)\r
+  orrs    r0, r4, r5, lsr #30\r
+  moveq   r4, r5\r
+  moveq   r5, #0  // 0x0\r
+  subeq   r2, r2, #32     // 0x20\r
+ASM_PFX(_ll_udiv_small_label1):\r
+  mov     r1, #0  // 0x0\r
+  cmp     r2, #16 // 0x10\r
+  bcc     ASM_PFX(_ll_udiv_small_label2)\r
+  movs    r0, r4, lsr #14\r
+  moveq   r4, r4, lsl #16\r
+  addeq   r1, r1, #16     // 0x10\r
+ASM_PFX(_ll_udiv_small_label2):\r
+  sub     lr, r2, r1\r
+  cmp     lr, #8  // 0x8\r
+  bcc     ASM_PFX(_ll_udiv_small_label3)\r
+  movs    r0, r4, lsr #22\r
+  moveq   r4, r4, lsl #8\r
+  addeq   r1, r1, #8      // 0x8\r
+ASM_PFX(_ll_udiv_small_label3):\r
+  rsb     r0, r1, #32     // 0x20\r
+  sub     r2, r2, r1\r
+  orr     r4, r4, r5, lsr r0\r
+  mov     r5, r5, lsl r1\r
+  cmp     r2, #1  // 0x1\r
+  bcc     ASM_PFX(_ll_udiv_small_label5)\r
+  sub     r2, r2, #1      // 0x1\r
+  and     r0, r2, #7      // 0x7\r
+  eor     r0, r0, #7      // 0x7\r
+  adds    r0, r0, r0, lsl #1\r
+  add     pc, pc, r0, lsl #2\r
+  nop                     // (mov r0,r0)\r
+ASM_PFX(_ll_udiv_small_label4):\r
+  adcs    r5, r5, r5\r
+  adcs    r4, ip, r4, lsl #1\r
+  rsbcc   r4, ip, r4\r
+  adcs    r5, r5, r5\r
+  adcs    r4, ip, r4, lsl #1\r
+  rsbcc   r4, ip, r4\r
+  adcs    r5, r5, r5\r
+  adcs    r4, ip, r4, lsl #1\r
+  rsbcc   r4, ip, r4\r
+  adcs    r5, r5, r5\r
+  adcs    r4, ip, r4, lsl #1\r
+  rsbcc   r4, ip, r4\r
+  adcs    r5, r5, r5\r
+  adcs    r4, ip, r4, lsl #1\r
+  rsbcc   r4, ip, r4\r
+  adcs    r5, r5, r5\r
+  adcs    r4, ip, r4, lsl #1\r
+  rsbcc   r4, ip, r4\r
+  adcs    r5, r5, r5\r
+  adcs    r4, ip, r4, lsl #1\r
+  rsbcc   r4, ip, r4\r
+  adcs    r5, r5, r5\r
+  adcs    r4, ip, r4, lsl #1\r
+  sub     r2, r2, #8      // 0x8\r
+  tst     r2, r2\r
+  rsbcc   r4, ip, r4\r
+  bpl     ASM_PFX(_ll_udiv_small_label4)\r
+ASM_PFX(_ll_udiv_small_label5):\r
+  mov     r2, r4, lsr r6\r
+  bic     r4, r4, r2, lsl r6\r
+  adcs    r0, r5, r5\r
+  adc     r1, r4, r4\r
+  add     r1, r1, r3, lsl r6\r
+  mov     r3, #0  // 0x0\r
+  ldmia   sp!, {r4, r5, r6, pc}\r
+\r
+ASM_PFX(_ll_udiv_big):\r
+  subs    r0, r5, lr\r
+  mov     r3, #0  // 0x0\r
+  sbcs    r1, r4, ip\r
+  movcs   r5, r0\r
+  movcs   r4, r1\r
+  adcs    r3, r3, #0      // 0x0\r
+  subs    r0, r5, lr\r
+  sbcs    r1, r4, ip\r
+  movcs   r5, r0\r
+  movcs   r4, r1\r
+  adcs    r3, r3, #0      // 0x0\r
+  subs    r0, r5, lr\r
+  sbcs    r1, r4, ip\r
+  movcs   r5, r0\r
+  movcs   r4, r1\r
+  adcs    r3, r3, #0      // 0x0\r
+  mov     r1, #0  // 0x0\r
+  rsbs    lr, lr, #0      // 0x0\r
+  rsc     ip, ip, #0      // 0x0\r
+  cmp     r6, #16 // 0x10\r
+  bcc     ASM_PFX(_ll_udiv_big_label1)\r
+  movs    r0, r4, lsr #14\r
+  moveq   r4, r4, lsl #16\r
+  addeq   r1, r1, #16     // 0x10\r
+ASM_PFX(_ll_udiv_big_label1):\r
+  sub     r2, r6, r1\r
+  cmp     r2, #8  // 0x8\r
+  bcc     ASM_PFX(_ll_udiv_big_label2)\r
+  movs    r0, r4, lsr #22\r
+  moveq   r4, r4, lsl #8\r
+  addeq   r1, r1, #8      // 0x8\r
+ASM_PFX(_ll_udiv_big_label2):\r
+  rsb     r0, r1, #32     // 0x20\r
+  sub     r2, r6, r1\r
+  orr     r4, r4, r5, lsr r0\r
+  mov     r5, r5, lsl r1\r
+  cmp     r2, #1  // 0x1\r
+  bcc     ASM_PFX(_ll_udiv_big_label4)\r
+  sub     r2, r2, #1      // 0x1\r
+  and     r0, r2, #3      // 0x3\r
+  rsb     r0, r0, #3      // 0x3\r
+  adds    r0, r0, r0, lsl #1\r
+  add     pc, pc, r0, lsl #3\r
+  nop                     // (mov r0,r0)\r
+ASM_PFX(_ll_udiv_big_label3):\r
+  adcs    r5, r5, r5\r
+  adcs    r4, r4, r4\r
+  adcs    r0, lr, r5\r
+  adcs    r1, ip, r4\r
+  movcs   r5, r0\r
+  movcs   r4, r1\r
+  adcs    r5, r5, r5\r
+  adcs    r4, r4, r4\r
+  adcs    r0, lr, r5\r
+  adcs    r1, ip, r4\r
+  movcs   r5, r0\r
+  movcs   r4, r1\r
+  adcs    r5, r5, r5\r
+  adcs    r4, r4, r4\r
+  adcs    r0, lr, r5\r
+  adcs    r1, ip, r4\r
+  movcs   r5, r0\r
+  movcs   r4, r1\r
+  sub     r2, r2, #4      // 0x4\r
+  adcs    r5, r5, r5\r
+  adcs    r4, r4, r4\r
+  adcs    r0, lr, r5\r
+  adcs    r1, ip, r4\r
+  tst     r2, r2\r
+  movcs   r5, r0\r
+  movcs   r4, r1\r
+  bpl     ASM_PFX(_ll_udiv_big_label3)\r
+ASM_PFX(_ll_udiv_big_label4):\r
+  mov     r1, #0  // 0x0\r
+  mov     r2, r5, lsr r6\r
+  bic     r5, r5, r2, lsl r6\r
+  adcs    r0, r5, r5\r
+  adc     r1, r1, #0      // 0x0\r
+  movs    lr, r3, lsl r6\r
+  mov     r3, r4, lsr r6\r
+  bic     r4, r4, r3, lsl r6\r
+  adc     r1, r1, #0      // 0x0\r
+  adds    r0, r0, lr\r
+  orr     r2, r2, r4, ror r6\r
+  adc     r1, r1, #0      // 0x0\r
+  ldmia   sp!, {r4, r5, r6, pc}\r
+\r
+ASM_PFX(_ll_udiv_ginormous):\r
+  subs    r2, r5, lr\r
+  mov     r1, #0  // 0x0\r
+  sbcs    r3, r4, ip\r
+  adc     r0, r1, r1\r
+  movcc   r2, r5\r
+  movcc   r3, r4\r
+  ldmia   sp!, {r4, r5, r6, pc}\r
+\r
+ASM_PFX(_ll_div0):\r
+  ldmia   sp!, {r4, r5, r6, lr}\r
+  mov     r0, #0  // 0x0\r
+  mov     r1, #0  // 0x0\r
+  b       ASM_PFX(__aeabi_ldiv0)\r
+\r
+ASM_PFX(__aeabi_ldiv0):\r
+  bx      r14\r
+\r
+\r