]> git.proxmox.com Git - mirror_edk2.git/blob - ArmPkg/Library/CompilerIntrinsicsLib/Arm/ctzsi2.S
5b21ec749e4ccb1b067e8c3ba407edf82c433595
[mirror_edk2.git] / ArmPkg / Library / CompilerIntrinsicsLib / Arm / ctzsi2.S
1 #------------------------------------------------------------------------------
2 #
3 # Copyright (c) 2008 - 2010, Apple Inc. All rights reserved.<BR>
4 #
5 # SPDX-License-Identifier: BSD-2-Clause-Patent
6 #
7 #------------------------------------------------------------------------------
8
9 #include <AsmMacroIoLib.h>
10
11 ASM_FUNC(__ctzsi2)
12 uxth r3, r0
13 cmp r3, #0
14 moveq ip, #16
15 movne ip, #0
16 @ lr needed for prologue
17 mov r0, r0, lsr ip
18 tst r0, #255
19 movne r3, #0
20 moveq r3, #8
21 mov r0, r0, lsr r3
22 tst r0, #15
23 movne r1, #0
24 moveq r1, #4
25 add r3, r3, ip
26 mov r0, r0, lsr r1
27 tst r0, #3
28 movne r2, #0
29 moveq r2, #2
30 add r3, r3, r1
31 mov r0, r0, lsr r2
32 and r0, r0, #3
33 add r2, r3, r2
34 eor r3, r0, #1
35 mov r0, r0, lsr #1
36 ands r3, r3, #1
37 mvnne r3, #0
38 rsb r0, r0, #2
39 and r0, r3, r0
40 add r0, r2, r0
41 bx lr