1#------------------------------------------------------------------------------
2#
3# Copyright (c) 2008 - 2010, Apple Inc. All rights reserved.<BR>
4#
5# This program and the accompanying materials
6# are licensed and made available under the terms and conditions of the BSD License
7# which accompanies this distribution.  The full text of the license may be found at
8# http://opensource.org/licenses/bsd-license.php
9#
10# THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS,
11# WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED.
12#
13#------------------------------------------------------------------------------
14
15#include <AsmMacroIoLib.h>
16
17ASM_FUNC(__ctzsi2)
18  uxth  r3, r0
19  cmp  r3, #0
20  moveq  ip, #16
21  movne  ip, #0
22  @ lr needed for prologue
23  mov  r0, r0, lsr ip
24  tst  r0, #255
25  movne  r3, #0
26  moveq  r3, #8
27  mov  r0, r0, lsr r3
28  tst  r0, #15
29  movne  r1, #0
30  moveq  r1, #4
31  add  r3, r3, ip
32  mov  r0, r0, lsr r1
33  tst  r0, #3
34  movne  r2, #0
35  moveq  r2, #2
36  add  r3, r3, r1
37  mov  r0, r0, lsr r2
38  and  r0, r0, #3
39  add  r2, r3, r2
40  eor  r3, r0, #1
41  mov  r0, r0, lsr #1
42  ands  r3, r3, #1
43  mvnne  r3, #0
44  rsb  r0, r0, #2
45  and  r0, r3, r0
46  add  r0, r2, r0
47  bx  lr
48