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: aeabi_cdcmp.S
//===-- aeabi_cdcmp.S - EABI cdcmp* implementation ------------------------===// // // 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 // //===----------------------------------------------------------------------===// #include "../assembly.h" #if __BYTE_ORDER__ != __ORDER_LITTLE_ENDIAN__ #error big endian support not implemented #endif #define APSR_Z (1 << 30) #define APSR_C (1 << 29) // void __aeabi_cdcmpeq(double a, double b) { // if (isnan(a) || isnan(b)) { // Z = 0; C = 1; // } else { // __aeabi_cdcmple(a, b); // } // } .syntax unified .p2align 2 DEFINE_COMPILERRT_FUNCTION(__aeabi_cdcmpeq) push {r0-r3, lr} bl __aeabi_cdcmpeq_check_nan cmp r0, #1 #if defined(USE_THUMB_1) beq 1f // NaN has been ruled out, so __aeabi_cdcmple can't trap mov r0, sp ldm r0, {r0-r3} bl __aeabi_cdcmple pop {r0-r3, pc} 1: // Z = 0, C = 1 movs r0, #0xF lsls r0, r0, #31 pop {r0-r3, pc} #else pop {r0-r3, lr} // NaN has been ruled out, so __aeabi_cdcmple can't trap // Use "it ne" + unconditional branch to guarantee a supported relocation if // __aeabi_cdcmple is in a different section for some builds. IT(ne) bne __aeabi_cdcmple #if defined(USE_THUMB_2) mov ip, #APSR_C msr APSR_nzcvq, ip #else msr APSR_nzcvq, #APSR_C #endif JMP(lr) #endif END_COMPILERRT_FUNCTION(__aeabi_cdcmpeq) // void __aeabi_cdcmple(double a, double b) { // if (__aeabi_dcmplt(a, b)) { // Z = 0; C = 0; // } else if (__aeabi_dcmpeq(a, b)) { // Z = 1; C = 1; // } else { // Z = 0; C = 1; // } // } .syntax unified .p2align 2 DEFINE_COMPILERRT_FUNCTION(__aeabi_cdcmple) // Per the RTABI, this function must preserve r0-r11. // Save lr in the same instruction for compactness push {r0-r3, lr} bl __aeabi_dcmplt cmp r0, #1 #if defined(USE_THUMB_1) bne 1f // Z = 0, C = 0 movs r0, #1 lsls r0, r0, #1 pop {r0-r3, pc} 1: mov r0, sp ldm r0, {r0-r3} bl __aeabi_dcmpeq cmp r0, #1 bne 2f // Z = 1, C = 1 movs r0, #2 lsls r0, r0, #31 pop {r0-r3, pc} 2: // Z = 0, C = 1 movs r0, #0xF lsls r0, r0, #31 pop {r0-r3, pc} #else ITT(eq) moveq ip, #0 beq 1f ldm sp, {r0-r3} bl __aeabi_dcmpeq cmp r0, #1 ITE(eq) moveq ip, #(APSR_C | APSR_Z) movne ip, #(APSR_C) 1: msr APSR_nzcvq, ip pop {r0-r3} POP_PC() #endif END_COMPILERRT_FUNCTION(__aeabi_cdcmple) // int __aeabi_cdrcmple(double a, double b) { // return __aeabi_cdcmple(b, a); // } .syntax unified .p2align 2 DEFINE_COMPILERRT_FUNCTION(__aeabi_cdrcmple) // Swap r0 and r2 mov ip, r0 mov r0, r2 mov r2, ip // Swap r1 and r3 mov ip, r1 mov r1, r3 mov r3, ip b __aeabi_cdcmple END_COMPILERRT_FUNCTION(__aeabi_cdrcmple) NO_EXEC_STACK_DIRECTIVE
Upload File
Create Folder