[compiler-rt] f061cfb - [compiler-rt][BF16] Provide __truncdfbf2 and __truncsfbf2 only when __bf16 is available

Phoebe Wang via llvm-commits llvm-commits at lists.llvm.org
Wed Aug 10 18:20:18 PDT 2022


Author: Phoebe Wang
Date: 2022-08-11T09:20:08+08:00
New Revision: f061cfb31730b72b7d8920bb4a306a1d2ce7f2e4

URL: https://github.com/llvm/llvm-project/commit/f061cfb31730b72b7d8920bb4a306a1d2ce7f2e4
DIFF: https://github.com/llvm/llvm-project/commit/f061cfb31730b72b7d8920bb4a306a1d2ce7f2e4.diff

LOG: [compiler-rt][BF16] Provide __truncdfbf2 and __truncsfbf2 only when __bf16 is available

Differential Revision: https://reviews.llvm.org/D131147

Added: 
    

Modified: 
    compiler-rt/cmake/builtin-config-ix.cmake
    compiler-rt/lib/builtins/CMakeLists.txt
    compiler-rt/lib/builtins/fp_trunc.h

Removed: 
    


################################################################################
diff  --git a/compiler-rt/cmake/builtin-config-ix.cmake b/compiler-rt/cmake/builtin-config-ix.cmake
index 5aa2114fab93f..62e8281b919cf 100644
--- a/compiler-rt/cmake/builtin-config-ix.cmake
+++ b/compiler-rt/cmake/builtin-config-ix.cmake
@@ -30,6 +30,14 @@ _Float16 foo(_Float16 x) {
 "
 )
 
+builtin_check_c_compiler_source(COMPILER_RT_HAS_BFLOAT16
+"
+__bf16 foo(__bf16 x) {
+ return x;
+}
+"
+)
+
 builtin_check_c_compiler_source(COMPILER_RT_HAS_ASM_LSE
 "
 asm(\".arch armv8-a+lse\");

diff  --git a/compiler-rt/lib/builtins/CMakeLists.txt b/compiler-rt/lib/builtins/CMakeLists.txt
index 6143457cc9339..bbba2497fce30 100644
--- a/compiler-rt/lib/builtins/CMakeLists.txt
+++ b/compiler-rt/lib/builtins/CMakeLists.txt
@@ -165,10 +165,8 @@ set(GENERIC_SOURCES
   subvsi3.c
   subvti3.c
   trampoline_setup.c
-  truncdfbf2.c
   truncdfhf2.c
   truncdfsf2.c
-  truncsfbf2.c
   truncsfhf2.c
   ucmpdi2.c
   ucmpti2.c
@@ -183,6 +181,15 @@ set(GENERIC_SOURCES
   umodti3.c
 )
 
+# Build BF16 files only when "__bf16" is available.
+if(COMPILER_RT_HAS_BFLOAT16 AND NOT APPLE)
+  set(GENERIC_SOURCES
+    ${GENERIC_SOURCES}
+    truncdfbf2.c
+    truncsfbf2.c
+  )
+endif()
+
 # TODO: Several "tf" files (and divtc3.c, but not multc3.c) are in
 # GENERIC_SOURCES instead of here.
 set(GENERIC_TF_SOURCES

diff  --git a/compiler-rt/lib/builtins/fp_trunc.h b/compiler-rt/lib/builtins/fp_trunc.h
index 7a54564a3520a..91f614528ab3f 100644
--- a/compiler-rt/lib/builtins/fp_trunc.h
+++ b/compiler-rt/lib/builtins/fp_trunc.h
@@ -60,7 +60,7 @@ typedef uint16_t dst_rep_t;
 static const int dstSigBits = 10;
 
 #elif defined DST_BFLOAT
-typedef uint16_t dst_t;
+typedef __bf16 dst_t;
 typedef uint16_t dst_rep_t;
 #define DST_REP_C UINT16_C
 static const int dstSigBits = 7;


        


More information about the llvm-commits mailing list