003 File Manager
Current Path:
/usr/src/contrib/llvm-project/compiler-rt/lib/builtins/arm
usr
/
src
/
contrib
/
llvm-project
/
compiler-rt
/
lib
/
builtins
/
arm
/
📁
..
📄
adddf3vfp.S
(1008 B)
📄
addsf3.S
(6.89 KB)
📄
addsf3vfp.S
(989 B)
📄
aeabi_cdcmp.S
(3.25 KB)
📄
aeabi_cdcmpeq_check_nan.c
(570 B)
📄
aeabi_cfcmp.S
(3.16 KB)
📄
aeabi_cfcmpeq_check_nan.c
(568 B)
📄
aeabi_dcmp.S
(1.83 KB)
📄
aeabi_div0.c
(1.43 KB)
📄
aeabi_drsub.c
(541 B)
📄
aeabi_fcmp.S
(1.83 KB)
📄
aeabi_frsub.c
(541 B)
📄
aeabi_idivmod.S
(1.42 KB)
📄
aeabi_ldivmod.S
(1.23 KB)
📄
aeabi_memcmp.S
(883 B)
📄
aeabi_memcpy.S
(883 B)
📄
aeabi_memmove.S
(867 B)
📄
aeabi_memset.S
(1.39 KB)
📄
aeabi_uidivmod.S
(1.57 KB)
📄
aeabi_uldivmod.S
(1.21 KB)
📄
bswapdi2.S
(1.07 KB)
📄
bswapsi2.S
(856 B)
📄
chkstk.S
(1.02 KB)
📄
clzdi2.S
(1.96 KB)
📄
clzsi2.S
(1.67 KB)
📄
comparesf2.S
(7.21 KB)
📄
divdf3vfp.S
(1006 B)
📄
divmodsi4.S
(2.07 KB)
📄
divsf3vfp.S
(1002 B)
📄
divsi3.S
(2.21 KB)
📄
eqdf2vfp.S
(1023 B)
📄
eqsf2vfp.S
(1.01 KB)
📄
extendsfdf2vfp.S
(1.01 KB)
📄
fixdfsivfp.S
(1009 B)
📄
fixsfsivfp.S
(996 B)
📄
fixunsdfsivfp.S
(1.05 KB)
📄
fixunssfsivfp.S
(1.05 KB)
📄
floatsidfvfp.S
(1016 B)
📄
floatsisfvfp.S
(1014 B)
📄
floatunssidfvfp.S
(1.01 KB)
📄
floatunssisfvfp.S
(1.01 KB)
📄
fp_mode.c
(1.56 KB)
📄
gedf2vfp.S
(1.03 KB)
📄
gesf2vfp.S
(1.02 KB)
📄
gtdf2vfp.S
(1.01 KB)
📄
gtsf2vfp.S
(1019 B)
📄
ledf2vfp.S
(1.01 KB)
📄
lesf2vfp.S
(1.01 KB)
📄
ltdf2vfp.S
(1.01 KB)
📄
ltsf2vfp.S
(1 KB)
📄
modsi3.S
(1.7 KB)
📄
muldf3vfp.S
(1.01 KB)
📄
mulsf3vfp.S
(1005 B)
📄
nedf2vfp.S
(1.02 KB)
📄
negdf2vfp.S
(883 B)
📄
negsf2vfp.S
(868 B)
📄
nesf2vfp.S
(1.01 KB)
📄
restore_vfp_d8_d15_regs.S
(1.23 KB)
📄
save_vfp_d8_d15_regs.S
(1.23 KB)
📄
softfloat-alias.list
(580 B)
📄
subdf3vfp.S
(1.02 KB)
📄
subsf3vfp.S
(1 KB)
📄
switch16.S
(1.9 KB)
📄
switch32.S
(1.9 KB)
📄
switch8.S
(1.75 KB)
📄
switchu8.S
(1.74 KB)
📄
sync-ops.h
(3.7 KB)
📄
sync_fetch_and_add_4.S
(696 B)
📄
sync_fetch_and_add_8.S
(769 B)
📄
sync_fetch_and_and_4.S
(655 B)
📄
sync_fetch_and_and_8.S
(768 B)
📄
sync_fetch_and_max_4.S
(665 B)
📄
sync_fetch_and_max_8.S
(769 B)
📄
sync_fetch_and_min_4.S
(664 B)
📄
sync_fetch_and_min_8.S
(769 B)
📄
sync_fetch_and_nand_4.S
(658 B)
📄
sync_fetch_and_nand_8.S
(772 B)
📄
sync_fetch_and_or_4.S
(652 B)
📄
sync_fetch_and_or_8.S
(765 B)
📄
sync_fetch_and_sub_4.S
(696 B)
📄
sync_fetch_and_sub_8.S
(769 B)
📄
sync_fetch_and_umax_4.S
(669 B)
📄
sync_fetch_and_umax_8.S
(773 B)
📄
sync_fetch_and_umin_4.S
(668 B)
📄
sync_fetch_and_umin_8.S
(773 B)
📄
sync_fetch_and_xor_4.S
(655 B)
📄
sync_fetch_and_xor_8.S
(768 B)
📄
sync_synchronize.S
(973 B)
📄
truncdfsf2vfp.S
(1.02 KB)
📄
udivmodsi4.S
(3.75 KB)
📄
udivsi3.S
(5.8 KB)
📄
umodsi3.S
(3.24 KB)
📄
unorddf2vfp.S
(1.02 KB)
📄
unordsf2vfp.S
(1.02 KB)
Editing: clzdi2.S
//===-- clzdi2.c - Implement __clzdi2 -------------------------------------===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===----------------------------------------------------------------------===// // // This file implements count leading zeros for 64bit arguments. // //===----------------------------------------------------------------------===// #include "../assembly.h" .syntax unified .text DEFINE_CODE_STATE .p2align 2 DEFINE_COMPILERRT_FUNCTION(__clzdi2) #ifdef __ARM_FEATURE_CLZ #ifdef __ARMEB__ cmp r0, 0 itee ne clzne r0, r0 clzeq r0, r1 addeq r0, r0, 32 #else cmp r1, 0 itee ne clzne r0, r1 clzeq r0, r0 addeq r0, r0, 32 #endif JMP(lr) #else // Assumption: n != 0 // r0: n // r1: upper half of n, overwritten after check // r1: count of leading zeros in n + 1 // r2: scratch register for shifted r0 #ifdef __ARMEB__ cmp r0, 0 moveq r0, r1 #else cmp r1, 0 movne r0, r1 #endif movne r1, 1 moveq r1, 33 // Basic block: // if ((r0 >> SHIFT) == 0) // r1 += SHIFT; // else // r0 >>= SHIFT; // for descending powers of two as SHIFT. #define BLOCK(shift) \ lsrs r2, r0, shift; \ movne r0, r2; \ addeq r1, shift \ BLOCK(16) BLOCK(8) BLOCK(4) BLOCK(2) // The basic block invariants at this point are (r0 >> 2) == 0 and // r0 != 0. This means 1 <= r0 <= 3 and 0 <= (r0 >> 1) <= 1. // // r0 | (r0 >> 1) == 0 | (r0 >> 1) == 1 | -(r0 >> 1) | 1 - (r0 >> 1) // ---+----------------+----------------+------------+-------------- // 1 | 1 | 0 | 0 | 1 // 2 | 0 | 1 | -1 | 0 // 3 | 0 | 1 | -1 | 0 // // The r1's initial value of 1 compensates for the 1 here. sub r0, r1, r0, lsr #1 JMP(lr) #endif // __ARM_FEATURE_CLZ END_COMPILERRT_FUNCTION(__clzdi2) NO_EXEC_STACK_DIRECTIVE
Upload File
Create Folder