[llvm] Enable logf128 constant folding for hosts with 128bit long double (PR #96287)

Eli Friedman via llvm-commits llvm-commits at lists.llvm.org
Thu Jul 11 10:48:57 PDT 2024


================
@@ -271,6 +260,64 @@ if(C_SUPPORTS_WERROR_UNGUARDED_AVAILABILITY_NEW)
   set(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -Werror=unguarded-availability-new")
 endif()
 
+function(logf128_test testname definition)
+  unset(LOGF128_TEST_RUN CACHE)
+  unset(LOGF128_TEST_COMPILE CACHE)
+  try_run(
+    LOGF128_TEST_RUN
+    LOGF128_TEST_COMPILE
+    ${CMAKE_CURRENT_BINARY_DIR}
+    ${CMAKE_CURRENT_BINARY_DIR}/logf128_${testname}.cpp
+    LINK_LIBRARIES m
+  )
+  if(LOGF128_TEST_RUN)
+    set (LLVM_HAS_LOGF128 true CACHE INTERNAL "")
+    set(${definition} true CACHE INTERNAL "")
+    message(STATUS "LLVM: found logf128 with type ${testname}")
+    add_compile_definitions(${definition})
+  endif()
+endfunction()
+
+file(WRITE "${CMAKE_CURRENT_BINARY_DIR}/logf128_long_double.cpp"
+"
+extern \"C\" {
+long double logf128(long double);
----------------
efriedma-quic wrote:

I think I'd prefer to have CMake tests which `#include <cmath>`, to verify that the header actually works.

Along those lines, I don't think float128.h should be declaring logf128.

https://github.com/llvm/llvm-project/pull/96287


More information about the llvm-commits mailing list