Index: compiler-rt/trunk/lib/builtins/CMakeLists.txt =================================================================== --- compiler-rt/trunk/lib/builtins/CMakeLists.txt +++ compiler-rt/trunk/lib/builtins/CMakeLists.txt @@ -150,7 +150,8 @@ udivti3.c umoddi3.c umodsi3.c - umodti3.c) + umodti3.c +) set(GENERIC_TF_SOURCES comparetf2.c @@ -170,7 +171,8 @@ floatuntitf.c multc3.c trunctfdf2.c - trunctfsf2.c) + trunctfsf2.c +) option(COMPILER_RT_EXCLUDE_ATOMIC_BUILTIN "Skip the atomic builtin (these should normally be provided by a shared library)" @@ -179,15 +181,17 @@ if(NOT FUCHSIA AND NOT COMPILER_RT_BAREMETAL_BUILD) set(GENERIC_SOURCES ${GENERIC_SOURCES} - emutls.c + emutls.c enable_execute_stack.c - eprintf.c) + eprintf.c + ) endif() if(COMPILER_RT_HAS_ATOMIC_KEYWORD AND NOT COMPILER_RT_EXCLUDE_ATOMIC_BUILTIN) set(GENERIC_SOURCES ${GENERIC_SOURCES} - atomic.c) + atomic.c + ) endif() if(APPLE) @@ -198,19 +202,22 @@ atomic_flag_test_and_set.c atomic_flag_test_and_set_explicit.c atomic_signal_fence.c - atomic_thread_fence.c) + atomic_thread_fence.c + ) endif() if (HAVE_UNWIND_H) set(GENERIC_SOURCES - ${GENERIC_SOURCES} - gcc_personality_v0.c) + ${GENERIC_SOURCES} + gcc_personality_v0.c + ) endif () if (NOT FUCHSIA) set(GENERIC_SOURCES ${GENERIC_SOURCES} - clear_cache.c) + clear_cache.c + ) endif() # These sources work on all x86 variants, but only x86 variants. @@ -232,54 +239,59 @@ if (NOT MSVC) set(x86_64_SOURCES - x86_64/floatdidf.c - x86_64/floatdisf.c - x86_64/floatdixf.c - x86_64/floatundidf.S - x86_64/floatundisf.S - x86_64/floatundixf.S) + x86_64/floatdidf.c + x86_64/floatdisf.c + x86_64/floatdixf.c + x86_64/floatundidf.S + x86_64/floatundisf.S + x86_64/floatundixf.S + ) filter_builtin_sources(x86_64_SOURCES EXCLUDE x86_64_SOURCES "${x86_64_SOURCES};${GENERIC_SOURCES}") set(x86_64h_SOURCES ${x86_64_SOURCES}) if (WIN32) set(x86_64_SOURCES - ${x86_64_SOURCES} - x86_64/chkstk.S - x86_64/chkstk2.S) + ${x86_64_SOURCES} + x86_64/chkstk.S + x86_64/chkstk2.S + ) endif() set(i386_SOURCES - i386/ashldi3.S - i386/ashrdi3.S - i386/divdi3.S - i386/floatdidf.S - i386/floatdisf.S - i386/floatdixf.S - i386/floatundidf.S - i386/floatundisf.S - i386/floatundixf.S - i386/lshrdi3.S - i386/moddi3.S - i386/muldi3.S - i386/udivdi3.S - i386/umoddi3.S) + i386/ashldi3.S + i386/ashrdi3.S + i386/divdi3.S + i386/floatdidf.S + i386/floatdisf.S + i386/floatdixf.S + i386/floatundidf.S + i386/floatundisf.S + i386/floatundixf.S + i386/lshrdi3.S + i386/moddi3.S + i386/muldi3.S + i386/udivdi3.S + i386/umoddi3.S + ) filter_builtin_sources(i386_SOURCES EXCLUDE i386_SOURCES "${i386_SOURCES};${GENERIC_SOURCES}") if (WIN32) set(i386_SOURCES - ${i386_SOURCES} - i386/chkstk.S - i386/chkstk2.S) + ${i386_SOURCES} + i386/chkstk.S + i386/chkstk2.S + ) endif() else () # MSVC # Use C versions of functions when building on MSVC # MSVC's assembler takes Intel syntax, not AT&T syntax. # Also use only MSVC compilable builtin implementations. set(x86_64_SOURCES - x86_64/floatdidf.c - x86_64/floatdisf.c - x86_64/floatdixf.c - ${GENERIC_SOURCES}) + x86_64/floatdidf.c + x86_64/floatdisf.c + x86_64/floatdixf.c + ${GENERIC_SOURCES} + ) set(x86_64h_SOURCES ${x86_64_SOURCES}) set(i386_SOURCES ${GENERIC_SOURCES}) endif () # if (NOT MSVC) @@ -320,7 +332,8 @@ arm/sync_fetch_and_xor_8.S arm/udivmodsi4.S arm/udivsi3.S - arm/umodsi3.S) + arm/umodsi3.S +) filter_builtin_sources(arm_SOURCES EXCLUDE arm_SOURCES "${arm_SOURCES};${GENERIC_SOURCES}") set(thumb1_SOURCES @@ -328,7 +341,8 @@ arm/udivsi3.S arm/comparesf2.S arm/addsf3.S - ${GENERIC_SOURCES}) + ${GENERIC_SOURCES} +) set(arm_EABI_SOURCES arm/aeabi_cdcmp.S @@ -347,16 +361,19 @@ arm/aeabi_memmove.S arm/aeabi_memset.S arm/aeabi_uidivmod.S - arm/aeabi_uldivmod.S) + arm/aeabi_uldivmod.S +) set(arm_Thumb1_JT_SOURCES arm/switch16.S arm/switch32.S arm/switch8.S - arm/switchu8.S) + arm/switchu8.S +) set(arm_Thumb1_SjLj_EH_SOURCES arm/restore_vfp_d8_d15_regs.S - arm/save_vfp_d8_d15_regs.S) + arm/save_vfp_d8_d15_regs.S +) set(arm_Thumb1_VFPv2_SOURCES arm/adddf3vfp.S arm/addsf3vfp.S @@ -391,62 +408,70 @@ arm/subsf3vfp.S arm/truncdfsf2vfp.S arm/unorddf2vfp.S - arm/unordsf2vfp.S) + arm/unordsf2vfp.S +) set(arm_Thumb1_icache_SOURCES - arm/sync_synchronize.S) + arm/sync_synchronize.S +) set(arm_Thumb1_SOURCES ${arm_Thumb1_JT_SOURCES} ${arm_Thumb1_SjLj_EH_SOURCES} ${arm_Thumb1_VFPv2_SOURCES} - ${arm_Thumb1_icache_SOURCES}) + ${arm_Thumb1_icache_SOURCES} +) if(MINGW) set(arm_SOURCES - arm/aeabi_idivmod.S - arm/aeabi_ldivmod.S - arm/aeabi_uidivmod.S - arm/aeabi_uldivmod.S - arm/chkstk.S - divmoddi4.c - divmodsi4.c - divdi3.c - divsi3.c - fixdfdi.c - fixsfdi.c - fixunsdfdi.c - fixunssfdi.c - floatdidf.c - floatdisf.c - floatundidf.c - floatundisf.c - mingw_fixfloat.c - moddi3.c - udivmoddi4.c - udivmodsi4.c - udivsi3.c - umoddi3.c - emutls.c) + arm/aeabi_idivmod.S + arm/aeabi_ldivmod.S + arm/aeabi_uidivmod.S + arm/aeabi_uldivmod.S + arm/chkstk.S + divmoddi4.c + divmodsi4.c + divdi3.c + divsi3.c + fixdfdi.c + fixsfdi.c + fixunsdfdi.c + fixunssfdi.c + floatdidf.c + floatdisf.c + floatundidf.c + floatundisf.c + mingw_fixfloat.c + moddi3.c + udivmoddi4.c + udivmodsi4.c + udivsi3.c + umoddi3.c + emutls.c + ) filter_builtin_sources(arm_SOURCES EXCLUDE arm_SOURCES "${arm_SOURCES};${GENERIC_SOURCES}") elseif(NOT WIN32) # TODO the EABI sources should only be added to EABI targets set(arm_SOURCES ${arm_SOURCES} ${arm_EABI_SOURCES} - ${arm_Thumb1_SOURCES}) + ${arm_Thumb1_SOURCES} + ) set(thumb1_SOURCES ${thumb1_SOURCES} - ${arm_EABI_SOURCES}) + ${arm_EABI_SOURCES} + ) endif() set(aarch64_SOURCES ${GENERIC_TF_SOURCES} - ${GENERIC_SOURCES}) + ${GENERIC_SOURCES} +) if (MINGW) set(aarch64_SOURCES - ${aarch64_SOURCES} - aarch64/chkstk.S) + ${aarch64_SOURCES} + aarch64/chkstk.S + ) endif() set(armhf_SOURCES ${arm_SOURCES}) @@ -492,7 +517,8 @@ hexagon/udivmodsi4.S hexagon/udivsi3.S hexagon/umoddi3.S - hexagon/umodsi3.S) + hexagon/umodsi3.S +) set(mips_SOURCES ${GENERIC_SOURCES}) @@ -515,21 +541,25 @@ ppc/gcc_qmul.c ppc/gcc_qsub.c ppc/multc3.c - ${GENERIC_SOURCES}) + ${GENERIC_SOURCES} +) set(powerpc64le_SOURCES ${powerpc64_SOURCES}) set(riscv_SOURCES ${GENERIC_SOURCES} ${GENERIC_TF_SOURCES}) set(riscv32_SOURCES riscv/mulsi3.S - ${riscv_SOURCES}) + ${riscv_SOURCES} +) set(riscv64_SOURCES ${riscv_SOURCES}) set(wasm32_SOURCES ${GENERIC_TF_SOURCES} - ${GENERIC_SOURCES}) + ${GENERIC_SOURCES} +) set(wasm64_SOURCES ${GENERIC_TF_SOURCES} - ${GENERIC_SOURCES}) + ${GENERIC_SOURCES} +) add_custom_target(builtins) set_target_properties(builtins PROPERTIES FOLDER "Compiler-RT Misc") Index: llvm/trunk/utils/gn/build/sync_source_lists_from_cmake.py =================================================================== --- llvm/trunk/utils/gn/build/sync_source_lists_from_cmake.py +++ llvm/trunk/utils/gn/build/sync_source_lists_from_cmake.py @@ -23,9 +23,9 @@ shell=os.name == 'nt').splitlines() # Matches e.g. | "foo.cpp",|, captures |foo| in group 1. - gn_cpp_re = re.compile(r'^\s*"([^"]+\.(?:cpp|h))",$', re.MULTILINE) + gn_cpp_re = re.compile(r'^\s*"([^"]+\.(?:cpp|c|h|S))",$', re.MULTILINE) # Matches e.g. | foo.cpp|, captures |foo| in group 1. - cmake_cpp_re = re.compile(r'^\s*([A-Za-z_0-9/-]+\.(?:cpp|h))$', + cmake_cpp_re = re.compile(r'^\s*([A-Za-z_0-9/-]+\.(?:cpp|c|h|S))$', re.MULTILINE) for gn_file in gn_files: Index: llvm/trunk/utils/gn/secondary/BUILD.gn =================================================================== --- llvm/trunk/utils/gn/secondary/BUILD.gn +++ llvm/trunk/utils/gn/secondary/BUILD.gn @@ -9,6 +9,9 @@ "//lld/test", "//llvm/test", ] + if (current_os == "linux") { + deps += [ "//compiler-rt" ] + } if (current_os == "linux" || current_os == "android") { deps += [ "//compiler-rt/test/hwasan" ] } Index: llvm/trunk/utils/gn/secondary/compiler-rt/BUILD.gn =================================================================== --- llvm/trunk/utils/gn/secondary/compiler-rt/BUILD.gn +++ llvm/trunk/utils/gn/secondary/compiler-rt/BUILD.gn @@ -0,0 +1,5 @@ +group("compiler-rt") { + deps = [ + "//compiler-rt/lib(//llvm/utils/gn/build/toolchain:stage2_unix)", + ] +} Index: llvm/trunk/utils/gn/secondary/compiler-rt/lib/BUILD.gn =================================================================== --- llvm/trunk/utils/gn/secondary/compiler-rt/lib/BUILD.gn +++ llvm/trunk/utils/gn/secondary/compiler-rt/lib/BUILD.gn @@ -0,0 +1,5 @@ +group("lib") { + deps = [ + "//compiler-rt/lib/builtins", + ] +} Index: llvm/trunk/utils/gn/secondary/compiler-rt/lib/builtins/BUILD.gn =================================================================== --- llvm/trunk/utils/gn/secondary/compiler-rt/lib/builtins/BUILD.gn +++ llvm/trunk/utils/gn/secondary/compiler-rt/lib/builtins/BUILD.gn @@ -0,0 +1,476 @@ +import("//compiler-rt/target.gni") +import("//llvm/utils/gn/build/buildflags.gni") + +declare_args() { + # Skip the atomic builtin (these should normally be provided by a shared library) + compiler_rt_exclude_atomic_builtin = true + + # Compile builtins for baremetal. + compiler_rt_baremetal_build = false +} + +static_library("builtins") { + output_dir = crt_current_out_dir + output_name = "clang_rt.builtins-$crt_current_target" + complete_static_lib = true + cflags = [ + "-fPIC", + "-fno-builtin", + ] + if (target_os != "android") { + cflags += [ "-fvisibility=hidden" ] + } + if (!is_debug) { + cflags += [ "-fomit-frame-pointer" ] + } + cflags_c = [ "-std=c11" ] + configs -= [ "//llvm/utils/gn/build:thin_archive" ] + + sources = [ + "absvdi2.c", + "absvsi2.c", + "absvti2.c", + "adddf3.c", + "addsf3.c", + "addtf3.c", + "addvdi3.c", + "addvsi3.c", + "addvti3.c", + "apple_versioning.c", + "ashldi3.c", + "ashlti3.c", + "ashrdi3.c", + "ashrti3.c", + "bswapdi2.c", + "bswapsi2.c", + "clzdi2.c", + "clzsi2.c", + "clzti2.c", + "cmpdi2.c", + "cmpti2.c", + "comparedf2.c", + "comparesf2.c", + "ctzdi2.c", + "ctzsi2.c", + "ctzti2.c", + "divdc3.c", + "divdf3.c", + "divdi3.c", + "divmoddi4.c", + "divmodsi4.c", + "divsc3.c", + "divsf3.c", + "divsi3.c", + "divtc3.c", + "divtf3.c", + "divti3.c", + "extendhfsf2.c", + "extendsfdf2.c", + "ffsdi2.c", + "ffssi2.c", + "ffsti2.c", + "fixdfdi.c", + "fixdfsi.c", + "fixdfti.c", + "fixsfdi.c", + "fixsfsi.c", + "fixsfti.c", + "fixunsdfdi.c", + "fixunsdfsi.c", + "fixunsdfti.c", + "fixunssfdi.c", + "fixunssfsi.c", + "fixunssfti.c", + "floatdidf.c", + "floatdisf.c", + "floatsidf.c", + "floatsisf.c", + "floattidf.c", + "floattisf.c", + "floatundidf.c", + "floatundisf.c", + "floatunsidf.c", + "floatunsisf.c", + "floatuntidf.c", + "floatuntisf.c", + "int_util.c", + "lshrdi3.c", + "lshrti3.c", + "moddi3.c", + "modsi3.c", + "modti3.c", + "muldc3.c", + "muldf3.c", + "muldi3.c", + "mulodi4.c", + "mulosi4.c", + "muloti4.c", + "mulsc3.c", + "mulsf3.c", + "multf3.c", + "multi3.c", + "mulvdi3.c", + "mulvsi3.c", + "mulvti3.c", + "negdf2.c", + "negdi2.c", + "negsf2.c", + "negti2.c", + "negvdi2.c", + "negvsi2.c", + "negvti2.c", + "os_version_check.c", + "paritydi2.c", + "paritysi2.c", + "parityti2.c", + "popcountdi2.c", + "popcountsi2.c", + "popcountti2.c", + "powidf2.c", + "powisf2.c", + "powitf2.c", + "subdf3.c", + "subsf3.c", + "subtf3.c", + "subvdi3.c", + "subvsi3.c", + "subvti3.c", + "trampoline_setup.c", + "truncdfhf2.c", + "truncdfsf2.c", + "truncsfhf2.c", + "ucmpdi2.c", + "ucmpti2.c", + "udivdi3.c", + "udivmoddi4.c", + "udivmodsi4.c", + "udivmodti4.c", + "udivsi3.c", + "udivti3.c", + "umoddi3.c", + "umodsi3.c", + "umodti3.c", + + # This depends on unwind.h which is present in Clang headers. We should + # reconsider this if we ever decide to support building builtins with + # other compilers. + "gcc_personality_v0.c", + ] + + if (target_os != "fuchsia") { + sources += [ + "emutls.c ", + "enable_execute_stack.c", + "eprintf.c", + ] + } + + if (target_os != "fuchsia" && !compiler_rt_baremetal_build) { + sources += [ + "clear_cache.c", + ] + } + + if (target_os == "mac") { + sources += [ + "atomic_flag_clear.c", + "atomic_flag_clear_explicit.c", + "atomic_flag_test_and_set.c", + "atomic_flag_test_and_set_explicit.c", + "atomic_signal_fence.c", + "atomic_thread_fence.c", + ] + } + + if (target_cpu == "x86" || target_cpu == "x64") { + sources += [ + "cpu_model.c", + "divxc3.c", + "fixunsxfdi.c", + "fixunsxfsi.c", + "fixunsxfti.c", + "fixxfdi.c", + "fixxfti.c", + "floatdixf.c", + "floattixf.c", + "floatundixf.c", + "floatuntixf.c", + "mulxc3.c", + "powixf2.c", + ] + } + if (target_os == "x86") { + sources += [ + "i386/ashldi3.S", + "i386/ashrdi3.S", + "i386/divdi3.S", + "i386/floatdidf.S", + "i386/floatdisf.S", + "i386/floatdixf.S", + "i386/floatundidf.S", + "i386/floatundisf.S", + "i386/floatundixf.S", + "i386/lshrdi3.S", + "i386/moddi3.S", + "i386/muldi3.S", + "i386/udivdi3.S", + "i386/umoddi3.S", + ] + if (target_os == "win") { + sources += [ + "i386/chkstk.S", + "i386/chkstk2.S", + ] + } + } else if (target_cpu == "x64") { + sources += [ + "x86_64/floatdidf.c", + "x86_64/floatdisf.c", + "x86_64/floatdixf.c", + "x86_64/floatundidf.S", + "x86_64/floatundisf.S", + "x86_64/floatundixf.S", + ] + if (target_os == "win") { + sources += [ + "x86_64/chkstk.S", + "x86_64/chkstk2.S", + ] + } + } + + if (target_cpu == "arm") { + sources += [ + "arm/bswapdi2.S", + "arm/bswapsi2.S", + "arm/clzdi2.S", + "arm/clzsi2.S", + "arm/comparesf2.S", + "arm/divmodsi4.S", + "arm/divsi3.S", + "arm/modsi3.S", + "arm/sync_fetch_and_add_4.S", + "arm/sync_fetch_and_add_8.S", + "arm/sync_fetch_and_and_4.S", + "arm/sync_fetch_and_and_8.S", + "arm/sync_fetch_and_max_4.S", + "arm/sync_fetch_and_max_8.S", + "arm/sync_fetch_and_min_4.S", + "arm/sync_fetch_and_min_8.S", + "arm/sync_fetch_and_nand_4.S", + "arm/sync_fetch_and_nand_8.S", + "arm/sync_fetch_and_or_4.S", + "arm/sync_fetch_and_or_8.S", + "arm/sync_fetch_and_sub_4.S", + "arm/sync_fetch_and_sub_8.S", + "arm/sync_fetch_and_umax_4.S", + "arm/sync_fetch_and_umax_8.S", + "arm/sync_fetch_and_umin_4.S", + "arm/sync_fetch_and_umin_8.S", + "arm/sync_fetch_and_xor_4.S", + "arm/sync_fetch_and_xor_8.S", + "arm/udivmodsi4.S", + "arm/udivsi3.S", + "arm/umodsi3.S", + ] + if (target_os == "mingw") { + sources += [ + "arm/aeabi_idivmod.S", + "arm/aeabi_ldivmod.S", + "arm/aeabi_uidivmod.S", + "arm/aeabi_uldivmod.S", + "arm/chkstk.S", + "divdi3.c", + "divmoddi4.c", + "divmodsi4.c", + "divsi3.c", + "emutls.c", + "fixdfdi.c", + "fixsfdi.c", + "fixunsdfdi.c", + "fixunssfdi.c", + "floatdidf.c", + "floatdisf.c", + "floatundidf.c", + "floatundisf.c", + "mingw_fixfloat.c", + "moddi3.c", + "udivmoddi4.c", + "udivmodsi4.c", + "udivsi3.c", + "umoddi3.c", + ] + } + } + + if (target_cpu == "arm64") { + sources += [ + "comparetf2.c", + "extenddftf2.c", + "extendsftf2.c", + "fixtfdi.c", + "fixtfsi.c", + "fixtfti.c", + "fixunstfdi.c", + "fixunstfsi.c", + "fixunstfti.c", + "floatditf.c", + "floatsitf.c", + "floattitf.c", + "floatunditf.c", + "floatunsitf.c", + "floatuntitf.c", + "multc3.c", + "trunctfdf2.c", + "trunctfsf2.c", + ] + if (target_os == "mingw") { + sources += [ + "aarch64/chkstk.S", + ] + } + } + + if (target_cpu == "hexagon") { + sources += [ + "hexagon/common_entry_exit_abi1.S", + "hexagon/common_entry_exit_abi2.S", + "hexagon/common_entry_exit_legacy.S", + "hexagon/dfaddsub.S", + "hexagon/dfdiv.S", + "hexagon/dffma.S", + "hexagon/dfminmax.S", + "hexagon/dfmul.S", + "hexagon/dfsqrt.S", + "hexagon/divdi3.S", + "hexagon/divsi3.S", + "hexagon/fabs_opt.S", + "hexagon/fastmath2_dlib_asm.S", + "hexagon/fastmath2_ldlib_asm.S", + "hexagon/fastmath_dlib_asm.S", + "hexagon/fma_opt.S", + "hexagon/fmax_opt.S", + "hexagon/fmin_opt.S", + "hexagon/memcpy_forward_vp4cp4n2.S", + "hexagon/memcpy_likely_aligned.S", + "hexagon/moddi3.S", + "hexagon/modsi3.S", + "hexagon/sfdiv_opt.S", + "hexagon/sfsqrt_opt.S", + "hexagon/udivdi3.S", + "hexagon/udivmoddi4.S", + "hexagon/udivmodsi4.S", + "hexagon/udivsi3.S", + "hexagon/umoddi3.S", + "hexagon/umodsi3.S", + ] + } + + if (target_cpu == "ppc64") { + sources += [ + "ppc/divtc3.c", + "ppc/fixtfdi.c", + "ppc/fixunstfdi.c", + "ppc/fixunstfti.c", + "ppc/floatditf.c", + "ppc/floattitf.c", + "ppc/floatunditf.c", + "ppc/gcc_qadd.c", + "ppc/gcc_qdiv.c", + "ppc/gcc_qmul.c", + "ppc/gcc_qsub.c", + "ppc/multc3.c", + ] + } + + if (target_cpu == "riscv") { + sources += [ + "riscv/mulsi3.S", + ] + } + + if (!compiler_rt_exclude_atomic_builtin) { + sources += [ + "atomic.c", + ] + } +} + +# Currently unused but necessary to make the sync_source_lists_from_cmake.py happy. +source_set("_unused") { + sources = [ + # Thumb1 + "arm/addsf3.S", + "arm/comparesf2.S", + "arm/divsi3.S", + "arm/udivsi3.S", + + # EABI + "arm/aeabi_cdcmp.S", + "arm/aeabi_cdcmpeq_check_nan.c", + "arm/aeabi_cfcmp.S", + "arm/aeabi_cfcmpeq_check_nan.c", + "arm/aeabi_dcmp.S", + "arm/aeabi_div0.c", + "arm/aeabi_drsub.c", + "arm/aeabi_fcmp.S", + "arm/aeabi_frsub.c", + "arm/aeabi_idivmod.S", + "arm/aeabi_ldivmod.S", + "arm/aeabi_memcmp.S", + "arm/aeabi_memcpy.S", + "arm/aeabi_memmove.S", + "arm/aeabi_memset.S", + "arm/aeabi_uidivmod.S", + "arm/aeabi_uldivmod.S", + + # Thumb1 JT + "arm/switch16.S", + "arm/switch32.S", + "arm/switch8.S", + "arm/switchu8.S", + + # Thumb1 SjLj + "arm/restore_vfp_d8_d15_regs.S", + "arm/save_vfp_d8_d15_regs.S", + + # Thumb1 VFPv2 + "arm/adddf3vfp.S", + "arm/addsf3vfp.S", + "arm/divdf3vfp.S", + "arm/divsf3vfp.S", + "arm/eqdf2vfp.S", + "arm/eqsf2vfp.S", + "arm/extendsfdf2vfp.S", + "arm/fixdfsivfp.S", + "arm/fixsfsivfp.S", + "arm/fixunsdfsivfp.S", + "arm/fixunssfsivfp.S", + "arm/floatsidfvfp.S", + "arm/floatsisfvfp.S", + "arm/floatunssidfvfp.S", + "arm/floatunssisfvfp.S", + "arm/gedf2vfp.S", + "arm/gesf2vfp.S", + "arm/gtdf2vfp.S", + "arm/gtsf2vfp.S", + "arm/ledf2vfp.S", + "arm/lesf2vfp.S", + "arm/ltdf2vfp.S", + "arm/ltsf2vfp.S", + "arm/muldf3vfp.S", + "arm/mulsf3vfp.S", + "arm/nedf2vfp.S", + "arm/negdf2vfp.S", + "arm/negsf2vfp.S", + "arm/nesf2vfp.S", + "arm/subdf3vfp.S", + "arm/subsf3vfp.S", + "arm/truncdfsf2vfp.S", + "arm/unorddf2vfp.S", + "arm/unordsf2vfp.S", + + # Thumb1 icache + "arm/sync_synchronize.S", + ] +}