Skip to content

Commit dffa803

Browse files
authored
[libc] Remove specific nan payload in math functions (#79133)
1 parent 77e204c commit dffa803

24 files changed

+31
-35
lines changed

libc/src/__support/FPUtil/DivisionAndRemainderOperations.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ LIBC_INLINE T remquo(T x, T y, int &q) {
3131
if (ybits.is_nan())
3232
return y;
3333
if (xbits.is_inf() || ybits.is_zero())
34-
return FPBits<T>::build_quiet_nan(fputil::Sign::POS, 1).get_val();
34+
return FPBits<T>::build_quiet_nan().get_val();
3535

3636
if (xbits.is_zero()) {
3737
q = 0;

libc/src/__support/FPUtil/generic/sqrt.h

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -71,12 +71,10 @@ LIBC_INLINE cpp::enable_if_t<cpp::is_floating_point_v<T>, T> sqrt(T x) {
7171
return x86::sqrt(x);
7272
} else {
7373
// IEEE floating points formats.
74-
using Sign = fputil::Sign;
7574
using FPBits_t = typename fputil::FPBits<T>;
7675
using StorageType = typename FPBits_t::StorageType;
7776
constexpr StorageType ONE = StorageType(1) << FPBits_t::FRACTION_LEN;
78-
constexpr auto FLT_NAN =
79-
FPBits_t::build_quiet_nan(Sign::POS, ONE >> 1).get_val();
77+
constexpr auto FLT_NAN = FPBits_t::build_quiet_nan().get_val();
8078

8179
FPBits_t bits(x);
8280

libc/src/__support/FPUtil/generic/sqrt_80_bit_long_double.h

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,9 +38,8 @@ LIBC_INLINE long double sqrt(long double x);
3838
LIBC_INLINE long double sqrt(long double x) {
3939
using LDBits = FPBits<long double>;
4040
using StorageType = typename LDBits::StorageType;
41-
using Sign = fputil::Sign;
4241
constexpr StorageType ONE = StorageType(1) << int(LDBits::FRACTION_LEN);
43-
constexpr auto LDNAN = LDBits::build_quiet_nan(Sign::POS, ONE >> 1).get_val();
42+
constexpr auto LDNAN = LDBits::build_quiet_nan().get_val();
4443

4544
LDBits bits(x);
4645

libc/test/UnitTest/FPMatcher.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ template <typename T> struct FPTest : public Test {
6868
LIBC_NAMESPACE::cpp::numeric_limits<StorageType>::max();
6969
static constexpr T zero = T(FPBits::zero(Sign::POS));
7070
static constexpr T neg_zero = T(FPBits::zero(Sign::NEG));
71-
static constexpr T aNaN = T(FPBits::build_quiet_nan(Sign::POS, 1));
71+
static constexpr T aNaN = T(FPBits::build_quiet_nan());
7272
static constexpr T sNaN = T(FPBits::build_nan(Sign::POS, 1));
7373
static constexpr T inf = T(FPBits::inf(Sign::POS));
7474
static constexpr T neg_inf = T(FPBits::inf(Sign::NEG));
@@ -97,7 +97,7 @@ template <typename T> struct FPTest : public Test {
9797
LIBC_NAMESPACE::cpp::numeric_limits<StorageType>::max(); \
9898
const T zero = T(FPBits::zero(Sign::POS)); \
9999
const T neg_zero = T(FPBits::zero(Sign::NEG)); \
100-
const T aNaN = T(FPBits::build_quiet_nan(Sign::POS, 1)); \
100+
const T aNaN = T(FPBits::build_quiet_nan()); \
101101
const T sNaN = T(FPBits::build_nan(Sign::POS, 1)); \
102102
const T inf = T(FPBits::inf(Sign::POS)); \
103103
const T neg_inf = T(FPBits::inf(Sign::NEG)); \

libc/test/src/__support/FPUtil/fpbits_test.cpp

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -287,7 +287,7 @@ TEST(LlvmLibcFPBitsTest, FloatType) {
287287
EXPECT_STREQ(LIBC_NAMESPACE::str(negnum).c_str(),
288288
"0xBF900000 = (S: 1, E: 0x007F, M: 0x00100000)");
289289

290-
FloatBits quiet_nan = FloatBits::build_quiet_nan(Sign::POS, 1);
290+
FloatBits quiet_nan = FloatBits::build_quiet_nan();
291291
EXPECT_EQ(quiet_nan.is_quiet_nan(), true);
292292
}
293293

@@ -298,8 +298,7 @@ TEST(LlvmLibcFPBitsTest, DoubleType) {
298298
"(+Infinity)");
299299
EXPECT_STREQ(LIBC_NAMESPACE::str(DoubleBits::inf(Sign::NEG)).c_str(),
300300
"(-Infinity)");
301-
EXPECT_STREQ(LIBC_NAMESPACE::str(DoubleBits::build_nan(Sign::POS, 1)).c_str(),
302-
"(NaN)");
301+
EXPECT_STREQ(LIBC_NAMESPACE::str(DoubleBits::build_nan()).c_str(), "(NaN)");
303302

304303
DoubleBits zero(0.0);
305304
EXPECT_TRUE(zero.is_pos());
@@ -349,7 +348,7 @@ TEST(LlvmLibcFPBitsTest, DoubleType) {
349348
EXPECT_STREQ(LIBC_NAMESPACE::str(negnum).c_str(),
350349
"0xBFF2000000000000 = (S: 1, E: 0x03FF, M: 0x0002000000000000)");
351350

352-
DoubleBits quiet_nan = DoubleBits::build_quiet_nan(Sign::POS, 1);
351+
DoubleBits quiet_nan = DoubleBits::build_quiet_nan();
353352
EXPECT_EQ(quiet_nan.is_quiet_nan(), true);
354353
}
355354

@@ -431,7 +430,7 @@ TEST(LlvmLibcFPBitsTest, X86LongDoubleType) {
431430
"0x000000000000BFFF9000000000000000 = "
432431
"(S: 1, E: 0x3FFF, I: 1, M: 0x00000000000000001000000000000000)");
433432

434-
LongDoubleBits quiet_nan = LongDoubleBits::build_quiet_nan(Sign::POS, 1);
433+
LongDoubleBits quiet_nan = LongDoubleBits::build_quiet_nan();
435434
EXPECT_EQ(quiet_nan.is_quiet_nan(), true);
436435
}
437436
#else
@@ -506,7 +505,7 @@ TEST(LlvmLibcFPBitsTest, LongDoubleType) {
506505
"0xBFFF2000000000000000000000000000 = "
507506
"(S: 1, E: 0x3FFF, M: 0x00002000000000000000000000000000)");
508507

509-
LongDoubleBits quiet_nan = LongDoubleBits::build_quiet_nan(Sign::POS, 1);
508+
LongDoubleBits quiet_nan = LongDoubleBits::build_quiet_nan();
510509
EXPECT_EQ(quiet_nan.is_quiet_nan(), true);
511510
#endif
512511
}
@@ -581,7 +580,7 @@ TEST(LlvmLibcFPBitsTest, Float128Type) {
581580
"0xBFFF2000000000000000000000000000 = "
582581
"(S: 1, E: 0x3FFF, M: 0x00002000000000000000000000000000)");
583582

584-
Float128Bits quiet_nan = Float128Bits::build_quiet_nan(Sign::POS, 1);
583+
Float128Bits quiet_nan = Float128Bits::build_quiet_nan();
585584
EXPECT_EQ(quiet_nan.is_quiet_nan(), true);
586585
}
587586
#endif // LIBC_COMPILER_HAS_FLOAT128

libc/test/src/math/FDimTest.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ class FDimTestTemplate : public LIBC_NAMESPACE::testing::Test {
2424
const T neg_inf = T(FPBits::inf(Sign::NEG));
2525
const T zero = T(FPBits::zero(Sign::POS));
2626
const T neg_zero = T(FPBits::zero(Sign::NEG));
27-
const T nan = T(FPBits::build_quiet_nan(Sign::POS, 1));
27+
const T nan = T(FPBits::build_quiet_nan());
2828

2929
void test_na_n_arg(FuncPtr func) {
3030
EXPECT_FP_EQ(nan, func(nan, inf));

libc/test/src/math/FmaTest.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ class FmaTestTemplate : public LIBC_NAMESPACE::testing::Test {
3232
const T neg_inf = T(FPBits::inf(Sign::NEG));
3333
const T zero = T(FPBits::zero(Sign::POS));
3434
const T neg_zero = T(FPBits::zero(Sign::NEG));
35-
const T nan = T(FPBits::build_quiet_nan(Sign::POS, 1));
35+
const T nan = T(FPBits::build_quiet_nan());
3636

3737
static constexpr StorageType MAX_NORMAL = FPBits::max_normal().uintval();
3838
static constexpr StorageType MIN_NORMAL = FPBits::min_normal().uintval();

libc/test/src/math/HypotTest.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ class HypotTestTemplate : public LIBC_NAMESPACE::testing::Test {
2525
using FPBits = LIBC_NAMESPACE::fputil::FPBits<T>;
2626
using Sign = LIBC_NAMESPACE::fputil::Sign;
2727
using StorageType = typename FPBits::StorageType;
28-
const T nan = T(FPBits::build_quiet_nan(Sign::POS, 1));
28+
const T nan = T(FPBits::build_quiet_nan());
2929
const T inf = T(FPBits::inf());
3030
const T neg_inf = T(FPBits::inf(Sign::NEG));
3131
const T zero = T(FPBits::zero());

libc/test/src/math/ILogbTest.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ class LlvmLibcILogbTest : public LIBC_NAMESPACE::testing::Test {
2828
using Sign = LIBC_NAMESPACE::fputil::Sign;
2929
EXPECT_EQ(FP_ILOGB0, func(T(FPBits::zero(Sign::POS))));
3030
EXPECT_EQ(FP_ILOGB0, func(T(FPBits::zero(Sign::NEG))));
31-
EXPECT_EQ(FP_ILOGBNAN, func(T(FPBits::build_quiet_nan(Sign::POS, 1))));
31+
EXPECT_EQ(FP_ILOGBNAN, func(T(FPBits::build_quiet_nan())));
3232
EXPECT_EQ(INT_MAX, func(T(FPBits::inf(Sign::POS))));
3333
EXPECT_EQ(INT_MAX, func(T(FPBits::inf(Sign::NEG))));
3434
}

libc/test/src/math/LdExpTest.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ class LdExpTestTemplate : public LIBC_NAMESPACE::testing::Test {
2929
const T neg_inf = T(FPBits::inf(Sign::NEG));
3030
const T zero = T(FPBits::zero(Sign::POS));
3131
const T neg_zero = T(FPBits::zero(Sign::NEG));
32-
const T nan = T(FPBits::build_quiet_nan(Sign::POS, 1));
32+
const T nan = T(FPBits::build_quiet_nan());
3333

3434
// A normalized mantissa to be used with tests.
3535
static constexpr StorageType MANTISSA = NormalFloat::ONE + 0x1234;

libc/test/src/math/NextAfterTest.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ class NextAfterTestTemplate : public LIBC_NAMESPACE::testing::Test {
2727
const T neg_inf = T(FPBits::inf(Sign::NEG));
2828
const T zero = T(FPBits::zero(Sign::POS));
2929
const T neg_zero = T(FPBits::zero(Sign::NEG));
30-
const T nan = T(FPBits::build_quiet_nan(Sign::POS, 1));
30+
const T nan = T(FPBits::build_quiet_nan());
3131

3232
const StorageType min_subnormal = FPBits::min_subnormal().uintval();
3333
const StorageType max_subnormal = FPBits::max_subnormal().uintval();

libc/test/src/math/RIntTest.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ class RIntTestTemplate : public LIBC_NAMESPACE::testing::Test {
3838
const T neg_inf = T(FPBits::inf(Sign::NEG));
3939
const T zero = T(FPBits::zero(Sign::POS));
4040
const T neg_zero = T(FPBits::zero(Sign::NEG));
41-
const T nan = T(FPBits::build_quiet_nan(Sign::POS, 1));
41+
const T nan = T(FPBits::build_quiet_nan());
4242

4343
static constexpr StorageType MIN_SUBNORMAL =
4444
FPBits::min_subnormal().uintval();

libc/test/src/math/RemQuoTest.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ class RemQuoTestTemplate : public LIBC_NAMESPACE::testing::Test {
2828
const T neg_inf = T(FPBits::inf(Sign::NEG));
2929
const T zero = T(FPBits::zero(Sign::POS));
3030
const T neg_zero = T(FPBits::zero(Sign::NEG));
31-
const T nan = T(FPBits::build_quiet_nan(Sign::POS, 1));
31+
const T nan = T(FPBits::build_quiet_nan());
3232

3333
static constexpr StorageType MIN_SUBNORMAL =
3434
FPBits::min_subnormal().uintval();

libc/test/src/math/RoundToIntegerTest.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ class RoundToIntegerTestTemplate : public LIBC_NAMESPACE::testing::Test {
3737
const F neg_zero = F(FPBits::zero(Sign::NEG));
3838
const F inf = F(FPBits::inf());
3939
const F neg_inf = F(FPBits::inf(Sign::NEG));
40-
const F nan = F(FPBits::build_quiet_nan(Sign::POS, 1));
40+
const F nan = F(FPBits::build_quiet_nan());
4141

4242
static constexpr StorageType MAX_NORMAL = FPBits::max_normal().uintval();
4343
static constexpr StorageType MIN_NORMAL = FPBits::min_normal().uintval();

libc/test/src/math/smoke/FDimTest.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ class FDimTestTemplate : public LIBC_NAMESPACE::testing::Test {
2424
const T neg_inf = T(FPBits::inf(Sign::NEG));
2525
const T zero = T(FPBits::zero(Sign::POS));
2626
const T neg_zero = T(FPBits::zero(Sign::NEG));
27-
const T nan = T(FPBits::build_quiet_nan(Sign::POS, 1));
27+
const T nan = T(FPBits::build_quiet_nan());
2828

2929
void test_na_n_arg(FuncPtr func) {
3030
EXPECT_FP_EQ(nan, func(nan, inf));

libc/test/src/math/smoke/FmaTest.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ class FmaTestTemplate : public LIBC_NAMESPACE::testing::Test {
2525
const T neg_inf = T(FPBits::inf(Sign::NEG));
2626
const T zero = T(FPBits::zero(Sign::POS));
2727
const T neg_zero = T(FPBits::zero(Sign::NEG));
28-
const T nan = T(FPBits::build_quiet_nan(Sign::POS, 1));
28+
const T nan = T(FPBits::build_quiet_nan());
2929

3030
public:
3131
void test_special_numbers(Func func) {

libc/test/src/math/smoke/HypotTest.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ class HypotTestTemplate : public LIBC_NAMESPACE::testing::Test {
2222
using FPBits = LIBC_NAMESPACE::fputil::FPBits<T>;
2323
using StorageType = typename FPBits::StorageType;
2424
using Sign = LIBC_NAMESPACE::fputil::Sign;
25-
const T nan = T(FPBits::build_quiet_nan(Sign::POS, 1));
25+
const T nan = T(FPBits::build_quiet_nan());
2626
const T inf = T(FPBits::inf(Sign::POS));
2727
const T neg_inf = T(FPBits::inf(Sign::NEG));
2828
const T zero = T(FPBits::zero(Sign::POS));

libc/test/src/math/smoke/ILogbTest.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ class LlvmLibcILogbTest : public LIBC_NAMESPACE::testing::Test {
2828
using Sign = LIBC_NAMESPACE::fputil::Sign;
2929
EXPECT_EQ(FP_ILOGB0, func(T(FPBits::zero(Sign::POS))));
3030
EXPECT_EQ(FP_ILOGB0, func(T(FPBits::zero(Sign::NEG))));
31-
EXPECT_EQ(FP_ILOGBNAN, func(T(FPBits::build_quiet_nan(Sign::POS, 1))));
31+
EXPECT_EQ(FP_ILOGBNAN, func(T(FPBits::build_quiet_nan())));
3232
EXPECT_EQ(INT_MAX, func(T(FPBits::inf(Sign::POS))));
3333
EXPECT_EQ(INT_MAX, func(T(FPBits::inf(Sign::NEG))));
3434
}

libc/test/src/math/smoke/LdExpTest.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ class LdExpTestTemplate : public LIBC_NAMESPACE::testing::Test {
2929
const T neg_inf = T(FPBits::inf(Sign::NEG));
3030
const T zero = T(FPBits::zero(Sign::POS));
3131
const T neg_zero = T(FPBits::zero(Sign::NEG));
32-
const T nan = T(FPBits::build_quiet_nan(Sign::POS, 1));
32+
const T nan = T(FPBits::build_quiet_nan());
3333

3434
// A normalized mantissa to be used with tests.
3535
static constexpr StorageType MANTISSA = NormalFloat::ONE + 0x1234;

libc/test/src/math/smoke/NextAfterTest.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ class NextAfterTestTemplate : public LIBC_NAMESPACE::testing::Test {
3838
const T neg_inf = T(FPBits::inf(Sign::NEG));
3939
const T zero = T(FPBits::zero(Sign::POS));
4040
const T neg_zero = T(FPBits::zero(Sign::NEG));
41-
const T nan = T(FPBits::build_quiet_nan(Sign::POS, 1));
41+
const T nan = T(FPBits::build_quiet_nan());
4242

4343
static constexpr StorageType min_subnormal =
4444
FPBits::min_subnormal().uintval();

libc/test/src/math/smoke/NextTowardTest.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,11 +40,11 @@ class NextTowardTestTemplate : public LIBC_NAMESPACE::testing::Test {
4040
const T neg_inf = T(FPBits::inf(Sign::NEG));
4141
const T zero = T(FPBits::zero(Sign::POS));
4242
const T neg_zero = T(FPBits::zero(Sign::NEG));
43-
const T nan = T(FPBits::build_quiet_nan(Sign::POS, 1));
43+
const T nan = T(FPBits::build_quiet_nan());
4444

4545
const long double to_zero = ToFPBits::zero().get_val();
4646
const long double to_neg_zero = ToFPBits::zero(Sign::NEG).get_val();
47-
const long double to_nan = ToFPBits::build_quiet_nan(Sign::POS, 1).get_val();
47+
const long double to_nan = ToFPBits::build_quiet_nan().get_val();
4848

4949
static constexpr StorageType min_subnormal =
5050
FPBits::min_subnormal().uintval();

libc/test/src/math/smoke/RIntTest.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ class RIntTestTemplate : public LIBC_NAMESPACE::testing::Test {
3535
const T neg_inf = T(FPBits::inf(Sign::NEG));
3636
const T zero = T(FPBits::zero(Sign::POS));
3737
const T neg_zero = T(FPBits::zero(Sign::NEG));
38-
const T nan = T(FPBits::build_quiet_nan(Sign::POS, 1));
38+
const T nan = T(FPBits::build_quiet_nan());
3939

4040
public:
4141
void testSpecialNumbers(RIntFunc func) {

libc/test/src/math/smoke/RemQuoTest.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ class RemQuoTestTemplate : public LIBC_NAMESPACE::testing::Test {
2525
const T neg_inf = T(FPBits::inf(Sign::NEG));
2626
const T zero = T(FPBits::zero(Sign::POS));
2727
const T neg_zero = T(FPBits::zero(Sign::NEG));
28-
const T nan = T(FPBits::build_quiet_nan(Sign::POS, 1));
28+
const T nan = T(FPBits::build_quiet_nan());
2929

3030
public:
3131
typedef T (*RemQuoFunc)(T, T, int *);

libc/test/src/math/smoke/RoundToIntegerTest.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ class RoundToIntegerTestTemplate : public LIBC_NAMESPACE::testing::Test {
3434
const F neg_zero = F(FPBits::zero(Sign::NEG));
3535
const F inf = F(FPBits::inf(Sign::POS));
3636
const F neg_inf = F(FPBits::inf(Sign::NEG));
37-
const F nan = F(FPBits::build_quiet_nan(Sign::POS, 1));
37+
const F nan = F(FPBits::build_quiet_nan());
3838

3939
static constexpr StorageType MAX_SUBNORMAL =
4040
FPBits::max_subnormal().uintval();

0 commit comments

Comments
 (0)