Hex Artifact Content
Not logged in

Artifact 82ebdf077adcdf7eafb4242ade0b18646c186254:


0000: 2f 2a 3d 3d 3d 2d 2d 20 75 64 69 76 73 69 33 2e  /*===-- udivsi3.
0010: 53 20 2d 20 33 32 2d 62 69 74 20 75 6e 73 69 67  S - 32-bit unsig
0020: 6e 65 64 20 69 6e 74 65 67 65 72 20 64 69 76 69  ned integer divi
0030: 64 65 20 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  de -------------
0040: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 3d 3d 3d 2f 2f  -----------===//
0050: 0a 20 2a 0a 20 2a 20 20 20 20 20 20 20 20 20 20  . *. *          
0060: 20 20 20 20 20 20 20 20 20 20 20 54 68 65 20 4c             The L
0070: 4c 56 4d 20 43 6f 6d 70 69 6c 65 72 20 49 6e 66  LVM Compiler Inf
0080: 72 61 73 74 72 75 63 74 75 72 65 0a 20 2a 0a 20  rastructure. *. 
0090: 2a 20 54 68 69 73 20 66 69 6c 65 20 69 73 20 64  * This file is d
00a0: 75 61 6c 20 6c 69 63 65 6e 73 65 64 20 75 6e 64  ual licensed und
00b0: 65 72 20 74 68 65 20 4d 49 54 20 61 6e 64 20 74  er the MIT and t
00c0: 68 65 20 55 6e 69 76 65 72 73 69 74 79 20 6f 66  he University of
00d0: 20 49 6c 6c 69 6e 6f 69 73 20 4f 70 65 6e 0a 20   Illinois Open. 
00e0: 2a 20 53 6f 75 72 63 65 20 4c 69 63 65 6e 73 65  * Source License
00f0: 73 2e 20 53 65 65 20 4c 49 43 45 4e 53 45 2e 54  s. See LICENSE.T
0100: 58 54 20 66 6f 72 20 64 65 74 61 69 6c 73 2e 0a  XT for details..
0110: 20 2a 0a 20 2a 3d 3d 3d 2d 2d 2d 2d 2d 2d 2d 2d   *. *===--------
0120: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0130: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0140: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0150: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 3d 3d  --------------==
0160: 3d 2f 2f 0a 20 2a 0a 20 2a 20 54 68 69 73 20 66  =//. *. * This f
0170: 69 6c 65 20 69 6d 70 6c 65 6d 65 6e 74 73 20 74  ile implements t
0180: 68 65 20 5f 5f 75 64 69 76 73 69 33 20 28 33 32  he __udivsi3 (32
0190: 2d 62 69 74 20 75 6e 73 69 67 6e 65 64 20 69 6e  -bit unsigned in
01a0: 74 65 67 65 72 20 64 69 76 69 64 65 29 0a 20 2a  teger divide). *
01b0: 20 66 75 6e 63 74 69 6f 6e 20 66 6f 72 20 74 68   function for th
01c0: 65 20 41 52 4d 20 33 32 2d 62 69 74 20 61 72 63  e ARM 32-bit arc
01d0: 68 69 74 65 63 74 75 72 65 2e 0a 20 2a 0a 20 2a  hitecture.. *. *
01e0: 3d 3d 3d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ===-------------
01f0: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0200: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0210: 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d 2d  ----------------
0220: 2d 2d 2d 2d 2d 2d 2d 2d 2d 3d 3d 3d 2a 2f 0a 0a  ---------===*/..
0230: 23 69 6e 63 6c 75 64 65 20 22 2e 2e 2f 61 73 73  #include "../ass
0240: 65 6d 62 6c 79 2e 68 22 0a 0a 09 2e 73 79 6e 74  embly.h"....synt
0250: 61 78 20 75 6e 69 66 69 65 64 0a 09 2e 74 65 78  ax unified...tex
0260: 74 0a 0a 23 69 66 20 5f 5f 41 52 4d 5f 41 52 43  t..#if __ARM_ARC
0270: 48 5f 49 53 41 5f 54 48 55 4d 42 20 3d 3d 20 32  H_ISA_THUMB == 2
0280: 0a 09 2e 74 68 75 6d 62 0a 23 65 6e 64 69 66 0a  ...thumb.#endif.
0290: 0a 09 2e 70 32 61 6c 69 67 6e 20 32 0a 44 45 46  ...p2align 2.DEF
02a0: 49 4e 45 5f 41 45 41 42 49 5f 46 55 4e 43 54 49  INE_AEABI_FUNCTI
02b0: 4f 4e 5f 41 4c 49 41 53 28 5f 5f 61 65 61 62 69  ON_ALIAS(__aeabi
02c0: 5f 75 69 64 69 76 2c 20 5f 5f 75 64 69 76 73 69  _uidiv, __udivsi
02d0: 33 29 0a 0a 40 20 75 6e 73 69 67 6e 65 64 20 69  3)..@ unsigned i
02e0: 6e 74 20 5f 5f 75 64 69 76 73 69 33 28 75 6e 73  nt __udivsi3(uns
02f0: 69 67 6e 65 64 20 69 6e 74 20 64 69 76 69 64 65  igned int divide
0300: 6e 74 2c 20 75 6e 73 69 67 6e 65 64 20 69 6e 74  nt, unsigned int
0310: 20 64 69 76 69 73 6f 72 29 0a 40 20 20 20 43 61   divisor).@   Ca
0320: 6c 63 75 6c 61 74 65 20 61 6e 64 20 72 65 74 75  lculate and retu
0330: 72 6e 20 74 68 65 20 71 75 6f 74 69 65 6e 74 20  rn the quotient 
0340: 6f 66 20 74 68 65 20 28 75 6e 73 69 67 6e 65 64  of the (unsigned
0350: 29 20 64 69 76 69 73 69 6f 6e 2e 0a 0a 23 69 66  ) division...#if
0360: 20 5f 5f 41 52 4d 5f 41 52 43 48 5f 49 53 41 5f   __ARM_ARCH_ISA_
0370: 54 48 55 4d 42 20 3d 3d 20 32 0a 44 45 46 49 4e  THUMB == 2.DEFIN
0380: 45 5f 43 4f 4d 50 49 4c 45 52 52 54 5f 54 48 55  E_COMPILERRT_THU
0390: 4d 42 5f 46 55 4e 43 54 49 4f 4e 28 5f 5f 75 64  MB_FUNCTION(__ud
03a0: 69 76 73 69 33 29 0a 23 65 6c 73 65 0a 44 45 46  ivsi3).#else.DEF
03b0: 49 4e 45 5f 43 4f 4d 50 49 4c 45 52 52 54 5f 46  INE_COMPILERRT_F
03c0: 55 4e 43 54 49 4f 4e 28 5f 5f 75 64 69 76 73 69  UNCTION(__udivsi
03d0: 33 29 0a 23 65 6e 64 69 66 0a 23 69 66 20 5f 5f  3).#endif.#if __
03e0: 41 52 4d 5f 41 52 43 48 5f 45 58 54 5f 49 44 49  ARM_ARCH_EXT_IDI
03f0: 56 5f 5f 0a 09 74 73 74 20 20 20 20 20 72 31 2c  V__..tst     r1,
0400: 20 72 31 0a 09 62 65 71 20 20 20 20 20 4c 4f 43   r1..beq     LOC
0410: 41 4c 5f 4c 41 42 45 4c 28 64 69 76 62 79 30 29  AL_LABEL(divby0)
0420: 0a 09 75 64 69 76 09 72 30 2c 20 72 30 2c 20 72  ..udiv.r0, r0, r
0430: 31 0a 09 62 78 20 20 09 6c 72 0a 23 65 6c 73 65  1..bx  .lr.#else
0440: 0a 09 63 6d 70 09 72 31 2c 20 23 31 0a 09 62 63  ..cmp.r1, #1..bc
0450: 63 09 4c 4f 43 41 4c 5f 4c 41 42 45 4c 28 64 69  c.LOCAL_LABEL(di
0460: 76 62 79 30 29 0a 09 49 54 28 65 71 29 0a 09 4a  vby0)..IT(eq)..J
0470: 4d 50 63 28 6c 72 2c 20 65 71 29 0a 09 63 6d 70  MPc(lr, eq)..cmp
0480: 09 72 30 2c 20 72 31 0a 09 49 54 54 28 63 63 29  .r0, r1..ITT(cc)
0490: 0a 09 6d 6f 76 63 63 09 72 30 2c 20 23 30 0a 09  ..movcc.r0, #0..
04a0: 4a 4d 50 63 28 6c 72 2c 20 63 63 29 0a 09 2f 2a  JMPc(lr, cc)../*
04b0: 0a 09 20 2a 20 49 6d 70 6c 65 6d 65 6e 74 20 64  .. * Implement d
04c0: 69 76 69 73 69 6f 6e 20 75 73 69 6e 67 20 62 69  ivision using bi
04d0: 6e 61 72 79 20 6c 6f 6e 67 20 64 69 76 69 73 69  nary long divisi
04e0: 6f 6e 20 61 6c 67 6f 72 69 74 68 6d 2e 0a 09 20  on algorithm... 
04f0: 2a 0a 09 20 2a 20 72 30 20 69 73 20 74 68 65 20  *.. * r0 is the 
0500: 6e 75 6d 65 72 61 74 6f 72 2c 20 72 31 20 74 68  numerator, r1 th
0510: 65 20 64 65 6e 6f 6d 69 6e 61 74 6f 72 2e 0a 09  e denominator...
0520: 20 2a 0a 09 20 2a 20 54 68 65 20 63 6f 64 65 20   *.. * The code 
0530: 62 65 66 6f 72 65 20 4a 4d 50 20 63 6f 6d 70 75  before JMP compu
0540: 74 65 73 20 74 68 65 20 63 6f 72 72 65 63 74 20  tes the correct 
0550: 73 68 69 66 74 20 49 2c 20 73 6f 20 74 68 61 74  shift I, so that
0560: 0a 09 20 2a 20 72 30 20 61 6e 64 20 28 72 31 20  .. * r0 and (r1 
0570: 3c 3c 20 49 29 20 68 61 76 65 20 74 68 65 20 68  << I) have the h
0580: 69 67 68 65 73 74 20 62 69 74 20 73 65 74 20 69  ighest bit set i
0590: 6e 20 74 68 65 20 73 61 6d 65 20 70 6f 73 69 74  n the same posit
05a0: 69 6f 6e 2e 0a 09 20 2a 20 41 74 20 74 68 65 20  ion... * At the 
05b0: 74 69 6d 65 20 6f 66 20 4a 4d 50 2c 20 69 70 20  time of JMP, ip 
05c0: 3a 3d 20 2e 4c 64 69 76 30 62 6c 6f 63 6b 20 2d  := .Ldiv0block -
05d0: 20 31 32 20 2a 20 49 2e 0a 09 20 2a 20 54 68 69   12 * I... * Thi
05e0: 73 20 64 65 70 65 6e 64 73 20 6f 6e 20 74 68 65  s depends on the
05f0: 20 66 69 78 65 64 20 69 6e 73 74 72 75 63 74 69   fixed instructi
0600: 6f 6e 20 73 69 7a 65 20 6f 66 20 62 6c 6f 63 6b  on size of block
0610: 2e 0a 09 20 2a 20 46 6f 72 20 41 52 4d 20 6d 6f  ... * For ARM mo
0620: 64 65 2c 20 74 68 69 73 20 69 73 20 31 32 20 42  de, this is 12 B
0630: 79 74 65 73 2c 20 66 6f 72 20 54 48 55 4d 42 20  ytes, for THUMB 
0640: 6d 6f 64 65 20 31 34 20 42 79 74 65 73 2e 0a 09  mode 14 Bytes...
0650: 20 2a 0a 09 20 2a 20 62 6c 6f 63 6b 28 73 68 69   *.. * block(shi
0660: 66 74 29 20 69 6d 70 6c 65 6d 65 6e 74 73 20 74  ft) implements t
0670: 68 65 20 74 65 73 74 2d 61 6e 64 2d 75 70 64 61  he test-and-upda
0680: 74 65 2d 71 75 6f 74 69 65 6e 74 20 63 6f 72 65  te-quotient core
0690: 2e 0a 09 20 2a 20 49 74 20 61 73 73 75 6d 65 73  ... * It assumes
06a0: 20 28 72 30 20 3c 3c 20 73 68 69 66 74 29 20 63   (r0 << shift) c
06b0: 61 6e 20 62 65 20 63 6f 6d 70 75 74 65 64 20 77  an be computed w
06c0: 69 74 68 6f 75 74 20 6f 76 65 72 66 6c 6f 77 20  ithout overflow 
06d0: 61 6e 64 0a 09 20 2a 20 74 68 61 74 20 28 72 30  and.. * that (r0
06e0: 20 3c 3c 20 73 68 69 66 74 29 20 3c 20 32 20 2a   << shift) < 2 *
06f0: 20 72 31 2e 20 54 68 65 20 71 75 6f 74 69 65 6e   r1. The quotien
0700: 74 20 69 73 20 73 74 6f 72 65 64 20 69 6e 20 72  t is stored in r
0710: 33 2e 0a 09 20 2a 2f 0a 0a 23 20 20 69 66 64 65  3... */..#  ifde
0720: 66 20 5f 5f 41 52 4d 5f 46 45 41 54 55 52 45 5f  f __ARM_FEATURE_
0730: 43 4c 5a 0a 09 63 6c 7a 09 69 70 2c 20 72 30 0a  CLZ..clz.ip, r0.
0740: 09 63 6c 7a 09 72 33 2c 20 72 31 0a 09 2f 2a 20  .clz.r3, r1../* 
0750: 72 30 20 3e 3d 20 72 31 20 69 6d 70 6c 69 65 73  r0 >= r1 implies
0760: 20 63 6c 7a 28 72 30 29 20 3c 3d 20 63 6c 7a 28   clz(r0) <= clz(
0770: 72 31 29 2c 20 73 6f 20 69 70 20 3c 3d 20 72 33  r1), so ip <= r3
0780: 2e 20 2a 2f 0a 09 73 75 62 09 72 33 2c 20 72 33  . */..sub.r3, r3
0790: 2c 20 69 70 0a 23 20 20 20 20 69 66 20 5f 5f 41  , ip.#    if __A
07a0: 52 4d 5f 41 52 43 48 5f 49 53 41 5f 54 48 55 4d  RM_ARCH_ISA_THUM
07b0: 42 20 3d 3d 20 32 0a 09 61 64 72 09 69 70 2c 20  B == 2..adr.ip, 
07c0: 4c 4f 43 41 4c 5f 4c 41 42 45 4c 28 64 69 76 30  LOCAL_LABEL(div0
07d0: 62 6c 6f 63 6b 29 20 2b 20 31 0a 09 73 75 62 09  block) + 1..sub.
07e0: 69 70 2c 20 69 70 2c 20 72 33 2c 20 6c 73 6c 20  ip, ip, r3, lsl 
07f0: 23 31 0a 23 20 20 20 20 65 6c 73 65 0a 09 61 64  #1.#    else..ad
0800: 72 09 69 70 2c 20 4c 4f 43 41 4c 5f 4c 41 42 45  r.ip, LOCAL_LABE
0810: 4c 28 64 69 76 30 62 6c 6f 63 6b 29 0a 23 20 20  L(div0block).#  
0820: 20 20 65 6e 64 69 66 0a 09 73 75 62 09 69 70 2c    endif..sub.ip,
0830: 20 69 70 2c 20 72 33 2c 20 6c 73 6c 20 23 32 0a   ip, r3, lsl #2.
0840: 09 73 75 62 09 69 70 2c 20 69 70 2c 20 72 33 2c  .sub.ip, ip, r3,
0850: 20 6c 73 6c 20 23 33 0a 09 6d 6f 76 09 72 33 2c   lsl #3..mov.r3,
0860: 20 23 30 0a 09 62 78 09 69 70 0a 23 20 20 65 6c   #0..bx.ip.#  el
0870: 73 65 0a 23 20 20 20 20 69 66 20 5f 5f 41 52 4d  se.#    if __ARM
0880: 5f 41 52 43 48 5f 49 53 41 5f 54 48 55 4d 42 20  _ARCH_ISA_THUMB 
0890: 3d 3d 20 32 0a 23 20 20 20 20 65 72 72 6f 72 20  == 2.#    error 
08a0: 54 48 55 4d 42 20 6d 6f 64 65 20 72 65 71 75 69  THUMB mode requi
08b0: 72 65 73 20 43 4c 5a 20 6f 72 20 55 44 49 56 0a  res CLZ or UDIV.
08c0: 23 20 20 20 20 65 6e 64 69 66 0a 09 6d 6f 76 09  #    endif..mov.
08d0: 72 32 2c 20 72 30 0a 09 61 64 72 09 69 70 2c 20  r2, r0..adr.ip, 
08e0: 4c 4f 43 41 4c 5f 4c 41 42 45 4c 28 64 69 76 30  LOCAL_LABEL(div0
08f0: 62 6c 6f 63 6b 29 0a 0a 09 6c 73 72 09 72 33 2c  block)...lsr.r3,
0900: 20 72 32 2c 20 23 31 36 0a 09 63 6d 70 09 72 33   r2, #16..cmp.r3
0910: 2c 20 72 31 0a 09 6d 6f 76 68 73 09 72 32 2c 20  , r1..movhs.r2, 
0920: 72 33 0a 09 73 75 62 68 73 09 69 70 2c 20 69 70  r3..subhs.ip, ip
0930: 2c 20 23 28 31 36 20 2a 20 31 32 29 0a 0a 09 6c  , #(16 * 12)...l
0940: 73 72 09 72 33 2c 20 72 32 2c 20 23 38 0a 09 63  sr.r3, r2, #8..c
0950: 6d 70 09 72 33 2c 20 72 31 0a 09 6d 6f 76 68 73  mp.r3, r1..movhs
0960: 09 72 32 2c 20 72 33 0a 09 73 75 62 68 73 09 69  .r2, r3..subhs.i
0970: 70 2c 20 69 70 2c 20 23 28 38 20 2a 20 31 32 29  p, ip, #(8 * 12)
0980: 0a 0a 09 6c 73 72 09 72 33 2c 20 72 32 2c 20 23  ...lsr.r3, r2, #
0990: 34 0a 09 63 6d 70 09 72 33 2c 20 72 31 0a 09 6d  4..cmp.r3, r1..m
09a0: 6f 76 68 73 09 72 32 2c 20 72 33 0a 09 73 75 62  ovhs.r2, r3..sub
09b0: 68 73 09 69 70 2c 20 23 28 34 20 2a 20 31 32 29  hs.ip, #(4 * 12)
09c0: 0a 0a 09 6c 73 72 09 72 33 2c 20 72 32 2c 20 23  ...lsr.r3, r2, #
09d0: 32 0a 09 63 6d 70 09 72 33 2c 20 72 31 0a 09 6d  2..cmp.r3, r1..m
09e0: 6f 76 68 73 09 72 32 2c 20 72 33 0a 09 73 75 62  ovhs.r2, r3..sub
09f0: 68 73 09 69 70 2c 20 69 70 2c 20 23 28 32 20 2a  hs.ip, ip, #(2 *
0a00: 20 31 32 29 0a 0a 09 2f 2a 20 4c 61 73 74 20 62   12).../* Last b
0a10: 6c 6f 63 6b 2c 20 6e 6f 20 6e 65 65 64 20 74 6f  lock, no need to
0a20: 20 75 70 64 61 74 65 20 72 32 20 6f 72 20 72 33   update r2 or r3
0a30: 2e 20 2a 2f 0a 09 63 6d 70 09 72 31 2c 20 72 32  . */..cmp.r1, r2
0a40: 2c 20 6c 73 72 20 23 31 0a 09 73 75 62 6c 73 09  , lsr #1..subls.
0a50: 69 70 2c 20 69 70 2c 20 23 28 31 20 2a 20 31 32  ip, ip, #(1 * 12
0a60: 29 0a 0a 09 6d 6f 76 09 72 33 2c 20 23 30 0a 0a  )...mov.r3, #0..
0a70: 09 4a 4d 50 28 69 70 29 0a 23 20 20 65 6e 64 69  .JMP(ip).#  endi
0a80: 66 0a 0a 23 64 65 66 69 6e 65 09 49 4d 4d 09 23  f..#define.IMM.#
0a90: 0a 0a 23 64 65 66 69 6e 65 20 62 6c 6f 63 6b 28  ..#define block(
0aa0: 73 68 69 66 74 29 20 20 20 20 20 20 20 20 20 20  shift)          
0ab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0ac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0ad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0ae0: 20 5c 0a 09 63 6d 70 09 72 30 2c 20 72 31 2c 20   \..cmp.r0, r1, 
0af0: 6c 73 6c 20 49 4d 4d 20 73 68 69 66 74 3b 20 20  lsl IMM shift;  
0b00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0b20: 20 20 20 20 20 20 20 5c 0a 09 49 54 54 28 68 73         \..ITT(hs
0b30: 29 3b 20 20 20 20 20 20 20 20 20 20 20 20 20 20  );              
0b40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0b60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0b70: 20 5c 0a 09 57 49 44 45 28 61 64 64 68 73 29 09   \..WIDE(addhs).
0b80: 72 33 2c 20 72 33 2c 20 49 4d 4d 20 28 31 20 3c  r3, r3, IMM (1 <
0b90: 3c 20 73 68 69 66 74 29 3b 20 20 20 20 20 20 20  < shift);       
0ba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0bb0: 20 20 20 20 20 20 20 5c 0a 09 57 49 44 45 28 73         \..WIDE(s
0bc0: 75 62 68 73 29 09 72 30 2c 20 72 30 2c 20 72 31  ubhs).r0, r0, r1
0bd0: 2c 20 6c 73 6c 20 49 4d 4d 20 73 68 69 66 74 0a  , lsl IMM shift.
0be0: 0a 09 62 6c 6f 63 6b 28 33 31 29 0a 09 62 6c 6f  ..block(31)..blo
0bf0: 63 6b 28 33 30 29 0a 09 62 6c 6f 63 6b 28 32 39  ck(30)..block(29
0c00: 29 0a 09 62 6c 6f 63 6b 28 32 38 29 0a 09 62 6c  )..block(28)..bl
0c10: 6f 63 6b 28 32 37 29 0a 09 62 6c 6f 63 6b 28 32  ock(27)..block(2
0c20: 36 29 0a 09 62 6c 6f 63 6b 28 32 35 29 0a 09 62  6)..block(25)..b
0c30: 6c 6f 63 6b 28 32 34 29 0a 09 62 6c 6f 63 6b 28  lock(24)..block(
0c40: 32 33 29 0a 09 62 6c 6f 63 6b 28 32 32 29 0a 09  23)..block(22)..
0c50: 62 6c 6f 63 6b 28 32 31 29 0a 09 62 6c 6f 63 6b  block(21)..block
0c60: 28 32 30 29 0a 09 62 6c 6f 63 6b 28 31 39 29 0a  (20)..block(19).
0c70: 09 62 6c 6f 63 6b 28 31 38 29 0a 09 62 6c 6f 63  .block(18)..bloc
0c80: 6b 28 31 37 29 0a 09 62 6c 6f 63 6b 28 31 36 29  k(17)..block(16)
0c90: 0a 09 62 6c 6f 63 6b 28 31 35 29 0a 09 62 6c 6f  ..block(15)..blo
0ca0: 63 6b 28 31 34 29 0a 09 62 6c 6f 63 6b 28 31 33  ck(14)..block(13
0cb0: 29 0a 09 62 6c 6f 63 6b 28 31 32 29 0a 09 62 6c  )..block(12)..bl
0cc0: 6f 63 6b 28 31 31 29 0a 09 62 6c 6f 63 6b 28 31  ock(11)..block(1
0cd0: 30 29 0a 09 62 6c 6f 63 6b 28 39 29 0a 09 62 6c  0)..block(9)..bl
0ce0: 6f 63 6b 28 38 29 0a 09 62 6c 6f 63 6b 28 37 29  ock(8)..block(7)
0cf0: 0a 09 62 6c 6f 63 6b 28 36 29 0a 09 62 6c 6f 63  ..block(6)..bloc
0d00: 6b 28 35 29 0a 09 62 6c 6f 63 6b 28 34 29 0a 09  k(5)..block(4)..
0d10: 62 6c 6f 63 6b 28 33 29 0a 09 62 6c 6f 63 6b 28  block(3)..block(
0d20: 32 29 0a 09 62 6c 6f 63 6b 28 31 29 0a 4c 4f 43  2)..block(1).LOC
0d30: 41 4c 5f 4c 41 42 45 4c 28 64 69 76 30 62 6c 6f  AL_LABEL(div0blo
0d40: 63 6b 29 3a 0a 09 62 6c 6f 63 6b 28 30 29 0a 0a  ck):..block(0)..
0d50: 09 6d 6f 76 09 72 30 2c 20 72 33 0a 09 4a 4d 50  .mov.r0, r3..JMP
0d60: 28 6c 72 29 0a 23 65 6e 64 69 66 20 2f 2a 20 5f  (lr).#endif /* _
0d70: 5f 41 52 4d 5f 41 52 43 48 5f 45 58 54 5f 49 44  _ARM_ARCH_EXT_ID
0d80: 49 56 5f 5f 20 2a 2f 0a 0a 4c 4f 43 41 4c 5f 4c  IV__ */..LOCAL_L
0d90: 41 42 45 4c 28 64 69 76 62 79 30 29 3a 0a 09 6d  ABEL(divby0):..m
0da0: 6f 76 09 72 30 2c 20 23 30 0a 23 69 66 64 65 66  ov.r0, #0.#ifdef
0db0: 20 5f 5f 41 52 4d 5f 45 41 42 49 5f 5f 0a 09 62   __ARM_EABI__..b
0dc0: 09 5f 5f 61 65 61 62 69 5f 69 64 69 76 30 0a 23  .__aeabi_idiv0.#
0dd0: 65 6c 73 65 0a 09 4a 4d 50 28 6c 72 29 0a 23 65  else..JMP(lr).#e
0de0: 6e 64 69 66 0a 0a 45 4e 44 5f 43 4f 4d 50 49 4c  ndif..END_COMPIL
0df0: 45 52 52 54 5f 46 55 4e 43 54 49 4f 4e 28 5f 5f  ERRT_FUNCTION(__
0e00: 75 64 69 76 73 69 33 29 0a 0a 4e 4f 5f 45 58 45  udivsi3)..NO_EXE
0e10: 43 5f 53 54 41 43 4b 5f 44 49 52 45 43 54 49 56  C_STACK_DIRECTIV
0e20: 45 0a 0a                                         E..