[PATCH] D136044: [compiler-rt][builtins] Skip building (b)float16 support on i386-freebsd

Dimitry Andric via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Sun Oct 16 11:27:57 PDT 2022


dim created this revision.
dim added reviewers: ahatanak, arichardson, compnerd, emaste, pengfei.
Herald added subscribers: Enna1, krytarowski, dberris.
Herald added a project: All.
dim requested review of this revision.
Herald added a project: Sanitizers.
Herald added a subscriber: Sanitizers.

Since bfloat16 and float16 support is not available for i386-freebsd,
the `truncdfbf2.c` and `truncsfbf2.c` builtin sources should be skipped
when targeting that platform, and `COMPILER_RT_HAS_FLOAT16` should not
be defined.

However, the CMake configuration stage runs its tests with the default
target, which normally is amd64-freebsd, so it will detect both bfloat16
and float16 support.

Move adding of the `COMPILER_RT_HAS_FLOAT16` define to the `foreach()`
loop where all the supported architectures are handled, and do not
enable it when targeting i386-freebsd.

Also remove the bfloat16 sources from the `i386_SOURCES` list, when
targeting i386-freebsd.


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D136044

Files:
  compiler-rt/lib/builtins/CMakeLists.txt


Index: compiler-rt/lib/builtins/CMakeLists.txt
===================================================================
--- compiler-rt/lib/builtins/CMakeLists.txt
+++ compiler-rt/lib/builtins/CMakeLists.txt
@@ -183,11 +183,14 @@
 
 # Build BF16 files only when "__bf16" is available.
 if(COMPILER_RT_HAS_BFLOAT16 AND NOT APPLE)
-  set(GENERIC_SOURCES
-    ${GENERIC_SOURCES}
+  set(GENERIC_BF_SOURCES
     truncdfbf2.c
     truncsfbf2.c
   )
+  set(GENERIC_SOURCES
+    ${GENERIC_SOURCES}
+    ${GENERIC_BF_SOURCES}
+  )
 endif()
 
 # TODO: Several "tf" files (and divtc3.c, but not multc3.c) are in
@@ -360,6 +363,11 @@
       i386/chkstk2.S
     )
   endif()
+
+  if(${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD")
+    # Do not build bfloat16 sources i386-freebsd, as it is not supported.
+    list(REMOVE_ITEM i386_SOURCES ${GENERIC_BF_SOURCES})
+  endif()
 else () # MSVC
   # Use C versions of functions when building on MSVC
   # MSVC's assembler takes Intel syntax, not AT&T syntax.
@@ -705,8 +713,6 @@
     append_list_if(COMPILER_RT_ENABLE_CET -fcf-protection=full BUILTIN_CFLAGS)
   endif()
 
-  append_list_if(COMPILER_RT_HAS_FLOAT16 -DCOMPILER_RT_HAS_FLOAT16 BUILTIN_CFLAGS)
-
   append_list_if(COMPILER_RT_HAS_STD_C11_FLAG -std=c11 BUILTIN_CFLAGS)
 
   # These flags would normally be added to CMAKE_C_FLAGS by the llvm
@@ -779,6 +785,11 @@
         set(deps_aarch64 lse_builtin_symlinks)
       endif()
 
+      # Do not enable float16 on i386-freebsd, as it is not supported.
+      if(NOT (${CMAKE_SYSTEM_NAME} MATCHES "FreeBSD" AND ${arch} STREQUAL "i386"))
+        append_list_if(COMPILER_RT_HAS_FLOAT16 -DCOMPILER_RT_HAS_FLOAT16 BUILTIN_CFLAGS)
+      endif()
+
       add_compiler_rt_runtime(clang_rt.builtins
                               STATIC
                               ARCHS ${arch}


-------------- next part --------------
A non-text attachment was scrubbed...
Name: D136044.468088.patch
Type: text/x-patch
Size: 1803 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20221016/61a447a6/attachment.bin>


More information about the llvm-commits mailing list