Reland "[compiler-rt][BF16] Provide __truncsfbf2 only when __bf16 is available"
authorPhoebe Wang <phoebe.wang@intel.com>
Wed, 10 Aug 2022 01:13:27 +0000 (09:13 +0800)
committerPhoebe Wang <phoebe.wang@intel.com>
Wed, 10 Aug 2022 05:27:21 +0000 (13:27 +0800)
Disable the build on macOS due to the bot fail.

Reviewed By: bkramer

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

compiler-rt/cmake/builtin-config-ix.cmake
compiler-rt/lib/builtins/CMakeLists.txt
compiler-rt/lib/builtins/fp_trunc.h
compiler-rt/lib/builtins/truncdfbf2.c
compiler-rt/lib/builtins/truncsfbf2.c

index 5aa2114..62e8281 100644 (file)
@@ -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\");
index 6143457..05c3793 100644 (file)
@@ -699,6 +699,8 @@ else ()
 
   append_list_if(COMPILER_RT_HAS_FLOAT16 -DCOMPILER_RT_HAS_FLOAT16 BUILTIN_CFLAGS)
 
+  append_list_if(COMPILER_RT_HAS_BFLOAT16 -DCOMPILER_RT_HAS_BFLOAT16 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
index 7a54564..91f6145 100644 (file)
@@ -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;
index dbd54dc..b87385e 100644 (file)
@@ -6,8 +6,11 @@
 //
 //===----------------------------------------------------------------------===//
 
+#if defined(COMPILER_RT_HAS_BFLOAT16)
 #define SRC_DOUBLE
 #define DST_BFLOAT
 #include "fp_trunc_impl.inc"
 
 COMPILER_RT_ABI dst_t __truncdfbf2(double a) { return __truncXfYf2__(a); }
+
+#endif
index 6bed116..42ddab3 100644 (file)
@@ -6,8 +6,11 @@
 //
 //===----------------------------------------------------------------------===//
 
+#if defined(COMPILER_RT_HAS_BFLOAT16)
 #define SRC_SINGLE
 #define DST_BFLOAT
 #include "fp_trunc_impl.inc"
 
 COMPILER_RT_ABI dst_t __truncsfbf2(float a) { return __truncXfYf2__(a); }
+
+#endif