Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[libc][math][c23] Add f16fma{,l,f128} C23 math function #96711

Merged
merged 8 commits into from
Jun 27, 2024

Conversation

overmighty
Copy link
Member

Part of #93566.

@overmighty overmighty marked this pull request as draft June 25, 2024 23:15
@llvmbot llvmbot added the libc label Jun 25, 2024
@llvmbot
Copy link
Member

llvmbot commented Jun 25, 2024

@llvm/pr-subscribers-libc

Author: OverMighty (overmighty)

Changes

Part of #93566.


Full diff: https://github.com/llvm/llvm-project/pull/96711.diff

19 Files Affected:

  • (modified) libc/config/linux/aarch64/entrypoints.txt (+1)
  • (modified) libc/config/linux/x86_64/entrypoints.txt (+1)
  • (modified) libc/docs/math/index.rst (+1-1)
  • (modified) libc/spec/stdc.td (+1)
  • (modified) libc/src/__support/FPUtil/CMakeLists.txt (+1)
  • (modified) libc/src/__support/FPUtil/generic/CMakeLists.txt (+1)
  • (modified) libc/src/__support/FPUtil/generic/FMA.h (+7-80)
  • (added) libc/src/__support/FPUtil/generic_hardware/CMakeLists.txt (+10)
  • (added) libc/src/__support/FPUtil/generic_hardware/fma.h (+29)
  • (modified) libc/src/__support/FPUtil/multiply_add.h (+3-3)
  • (modified) libc/src/math/CMakeLists.txt (+1)
  • (added) libc/src/math/f16fma.h (+20)
  • (modified) libc/src/math/generic/CMakeLists.txt (+13)
  • (added) libc/src/math/generic/f16fma.cpp (+19)
  • (modified) libc/test/src/math/CMakeLists.txt (+15)
  • (added) libc/test/src/math/f16fma_test.cpp (+21)
  • (modified) libc/test/src/math/smoke/CMakeLists.txt (+12)
  • (added) libc/test/src/math/smoke/f16fma_test.cpp (+13)
  • (modified) libc/utils/MPFRWrapper/MPFRUtils.cpp (+6)
diff --git a/libc/config/linux/aarch64/entrypoints.txt b/libc/config/linux/aarch64/entrypoints.txt
index a875a17f06b3e..f798bf282bf5d 100644
--- a/libc/config/linux/aarch64/entrypoints.txt
+++ b/libc/config/linux/aarch64/entrypoints.txt
@@ -506,6 +506,7 @@ if(LIBC_TYPES_HAS_FLOAT16)
     libc.src.math.ceilf16
     libc.src.math.copysignf16
     libc.src.math.f16divf
+    libc.src.math.f16fma
     libc.src.math.f16fmaf
     libc.src.math.f16sqrtf
     libc.src.math.fabsf16
diff --git a/libc/config/linux/x86_64/entrypoints.txt b/libc/config/linux/x86_64/entrypoints.txt
index 34748ff5950ad..9d88cf2b60222 100644
--- a/libc/config/linux/x86_64/entrypoints.txt
+++ b/libc/config/linux/x86_64/entrypoints.txt
@@ -537,6 +537,7 @@ if(LIBC_TYPES_HAS_FLOAT16)
     libc.src.math.ceilf16
     libc.src.math.copysignf16
     libc.src.math.f16divf
+    libc.src.math.f16fma
     libc.src.math.f16fmaf
     libc.src.math.f16sqrtf
     libc.src.math.fabsf16
diff --git a/libc/docs/math/index.rst b/libc/docs/math/index.rst
index 95f450ab75960..30079e8410f19 100644
--- a/libc/docs/math/index.rst
+++ b/libc/docs/math/index.rst
@@ -126,7 +126,7 @@ Basic Operations
 +------------------+------------------+-----------------+------------------------+----------------------+------------------------+------------------------+----------------------------+
 | f16div           | |check|          |                 |                        | N/A                  |                        | 7.12.14.4              | F.10.11                    |
 +------------------+------------------+-----------------+------------------------+----------------------+------------------------+------------------------+----------------------------+
-| f16fma           | |check|          |                 |                        | N/A                  |                        | 7.12.14.5              | F.10.11                    |
+| f16fma           | |check|          | |check|         |                        | N/A                  |                        | 7.12.14.5              | F.10.11                    |
 +------------------+------------------+-----------------+------------------------+----------------------+------------------------+------------------------+----------------------------+
 | fabs             | |check|          | |check|         | |check|                | |check|              | |check|                | 7.12.7.3               | F.10.4.3                   |
 +------------------+------------------+-----------------+------------------------+----------------------+------------------------+------------------------+----------------------------+
diff --git a/libc/spec/stdc.td b/libc/spec/stdc.td
index 651f49deef4c1..367e6b2887dbe 100644
--- a/libc/spec/stdc.td
+++ b/libc/spec/stdc.td
@@ -477,6 +477,7 @@ def StdC : StandardSpec<"stdc"> {
           FunctionSpec<"fma", RetValSpec<DoubleType>, [ArgSpec<DoubleType>, ArgSpec<DoubleType>, ArgSpec<DoubleType>]>,
           FunctionSpec<"fmaf", RetValSpec<FloatType>, [ArgSpec<FloatType>, ArgSpec<FloatType>, ArgSpec<FloatType>]>,
 
+          GuardedFunctionSpec<"f16fma", RetValSpec<Float16Type>, [ArgSpec<DoubleType>, ArgSpec<DoubleType>, ArgSpec<DoubleType>], "LIBC_TYPES_HAS_FLOAT16">,
           GuardedFunctionSpec<"f16fmaf", RetValSpec<Float16Type>, [ArgSpec<FloatType>, ArgSpec<FloatType>, ArgSpec<FloatType>], "LIBC_TYPES_HAS_FLOAT16">,
 
           FunctionSpec<"fmod", RetValSpec<DoubleType>, [ArgSpec<DoubleType>, ArgSpec<DoubleType>]>,
diff --git a/libc/src/__support/FPUtil/CMakeLists.txt b/libc/src/__support/FPUtil/CMakeLists.txt
index 900a7022c3868..0f27b79b059a3 100644
--- a/libc/src/__support/FPUtil/CMakeLists.txt
+++ b/libc/src/__support/FPUtil/CMakeLists.txt
@@ -227,3 +227,4 @@ add_header_library(
 )
 
 add_subdirectory(generic)
+add_subdirectory(generic_hardware)
diff --git a/libc/src/__support/FPUtil/generic/CMakeLists.txt b/libc/src/__support/FPUtil/generic/CMakeLists.txt
index 33b2564bfa087..80af697903286 100644
--- a/libc/src/__support/FPUtil/generic/CMakeLists.txt
+++ b/libc/src/__support/FPUtil/generic/CMakeLists.txt
@@ -24,6 +24,7 @@ add_header_library(
     libc.src.__support.CPP.bit
     libc.src.__support.CPP.limits
     libc.src.__support.CPP.type_traits
+    libc.src.__support.FPUtil.dyadic_float
     libc.src.__support.FPUtil.fenv_impl
     libc.src.__support.FPUtil.fp_bits
     libc.src.__support.FPUtil.rounding_mode
diff --git a/libc/src/__support/FPUtil/generic/FMA.h b/libc/src/__support/FPUtil/generic/FMA.h
index 71b150758d419..40a99fc6ca62e 100644
--- a/libc/src/__support/FPUtil/generic/FMA.h
+++ b/libc/src/__support/FPUtil/generic/FMA.h
@@ -13,6 +13,7 @@
 #include "src/__support/CPP/limits.h"
 #include "src/__support/CPP/type_traits.h"
 #include "src/__support/FPUtil/FPBits.h"
+#include "src/__support/FPUtil/dyadic_float.h"
 #include "src/__support/FPUtil/rounding_mode.h"
 #include "src/__support/big_int.h"
 #include "src/__support/macros/attributes.h"   // LIBC_INLINE
@@ -106,8 +107,6 @@ LIBC_INLINE cpp::enable_if_t<cpp::is_floating_point_v<OutType> &&
                                  sizeof(OutType) <= sizeof(InType),
                              OutType>
 fma(InType x, InType y, InType z) {
-  using OutFPBits = fputil::FPBits<OutType>;
-  using OutStorageType = typename OutFPBits::StorageType;
   using InFPBits = fputil::FPBits<InType>;
   using InStorageType = typename InFPBits::StorageType;
 
@@ -115,11 +114,7 @@ fma(InType x, InType y, InType z) {
   constexpr size_t PROD_LEN = 2 * IN_EXPLICIT_MANT_LEN;
   constexpr size_t TMP_RESULT_LEN = cpp::bit_ceil(PROD_LEN + 1);
   using TmpResultType = UInt<TMP_RESULT_LEN>;
-
-  constexpr size_t EXTRA_FRACTION_LEN =
-      TMP_RESULT_LEN - 1 - OutFPBits::FRACTION_LEN;
-  constexpr TmpResultType EXTRA_FRACTION_STICKY_MASK =
-      (TmpResultType(1) << (EXTRA_FRACTION_LEN - 1)) - 1;
+  using DyadicFloat = DyadicFloat<TMP_RESULT_LEN>;
 
   if (LIBC_UNLIKELY(x == 0 || y == 0 || z == 0))
     return static_cast<OutType>(x * y + z);
@@ -182,7 +177,6 @@ fma(InType x, InType y, InType z) {
   constexpr int RESULT_MIN_LEN = PROD_LEN - InFPBits::FRACTION_LEN;
   z_mant <<= RESULT_MIN_LEN;
   int z_lsb_exp = z_exp - (InFPBits::FRACTION_LEN + RESULT_MIN_LEN);
-  bool round_bit = false;
   bool sticky_bits = false;
   bool z_shifted = false;
 
@@ -221,85 +215,18 @@ fma(InType x, InType y, InType z) {
     }
   }
 
-  OutStorageType result = 0;
-  int r_exp = 0; // Unbiased exponent of the result
-
-  int round_mode = fputil::quick_get_round();
-
-  // Normalize the result.
-  if (prod_mant != 0) {
-    int lead_zeros = cpp::countl_zero(prod_mant);
-    // Move the leading 1 to the most significant bit.
-    prod_mant <<= lead_zeros;
-    prod_lsb_exp -= lead_zeros;
-    r_exp = prod_lsb_exp + (cpp::numeric_limits<TmpResultType>::digits - 1) -
-            InFPBits::EXP_BIAS + OutFPBits::EXP_BIAS;
-
-    if (r_exp > 0) {
-      // The result is normal.  We will shift the mantissa to the right by the
-      // amount of extra bits compared to the length of the explicit mantissa in
-      // the output type.  The rounding bit then becomes the highest bit that is
-      // shifted out, and the following lower bits are merged into sticky bits.
-      round_bit =
-          (prod_mant & (TmpResultType(1) << (EXTRA_FRACTION_LEN - 1))) != 0;
-      sticky_bits |= (prod_mant & EXTRA_FRACTION_STICKY_MASK) != 0;
-      result = static_cast<OutStorageType>(prod_mant >> EXTRA_FRACTION_LEN);
-    } else {
-      if (r_exp < -OutFPBits::FRACTION_LEN) {
-        // The result is smaller than 1/2 of the smallest denormal number.
-        sticky_bits = true; // since the result is non-zero.
-        result = 0;
-      } else {
-        // The result is denormal.
-        TmpResultType mask = TmpResultType(1) << (EXTRA_FRACTION_LEN - r_exp);
-        round_bit = (prod_mant & mask) != 0;
-        sticky_bits |= (prod_mant & (mask - 1)) != 0;
-        if (r_exp > -OutFPBits::FRACTION_LEN)
-          result = static_cast<OutStorageType>(
-              prod_mant >> (EXTRA_FRACTION_LEN + 1 - r_exp));
-        else
-          result = 0;
-      }
-
-      r_exp = 0;
-    }
-  } else {
+  if (prod_mant == 0) {
     // When there is exact cancellation, i.e., x*y == -z exactly, return -0.0 if
     // rounding downward and +0.0 for other rounding modes.
-    if (round_mode == FE_DOWNWARD)
+    if (quick_get_round() == FE_DOWNWARD)
       prod_sign = Sign::NEG;
     else
       prod_sign = Sign::POS;
   }
 
-  // Finalize the result.
-  if (LIBC_UNLIKELY(r_exp >= OutFPBits::MAX_BIASED_EXPONENT)) {
-    if ((round_mode == FE_TOWARDZERO) ||
-        (round_mode == FE_UPWARD && prod_sign.is_neg()) ||
-        (round_mode == FE_DOWNWARD && prod_sign.is_pos())) {
-      return OutFPBits::max_normal(prod_sign).get_val();
-    }
-    return OutFPBits::inf(prod_sign).get_val();
-  }
-
-  // Remove hidden bit and append the exponent field and sign bit.
-  result = static_cast<OutStorageType>(
-      (result & OutFPBits::FRACTION_MASK) |
-      (static_cast<OutStorageType>(r_exp) << OutFPBits::FRACTION_LEN));
-  if (prod_sign.is_neg())
-    result |= OutFPBits::SIGN_MASK;
-
-  // Rounding.
-  if (round_mode == FE_TONEAREST) {
-    if (round_bit && (sticky_bits || ((result & 1) != 0)))
-      ++result;
-  } else if ((round_mode == FE_UPWARD && prod_sign.is_pos()) ||
-             (round_mode == FE_DOWNWARD && prod_sign.is_neg())) {
-    if (round_bit || sticky_bits)
-      ++result;
-  }
-
-  return cpp::bit_cast<OutType>(result);
+  DyadicFloat result(prod_sign, prod_lsb_exp - InFPBits::EXP_BIAS, prod_mant);
+  result.mantissa |= sticky_bits;
+  return result.template as<OutType, /*ShouldSignalExceptions=*/true>();
 }
 
 } // namespace generic
diff --git a/libc/src/__support/FPUtil/generic_hardware/CMakeLists.txt b/libc/src/__support/FPUtil/generic_hardware/CMakeLists.txt
new file mode 100644
index 0000000000000..a094d7f8a6f00
--- /dev/null
+++ b/libc/src/__support/FPUtil/generic_hardware/CMakeLists.txt
@@ -0,0 +1,10 @@
+add_header_library(
+  fma
+  HDRS
+    fma.h
+  DEPENDS
+    libc.src.__support.common
+    libc.src.__support.macros.properties.cpu_features
+  FLAGS
+    FMA_OPT
+)
diff --git a/libc/src/__support/FPUtil/generic_hardware/fma.h b/libc/src/__support/FPUtil/generic_hardware/fma.h
new file mode 100644
index 0000000000000..f878728cd2de5
--- /dev/null
+++ b/libc/src/__support/FPUtil/generic_hardware/fma.h
@@ -0,0 +1,29 @@
+//===-- Generic hardware implementation of fused multiply-add ---*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LIBC_SRC___SUPPORT_FPUTIL_GENERIC_HARDWARE_FMA_H
+#define LIBC_SRC___SUPPORT_FPUTIL_GENERIC_HARDWARE_FMA_H
+
+#include "src/__support/common.h"
+#include "src/__support/macros/properties/cpu_features.h"
+
+namespace LIBC_NAMESPACE::fputil::generic_hardware {
+
+#ifdef LIBC_TARGET_CPU_HAS_FMA
+LIBC_INLINE float fma(float x, float y, float z) {
+  return __builtin_fmaf(x, y, z);
+}
+
+LIBC_INLINE double fma(double x, double y, double z) {
+  return __builtin_fma(x, y, z);
+}
+#endif // LIBC_TARGET_CPU_HAS_FMA
+
+} // namespace LIBC_NAMESPACE::fputil::generic_hardware
+
+#endif // LIBC_SRC___SUPPORT_FPUTIL_GENERIC_HARDWARE_FMA_H
diff --git a/libc/src/__support/FPUtil/multiply_add.h b/libc/src/__support/FPUtil/multiply_add.h
index 622914e4265c9..9683c526aee72 100644
--- a/libc/src/__support/FPUtil/multiply_add.h
+++ b/libc/src/__support/FPUtil/multiply_add.h
@@ -39,17 +39,17 @@ multiply_add(T x, T y, T z) {
 #if defined(LIBC_TARGET_CPU_HAS_FMA)
 
 // FMA instructions are available.
-#include "FMA.h"
+#include "src/__support/FPUtil/generic_hardware/fma.h"
 
 namespace LIBC_NAMESPACE {
 namespace fputil {
 
 LIBC_INLINE float multiply_add(float x, float y, float z) {
-  return fma<float>(x, y, z);
+  return generic_hardware::fma(x, y, z);
 }
 
 LIBC_INLINE double multiply_add(double x, double y, double z) {
-  return fma<double>(x, y, z);
+  return generic_hardware::fma(x, y, z);
 }
 
 } // namespace fputil
diff --git a/libc/src/math/CMakeLists.txt b/libc/src/math/CMakeLists.txt
index 711cbf8bbfdca..e0a59b33b8fc7 100644
--- a/libc/src/math/CMakeLists.txt
+++ b/libc/src/math/CMakeLists.txt
@@ -101,6 +101,7 @@ add_math_entrypoint_object(expm1f)
 
 add_math_entrypoint_object(f16divf)
 
+add_math_entrypoint_object(f16fma)
 add_math_entrypoint_object(f16fmaf)
 
 add_math_entrypoint_object(f16sqrtf)
diff --git a/libc/src/math/f16fma.h b/libc/src/math/f16fma.h
new file mode 100644
index 0000000000000..d9505f88f37af
--- /dev/null
+++ b/libc/src/math/f16fma.h
@@ -0,0 +1,20 @@
+//===-- Implementation header for f16fma ------------------------*- C++ -*-===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#ifndef LLVM_LIBC_SRC_MATH_F16FMA_H
+#define LLVM_LIBC_SRC_MATH_F16FMA_H
+
+#include "src/__support/macros/properties/types.h"
+
+namespace LIBC_NAMESPACE {
+
+float16 f16fma(double x, double y, double z);
+
+} // namespace LIBC_NAMESPACE
+
+#endif // LLVM_LIBC_SRC_MATH_F16FMA_H
diff --git a/libc/src/math/generic/CMakeLists.txt b/libc/src/math/generic/CMakeLists.txt
index fc2024c89b5df..29a3cc79dd239 100644
--- a/libc/src/math/generic/CMakeLists.txt
+++ b/libc/src/math/generic/CMakeLists.txt
@@ -3744,6 +3744,19 @@ add_entrypoint_object(
     -O3
 )
 
+add_entrypoint_object(
+  f16fma
+  SRCS
+    f16fma.cpp
+  HDRS
+    ../f16fma.h
+  DEPENDS
+    libc.src.__support.macros.properties.types
+    libc.src.__support.FPUtil.fma
+  COMPILE_OPTIONS
+    -O0 -ggdb3
+)
+
 add_entrypoint_object(
   f16fmaf
   SRCS
diff --git a/libc/src/math/generic/f16fma.cpp b/libc/src/math/generic/f16fma.cpp
new file mode 100644
index 0000000000000..10ee028c06930
--- /dev/null
+++ b/libc/src/math/generic/f16fma.cpp
@@ -0,0 +1,19 @@
+//===-- Implementation of f16fma function ---------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "src/math/f16fma.h"
+#include "src/__support/FPUtil/FMA.h"
+#include "src/__support/common.h"
+
+namespace LIBC_NAMESPACE {
+
+LLVM_LIBC_FUNCTION(float16, f16fma, (double x, double y, double z)) {
+  return fputil::fma<float16>(x, y, z);
+}
+
+} // namespace LIBC_NAMESPACE
diff --git a/libc/test/src/math/CMakeLists.txt b/libc/test/src/math/CMakeLists.txt
index ba588662f469e..ab3b155f0f92b 100644
--- a/libc/test/src/math/CMakeLists.txt
+++ b/libc/test/src/math/CMakeLists.txt
@@ -1903,6 +1903,21 @@ add_fp_unittest(
     libc.src.math.f16divf
 )
 
+add_fp_unittest(
+  f16fma_test
+  NEED_MPFR
+  SUITE
+    libc-math-unittests
+  SRCS
+    f16fma_test.cpp
+  HDRS
+    FmaTest.h
+  DEPENDS
+    libc.src.math.f16fma
+    libc.src.stdlib.rand
+    libc.src.stdlib.srand
+)
+
 add_fp_unittest(
   f16fmaf_test
   NEED_MPFR
diff --git a/libc/test/src/math/f16fma_test.cpp b/libc/test/src/math/f16fma_test.cpp
new file mode 100644
index 0000000000000..d684c4f304fbc
--- /dev/null
+++ b/libc/test/src/math/f16fma_test.cpp
@@ -0,0 +1,21 @@
+//===-- Unittests for f16fma ----------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "FmaTest.h"
+
+#include "src/math/f16fma.h"
+
+using LlvmLibcF16fmaTest = FmaTestTemplate<float16, double>;
+
+TEST_F(LlvmLibcF16fmaTest, SubnormalRange) {
+  test_subnormal_range(&LIBC_NAMESPACE::f16fma);
+}
+
+TEST_F(LlvmLibcF16fmaTest, NormalRange) {
+  test_normal_range(&LIBC_NAMESPACE::f16fma);
+}
diff --git a/libc/test/src/math/smoke/CMakeLists.txt b/libc/test/src/math/smoke/CMakeLists.txt
index ee99fb96a52ce..21e52a917349c 100644
--- a/libc/test/src/math/smoke/CMakeLists.txt
+++ b/libc/test/src/math/smoke/CMakeLists.txt
@@ -3644,6 +3644,18 @@ add_fp_unittest(
     libc.src.math.f16divf
 )
 
+add_fp_unittest(
+  f16fma_test
+  SUITE
+    libc-math-smoke-tests
+  SRCS
+    f16fma_test.cpp
+  HDRS
+    FmaTest.h
+  DEPENDS
+    libc.src.math.f16fma
+)
+
 add_fp_unittest(
   f16fmaf_test
   SUITE
diff --git a/libc/test/src/math/smoke/f16fma_test.cpp b/libc/test/src/math/smoke/f16fma_test.cpp
new file mode 100644
index 0000000000000..2e46b5bdd4682
--- /dev/null
+++ b/libc/test/src/math/smoke/f16fma_test.cpp
@@ -0,0 +1,13 @@
+//===-- Unittests for f16fma ----------------------------------------------===//
+//
+// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
+// See https://llvm.org/LICENSE.txt for license information.
+// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
+//
+//===----------------------------------------------------------------------===//
+
+#include "FmaTest.h"
+
+#include "src/math/f16fma.h"
+
+LIST_NARROWING_FMA_TESTS(float16, double, LIBC_NAMESPACE::f16fma)
diff --git a/libc/utils/MPFRWrapper/MPFRUtils.cpp b/libc/utils/MPFRWrapper/MPFRUtils.cpp
index 521c2658b327a..d1c814b6bf18f 100644
--- a/libc/utils/MPFRWrapper/MPFRUtils.cpp
+++ b/libc/utils/MPFRWrapper/MPFRUtils.cpp
@@ -977,6 +977,8 @@ explain_ternary_operation_one_output_error(Operation,
 #ifdef LIBC_TYPES_HAS_FLOAT16
 template void explain_ternary_operation_one_output_error(
     Operation, const TernaryInput<float> &, float16, double, RoundingMode);
+template void explain_ternary_operation_one_output_error(
+    Operation, const TernaryInput<double> &, float16, double, RoundingMode);
 #endif
 
 template <typename InputType, typename OutputType>
@@ -1124,6 +1126,10 @@ template bool compare_ternary_operation_one_output(Operation,
                                                    const TernaryInput<float> &,
                                                    float16, double,
                                                    RoundingMode);
+template bool compare_ternary_operation_one_output(Operation,
+                                                   const TernaryInput<double> &,
+                                                   float16, double,
+                                                   RoundingMode);
 #endif
 
 } // namespace internal

Comment on lines 41 to 42
// FMA instructions are available.
#include "FMA.h"
#include "src/__support/FPUtil/generic_hardware/fma.h"
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I did this to fix a circular dependency where dyadic_float.h was including multiply_add.h -> FMA.h -> generic/FMA.h -> dyadic_float.h

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If this is the only place using it right now, maybe we can just directly use __builtin_fma(f) here, and adding comments about circular dependency.

Update FPUtil/CMakeLists.txt to fix circular dependency.
@overmighty overmighty marked this pull request as ready for review June 27, 2024 13:19
@overmighty overmighty changed the title [libc][math][c23] Add f16fma C23 math function [libc][math][c23] Add f16fma{,l,f128} C23 math function Jun 27, 2024
@lntue lntue merged commit e34dbb1 into llvm:main Jun 27, 2024
5 of 6 checks passed
@llvm-ci
Copy link
Collaborator

llvm-ci commented Jun 27, 2024

LLVM Buildbot has detected a new failure on builder libc-aarch64-ubuntu-dbg running on libc-aarch64-ubuntu while building libc at step 4 "annotate".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/104/builds/936

Here is the relevant piece of the build log for the reference:

Step 4 (annotate) failure: 'python ../llvm-zorg/zorg/buildbot/builders/annotated/libc-linux.py ...' (failure)
...
[106/506] Building CXX object projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.fmaximumf.dir/fmaximumf.cpp.o
[107/506] Building CXX object projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.lroundf.dir/lroundf.cpp.o
[108/506] Building CXX object projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.remainder.dir/remainder.cpp.o
[109/506] Building CXX object projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.nearbyintf128.dir/nearbyintf128.cpp.o
[110/506] Building CXX object projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.llrintf128.dir/llrintf128.cpp.o
[111/506] Building CXX object projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.llrintf16.dir/llrintf16.cpp.o
[112/506] Building CXX object projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.rintf128.dir/rintf128.cpp.o
[113/506] Building CXX object projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.lrintl.dir/lrintl.cpp.o
[114/506] Building CXX object projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.nearbyint.dir/nearbyint.cpp.o
[115/506] Building CXX object projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.f16fmal.dir/f16fmal.cpp.o
FAILED: projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.f16fmal.dir/f16fmal.cpp.o 
/usr/bin/clang++ -DLIBC_NAMESPACE=__llvm_libc_18_0_0_git -D_DEBUG -Iprojects/libc/src/math/generic -I/home/libc-buildbot/libc-aarch64-ubuntu/libc-aarch64-ubuntu/llvm-project/libc/src/math/generic -I/home/libc-buildbot/libc-aarch64-ubuntu/libc-aarch64-ubuntu/llvm-project/libc -isystem projects/libc/include -fPIC -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wc++98-compat-extra-semi -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -g -fpie -fno-builtin -fno-exceptions -fno-lax-vector-conversions -fno-unwind-tables -fno-asynchronous-unwind-tables -fno-rtti -ftrivial-auto-var-init=pattern -fno-omit-frame-pointer -Wall -Wextra -Werror -Wconversion -Wno-sign-conversion -Wimplicit-fallthrough -Wwrite-strings -Wextra-semi -Wnewline-eof -Wnonportable-system-include-path -Wstrict-prototypes -Wthread-safety -Wglobal-constructors -O3 -DLIBC_COPT_PUBLIC_PACKAGING -std=c++17 -MD -MT projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.f16fmal.dir/f16fmal.cpp.o -MF projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.f16fmal.dir/f16fmal.cpp.o.d -o projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.f16fmal.dir/f16fmal.cpp.o -c /home/libc-buildbot/libc-aarch64-ubuntu/libc-aarch64-ubuntu/llvm-project/libc/src/math/generic/f16fmal.cpp
fatal error: error in backend: Cannot select: 0x367e6b60: f16 = fp_round 0x3693a720, TargetConstant:i64<0>, llvm-project/libc/src/__support/FPUtil/generic/FMA.h:191:33
  0x3693a720: f128,ch,glue = CopyFromReg 0x3693d2a0, Register:f128 $q0, 0x3693d2a0:1, llvm-project/libc/src/__support/FPUtil/generic/FMA.h:191:39
    0x3693ca80: f128 = Register $q0
    0x3693d2a0: ch,glue = callseq_end 0x367e6a90, TargetConstant:i64<0>, TargetConstant:i64<0>, 0x367e6a90:1, llvm-project/libc/src/__support/FPUtil/generic/FMA.h:191:39
      0x3693b078: i64 = TargetConstant<0>
      0x3693b078: i64 = TargetConstant<0>
      0x367e6a90: ch,glue = AArch64ISD::CALL 0x36940ee0, TargetExternalSymbol:i64'__addtf3', Register:f128 $q0, Register:f128 $q1, RegisterMask:Untyped, 0x36940ee0:1, llvm-project/libc/src/__support/FPUtil/generic/FMA.h:191:39
        0x367e6000: i64 = TargetExternalSymbol'__addtf3'
        0x3693ca80: f128 = Register $q0
        0x3693b350: f128 = Register $q1
        0x36941768: Untyped = RegisterMask
        0x36940ee0: ch,glue = CopyToReg 0x367e6410, Register:f128 $q1, 0x3693b4f0, 0x367e6410:1, llvm-project/libc/src/__support/FPUtil/generic/FMA.h:191:39
          0x3693b350: f128 = Register $q1
          0x3693b4f0: f128,ch = CopyFromReg 0x3660d258, Register:f128 %34, llvm-project/libc/src/__support/FPUtil/generic/FMA.h:191:39
            0x367e6618: f128 = Register %34
          0x367e6410: ch,glue = CopyToReg 0x36941220, Register:f128 $q0, 0x36941908, llvm-project/libc/src/__support/FPUtil/generic/FMA.h:191:39
            0x3693ca80: f128 = Register $q0
            0x36941908: f128,ch,glue = CopyFromReg 0x367e6f08, Register:f128 $q0, 0x367e6f08:1, llvm-project/libc/src/__support/FPUtil/generic/FMA.h:191:35
              0x3693ca80: f128 = Register $q0
              0x367e6f08: ch,glue = callseq_end 0x3693ca18, TargetConstant:i64<0>, TargetConstant:i64<0>, 0x3693ca18:1, llvm-project/libc/src/__support/FPUtil/generic/FMA.h:191:35
                0x3693b078: i64 = TargetConstant<0>
                0x3693b078: i64 = TargetConstant<0>
                0x3693ca18: ch,glue = AArch64ISD::CALL 0x367e69c0, TargetExternalSymbol:i64'__multf3', Register:f128 $q0, Register:f128 $q1, RegisterMask:Untyped, 0x367e69c0:1, llvm-project/libc/src/__support/FPUtil/generic/FMA.h:191:35
                  0x36940da8: i64 = TargetExternalSymbol'__multf3'
                  0x3693ca80: f128 = Register $q0
                  0x3693b350: f128 = Register $q1
                  0x36941768: Untyped = RegisterMask
                  0x367e69c0: ch,glue = CopyToReg 0x3693d030, Register:f128 $q1, 0x36940f48, 0x3693d030:1, llvm-project/libc/src/__support/FPUtil/generic/FMA.h:191:35



  0x3693b078: i64 = TargetConstant<0>
In function: _ZN22__llvm_libc_18_0_0_git6fputil7generic3fmaIDF16_eEENS_3cpp9enable_ifIXaaaasr3cppE19is_floating_point_vIT_Esr3cppE19is_floating_point_vIT0_ElestS5_stS6_ES5_E4typeES6_S6_S6_
PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0.	Program arguments: /usr/bin/clang++ -DLIBC_NAMESPACE=__llvm_libc_18_0_0_git -D_DEBUG -Iprojects/libc/src/math/generic -I/home/libc-buildbot/libc-aarch64-ubuntu/libc-aarch64-ubuntu/llvm-project/libc/src/math/generic -I/home/libc-buildbot/libc-aarch64-ubuntu/libc-aarch64-ubuntu/llvm-project/libc -isystem projects/libc/include -fPIC -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wc++98-compat-extra-semi -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -g -fpie -fno-builtin -fno-exceptions -fno-lax-vector-conversions -fno-unwind-tables -fno-asynchronous-unwind-tables -fno-rtti -ftrivial-auto-var-init=pattern -fno-omit-frame-pointer -Wall -Wextra -Werror -Wconversion -Wno-sign-conversion -Wimplicit-fallthrough -Wwrite-strings -Wextra-semi -Wnewline-eof -Wnonportable-system-include-path -Wstrict-prototypes -Wthread-safety -Wglobal-constructors -O3 -DLIBC_COPT_PUBLIC_PACKAGING -std=c++17 -MD -MT projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.f16fmal.dir/f16fmal.cpp.o -MF projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.f16fmal.dir/f16fmal.cpp.o.d -o projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.f16fmal.dir/f16fmal.cpp.o -c /home/libc-buildbot/libc-aarch64-ubuntu/libc-aarch64-ubuntu/llvm-project/libc/src/math/generic/f16fmal.cpp 
1.	<eof> parser at end of file
Step 6 (build libc) failure: build libc (failure)
...
[106/506] Building CXX object projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.fmaximumf.dir/fmaximumf.cpp.o
[107/506] Building CXX object projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.lroundf.dir/lroundf.cpp.o
[108/506] Building CXX object projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.remainder.dir/remainder.cpp.o
[109/506] Building CXX object projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.nearbyintf128.dir/nearbyintf128.cpp.o
[110/506] Building CXX object projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.llrintf128.dir/llrintf128.cpp.o
[111/506] Building CXX object projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.llrintf16.dir/llrintf16.cpp.o
[112/506] Building CXX object projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.rintf128.dir/rintf128.cpp.o
[113/506] Building CXX object projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.lrintl.dir/lrintl.cpp.o
[114/506] Building CXX object projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.nearbyint.dir/nearbyint.cpp.o
[115/506] Building CXX object projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.f16fmal.dir/f16fmal.cpp.o
FAILED: projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.f16fmal.dir/f16fmal.cpp.o 
/usr/bin/clang++ -DLIBC_NAMESPACE=__llvm_libc_18_0_0_git -D_DEBUG -Iprojects/libc/src/math/generic -I/home/libc-buildbot/libc-aarch64-ubuntu/libc-aarch64-ubuntu/llvm-project/libc/src/math/generic -I/home/libc-buildbot/libc-aarch64-ubuntu/libc-aarch64-ubuntu/llvm-project/libc -isystem projects/libc/include -fPIC -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wc++98-compat-extra-semi -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -g -fpie -fno-builtin -fno-exceptions -fno-lax-vector-conversions -fno-unwind-tables -fno-asynchronous-unwind-tables -fno-rtti -ftrivial-auto-var-init=pattern -fno-omit-frame-pointer -Wall -Wextra -Werror -Wconversion -Wno-sign-conversion -Wimplicit-fallthrough -Wwrite-strings -Wextra-semi -Wnewline-eof -Wnonportable-system-include-path -Wstrict-prototypes -Wthread-safety -Wglobal-constructors -O3 -DLIBC_COPT_PUBLIC_PACKAGING -std=c++17 -MD -MT projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.f16fmal.dir/f16fmal.cpp.o -MF projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.f16fmal.dir/f16fmal.cpp.o.d -o projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.f16fmal.dir/f16fmal.cpp.o -c /home/libc-buildbot/libc-aarch64-ubuntu/libc-aarch64-ubuntu/llvm-project/libc/src/math/generic/f16fmal.cpp
fatal error: error in backend: Cannot select: 0x367e6b60: f16 = fp_round 0x3693a720, TargetConstant:i64<0>, llvm-project/libc/src/__support/FPUtil/generic/FMA.h:191:33
  0x3693a720: f128,ch,glue = CopyFromReg 0x3693d2a0, Register:f128 $q0, 0x3693d2a0:1, llvm-project/libc/src/__support/FPUtil/generic/FMA.h:191:39
    0x3693ca80: f128 = Register $q0
    0x3693d2a0: ch,glue = callseq_end 0x367e6a90, TargetConstant:i64<0>, TargetConstant:i64<0>, 0x367e6a90:1, llvm-project/libc/src/__support/FPUtil/generic/FMA.h:191:39
      0x3693b078: i64 = TargetConstant<0>
      0x3693b078: i64 = TargetConstant<0>
      0x367e6a90: ch,glue = AArch64ISD::CALL 0x36940ee0, TargetExternalSymbol:i64'__addtf3', Register:f128 $q0, Register:f128 $q1, RegisterMask:Untyped, 0x36940ee0:1, llvm-project/libc/src/__support/FPUtil/generic/FMA.h:191:39
        0x367e6000: i64 = TargetExternalSymbol'__addtf3'
        0x3693ca80: f128 = Register $q0
        0x3693b350: f128 = Register $q1
        0x36941768: Untyped = RegisterMask
        0x36940ee0: ch,glue = CopyToReg 0x367e6410, Register:f128 $q1, 0x3693b4f0, 0x367e6410:1, llvm-project/libc/src/__support/FPUtil/generic/FMA.h:191:39
          0x3693b350: f128 = Register $q1
          0x3693b4f0: f128,ch = CopyFromReg 0x3660d258, Register:f128 %34, llvm-project/libc/src/__support/FPUtil/generic/FMA.h:191:39
            0x367e6618: f128 = Register %34
          0x367e6410: ch,glue = CopyToReg 0x36941220, Register:f128 $q0, 0x36941908, llvm-project/libc/src/__support/FPUtil/generic/FMA.h:191:39
            0x3693ca80: f128 = Register $q0
            0x36941908: f128,ch,glue = CopyFromReg 0x367e6f08, Register:f128 $q0, 0x367e6f08:1, llvm-project/libc/src/__support/FPUtil/generic/FMA.h:191:35
              0x3693ca80: f128 = Register $q0
              0x367e6f08: ch,glue = callseq_end 0x3693ca18, TargetConstant:i64<0>, TargetConstant:i64<0>, 0x3693ca18:1, llvm-project/libc/src/__support/FPUtil/generic/FMA.h:191:35
                0x3693b078: i64 = TargetConstant<0>
                0x3693b078: i64 = TargetConstant<0>
                0x3693ca18: ch,glue = AArch64ISD::CALL 0x367e69c0, TargetExternalSymbol:i64'__multf3', Register:f128 $q0, Register:f128 $q1, RegisterMask:Untyped, 0x367e69c0:1, llvm-project/libc/src/__support/FPUtil/generic/FMA.h:191:35
                  0x36940da8: i64 = TargetExternalSymbol'__multf3'
                  0x3693ca80: f128 = Register $q0
                  0x3693b350: f128 = Register $q1
                  0x36941768: Untyped = RegisterMask
                  0x367e69c0: ch,glue = CopyToReg 0x3693d030, Register:f128 $q1, 0x36940f48, 0x3693d030:1, llvm-project/libc/src/__support/FPUtil/generic/FMA.h:191:35



  0x3693b078: i64 = TargetConstant<0>
In function: _ZN22__llvm_libc_18_0_0_git6fputil7generic3fmaIDF16_eEENS_3cpp9enable_ifIXaaaasr3cppE19is_floating_point_vIT_Esr3cppE19is_floating_point_vIT0_ElestS5_stS6_ES5_E4typeES6_S6_S6_
PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0.	Program arguments: /usr/bin/clang++ -DLIBC_NAMESPACE=__llvm_libc_18_0_0_git -D_DEBUG -Iprojects/libc/src/math/generic -I/home/libc-buildbot/libc-aarch64-ubuntu/libc-aarch64-ubuntu/llvm-project/libc/src/math/generic -I/home/libc-buildbot/libc-aarch64-ubuntu/libc-aarch64-ubuntu/llvm-project/libc -isystem projects/libc/include -fPIC -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wc++98-compat-extra-semi -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -g -fpie -fno-builtin -fno-exceptions -fno-lax-vector-conversions -fno-unwind-tables -fno-asynchronous-unwind-tables -fno-rtti -ftrivial-auto-var-init=pattern -fno-omit-frame-pointer -Wall -Wextra -Werror -Wconversion -Wno-sign-conversion -Wimplicit-fallthrough -Wwrite-strings -Wextra-semi -Wnewline-eof -Wnonportable-system-include-path -Wstrict-prototypes -Wthread-safety -Wglobal-constructors -O3 -DLIBC_COPT_PUBLIC_PACKAGING -std=c++17 -MD -MT projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.f16fmal.dir/f16fmal.cpp.o -MF projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.f16fmal.dir/f16fmal.cpp.o.d -o projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.f16fmal.dir/f16fmal.cpp.o -c /home/libc-buildbot/libc-aarch64-ubuntu/libc-aarch64-ubuntu/llvm-project/libc/src/math/generic/f16fmal.cpp 
1.	<eof> parser at end of file

@llvm-ci
Copy link
Collaborator

llvm-ci commented Jun 27, 2024

LLVM Buildbot has detected a new failure on builder libc-aarch64-ubuntu-fullbuild-dbg running on libc-aarch64-ubuntu while building libc at step 4 "annotate".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/71/builds/932

Here is the relevant piece of the build log for the reference:

Step 4 (annotate) failure: 'python ../llvm-zorg/zorg/buildbot/builders/annotated/libc-linux.py ...' (failure)
...
[57/2759] Building CXX object projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.scalbnl.__internal__.dir/scalbnl.cpp.o
[58/2759] Building CXX object projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.atan2f.dir/atan2f.cpp.o
[59/2759] Building CXX object projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.acosf.dir/acosf.cpp.o
[60/2759] Building CXX object projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.atan2f.__internal__.dir/atan2f.cpp.o
[61/2759] Building CXX object projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.scalbn.dir/scalbn.cpp.o
[62/2759] Building CXX object projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.scalbnf128.dir/scalbnf128.cpp.o
[63/2759] Building CXX object projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.asinf.__internal__.dir/asinf.cpp.o
[64/2759] Building CXX object projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.scalbnf16.__internal__.dir/scalbnf16.cpp.o
[65/2759] Building CXX object projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.scalbn.__internal__.dir/scalbn.cpp.o
[66/2759] Building CXX object projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.f16fmaf128.__internal__.dir/f16fmaf128.cpp.o
FAILED: projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.f16fmaf128.__internal__.dir/f16fmaf128.cpp.o 
/usr/bin/clang++ -DLIBC_NAMESPACE=__llvm_libc_19_0_0_git -D_DEBUG -Iprojects/libc/src/math/generic -I/home/libc-buildbot/libc-aarch64-ubuntu/libc-aarch64-ubuntu-fullbuild-dbg/llvm-project/libc/src/math/generic -I/home/libc-buildbot/libc-aarch64-ubuntu/libc-aarch64-ubuntu-fullbuild-dbg/llvm-project/libc -isystem projects/libc/include -fPIC -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wc++98-compat-extra-semi -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -g -fpie -DLIBC_FULL_BUILD -ffreestanding -fno-builtin -fno-exceptions -fno-lax-vector-conversions -fno-unwind-tables -fno-asynchronous-unwind-tables -fno-rtti -ftrivial-auto-var-init=pattern -fno-omit-frame-pointer -Wall -Wextra -Werror -Wconversion -Wno-sign-conversion -Wimplicit-fallthrough -Wwrite-strings -Wextra-semi -Wnewline-eof -Wnonportable-system-include-path -Wstrict-prototypes -Wthread-safety -Wglobal-constructors -O3 -std=c++17 -MD -MT projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.f16fmaf128.__internal__.dir/f16fmaf128.cpp.o -MF projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.f16fmaf128.__internal__.dir/f16fmaf128.cpp.o.d -o projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.f16fmaf128.__internal__.dir/f16fmaf128.cpp.o -c /home/libc-buildbot/libc-aarch64-ubuntu/libc-aarch64-ubuntu-fullbuild-dbg/llvm-project/libc/src/math/generic/f16fmaf128.cpp
fatal error: error in backend: Cannot select: 0x1a7b9920: f16 = fp_round 0x1aa449a0, TargetConstant:i64<0>, llvm-project/libc/src/__support/FPUtil/generic/FMA.h:191:33
  0x1aa449a0: f128,ch,glue = CopyFromReg 0x1aa541c0, Register:f128 $q0, 0x1aa541c0:1, llvm-project/libc/src/__support/FPUtil/generic/FMA.h:191:39
    0x1aa539a0: f128 = Register $q0
    0x1aa541c0: ch,glue = callseq_end 0x1a7b9850, TargetConstant:i64<0>, TargetConstant:i64<0>, 0x1a7b9850:1, llvm-project/libc/src/__support/FPUtil/generic/FMA.h:191:39
      0x1aa452f8: i64 = TargetConstant<0>
      0x1aa452f8: i64 = TargetConstant<0>
      0x1a7b9850: ch,glue = AArch64ISD::CALL 0x1aa459b0, TargetExternalSymbol:i64'__addtf3', Register:f128 $q0, Register:f128 $q1, RegisterMask:Untyped, 0x1aa459b0:1, llvm-project/libc/src/__support/FPUtil/generic/FMA.h:191:39
        0x1a7b8dc0: i64 = TargetExternalSymbol'__addtf3'
        0x1aa539a0: f128 = Register $q0
        0x1aa455d0: f128 = Register $q1
        0x1aa46238: Untyped = RegisterMask
        0x1aa459b0: ch,glue = CopyToReg 0x1a7b91d0, Register:f128 $q1, 0x1aa45770, 0x1a7b91d0:1, llvm-project/libc/src/__support/FPUtil/generic/FMA.h:191:39
          0x1aa455d0: f128 = Register $q1
          0x1aa45770: f128,ch = CopyFromReg 0x19f108a8, Register:f128 %34, llvm-project/libc/src/__support/FPUtil/generic/FMA.h:191:39
            0x1a7b93d8: f128 = Register %34
          0x1a7b91d0: ch,glue = CopyToReg 0x1aa45cf0, Register:f128 $q0, 0x1aa463d8, llvm-project/libc/src/__support/FPUtil/generic/FMA.h:191:39
            0x1aa539a0: f128 = Register $q0
            0x1aa463d8: f128,ch,glue = CopyFromReg 0x1a7b9cc8, Register:f128 $q0, 0x1a7b9cc8:1, llvm-project/libc/src/__support/FPUtil/generic/FMA.h:191:35
              0x1aa539a0: f128 = Register $q0
              0x1a7b9cc8: ch,glue = callseq_end 0x1aa53938, TargetConstant:i64<0>, TargetConstant:i64<0>, 0x1aa53938:1, llvm-project/libc/src/__support/FPUtil/generic/FMA.h:191:35
                0x1aa452f8: i64 = TargetConstant<0>
                0x1aa452f8: i64 = TargetConstant<0>
                0x1aa53938: ch,glue = AArch64ISD::CALL 0x1a7b9780, TargetExternalSymbol:i64'__multf3', Register:f128 $q0, Register:f128 $q1, RegisterMask:Untyped, 0x1a7b9780:1, llvm-project/libc/src/__support/FPUtil/generic/FMA.h:191:35
                  0x1aa45878: i64 = TargetExternalSymbol'__multf3'
                  0x1aa539a0: f128 = Register $q0
                  0x1aa455d0: f128 = Register $q1
                  0x1aa46238: Untyped = RegisterMask
                  0x1a7b9780: ch,glue = CopyToReg 0x1aa53f50, Register:f128 $q1, 0x1aa45a18, 0x1aa53f50:1, llvm-project/libc/src/__support/FPUtil/generic/FMA.h:191:35



  0x1aa452f8: i64 = TargetConstant<0>
In function: _ZN22__llvm_libc_19_0_0_git6fputil7generic3fmaIDF16_eEENS_3cpp9enable_ifIXaaaasr3cppE19is_floating_point_vIT_Esr3cppE19is_floating_point_vIT0_ElestS5_stS6_ES5_E4typeES6_S6_S6_
PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0.	Program arguments: /usr/bin/clang++ -DLIBC_NAMESPACE=__llvm_libc_19_0_0_git -D_DEBUG -Iprojects/libc/src/math/generic -I/home/libc-buildbot/libc-aarch64-ubuntu/libc-aarch64-ubuntu-fullbuild-dbg/llvm-project/libc/src/math/generic -I/home/libc-buildbot/libc-aarch64-ubuntu/libc-aarch64-ubuntu-fullbuild-dbg/llvm-project/libc -isystem projects/libc/include -fPIC -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wc++98-compat-extra-semi -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -g -fpie -DLIBC_FULL_BUILD -ffreestanding -fno-builtin -fno-exceptions -fno-lax-vector-conversions -fno-unwind-tables -fno-asynchronous-unwind-tables -fno-rtti -ftrivial-auto-var-init=pattern -fno-omit-frame-pointer -Wall -Wextra -Werror -Wconversion -Wno-sign-conversion -Wimplicit-fallthrough -Wwrite-strings -Wextra-semi -Wnewline-eof -Wnonportable-system-include-path -Wstrict-prototypes -Wthread-safety -Wglobal-constructors -O3 -std=c++17 -MD -MT projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.f16fmaf128.__internal__.dir/f16fmaf128.cpp.o -MF projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.f16fmaf128.__internal__.dir/f16fmaf128.cpp.o.d -o projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.f16fmaf128.__internal__.dir/f16fmaf128.cpp.o -c /home/libc-buildbot/libc-aarch64-ubuntu/libc-aarch64-ubuntu-fullbuild-dbg/llvm-project/libc/src/math/generic/f16fmaf128.cpp 
1.	<eof> parser at end of file
Step 8 (libc-unit-tests) failure: libc-unit-tests (failure)
...
[57/2759] Building CXX object projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.scalbnl.__internal__.dir/scalbnl.cpp.o
[58/2759] Building CXX object projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.atan2f.dir/atan2f.cpp.o
[59/2759] Building CXX object projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.acosf.dir/acosf.cpp.o
[60/2759] Building CXX object projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.atan2f.__internal__.dir/atan2f.cpp.o
[61/2759] Building CXX object projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.scalbn.dir/scalbn.cpp.o
[62/2759] Building CXX object projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.scalbnf128.dir/scalbnf128.cpp.o
[63/2759] Building CXX object projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.asinf.__internal__.dir/asinf.cpp.o
[64/2759] Building CXX object projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.scalbnf16.__internal__.dir/scalbnf16.cpp.o
[65/2759] Building CXX object projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.scalbn.__internal__.dir/scalbn.cpp.o
[66/2759] Building CXX object projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.f16fmaf128.__internal__.dir/f16fmaf128.cpp.o
FAILED: projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.f16fmaf128.__internal__.dir/f16fmaf128.cpp.o 
/usr/bin/clang++ -DLIBC_NAMESPACE=__llvm_libc_19_0_0_git -D_DEBUG -Iprojects/libc/src/math/generic -I/home/libc-buildbot/libc-aarch64-ubuntu/libc-aarch64-ubuntu-fullbuild-dbg/llvm-project/libc/src/math/generic -I/home/libc-buildbot/libc-aarch64-ubuntu/libc-aarch64-ubuntu-fullbuild-dbg/llvm-project/libc -isystem projects/libc/include -fPIC -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wc++98-compat-extra-semi -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -g -fpie -DLIBC_FULL_BUILD -ffreestanding -fno-builtin -fno-exceptions -fno-lax-vector-conversions -fno-unwind-tables -fno-asynchronous-unwind-tables -fno-rtti -ftrivial-auto-var-init=pattern -fno-omit-frame-pointer -Wall -Wextra -Werror -Wconversion -Wno-sign-conversion -Wimplicit-fallthrough -Wwrite-strings -Wextra-semi -Wnewline-eof -Wnonportable-system-include-path -Wstrict-prototypes -Wthread-safety -Wglobal-constructors -O3 -std=c++17 -MD -MT projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.f16fmaf128.__internal__.dir/f16fmaf128.cpp.o -MF projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.f16fmaf128.__internal__.dir/f16fmaf128.cpp.o.d -o projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.f16fmaf128.__internal__.dir/f16fmaf128.cpp.o -c /home/libc-buildbot/libc-aarch64-ubuntu/libc-aarch64-ubuntu-fullbuild-dbg/llvm-project/libc/src/math/generic/f16fmaf128.cpp
fatal error: error in backend: Cannot select: 0x1a7b9920: f16 = fp_round 0x1aa449a0, TargetConstant:i64<0>, llvm-project/libc/src/__support/FPUtil/generic/FMA.h:191:33
  0x1aa449a0: f128,ch,glue = CopyFromReg 0x1aa541c0, Register:f128 $q0, 0x1aa541c0:1, llvm-project/libc/src/__support/FPUtil/generic/FMA.h:191:39
    0x1aa539a0: f128 = Register $q0
    0x1aa541c0: ch,glue = callseq_end 0x1a7b9850, TargetConstant:i64<0>, TargetConstant:i64<0>, 0x1a7b9850:1, llvm-project/libc/src/__support/FPUtil/generic/FMA.h:191:39
      0x1aa452f8: i64 = TargetConstant<0>
      0x1aa452f8: i64 = TargetConstant<0>
      0x1a7b9850: ch,glue = AArch64ISD::CALL 0x1aa459b0, TargetExternalSymbol:i64'__addtf3', Register:f128 $q0, Register:f128 $q1, RegisterMask:Untyped, 0x1aa459b0:1, llvm-project/libc/src/__support/FPUtil/generic/FMA.h:191:39
        0x1a7b8dc0: i64 = TargetExternalSymbol'__addtf3'
        0x1aa539a0: f128 = Register $q0
        0x1aa455d0: f128 = Register $q1
        0x1aa46238: Untyped = RegisterMask
        0x1aa459b0: ch,glue = CopyToReg 0x1a7b91d0, Register:f128 $q1, 0x1aa45770, 0x1a7b91d0:1, llvm-project/libc/src/__support/FPUtil/generic/FMA.h:191:39
          0x1aa455d0: f128 = Register $q1
          0x1aa45770: f128,ch = CopyFromReg 0x19f108a8, Register:f128 %34, llvm-project/libc/src/__support/FPUtil/generic/FMA.h:191:39
            0x1a7b93d8: f128 = Register %34
          0x1a7b91d0: ch,glue = CopyToReg 0x1aa45cf0, Register:f128 $q0, 0x1aa463d8, llvm-project/libc/src/__support/FPUtil/generic/FMA.h:191:39
            0x1aa539a0: f128 = Register $q0
            0x1aa463d8: f128,ch,glue = CopyFromReg 0x1a7b9cc8, Register:f128 $q0, 0x1a7b9cc8:1, llvm-project/libc/src/__support/FPUtil/generic/FMA.h:191:35
              0x1aa539a0: f128 = Register $q0
              0x1a7b9cc8: ch,glue = callseq_end 0x1aa53938, TargetConstant:i64<0>, TargetConstant:i64<0>, 0x1aa53938:1, llvm-project/libc/src/__support/FPUtil/generic/FMA.h:191:35
                0x1aa452f8: i64 = TargetConstant<0>
                0x1aa452f8: i64 = TargetConstant<0>
                0x1aa53938: ch,glue = AArch64ISD::CALL 0x1a7b9780, TargetExternalSymbol:i64'__multf3', Register:f128 $q0, Register:f128 $q1, RegisterMask:Untyped, 0x1a7b9780:1, llvm-project/libc/src/__support/FPUtil/generic/FMA.h:191:35
                  0x1aa45878: i64 = TargetExternalSymbol'__multf3'
                  0x1aa539a0: f128 = Register $q0
                  0x1aa455d0: f128 = Register $q1
                  0x1aa46238: Untyped = RegisterMask
                  0x1a7b9780: ch,glue = CopyToReg 0x1aa53f50, Register:f128 $q1, 0x1aa45a18, 0x1aa53f50:1, llvm-project/libc/src/__support/FPUtil/generic/FMA.h:191:35



  0x1aa452f8: i64 = TargetConstant<0>
In function: _ZN22__llvm_libc_19_0_0_git6fputil7generic3fmaIDF16_eEENS_3cpp9enable_ifIXaaaasr3cppE19is_floating_point_vIT_Esr3cppE19is_floating_point_vIT0_ElestS5_stS6_ES5_E4typeES6_S6_S6_
PLEASE submit a bug report to https://bugs.llvm.org/ and include the crash backtrace, preprocessed source, and associated run script.
Stack dump:
0.	Program arguments: /usr/bin/clang++ -DLIBC_NAMESPACE=__llvm_libc_19_0_0_git -D_DEBUG -Iprojects/libc/src/math/generic -I/home/libc-buildbot/libc-aarch64-ubuntu/libc-aarch64-ubuntu-fullbuild-dbg/llvm-project/libc/src/math/generic -I/home/libc-buildbot/libc-aarch64-ubuntu/libc-aarch64-ubuntu-fullbuild-dbg/llvm-project/libc -isystem projects/libc/include -fPIC -fvisibility-inlines-hidden -Werror=date-time -Werror=unguarded-availability-new -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wmissing-field-initializers -pedantic -Wno-long-long -Wc++98-compat-extra-semi -Wimplicit-fallthrough -Wcovered-switch-default -Wno-noexcept-type -Wnon-virtual-dtor -Wdelete-non-virtual-dtor -Wsuggest-override -Wstring-conversion -Wmisleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -g -fpie -DLIBC_FULL_BUILD -ffreestanding -fno-builtin -fno-exceptions -fno-lax-vector-conversions -fno-unwind-tables -fno-asynchronous-unwind-tables -fno-rtti -ftrivial-auto-var-init=pattern -fno-omit-frame-pointer -Wall -Wextra -Werror -Wconversion -Wno-sign-conversion -Wimplicit-fallthrough -Wwrite-strings -Wextra-semi -Wnewline-eof -Wnonportable-system-include-path -Wstrict-prototypes -Wthread-safety -Wglobal-constructors -O3 -std=c++17 -MD -MT projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.f16fmaf128.__internal__.dir/f16fmaf128.cpp.o -MF projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.f16fmaf128.__internal__.dir/f16fmaf128.cpp.o.d -o projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.f16fmaf128.__internal__.dir/f16fmaf128.cpp.o -c /home/libc-buildbot/libc-aarch64-ubuntu/libc-aarch64-ubuntu-fullbuild-dbg/llvm-project/libc/src/math/generic/f16fmaf128.cpp 
1.	<eof> parser at end of file

@llvm-ci
Copy link
Collaborator

llvm-ci commented Jun 27, 2024

LLVM Buildbot has detected a new failure on builder libc-x86_64-debian-gcc-fullbuild-dbg running on libc-x86_64-debian-fullbuild while building libc at step 4 "annotate".

Full details are available at: https://lab.llvm.org/buildbot/#/builders/131/builds/913

Here is the relevant piece of the build log for the reference:

Step 4 (annotate) failure: 'python ../llvm-zorg/zorg/buildbot/builders/annotated/libc-linux.py ...' (failure)
...
[584/3056] Building CXX object projects/libc/src/stdbit/CMakeFiles/libc.src.stdbit.stdc_first_leading_zero_uc.__internal__.dir/stdc_first_leading_zero_uc.cpp.o
[585/3056] Building CXX object projects/libc/src/stdbit/CMakeFiles/libc.src.stdbit.stdc_first_leading_zero_us.__internal__.dir/stdc_first_leading_zero_us.cpp.o
[586/3056] Building CXX object projects/libc/src/stdbit/CMakeFiles/libc.src.stdbit.stdc_first_leading_zero_ui.__internal__.dir/stdc_first_leading_zero_ui.cpp.o
[587/3056] Building CXX object projects/libc/src/stdbit/CMakeFiles/libc.src.stdbit.stdc_first_leading_zero_ul.__internal__.dir/stdc_first_leading_zero_ul.cpp.o
[588/3056] Building CXX object projects/libc/src/stdbit/CMakeFiles/libc.src.stdbit.stdc_first_leading_one_uc.__internal__.dir/stdc_first_leading_one_uc.cpp.o
[589/3056] Building CXX object projects/libc/src/stdbit/CMakeFiles/libc.src.stdbit.stdc_first_leading_one_ull.__internal__.dir/stdc_first_leading_one_ull.cpp.o
[590/3056] Building CXX object projects/libc/src/stdbit/CMakeFiles/libc.src.stdbit.stdc_first_trailing_zero_us.__internal__.dir/stdc_first_trailing_zero_us.cpp.o
[591/3056] Building CXX object projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.coshf.dir/coshf.cpp.o
[592/3056] Building CXX object projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.sinhf.__internal__.dir/sinhf.cpp.o
[593/3056] Building CXX object projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.fma.__NO_FMA_OPT.__internal__.dir/fma.cpp.o
FAILED: projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.fma.__NO_FMA_OPT.__internal__.dir/fma.cpp.o 
/usr/bin/g++ -DLIBC_NAMESPACE=__llvm_libc_19_0_0_git -D_DEBUG -I/home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian-fullbuild/libc-x86_64-debian-gcc-fullbuild-dbg/build/projects/libc/src/math/generic -I/home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian-fullbuild/libc-x86_64-debian-gcc-fullbuild-dbg/llvm-project/libc/src/math/generic -I/home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian-fullbuild/libc-x86_64-debian-gcc-fullbuild-dbg/llvm-project/libc -isystem /home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian-fullbuild/libc-x86_64-debian-gcc-fullbuild-dbg/build/projects/libc/include -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -fno-lifetime-dse -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wno-maybe-uninitialized -Wno-nonnull -Wno-class-memaccess -Wno-redundant-move -Wno-pessimizing-move -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wsuggest-override -Wno-comment -Wno-misleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -g -fpie -DLIBC_FULL_BUILD -ffreestanding -fno-builtin -fno-exceptions -fno-lax-vector-conversions -fno-unwind-tables -fno-asynchronous-unwind-tables -fno-rtti -ftrivial-auto-var-init=pattern -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -Wall -Wextra -Werror -Wconversion -Wno-sign-conversion -Wimplicit-fallthrough -Wwrite-strings -Wextra-semi -O3 -std=c++17 -MD -MT projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.fma.__NO_FMA_OPT.__internal__.dir/fma.cpp.o -MF projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.fma.__NO_FMA_OPT.__internal__.dir/fma.cpp.o.d -o projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.fma.__NO_FMA_OPT.__internal__.dir/fma.cpp.o -c /home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian-fullbuild/libc-x86_64-debian-gcc-fullbuild-dbg/llvm-project/libc/src/math/generic/fma.cpp
In file included from /home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian-fullbuild/libc-x86_64-debian-gcc-fullbuild-dbg/llvm-project/libc/src/__support/integer_to_string.h:70,
                 from /home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian-fullbuild/libc-x86_64-debian-gcc-fullbuild-dbg/llvm-project/libc/src/__support/libc_assert.h:25,
                 from /home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian-fullbuild/libc-x86_64-debian-gcc-fullbuild-dbg/llvm-project/libc/src/__support/FPUtil/FPBits.h:15,
                 from /home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian-fullbuild/libc-x86_64-debian-gcc-fullbuild-dbg/llvm-project/libc/src/__support/FPUtil/BasicOperations.h:13,
                 from /home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian-fullbuild/libc-x86_64-debian-gcc-fullbuild-dbg/llvm-project/libc/src/__support/FPUtil/generic/FMA.h:15,
                 from /home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian-fullbuild/libc-x86_64-debian-gcc-fullbuild-dbg/llvm-project/libc/src/__support/FPUtil/FMA.h:13,
                 from /home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian-fullbuild/libc-x86_64-debian-gcc-fullbuild-dbg/llvm-project/libc/src/math/generic/fma.cpp:12:
/home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian-fullbuild/libc-x86_64-debian-gcc-fullbuild-dbg/llvm-project/libc/src/__support/big_int.h: In instantiation of ‘constexpr __llvm_libc_19_0_0_git::BigInt<Bits, Signed, WordType>::BigInt(T) [with T = bool; <template-parameter-2-2> = void; long unsigned int Bits = 128; bool Signed = false; WordType = long unsigned int]’:
/home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian-fullbuild/libc-x86_64-debian-gcc-fullbuild-dbg/llvm-project/libc/src/__support/FPUtil/generic/FMA.h:269:19:   required from ‘__llvm_libc_19_0_0_git::cpp::enable_if_t<((is_floating_point_v<OutType> && is_floating_point_v<InType>) && (sizeof (OutType) <= sizeof (InType))), OutType> __llvm_libc_19_0_0_git::fputil::generic::fma(InType, InType, InType) [with OutType = double; InType = double; __llvm_libc_19_0_0_git::cpp::enable_if_t<((is_floating_point_v<OutType> && is_floating_point_v<InType>) && (sizeof (OutType) <= sizeof (InType))), OutType> = double]’
/home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian-fullbuild/libc-x86_64-debian-gcc-fullbuild-dbg/llvm-project/libc/src/__support/FPUtil/FMA.h:22:31:   required from ‘OutType __llvm_libc_19_0_0_git::fputil::fma(InType, InType, InType) [with OutType = double; InType = double]’
/home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian-fullbuild/libc-x86_64-debian-gcc-fullbuild-dbg/llvm-project/libc/src/math/generic/fma.cpp:17:29:   required from here
/home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian-fullbuild/libc-x86_64-debian-gcc-fullbuild-dbg/llvm-project/libc/src/__support/big_int.h:393:38: error: comparison of constant ‘0’ with boolean expression is always false [-Werror=bool-compare]
  393 |     const bool is_neg = Signed && (v < 0);
      |                                   ~~~^~~~
cc1plus: all warnings being treated as errors
[594/3056] Building CXX object projects/libc/src/stdbit/CMakeFiles/libc.src.stdbit.stdc_first_leading_zero_ull.__internal__.dir/stdc_first_leading_zero_ull.cpp.o
[595/3056] Building CXX object projects/libc/src/stdbit/CMakeFiles/libc.src.stdbit.stdc_first_leading_one_ui.__internal__.dir/stdc_first_leading_one_ui.cpp.o
[596/3056] Building CXX object projects/libc/src/stdbit/CMakeFiles/libc.src.stdbit.stdc_first_leading_one_ul.__internal__.dir/stdc_first_leading_one_ul.cpp.o
[597/3056] Building CXX object projects/libc/src/stdbit/CMakeFiles/libc.src.stdbit.stdc_first_trailing_zero_uc.__internal__.dir/stdc_first_trailing_zero_uc.cpp.o
[598/3056] Building CXX object projects/libc/src/stdbit/CMakeFiles/libc.src.stdbit.stdc_first_trailing_zero_ui.__internal__.dir/stdc_first_trailing_zero_ui.cpp.o
[599/3056] Building CXX object projects/libc/src/stdbit/CMakeFiles/libc.src.stdbit.stdc_first_trailing_one_ui.__internal__.dir/stdc_first_trailing_one_ui.cpp.o
[600/3056] Building CXX object projects/libc/src/stdbit/CMakeFiles/libc.src.stdbit.stdc_first_trailing_zero_ull.__internal__.dir/stdc_first_trailing_zero_ull.cpp.o
[601/3056] Building CXX object projects/libc/src/stdbit/CMakeFiles/libc.src.stdbit.stdc_first_trailing_one_ul.__internal__.dir/stdc_first_trailing_one_ul.cpp.o
[602/3056] Building CXX object projects/libc/src/stdbit/CMakeFiles/libc.src.stdbit.stdc_first_trailing_zero_ul.__internal__.dir/stdc_first_trailing_zero_ul.cpp.o
[603/3056] Building CXX object projects/libc/src/stdbit/CMakeFiles/libc.src.stdbit.stdc_first_trailing_one_us.__internal__.dir/stdc_first_trailing_one_us.cpp.o
[604/3056] Building CXX object projects/libc/src/stdbit/CMakeFiles/libc.src.stdbit.stdc_count_zeros_uc.__internal__.dir/stdc_count_zeros_uc.cpp.o
[605/3056] Building CXX object projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.fma.__NO_FMA_OPT.dir/fma.cpp.o
FAILED: projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.fma.__NO_FMA_OPT.dir/fma.cpp.o 
/usr/bin/g++ -DLIBC_NAMESPACE=__llvm_libc_19_0_0_git -D_DEBUG -I/home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian-fullbuild/libc-x86_64-debian-gcc-fullbuild-dbg/build/projects/libc/src/math/generic -I/home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian-fullbuild/libc-x86_64-debian-gcc-fullbuild-dbg/llvm-project/libc/src/math/generic -I/home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian-fullbuild/libc-x86_64-debian-gcc-fullbuild-dbg/llvm-project/libc -isystem /home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian-fullbuild/libc-x86_64-debian-gcc-fullbuild-dbg/build/projects/libc/include -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -fno-lifetime-dse -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wno-maybe-uninitialized -Wno-nonnull -Wno-class-memaccess -Wno-redundant-move -Wno-pessimizing-move -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wsuggest-override -Wno-comment -Wno-misleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -g -fpie -DLIBC_FULL_BUILD -ffreestanding -fno-builtin -fno-exceptions -fno-lax-vector-conversions -fno-unwind-tables -fno-asynchronous-unwind-tables -fno-rtti -ftrivial-auto-var-init=pattern -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -Wall -Wextra -Werror -Wconversion -Wno-sign-conversion -Wimplicit-fallthrough -Wwrite-strings -Wextra-semi -O3 -DLIBC_COPT_PUBLIC_PACKAGING -std=c++17 -MD -MT projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.fma.__NO_FMA_OPT.dir/fma.cpp.o -MF projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.fma.__NO_FMA_OPT.dir/fma.cpp.o.d -o projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.fma.__NO_FMA_OPT.dir/fma.cpp.o -c /home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian-fullbuild/libc-x86_64-debian-gcc-fullbuild-dbg/llvm-project/libc/src/math/generic/fma.cpp
In file included from /home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian-fullbuild/libc-x86_64-debian-gcc-fullbuild-dbg/llvm-project/libc/src/__support/integer_to_string.h:70,
                 from /home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian-fullbuild/libc-x86_64-debian-gcc-fullbuild-dbg/llvm-project/libc/src/__support/libc_assert.h:25,
                 from /home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian-fullbuild/libc-x86_64-debian-gcc-fullbuild-dbg/llvm-project/libc/src/__support/FPUtil/FPBits.h:15,
                 from /home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian-fullbuild/libc-x86_64-debian-gcc-fullbuild-dbg/llvm-project/libc/src/__support/FPUtil/BasicOperations.h:13,
                 from /home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian-fullbuild/libc-x86_64-debian-gcc-fullbuild-dbg/llvm-project/libc/src/__support/FPUtil/generic/FMA.h:15,
                 from /home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian-fullbuild/libc-x86_64-debian-gcc-fullbuild-dbg/llvm-project/libc/src/__support/FPUtil/FMA.h:13,
                 from /home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian-fullbuild/libc-x86_64-debian-gcc-fullbuild-dbg/llvm-project/libc/src/math/generic/fma.cpp:12:
/home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian-fullbuild/libc-x86_64-debian-gcc-fullbuild-dbg/llvm-project/libc/src/__support/big_int.h: In instantiation of ‘constexpr __llvm_libc_19_0_0_git::BigInt<Bits, Signed, WordType>::BigInt(T) [with T = bool; <template-parameter-2-2> = void; long unsigned int Bits = 128; bool Signed = false; WordType = long unsigned int]’:
Step 8 (libc-unit-tests) failure: libc-unit-tests (failure)
...
[584/3056] Building CXX object projects/libc/src/stdbit/CMakeFiles/libc.src.stdbit.stdc_first_leading_zero_uc.__internal__.dir/stdc_first_leading_zero_uc.cpp.o
[585/3056] Building CXX object projects/libc/src/stdbit/CMakeFiles/libc.src.stdbit.stdc_first_leading_zero_us.__internal__.dir/stdc_first_leading_zero_us.cpp.o
[586/3056] Building CXX object projects/libc/src/stdbit/CMakeFiles/libc.src.stdbit.stdc_first_leading_zero_ui.__internal__.dir/stdc_first_leading_zero_ui.cpp.o
[587/3056] Building CXX object projects/libc/src/stdbit/CMakeFiles/libc.src.stdbit.stdc_first_leading_zero_ul.__internal__.dir/stdc_first_leading_zero_ul.cpp.o
[588/3056] Building CXX object projects/libc/src/stdbit/CMakeFiles/libc.src.stdbit.stdc_first_leading_one_uc.__internal__.dir/stdc_first_leading_one_uc.cpp.o
[589/3056] Building CXX object projects/libc/src/stdbit/CMakeFiles/libc.src.stdbit.stdc_first_leading_one_ull.__internal__.dir/stdc_first_leading_one_ull.cpp.o
[590/3056] Building CXX object projects/libc/src/stdbit/CMakeFiles/libc.src.stdbit.stdc_first_trailing_zero_us.__internal__.dir/stdc_first_trailing_zero_us.cpp.o
[591/3056] Building CXX object projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.coshf.dir/coshf.cpp.o
[592/3056] Building CXX object projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.sinhf.__internal__.dir/sinhf.cpp.o
[593/3056] Building CXX object projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.fma.__NO_FMA_OPT.__internal__.dir/fma.cpp.o
FAILED: projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.fma.__NO_FMA_OPT.__internal__.dir/fma.cpp.o 
/usr/bin/g++ -DLIBC_NAMESPACE=__llvm_libc_19_0_0_git -D_DEBUG -I/home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian-fullbuild/libc-x86_64-debian-gcc-fullbuild-dbg/build/projects/libc/src/math/generic -I/home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian-fullbuild/libc-x86_64-debian-gcc-fullbuild-dbg/llvm-project/libc/src/math/generic -I/home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian-fullbuild/libc-x86_64-debian-gcc-fullbuild-dbg/llvm-project/libc -isystem /home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian-fullbuild/libc-x86_64-debian-gcc-fullbuild-dbg/build/projects/libc/include -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -fno-lifetime-dse -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wno-maybe-uninitialized -Wno-nonnull -Wno-class-memaccess -Wno-redundant-move -Wno-pessimizing-move -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wsuggest-override -Wno-comment -Wno-misleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -g -fpie -DLIBC_FULL_BUILD -ffreestanding -fno-builtin -fno-exceptions -fno-lax-vector-conversions -fno-unwind-tables -fno-asynchronous-unwind-tables -fno-rtti -ftrivial-auto-var-init=pattern -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -Wall -Wextra -Werror -Wconversion -Wno-sign-conversion -Wimplicit-fallthrough -Wwrite-strings -Wextra-semi -O3 -std=c++17 -MD -MT projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.fma.__NO_FMA_OPT.__internal__.dir/fma.cpp.o -MF projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.fma.__NO_FMA_OPT.__internal__.dir/fma.cpp.o.d -o projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.fma.__NO_FMA_OPT.__internal__.dir/fma.cpp.o -c /home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian-fullbuild/libc-x86_64-debian-gcc-fullbuild-dbg/llvm-project/libc/src/math/generic/fma.cpp
In file included from /home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian-fullbuild/libc-x86_64-debian-gcc-fullbuild-dbg/llvm-project/libc/src/__support/integer_to_string.h:70,
                 from /home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian-fullbuild/libc-x86_64-debian-gcc-fullbuild-dbg/llvm-project/libc/src/__support/libc_assert.h:25,
                 from /home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian-fullbuild/libc-x86_64-debian-gcc-fullbuild-dbg/llvm-project/libc/src/__support/FPUtil/FPBits.h:15,
                 from /home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian-fullbuild/libc-x86_64-debian-gcc-fullbuild-dbg/llvm-project/libc/src/__support/FPUtil/BasicOperations.h:13,
                 from /home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian-fullbuild/libc-x86_64-debian-gcc-fullbuild-dbg/llvm-project/libc/src/__support/FPUtil/generic/FMA.h:15,
                 from /home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian-fullbuild/libc-x86_64-debian-gcc-fullbuild-dbg/llvm-project/libc/src/__support/FPUtil/FMA.h:13,
                 from /home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian-fullbuild/libc-x86_64-debian-gcc-fullbuild-dbg/llvm-project/libc/src/math/generic/fma.cpp:12:
/home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian-fullbuild/libc-x86_64-debian-gcc-fullbuild-dbg/llvm-project/libc/src/__support/big_int.h: In instantiation of ‘constexpr __llvm_libc_19_0_0_git::BigInt<Bits, Signed, WordType>::BigInt(T) [with T = bool; <template-parameter-2-2> = void; long unsigned int Bits = 128; bool Signed = false; WordType = long unsigned int]’:
/home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian-fullbuild/libc-x86_64-debian-gcc-fullbuild-dbg/llvm-project/libc/src/__support/FPUtil/generic/FMA.h:269:19:   required from ‘__llvm_libc_19_0_0_git::cpp::enable_if_t<((is_floating_point_v<OutType> && is_floating_point_v<InType>) && (sizeof (OutType) <= sizeof (InType))), OutType> __llvm_libc_19_0_0_git::fputil::generic::fma(InType, InType, InType) [with OutType = double; InType = double; __llvm_libc_19_0_0_git::cpp::enable_if_t<((is_floating_point_v<OutType> && is_floating_point_v<InType>) && (sizeof (OutType) <= sizeof (InType))), OutType> = double]’
/home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian-fullbuild/libc-x86_64-debian-gcc-fullbuild-dbg/llvm-project/libc/src/__support/FPUtil/FMA.h:22:31:   required from ‘OutType __llvm_libc_19_0_0_git::fputil::fma(InType, InType, InType) [with OutType = double; InType = double]’
/home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian-fullbuild/libc-x86_64-debian-gcc-fullbuild-dbg/llvm-project/libc/src/math/generic/fma.cpp:17:29:   required from here
/home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian-fullbuild/libc-x86_64-debian-gcc-fullbuild-dbg/llvm-project/libc/src/__support/big_int.h:393:38: error: comparison of constant ‘0’ with boolean expression is always false [-Werror=bool-compare]
  393 |     const bool is_neg = Signed && (v < 0);
      |                                   ~~~^~~~
cc1plus: all warnings being treated as errors
[594/3056] Building CXX object projects/libc/src/stdbit/CMakeFiles/libc.src.stdbit.stdc_first_leading_zero_ull.__internal__.dir/stdc_first_leading_zero_ull.cpp.o
[595/3056] Building CXX object projects/libc/src/stdbit/CMakeFiles/libc.src.stdbit.stdc_first_leading_one_ui.__internal__.dir/stdc_first_leading_one_ui.cpp.o
[596/3056] Building CXX object projects/libc/src/stdbit/CMakeFiles/libc.src.stdbit.stdc_first_leading_one_ul.__internal__.dir/stdc_first_leading_one_ul.cpp.o
[597/3056] Building CXX object projects/libc/src/stdbit/CMakeFiles/libc.src.stdbit.stdc_first_trailing_zero_uc.__internal__.dir/stdc_first_trailing_zero_uc.cpp.o
[598/3056] Building CXX object projects/libc/src/stdbit/CMakeFiles/libc.src.stdbit.stdc_first_trailing_zero_ui.__internal__.dir/stdc_first_trailing_zero_ui.cpp.o
[599/3056] Building CXX object projects/libc/src/stdbit/CMakeFiles/libc.src.stdbit.stdc_first_trailing_one_ui.__internal__.dir/stdc_first_trailing_one_ui.cpp.o
[600/3056] Building CXX object projects/libc/src/stdbit/CMakeFiles/libc.src.stdbit.stdc_first_trailing_zero_ull.__internal__.dir/stdc_first_trailing_zero_ull.cpp.o
[601/3056] Building CXX object projects/libc/src/stdbit/CMakeFiles/libc.src.stdbit.stdc_first_trailing_one_ul.__internal__.dir/stdc_first_trailing_one_ul.cpp.o
[602/3056] Building CXX object projects/libc/src/stdbit/CMakeFiles/libc.src.stdbit.stdc_first_trailing_zero_ul.__internal__.dir/stdc_first_trailing_zero_ul.cpp.o
[603/3056] Building CXX object projects/libc/src/stdbit/CMakeFiles/libc.src.stdbit.stdc_first_trailing_one_us.__internal__.dir/stdc_first_trailing_one_us.cpp.o
[604/3056] Building CXX object projects/libc/src/stdbit/CMakeFiles/libc.src.stdbit.stdc_count_zeros_uc.__internal__.dir/stdc_count_zeros_uc.cpp.o
[605/3056] Building CXX object projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.fma.__NO_FMA_OPT.dir/fma.cpp.o
FAILED: projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.fma.__NO_FMA_OPT.dir/fma.cpp.o 
/usr/bin/g++ -DLIBC_NAMESPACE=__llvm_libc_19_0_0_git -D_DEBUG -I/home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian-fullbuild/libc-x86_64-debian-gcc-fullbuild-dbg/build/projects/libc/src/math/generic -I/home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian-fullbuild/libc-x86_64-debian-gcc-fullbuild-dbg/llvm-project/libc/src/math/generic -I/home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian-fullbuild/libc-x86_64-debian-gcc-fullbuild-dbg/llvm-project/libc -isystem /home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian-fullbuild/libc-x86_64-debian-gcc-fullbuild-dbg/build/projects/libc/include -fPIC -fno-semantic-interposition -fvisibility-inlines-hidden -Werror=date-time -fno-lifetime-dse -Wall -Wextra -Wno-unused-parameter -Wwrite-strings -Wcast-qual -Wno-missing-field-initializers -pedantic -Wno-long-long -Wimplicit-fallthrough -Wno-maybe-uninitialized -Wno-nonnull -Wno-class-memaccess -Wno-redundant-move -Wno-pessimizing-move -Wno-noexcept-type -Wdelete-non-virtual-dtor -Wsuggest-override -Wno-comment -Wno-misleading-indentation -Wctad-maybe-unsupported -fdiagnostics-color -g -fpie -DLIBC_FULL_BUILD -ffreestanding -fno-builtin -fno-exceptions -fno-lax-vector-conversions -fno-unwind-tables -fno-asynchronous-unwind-tables -fno-rtti -ftrivial-auto-var-init=pattern -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer -Wall -Wextra -Werror -Wconversion -Wno-sign-conversion -Wimplicit-fallthrough -Wwrite-strings -Wextra-semi -O3 -DLIBC_COPT_PUBLIC_PACKAGING -std=c++17 -MD -MT projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.fma.__NO_FMA_OPT.dir/fma.cpp.o -MF projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.fma.__NO_FMA_OPT.dir/fma.cpp.o.d -o projects/libc/src/math/generic/CMakeFiles/libc.src.math.generic.fma.__NO_FMA_OPT.dir/fma.cpp.o -c /home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian-fullbuild/libc-x86_64-debian-gcc-fullbuild-dbg/llvm-project/libc/src/math/generic/fma.cpp
In file included from /home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian-fullbuild/libc-x86_64-debian-gcc-fullbuild-dbg/llvm-project/libc/src/__support/integer_to_string.h:70,
                 from /home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian-fullbuild/libc-x86_64-debian-gcc-fullbuild-dbg/llvm-project/libc/src/__support/libc_assert.h:25,
                 from /home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian-fullbuild/libc-x86_64-debian-gcc-fullbuild-dbg/llvm-project/libc/src/__support/FPUtil/FPBits.h:15,
                 from /home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian-fullbuild/libc-x86_64-debian-gcc-fullbuild-dbg/llvm-project/libc/src/__support/FPUtil/BasicOperations.h:13,
                 from /home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian-fullbuild/libc-x86_64-debian-gcc-fullbuild-dbg/llvm-project/libc/src/__support/FPUtil/generic/FMA.h:15,
                 from /home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian-fullbuild/libc-x86_64-debian-gcc-fullbuild-dbg/llvm-project/libc/src/__support/FPUtil/FMA.h:13,
                 from /home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian-fullbuild/libc-x86_64-debian-gcc-fullbuild-dbg/llvm-project/libc/src/math/generic/fma.cpp:12:
/home/llvm-libc-buildbot/buildbot-worker/libc-x86_64-debian-fullbuild/libc-x86_64-debian-gcc-fullbuild-dbg/llvm-project/libc/src/__support/big_int.h: In instantiation of ‘constexpr __llvm_libc_19_0_0_git::BigInt<Bits, Signed, WordType>::BigInt(T) [with T = bool; <template-parameter-2-2> = void; long unsigned int Bits = 128; bool Signed = false; WordType = long unsigned int]’:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants