[builtins] Add option to always build int128 routines

32-bit targets don't build these by default, but e.g. armv7 and x86 can
build them just fine, and it's useful to have the int128 routines
available for certain applications. Add a CMake option to let us include
the int128 routines for architectures which would otherwise lack them.

Reviewed By: compnerd, MaskRay, phosek

Differential Revision: https://reviews.llvm.org/D145003
This commit is contained in:
Shoaib Meenai 2023-02-28 13:13:45 -08:00
parent 38a64aab4a
commit c2d6cc9ac4
2 changed files with 6 additions and 2 deletions

View File

@ -735,6 +735,10 @@ set(ve_SOURCES
add_custom_target(builtins)
set_target_properties(builtins PROPERTIES FOLDER "Compiler-RT Misc")
option(COMPILER_RT_ENABLE_SOFTWARE_INT128
"Enable the int128 builtin routines for all targets."
OFF)
if (APPLE)
add_subdirectory(Darwin-excludes)
add_subdirectory(macho_embedded)
@ -811,7 +815,7 @@ else ()
# For RISCV32, we must force enable int128 for compiling long
# double routines.
if("${arch}" STREQUAL "riscv32")
if(COMPILER_RT_ENABLE_SOFTWARE_INT128 OR "${arch}" STREQUAL "riscv32")
list(APPEND BUILTIN_CFLAGS_${arch} -fforce-enable-int128)
endif()

View File

@ -39,7 +39,7 @@ foreach(arch ${BUILTIN_TEST_ARCH})
string(REPLACE ";" " " BUILTINS_TEST_TARGET_CFLAGS "${BUILTINS_TEST_TARGET_CFLAGS}")
endif()
if (${arch} STREQUAL "riscv32")
if (COMPILER_RT_ENABLE_SOFTWARE_INT128 OR ${arch} STREQUAL "riscv32")
list(APPEND BUILTINS_TEST_TARGET_CFLAGS -fforce-enable-int128)
string(REPLACE ";" " " BUILTINS_TEST_TARGET_CFLAGS "${BUILTINS_TEST_TARGET_CFLAGS}")
endif()