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 17 ASM_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