[libc] Fix conversion warnings for float16 tests. (#124830)

Fixes https://github.com/llvm/llvm-project/issues/124801.
This commit is contained in:
lntue 2025-01-28 16:00:05 -05:00 committed by GitHub
parent 9f660625be
commit c47a57393c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 47 additions and 19 deletions

View File

@ -45,6 +45,7 @@ add_fp_unittest(
DEPENDS DEPENDS
libc.src.errno.errno libc.src.errno.errno
libc.src.math.cospif16 libc.src.math.cospif16
libc.src.__support.FPUtil.cast
) )
add_fp_unittest( add_fp_unittest(
@ -69,6 +70,7 @@ add_fp_unittest(
DEPENDS DEPENDS
libc.src.errno.errno libc.src.errno.errno
libc.src.math.sinf16 libc.src.math.sinf16
libc.src.__support.FPUtil.cast
) )
add_fp_unittest( add_fp_unittest(
@ -1251,6 +1253,7 @@ add_fp_unittest(
libc.hdr.fenv_macros libc.hdr.fenv_macros
libc.src.errno.errno libc.src.errno.errno
libc.src.math.exp2m1f16 libc.src.math.exp2m1f16
libc.src.__support.FPUtil.cast
) )
add_fp_unittest( add_fp_unittest(

View File

@ -6,6 +6,7 @@
// //
//===----------------------------------------------------------------------===// //===----------------------------------------------------------------------===//
#include "src/__support/FPUtil/cast.h"
#include "src/errno/libc_errno.h" #include "src/errno/libc_errno.h"
#include "src/math/cospif16.h" #include "src/math/cospif16.h"
#include "test/UnitTest/FPMatcher.h" #include "test/UnitTest/FPMatcher.h"
@ -19,10 +20,10 @@ TEST_F(LlvmLibcCospif16Test, SpecialNumbers) {
EXPECT_FP_EQ(aNaN, LIBC_NAMESPACE::cospif16(aNaN)); EXPECT_FP_EQ(aNaN, LIBC_NAMESPACE::cospif16(aNaN));
EXPECT_MATH_ERRNO(0); EXPECT_MATH_ERRNO(0);
EXPECT_FP_EQ(1.0f, LIBC_NAMESPACE::cospif16(zero)); EXPECT_FP_EQ(FPBits::one().get_val(), LIBC_NAMESPACE::cospif16(zero));
EXPECT_MATH_ERRNO(0); EXPECT_MATH_ERRNO(0);
EXPECT_FP_EQ(1.0f, LIBC_NAMESPACE::cospif16(neg_zero)); EXPECT_FP_EQ(FPBits::one().get_val(), LIBC_NAMESPACE::cospif16(neg_zero));
EXPECT_MATH_ERRNO(0); EXPECT_MATH_ERRNO(0);
EXPECT_FP_EQ(aNaN, LIBC_NAMESPACE::cospif16(inf)); EXPECT_FP_EQ(aNaN, LIBC_NAMESPACE::cospif16(inf));
@ -33,12 +34,24 @@ TEST_F(LlvmLibcCospif16Test, SpecialNumbers) {
} }
TEST_F(LlvmLibcCospif16Test, Integers) { TEST_F(LlvmLibcCospif16Test, Integers) {
EXPECT_FP_EQ(1.0f, LIBC_NAMESPACE::cospif16(-0x420)); EXPECT_FP_EQ(FPBits::one().get_val(),
EXPECT_FP_EQ(1.0f, LIBC_NAMESPACE::cospif16(-0x1.4p+14)); LIBC_NAMESPACE::cospif16(
EXPECT_FP_EQ(-1.0f, LIBC_NAMESPACE::cospif16(0x421)); LIBC_NAMESPACE::fputil::cast<float16>(-0x420.0p0)));
EXPECT_FP_EQ(-1.0f, LIBC_NAMESPACE::cospif16(0x333)); EXPECT_FP_EQ(FPBits::one().get_val(),
EXPECT_FP_EQ(zero, LIBC_NAMESPACE::cospif16(-0x1.28p4)); LIBC_NAMESPACE::cospif16(
EXPECT_FP_EQ(zero, LIBC_NAMESPACE::cospif16(-0x1.ffcp9)); LIBC_NAMESPACE::fputil::cast<float16>(-0x1.4p+14)));
EXPECT_FP_EQ(zero, LIBC_NAMESPACE::cospif16(0x1.01p7)); EXPECT_FP_EQ(FPBits::one(Sign::NEG).get_val(),
EXPECT_FP_EQ(zero, LIBC_NAMESPACE::cospif16(0x1.f6cp9)); LIBC_NAMESPACE::cospif16(
LIBC_NAMESPACE::fputil::cast<float16>(0x421.0p0)));
EXPECT_FP_EQ(FPBits::one(Sign::NEG).get_val(),
LIBC_NAMESPACE::cospif16(
LIBC_NAMESPACE::fputil::cast<float16>(0x333.0p0)));
EXPECT_FP_EQ(zero, LIBC_NAMESPACE::cospif16(
LIBC_NAMESPACE::fputil::cast<float16>(-0x1.28p4)));
EXPECT_FP_EQ(zero, LIBC_NAMESPACE::cospif16(
LIBC_NAMESPACE::fputil::cast<float16>(-0x1.ffcp9)));
EXPECT_FP_EQ(zero, LIBC_NAMESPACE::cospif16(
LIBC_NAMESPACE::fputil::cast<float16>(0x1.01p7)));
EXPECT_FP_EQ(zero, LIBC_NAMESPACE::cospif16(
LIBC_NAMESPACE::fputil::cast<float16>(0x1.f6cp9)));
} }

View File

@ -7,6 +7,7 @@
//===----------------------------------------------------------------------===// //===----------------------------------------------------------------------===//
#include "hdr/fenv_macros.h" #include "hdr/fenv_macros.h"
#include "src/__support/FPUtil/cast.h"
#include "src/errno/libc_errno.h" #include "src/errno/libc_errno.h"
#include "src/math/exp2m1f16.h" #include "src/math/exp2m1f16.h"
#include "test/UnitTest/FPMatcher.h" #include "test/UnitTest/FPMatcher.h"
@ -44,7 +45,7 @@ TEST_F(LlvmLibcExp2m1f16Test, Overflow) {
FE_OVERFLOW | FE_INEXACT); FE_OVERFLOW | FE_INEXACT);
EXPECT_MATH_ERRNO(ERANGE); EXPECT_MATH_ERRNO(ERANGE);
float16 x = 16.0; float16 x = LIBC_NAMESPACE::fputil::cast<float16>(16.0);
EXPECT_FP_EQ_WITH_EXCEPTION_ROUNDING_NEAREST( EXPECT_FP_EQ_WITH_EXCEPTION_ROUNDING_NEAREST(
inf, LIBC_NAMESPACE::exp2m1f16(x), FE_OVERFLOW | FE_INEXACT); inf, LIBC_NAMESPACE::exp2m1f16(x), FE_OVERFLOW | FE_INEXACT);
@ -69,9 +70,11 @@ TEST_F(LlvmLibcExp2m1f16Test, ResultNearNegOne) {
EXPECT_FP_EQ_WITH_EXCEPTION(-1.0, LIBC_NAMESPACE::exp2m1f16(neg_max_normal), EXPECT_FP_EQ_WITH_EXCEPTION(-1.0, LIBC_NAMESPACE::exp2m1f16(neg_max_normal),
FE_INEXACT); FE_INEXACT);
EXPECT_FP_EQ_ALL_ROUNDING(-0x1.ffcp-1, LIBC_NAMESPACE::exp2m1f16(-11.0)); EXPECT_FP_EQ_ALL_ROUNDING(
-0x1.ffcp-1,
LIBC_NAMESPACE::exp2m1f16(LIBC_NAMESPACE::fputil::cast<float16>(-11.0)));
float16 x = -12.0; float16 x = LIBC_NAMESPACE::fputil::cast<float16>(-12.0);
EXPECT_FP_EQ_WITH_EXCEPTION_ROUNDING_NEAREST( EXPECT_FP_EQ_WITH_EXCEPTION_ROUNDING_NEAREST(
-1.0, LIBC_NAMESPACE::exp2m1f16(x), FE_INEXACT); -1.0, LIBC_NAMESPACE::exp2m1f16(x), FE_INEXACT);

View File

@ -6,6 +6,7 @@
// //
//===----------------------------------------------------------------------===// //===----------------------------------------------------------------------===//
#include "src/__support/FPUtil/cast.h"
#include "src/errno/libc_errno.h" #include "src/errno/libc_errno.h"
#include "src/math/sinpif16.h" #include "src/math/sinpif16.h"
#include "test/UnitTest/FPMatcher.h" #include "test/UnitTest/FPMatcher.h"
@ -33,10 +34,18 @@ TEST_F(LlvmLibcSinpif16Test, SpecialNumbers) {
} }
TEST_F(LlvmLibcSinpif16Test, Integers) { TEST_F(LlvmLibcSinpif16Test, Integers) {
EXPECT_FP_EQ(neg_zero, LIBC_NAMESPACE::sinpif16(-0x420)); EXPECT_FP_EQ(neg_zero,
EXPECT_FP_EQ(neg_zero, LIBC_NAMESPACE::sinpif16(-0x1p+10)); LIBC_NAMESPACE::sinpif16(
EXPECT_FP_EQ(neg_zero, LIBC_NAMESPACE::sinpif16(-0x1.4p+14)); LIBC_NAMESPACE::fputil::cast<float16>(-0x420.0p0)));
EXPECT_FP_EQ(zero, LIBC_NAMESPACE::sinpif16(0x420)); EXPECT_FP_EQ(neg_zero, LIBC_NAMESPACE::sinpif16(
EXPECT_FP_EQ(zero, LIBC_NAMESPACE::sinpif16(0x1.cp+15)); LIBC_NAMESPACE::fputil::cast<float16>(-0x1p+10)));
EXPECT_FP_EQ(zero, LIBC_NAMESPACE::sinpif16(0x1.cp+7)); EXPECT_FP_EQ(neg_zero,
LIBC_NAMESPACE::sinpif16(
LIBC_NAMESPACE::fputil::cast<float16>(-0x1.4p+14)));
EXPECT_FP_EQ(zero, LIBC_NAMESPACE::sinpif16(
LIBC_NAMESPACE::fputil::cast<float16>(0x420.0p0)));
EXPECT_FP_EQ(zero, LIBC_NAMESPACE::sinpif16(
LIBC_NAMESPACE::fputil::cast<float16>(0x1.cp+15)));
EXPECT_FP_EQ(zero, LIBC_NAMESPACE::sinpif16(
LIBC_NAMESPACE::fputil::cast<float16>(0x1.cp+7)));
} }