3 changes: 2 additions & 1 deletion libc/src/math/generic/coshf.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
#include "src/math/coshf.h"
#include "src/__support/FPUtil/FPBits.h"
#include "src/__support/FPUtil/multiply_add.h"
#include "src/__support/FPUtil/rounding_mode.h"
#include "src/__support/macros/optimization.h" // LIBC_UNLIKELY
#include "src/math/generic/explogxf.h"

Expand All @@ -32,7 +33,7 @@ LLVM_LIBC_FUNCTION(float, coshf, (float x)) {
if (xbits.is_inf_or_nan())
return x + FPBits::inf().get_val();

int rounding = fputil::get_round();
int rounding = fputil::quick_get_round();
if (LIBC_UNLIKELY(rounding == FE_DOWNWARD || rounding == FE_TOWARDZERO))
return FPBits(FPBits::MAX_NORMAL).get_val();

Expand Down
9 changes: 5 additions & 4 deletions libc/src/math/generic/exp10f.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
#include "src/__support/FPUtil/PolyEval.h"
#include "src/__support/FPUtil/multiply_add.h"
#include "src/__support/FPUtil/nearest_integer.h"
#include "src/__support/FPUtil/rounding_mode.h"
#include "src/__support/common.h"
#include "src/__support/macros/optimization.h" // LIBC_UNLIKELY

Expand All @@ -38,7 +39,7 @@ LLVM_LIBC_FUNCTION(float, exp10f, (float x)) {
// exp(nan) = nan
if (xbits.is_nan())
return x;
if (fputil::get_round() == FE_UPWARD)
if (fputil::fenv_is_round_up())
return static_cast<float>(FPBits(FPBits::MIN_SUBNORMAL));
fputil::set_errno_if_required(ERANGE);
fputil::raise_except_if_required(FE_UNDERFLOW);
Expand All @@ -48,7 +49,7 @@ LLVM_LIBC_FUNCTION(float, exp10f, (float x)) {
if (!xbits.get_sign() && (x_u >= 0x421a'209bU)) {
// x is finite
if (x_u < 0x7f80'0000U) {
int rounding = fputil::get_round();
int rounding = fputil::quick_get_round();
if (rounding == FE_DOWNWARD || rounding == FE_TOWARDZERO)
return static_cast<float>(FPBits(FPBits::MAX_NORMAL));

Expand All @@ -63,7 +64,7 @@ LLVM_LIBC_FUNCTION(float, exp10f, (float x)) {
// When |x| <= log10(2)*2^-6
if (LIBC_UNLIKELY(x_abs <= 0x3b9a'209bU)) {
if (LIBC_UNLIKELY(x_u == 0xb25e'5bd9U)) { // x = -0x1.bcb7b2p-27f
if (fputil::get_round() == FE_TONEAREST)
if (fputil::fenv_is_round_to_nearest())
return 0x1.fffffep-1f;
}
// |x| < 2^-25
Expand All @@ -77,7 +78,7 @@ LLVM_LIBC_FUNCTION(float, exp10f, (float x)) {

// Exceptional value.
if (LIBC_UNLIKELY(x_u == 0x3d14'd956U)) { // x = 0x1.29b2acp-5f
if (fputil::get_round() == FE_UPWARD)
if (fputil::fenv_is_round_up())
return 0x1.1657c4p+0f;
}

Expand Down
9 changes: 5 additions & 4 deletions libc/src/math/generic/exp2f.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
#include "src/__support/FPUtil/PolyEval.h"
#include "src/__support/FPUtil/multiply_add.h"
#include "src/__support/FPUtil/nearest_integer.h"
#include "src/__support/FPUtil/rounding_mode.h"
#include "src/__support/common.h"
#include "src/__support/macros/optimization.h" // LIBC_UNLIKELY

Expand Down Expand Up @@ -44,7 +45,7 @@ LLVM_LIBC_FUNCTION(float, exp2f, (float x)) {
if (!xbits.get_sign()) {
// x is finite
if (x_u < 0x7f80'0000U) {
int rounding = fputil::get_round();
int rounding = fputil::quick_get_round();
if (rounding == FE_DOWNWARD || rounding == FE_TOWARDZERO)
return static_cast<float>(FPBits(FPBits::MAX_NORMAL));

Expand All @@ -62,7 +63,7 @@ LLVM_LIBC_FUNCTION(float, exp2f, (float x)) {
// exp(nan) = nan
if (xbits.is_nan())
return x;
if (fputil::get_round() == FE_UPWARD)
if (fputil::fenv_is_round_up())
return FPBits(FPBits::MIN_SUBNORMAL).get_val();
if (x != 0.0f) {
fputil::set_errno_if_required(ERANGE);
Expand All @@ -75,10 +76,10 @@ LLVM_LIBC_FUNCTION(float, exp2f, (float x)) {
// Check exceptional values.
if (LIBC_UNLIKELY((x_u & EXVAL_MASK) == EXVAL_MASK)) {
if (LIBC_UNLIKELY(x_u == EXVAL1)) { // x = 0x1.853a6ep-9f
if (fputil::get_round() == FE_TONEAREST)
if (fputil::fenv_is_round_to_nearest())
return 0x1.00870ap+0f;
} else if (LIBC_UNLIKELY(x_u == EXVAL2)) { // x = -0x1.e7526ep-6f
if (fputil::get_round() == FE_TONEAREST)
if (fputil::fenv_is_round_to_nearest())
return 0x1.f58d62p-1f;
}
}
Expand Down
5 changes: 3 additions & 2 deletions libc/src/math/generic/expf.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
#include "src/__support/FPUtil/PolyEval.h"
#include "src/__support/FPUtil/multiply_add.h"
#include "src/__support/FPUtil/nearest_integer.h"
#include "src/__support/FPUtil/rounding_mode.h"
#include "src/__support/common.h"
#include "src/__support/macros/optimization.h" // LIBC_UNLIKELY

Expand Down Expand Up @@ -48,7 +49,7 @@ LLVM_LIBC_FUNCTION(float, expf, (float x)) {
// exp(nan) = nan
if (xbits.is_nan())
return x;
if (fputil::get_round() == FE_UPWARD)
if (fputil::fenv_is_round_up())
return static_cast<float>(FPBits(FPBits::MIN_SUBNORMAL));
fputil::set_errno_if_required(ERANGE);
fputil::raise_except_if_required(FE_UNDERFLOW);
Expand All @@ -58,7 +59,7 @@ LLVM_LIBC_FUNCTION(float, expf, (float x)) {
if (!xbits.get_sign() && (xbits.uintval() >= 0x42b2'0000)) {
// x is finite
if (xbits.uintval() < 0x7f80'0000U) {
int rounding = fputil::get_round();
int rounding = fputil::quick_get_round();
if (rounding == FE_DOWNWARD || rounding == FE_TOWARDZERO)
return static_cast<float>(FPBits(FPBits::MAX_NORMAL));

Expand Down
9 changes: 5 additions & 4 deletions libc/src/math/generic/expm1f.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
#include "src/__support/FPUtil/PolyEval.h"
#include "src/__support/FPUtil/multiply_add.h"
#include "src/__support/FPUtil/nearest_integer.h"
#include "src/__support/FPUtil/rounding_mode.h"
#include "src/__support/common.h"
#include "src/__support/macros/optimization.h" // LIBC_UNLIKELY
#include "src/__support/macros/properties/cpu_features.h" // LIBC_TARGET_CPU_HAS_FMA
Expand All @@ -32,15 +33,15 @@ LLVM_LIBC_FUNCTION(float, expm1f, (float x)) {

// Exceptional value
if (LIBC_UNLIKELY(x_u == 0x3e35'bec5U)) { // x = 0x1.6b7d8ap-3f
int round_mode = fputil::get_round();
int round_mode = fputil::quick_get_round();
if (round_mode == FE_TONEAREST || round_mode == FE_UPWARD)
return 0x1.8dbe64p-3f;
return 0x1.8dbe62p-3f;
}

#if !defined(LIBC_TARGET_CPU_HAS_FMA)
if (LIBC_UNLIKELY(x_u == 0xbdc1'c6cbU)) { // x = -0x1.838d96p-4f
int round_mode = fputil::get_round();
int round_mode = fputil::quick_get_round();
if (round_mode == FE_TONEAREST || round_mode == FE_DOWNWARD)
return -0x1.71c884p-4f;
return -0x1.71c882p-4f;
Expand All @@ -57,15 +58,15 @@ LLVM_LIBC_FUNCTION(float, expm1f, (float x)) {
// exp(nan) = nan
if (xbits.is_nan())
return x;
int round_mode = fputil::get_round();
int round_mode = fputil::quick_get_round();
if (round_mode == FE_UPWARD || round_mode == FE_TOWARDZERO)
return -0x1.ffff'fep-1f; // -1.0f + 0x1.0p-24f
return -1.0f;
} else {
// x >= 89 or nan
if (xbits.uintval() >= 0x42b2'0000) {
if (xbits.uintval() < 0x7f80'0000U) {
int rounding = fputil::get_round();
int rounding = fputil::quick_get_round();
if (rounding == FE_DOWNWARD || rounding == FE_TOWARDZERO)
return static_cast<float>(FPBits(FPBits::MAX_NORMAL));

Expand Down
3 changes: 2 additions & 1 deletion libc/src/math/generic/sincosf.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
#include "src/__support/FPUtil/FEnvImpl.h"
#include "src/__support/FPUtil/FPBits.h"
#include "src/__support/FPUtil/multiply_add.h"
#include "src/__support/FPUtil/rounding_mode.h"
#include "src/__support/common.h"
#include "src/__support/macros/optimization.h" // LIBC_UNLIKELY
#include "src/__support/macros/properties/cpu_features.h" // LIBC_TARGET_CPU_HAS_FMA
Expand Down Expand Up @@ -159,7 +160,7 @@ LLVM_LIBC_FUNCTION(void, sincosf, (float x, float *sinp, float *cosp)) {
uint32_t s = EXCEPT_OUTPUTS_SIN[i][0]; // FE_TOWARDZERO
uint32_t c = EXCEPT_OUTPUTS_COS[i][0]; // FE_TOWARDZERO
bool x_sign = x < 0;
switch (fputil::get_round()) {
switch (fputil::quick_get_round()) {
case FE_UPWARD:
s += x_sign ? EXCEPT_OUTPUTS_SIN[i][2] : EXCEPT_OUTPUTS_SIN[i][1];
c += EXCEPT_OUTPUTS_COS[i][1];
Expand Down
3 changes: 2 additions & 1 deletion libc/src/math/generic/sinf.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
#include "src/__support/FPUtil/FPBits.h"
#include "src/__support/FPUtil/PolyEval.h"
#include "src/__support/FPUtil/multiply_add.h"
#include "src/__support/FPUtil/rounding_mode.h"
#include "src/__support/common.h"
#include "src/__support/macros/optimization.h" // LIBC_UNLIKELY
#include "src/__support/macros/properties/cpu_features.h" // LIBC_TARGET_CPU_HAS_FMA
Expand Down Expand Up @@ -126,7 +127,7 @@ LLVM_LIBC_FUNCTION(float, sinf, (float x)) {

if (LIBC_UNLIKELY(x_abs == 0x4619'9998U)) { // x = 0x1.33333p13
float r = -0x1.63f4bap-2f;
int rounding = fputil::get_round();
int rounding = fputil::quick_get_round();
bool sign = xbits.get_sign();
if ((rounding == FE_DOWNWARD && !sign) || (rounding == FE_UPWARD && sign))
r = -0x1.63f4bcp-2f;
Expand Down
5 changes: 3 additions & 2 deletions libc/src/math/generic/sinhf.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

#include "src/math/sinhf.h"
#include "src/__support/FPUtil/FPBits.h"
#include "src/__support/FPUtil/rounding_mode.h"
#include "src/__support/macros/optimization.h" // LIBC_UNLIKELY
#include "src/math/generic/explogxf.h"

Expand All @@ -33,7 +34,7 @@ LLVM_LIBC_FUNCTION(float, sinhf, (float x)) {
if (xbits.is_inf())
return x;

int rounding = fputil::get_round();
int rounding = fputil::quick_get_round();
if (sign) {
if (LIBC_UNLIKELY(rounding == FE_UPWARD || rounding == FE_TOWARDZERO))
return FPBits(FPBits::MAX_NORMAL | FPBits::FloatProp::SIGN_MASK)
Expand All @@ -53,7 +54,7 @@ LLVM_LIBC_FUNCTION(float, sinhf, (float x)) {
if (LIBC_UNLIKELY(x_abs <= 0x3da0'0000U)) {
// |x| = 0.0005589424981735646724700927734375
if (LIBC_UNLIKELY(x_abs == 0x3a12'85ffU)) {
if (fputil::get_round() == FE_TONEAREST)
if (fputil::fenv_is_round_to_nearest())
return x;
}

Expand Down
3 changes: 2 additions & 1 deletion libc/src/math/generic/tanhf.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@

#include "src/math/tanhf.h"
#include "src/__support/FPUtil/FPBits.h"
#include "src/__support/FPUtil/rounding_mode.h"
#include "src/__support/macros/optimization.h" // LIBC_UNLIKELY
#include "src/__support/macros/properties/cpu_features.h" // LIBC_TARGET_CPU_HAS_FMA
#include "src/math/generic/explogxf.h"
Expand Down Expand Up @@ -52,7 +53,7 @@ LLVM_LIBC_FUNCTION(float, tanhf, (float x)) {
}

if (LIBC_UNLIKELY(xbits.bits == 0x4058'e0a3U)) {
if (fputil::get_round() == FE_DOWNWARD)
if (fputil::fenv_is_round_down())
return FPBits(0x3f7f'6ad9U).get_val();
}

Expand Down
1 change: 1 addition & 0 deletions libc/src/stdio/printf_core/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -93,6 +93,7 @@ add_object_library(
libc.src.__support.CPP.string_view
libc.src.__support.FPUtil.fp_bits
libc.src.__support.FPUtil.fenv_impl
libc.src.__support.FPUtil.rounding_mode
libc.src.__support.common
libc.src.__support.libc_assert
libc.src.__support.uint
Expand Down
7 changes: 4 additions & 3 deletions libc/src/stdio/printf_core/float_dec_converter.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
#include "src/__support/FPUtil/FEnvImpl.h"
#include "src/__support/FPUtil/FPBits.h"
#include "src/__support/FPUtil/FloatProperties.h"
#include "src/__support/FPUtil/rounding_mode.h"
#include "src/__support/UInt.h"
#include "src/__support/UInt128.h"
#include "src/__support/common.h"
Expand Down Expand Up @@ -600,7 +601,7 @@ LIBC_INLINE int convert_float_decimal_typed(Writer *writer,
(requiredTwos < 60 &&
multiple_of_power_of_2(float_bits.get_explicit_mantissa(),
static_cast<uint32_t>(requiredTwos)));
switch (fputil::get_round()) {
switch (fputil::quick_get_round()) {
case FE_TONEAREST:
// Round to nearest, if it's exactly halfway then round to even.
if (last_digit != 5) {
Expand Down Expand Up @@ -774,7 +775,7 @@ LIBC_INLINE int convert_float_dec_exp_typed(Writer *writer,
(requiredTwos < 60 &&
multiple_of_power_of_2(float_bits.get_explicit_mantissa(),
static_cast<uint32_t>(requiredTwos)));
switch (fputil::get_round()) {
switch (fputil::quick_get_round()) {
case FE_TONEAREST:
// Round to nearest, if it's exactly halfway then round to even.
if (last_digit != 5) {
Expand Down Expand Up @@ -1022,7 +1023,7 @@ LIBC_INLINE int convert_float_dec_auto_typed(Writer *writer,
(requiredTwos < 60 &&
multiple_of_power_of_2(float_bits.get_explicit_mantissa(),
static_cast<uint32_t>(requiredTwos)));
switch (fputil::get_round()) {
switch (fputil::quick_get_round()) {
case FE_TONEAREST:
// Round to nearest, if it's exactly halfway then round to even.
if (last_digit != 5) {
Expand Down
3 changes: 2 additions & 1 deletion libc/src/stdio/printf_core/float_hex_converter.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
#include "src/__support/CPP/string_view.h"
#include "src/__support/FPUtil/FEnvImpl.h"
#include "src/__support/FPUtil/FPBits.h"
#include "src/__support/FPUtil/rounding_mode.h"
#include "src/__support/common.h"
#include "src/stdio/printf_core/converter_utils.h"
#include "src/stdio/printf_core/core_structs.h"
Expand Down Expand Up @@ -113,7 +114,7 @@ LIBC_INLINE int convert_float_hex_exp(Writer *writer,

mantissa >>= shift_amount;

switch (fputil::get_round()) {
switch (fputil::quick_get_round()) {
case FE_TONEAREST:
// Round to nearest, if it's exactly halfway then round to even.
if (truncated_bits > halfway_const)
Expand Down
10 changes: 10 additions & 0 deletions libc/test/src/__support/FPUtil/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -21,3 +21,13 @@ add_libc_test(
libc.src.__support.FPUtil.fp_bits
libc.src.__support.FPUtil.fpbits_str
)

add_fp_unittest(
rounding_mode_test
SUITE
libc-fputil-tests
SRCS
rounding_mode_test.cpp
DEPENDS
libc.src.__support.FPUtil.rounding_mode
)
116 changes: 116 additions & 0 deletions libc/test/src/__support/FPUtil/rounding_mode_test.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
//===-- Unittests for the quick rounding mode checks ----------------------===//
//
// 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/__support/FPUtil/rounding_mode.h"
#include "test/UnitTest/Test.h"
#include "utils/MPFRWrapper/MPFRUtils.h"

#include <fenv.h>

using __llvm_libc::testing::mpfr::ForceRoundingMode;
using __llvm_libc::testing::mpfr::RoundingMode;

TEST(LlvmLibcFEnvImplTest, QuickRoundingUpTest) {
using __llvm_libc::fputil::fenv_is_round_up;
{
ForceRoundingMode __r(RoundingMode::Upward);
ASSERT_TRUE(fenv_is_round_up());
}
{
ForceRoundingMode __r(RoundingMode::Downward);
ASSERT_FALSE(fenv_is_round_up());
}
{
ForceRoundingMode __r(RoundingMode::Nearest);
ASSERT_FALSE(fenv_is_round_up());
}
{
ForceRoundingMode __r(RoundingMode::TowardZero);
ASSERT_FALSE(fenv_is_round_up());
}
}

TEST(LlvmLibcFEnvImplTest, QuickRoundingDownTest) {
using __llvm_libc::fputil::fenv_is_round_down;
{
ForceRoundingMode __r(RoundingMode::Upward);
ASSERT_FALSE(fenv_is_round_down());
}
{
ForceRoundingMode __r(RoundingMode::Downward);
ASSERT_TRUE(fenv_is_round_down());
}
{
ForceRoundingMode __r(RoundingMode::Nearest);
ASSERT_FALSE(fenv_is_round_down());
}
{
ForceRoundingMode __r(RoundingMode::TowardZero);
ASSERT_FALSE(fenv_is_round_down());
}
}

TEST(LlvmLibcFEnvImplTest, QuickRoundingNearestTest) {
using __llvm_libc::fputil::fenv_is_round_to_nearest;
{
ForceRoundingMode __r(RoundingMode::Upward);
ASSERT_FALSE(fenv_is_round_to_nearest());
}
{
ForceRoundingMode __r(RoundingMode::Downward);
ASSERT_FALSE(fenv_is_round_to_nearest());
}
{
ForceRoundingMode __r(RoundingMode::Nearest);
ASSERT_TRUE(fenv_is_round_to_nearest());
}
{
ForceRoundingMode __r(RoundingMode::TowardZero);
ASSERT_FALSE(fenv_is_round_to_nearest());
}
}

TEST(LlvmLibcFEnvImplTest, QuickRoundingTowardZeroTest) {
using __llvm_libc::fputil::fenv_is_round_to_zero;
{
ForceRoundingMode __r(RoundingMode::Upward);
ASSERT_FALSE(fenv_is_round_to_zero());
}
{
ForceRoundingMode __r(RoundingMode::Downward);
ASSERT_FALSE(fenv_is_round_to_zero());
}
{
ForceRoundingMode __r(RoundingMode::Nearest);
ASSERT_FALSE(fenv_is_round_to_zero());
}
{
ForceRoundingMode __r(RoundingMode::TowardZero);
ASSERT_TRUE(fenv_is_round_to_zero());
}
}

TEST(LlvmLibcFEnvImplTest, QuickGetRoundTest) {
using __llvm_libc::fputil::quick_get_round;
{
ForceRoundingMode __r(RoundingMode::Upward);
ASSERT_EQ(quick_get_round(), FE_UPWARD);
}
{
ForceRoundingMode __r(RoundingMode::Downward);
ASSERT_EQ(quick_get_round(), FE_DOWNWARD);
}
{
ForceRoundingMode __r(RoundingMode::Nearest);
ASSERT_EQ(quick_get_round(), FE_TONEAREST);
}
{
ForceRoundingMode __r(RoundingMode::TowardZero);
ASSERT_EQ(quick_get_round(), FE_TOWARDZERO);
}
}
26 changes: 26 additions & 0 deletions utils/bazel/llvm-project-overlay/libc/BUILD.bazel
Original file line number Diff line number Diff line change
Expand Up @@ -444,6 +444,7 @@ libc_support_library(
":__support_ctype_utils",
":__support_fputil_fenv_impl",
":__support_fputil_fp_bits",
":__support_fputil_rounding_mode",
":__support_str_to_integer",
":__support_str_to_num_result",
":__support_uint128",
Expand Down Expand Up @@ -529,6 +530,7 @@ libc_support_library(
":__support_cpp_optional",
":__support_fputil_fenv_impl",
":__support_fputil_fp_bits",
":__support_fputil_rounding_mode",
":libc_root",
],
)
Expand All @@ -551,6 +553,15 @@ libc_support_library(
],
)

libc_support_library(
name = "__support_fputil_rounding_mode",
hdrs = ["src/__support/FPUtil/rounding_mode.h"],
deps = [
":__support_macros_attributes",
":libc_root",
],
)

libc_support_library(
name = "__support_fputil_float_properties",
hdrs = ["src/__support/FPUtil/FloatProperties.h"],
Expand Down Expand Up @@ -604,6 +615,7 @@ libc_support_library(
":__support_fputil_basic_operations",
":__support_fputil_fenv_impl",
":__support_fputil_fp_bits",
":__support_fputil_rounding_mode",
":__support_uint128",
":libc_root",
],
Expand Down Expand Up @@ -635,6 +647,7 @@ libc_support_library(
":__support_cpp_type_traits",
":__support_fputil_fenv_impl",
":__support_fputil_fp_bits",
":__support_fputil_rounding_mode",
":libc_root",
],
)
Expand Down Expand Up @@ -686,6 +699,7 @@ libc_support_library(
":__support_fputil_fenv_impl",
":__support_fputil_fp_bits",
":__support_fputil_platform_defs",
":__support_fputil_rounding_mode",
":__support_uint128",
":libc_root",
],
Expand Down Expand Up @@ -714,6 +728,7 @@ libc_support_library(
":__support_fputil_fenv_impl",
":__support_fputil_float_properties",
":__support_fputil_fp_bits",
":__support_fputil_rounding_mode",
":__support_macros_attributes",
":__support_macros_optimization",
":__support_macros_properties_cpu_features",
Expand Down Expand Up @@ -1137,6 +1152,7 @@ libc_math_function(
":__support_fputil_multiply_add",
":__support_fputil_nearest_integer",
":__support_fputil_polyeval",
":__support_fputil_rounding_mode",
":__support_macros_optimization",
":__support_macros_properties_cpu_features",
":common_constants",
Expand All @@ -1150,6 +1166,7 @@ libc_math_function(
":__support_fputil_multiply_add",
":__support_fputil_nearest_integer",
":__support_fputil_polyeval",
":__support_fputil_rounding_mode",
":__support_macros_optimization",
":common_constants",
],
Expand All @@ -1162,6 +1179,7 @@ libc_math_function(
":__support_fputil_multiply_add",
":__support_fputil_nearest_integer",
":__support_fputil_polyeval",
":__support_fputil_rounding_mode",
":__support_macros_optimization",
":common_constants",
":explogxf",
Expand All @@ -1175,6 +1193,7 @@ libc_math_function(
":__support_fputil_multiply_add",
":__support_fputil_nearest_integer",
":__support_fputil_polyeval",
":__support_fputil_rounding_mode",
":__support_macros_optimization",
":explogxf",
],
Expand Down Expand Up @@ -1293,6 +1312,7 @@ libc_math_function(
":__support_fputil_multiply_add",
":__support_fputil_nearest_integer",
":__support_fputil_polyeval",
":__support_fputil_rounding_mode",
":__support_macros_optimization",
":common_constants",
":explogxf",
Expand All @@ -1306,6 +1326,7 @@ libc_math_function(
":__support_fputil_multiply_add",
":__support_fputil_nearest_integer",
":__support_fputil_polyeval",
":__support_fputil_rounding_mode",
":__support_macros_optimization",
":common_constants",
":explogxf",
Expand All @@ -1319,6 +1340,7 @@ libc_math_function(
":__support_fputil_multiply_add",
":__support_fputil_nearest_integer",
":__support_fputil_polyeval",
":__support_fputil_rounding_mode",
":__support_macros_optimization",
":__support_macros_properties_cpu_features",
":common_constants",
Expand Down Expand Up @@ -1401,6 +1423,7 @@ libc_math_function(
":__support_fputil_multiply_add",
":__support_fputil_nearest_integer",
":__support_fputil_polyeval",
":__support_fputil_rounding_mode",
":__support_macros_optimization",
":inv_trigf_utils",
":math_utils",
Expand Down Expand Up @@ -1583,6 +1606,7 @@ libc_math_function(
additional_deps = [
":__support_fputil_fma",
":__support_fputil_multiply_add",
":__support_fputil_rounding_mode",
":__support_macros_optimization",
":__support_macros_properties_cpu_features",
":sincosf_utils",
Expand All @@ -1595,6 +1619,7 @@ libc_math_function(
":__support_fputil_fma",
":__support_fputil_multiply_add",
":__support_fputil_polyeval",
":__support_fputil_rounding_mode",
":__support_macros_optimization",
":__support_macros_properties_cpu_features",
":range_reduction",
Expand Down Expand Up @@ -2552,6 +2577,7 @@ libc_support_library(
":__support_fputil_fenv_impl",
":__support_fputil_float_properties",
":__support_fputil_fp_bits",
":__support_fputil_rounding_mode",
":__support_integer_to_string",
":__support_libc_assert",
":__support_uint",
Expand Down