Skip to content

Commit

Permalink
[libc][NFC] Move RoundingModeUtils to LibcFPTestHelpers.
Browse files Browse the repository at this point in the history
Reviewed By: lntue

Differential Revision: https://reviews.llvm.org/D148602
  • Loading branch information
Siva Chandra Reddy committed Apr 18, 2023
1 parent 310ee08 commit 447d59e
Show file tree
Hide file tree
Showing 20 changed files with 81 additions and 117 deletions.
6 changes: 3 additions & 3 deletions libc/cmake/modules/LLVMLibCTestRules.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -178,11 +178,11 @@ function(create_libc_unittest fq_target_name)
${fq_deps_list}
)

# LibcUnitTest and libc_test_utils should not depend on anything in LINK_LIBRARIES.
# LibcUnitTest should not depend on anything in LINK_LIBRARIES.
if(NO_LIBC_UNITTEST_TEST_MAIN)
list(APPEND link_libraries LibcUnitTest libc_test_utils)
list(APPEND link_libraries LibcUnitTest)
else()
list(APPEND link_libraries LibcUnitTest LibcUnitTestMain libc_test_utils)
list(APPEND link_libraries LibcUnitTest LibcUnitTestMain)
endif()

target_link_libraries(${fq_build_target_name} PRIVATE ${link_libraries})
Expand Down
7 changes: 4 additions & 3 deletions libc/test/UnitTest/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ add_dependencies(
libc.src.__support.CPP.type_traits
libc.src.__support.OSUtil.osutil
libc.src.__support.uint128)
target_link_libraries(LibcUnitTest PUBLIC libc_test_utils)

add_library(
LibcUnitTestMain
Expand All @@ -33,7 +32,7 @@ add_library(

target_include_directories(LibcUnitTestMain PUBLIC ${LIBC_SOURCE_DIR})
add_dependencies(LibcUnitTestMain LibcUnitTest)
target_link_libraries(LibcUnitTestMain PUBLIC LibcUnitTest libc_test_utils)
target_link_libraries(LibcUnitTestMain PUBLIC LibcUnitTest)

add_header_library(
string_utils
Expand All @@ -49,9 +48,11 @@ add_library(
FPExceptMatcher.cpp
FPExceptMatcher.h
FPMatcher.h
RoundingModeUtils.cpp
RoundingModeUtils.h
)
target_include_directories(LibcFPTestHelpers PUBLIC ${LIBC_SOURCE_DIR})
target_link_libraries(LibcFPTestHelpers LibcUnitTest libc_test_utils)
target_link_libraries(LibcFPTestHelpers LibcUnitTest)
add_dependencies(
LibcFPTestHelpers
LibcUnitTest
Expand Down
4 changes: 2 additions & 2 deletions libc/test/UnitTest/FPMatcher.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@

#include "src/__support/FPUtil/FEnvImpl.h"
#include "src/__support/FPUtil/FPBits.h"
#include "test/UnitTest/RoundingModeUtils.h"
#include "test/UnitTest/StringUtils.h"
#include "test/UnitTest/Test.h"
#include "utils/testutils/RoundingModeUtils.h"

#include <math.h>

Expand Down Expand Up @@ -196,7 +196,7 @@ FPMatcher<T, C> getMatcher(T expectedValue) {

#define EXPECT_FP_EQ_ALL_ROUNDING(expected, actual) \
do { \
using namespace __llvm_libc::testutils; \
using namespace __llvm_libc::fputil::testing; \
ForceRoundingMode __r1(RoundingMode::Nearest); \
EXPECT_FP_EQ((expected), (actual)); \
ForceRoundingMode __r2(RoundingMode::Upward); \
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@
#include <fenv.h>

namespace __llvm_libc {
namespace testutils {
namespace fputil {
namespace testing {

int get_fe_rounding(RoundingMode mode) {
switch (mode) {
Expand Down Expand Up @@ -44,5 +45,6 @@ ForceRoundingMode::~ForceRoundingMode() {
fesetround(old_rounding_mode);
}

} // namespace testutils
} // namespace testing
} // namespace fputil
} // namespace __llvm_libc
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@
#include <stdint.h>

namespace __llvm_libc {
namespace testutils {
namespace fputil {
namespace testing {

enum class RoundingMode : uint8_t { Upward, Downward, TowardZero, Nearest };

Expand All @@ -28,7 +29,8 @@ template <RoundingMode R> struct ForceRoundingModeTest : ForceRoundingMode {
ForceRoundingModeTest() : ForceRoundingMode(R) {}
};

} // namespace testutils
} // namespace testing
} // namespace fputil
} // namespace __llvm_libc

#endif // LLVM_LIBC_UTILS_TESTUTILS_ROUNDINGMODEUTILS_H
2 changes: 1 addition & 1 deletion libc/test/src/math/differential_testing/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ function(add_diff_binary target_name)

target_link_libraries(
${fq_target_name}
PRIVATE ${link_object_files} libc_test_utils libc_diff_test_utils)
PRIVATE ${link_object_files} libc_diff_test_utils)

set_target_properties(${fq_target_name}
PROPERTIES RUNTIME_OUTPUT_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR})
Expand Down
2 changes: 1 addition & 1 deletion libc/test/src/stdio/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ add_libc_unittest(
LibcMemoryHelpers
)

add_libc_unittest(
add_fp_unittest(
sprintf_test
SUITE
libc_stdio_unittests
Expand Down
82 changes: 41 additions & 41 deletions libc/test/src/stdio/sprintf_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,8 @@

#include "src/__support/FPUtil/FPBits.h"
#include "src/__support/FPUtil/PlatformDefs.h"
#include "test/UnitTest/RoundingModeUtils.h"
#include "test/UnitTest/Test.h"
#include "utils/testutils/RoundingModeUtils.h"

// #include <stdio.h>
// namespace __llvm_libc {
Expand Down Expand Up @@ -505,8 +505,8 @@ TEST(LlvmLibcSPrintfTest, OctConv) {
#ifndef LIBC_COPT_PRINTF_DISABLE_FLOAT

TEST_F(LlvmLibcSPrintfTest, FloatHexExpConv) {
__llvm_libc::testutils::ForceRoundingMode r(
__llvm_libc::testutils::RoundingMode::Nearest);
__llvm_libc::fputil::testing::ForceRoundingMode r(
__llvm_libc::fputil::testing::RoundingMode::Nearest);
double inf = __llvm_libc::fputil::FPBits<double>::inf().get_val();
double nan = __llvm_libc::fputil::FPBits<double>::build_nan(1);

Expand Down Expand Up @@ -706,8 +706,8 @@ TEST_F(LlvmLibcSPrintfTest, FloatHexExpConv) {
// Rounding Mode Tests.

{
__llvm_libc::testutils::ForceRoundingMode r(
__llvm_libc::testutils::RoundingMode::Nearest);
__llvm_libc::fputil::testing::ForceRoundingMode r(
__llvm_libc::fputil::testing::RoundingMode::Nearest);

written = __llvm_libc::sprintf(buff, "%.1a", 0x1.08p0);
ASSERT_STREQ_LEN(written, buff, "0x1.0p+0");
Expand Down Expand Up @@ -735,8 +735,8 @@ TEST_F(LlvmLibcSPrintfTest, FloatHexExpConv) {
}

{
__llvm_libc::testutils::ForceRoundingMode r(
__llvm_libc::testutils::RoundingMode::Upward);
__llvm_libc::fputil::testing::ForceRoundingMode r(
__llvm_libc::fputil::testing::RoundingMode::Upward);

written = __llvm_libc::sprintf(buff, "%.1a", 0x1.08p0);
ASSERT_STREQ_LEN(written, buff, "0x1.1p+0");
Expand Down Expand Up @@ -764,8 +764,8 @@ TEST_F(LlvmLibcSPrintfTest, FloatHexExpConv) {
}

{
__llvm_libc::testutils::ForceRoundingMode r(
__llvm_libc::testutils::RoundingMode::Downward);
__llvm_libc::fputil::testing::ForceRoundingMode r(
__llvm_libc::fputil::testing::RoundingMode::Downward);

written = __llvm_libc::sprintf(buff, "%.1a", 0x1.08p0);
ASSERT_STREQ_LEN(written, buff, "0x1.0p+0");
Expand Down Expand Up @@ -793,8 +793,8 @@ TEST_F(LlvmLibcSPrintfTest, FloatHexExpConv) {
}

{
__llvm_libc::testutils::ForceRoundingMode r(
__llvm_libc::testutils::RoundingMode::TowardZero);
__llvm_libc::fputil::testing::ForceRoundingMode r(
__llvm_libc::fputil::testing::RoundingMode::TowardZero);

written = __llvm_libc::sprintf(buff, "%.1a", 0x1.08p0);
ASSERT_STREQ_LEN(written, buff, "0x1.0p+0");
Expand Down Expand Up @@ -866,8 +866,8 @@ TEST_F(LlvmLibcSPrintfTest, FloatHexExpConv) {
}

TEST_F(LlvmLibcSPrintfTest, FloatDecimalConv) {
__llvm_libc::testutils::ForceRoundingMode r(
__llvm_libc::testutils::RoundingMode::Nearest);
__llvm_libc::fputil::testing::ForceRoundingMode r(
__llvm_libc::fputil::testing::RoundingMode::Nearest);
double inf = __llvm_libc::fputil::FPBits<double>::inf().get_val();
double nan = __llvm_libc::fputil::FPBits<double>::build_nan(1);

Expand Down Expand Up @@ -1222,8 +1222,8 @@ TEST_F(LlvmLibcSPrintfTest, FloatDecimalConv) {
// Rounding Mode Tests.

{
__llvm_libc::testutils::ForceRoundingMode r(
__llvm_libc::testutils::RoundingMode::Nearest);
__llvm_libc::fputil::testing::ForceRoundingMode r(
__llvm_libc::fputil::testing::RoundingMode::Nearest);

written = __llvm_libc::sprintf(buff, "%.1f", 1.75);
ASSERT_STREQ_LEN(written, buff, "1.8");
Expand Down Expand Up @@ -1263,8 +1263,8 @@ TEST_F(LlvmLibcSPrintfTest, FloatDecimalConv) {
}

{
__llvm_libc::testutils::ForceRoundingMode r(
__llvm_libc::testutils::RoundingMode::Upward);
__llvm_libc::fputil::testing::ForceRoundingMode r(
__llvm_libc::fputil::testing::RoundingMode::Upward);

written = __llvm_libc::sprintf(buff, "%.1f", 1.75);
ASSERT_STREQ_LEN(written, buff, "1.8");
Expand Down Expand Up @@ -1304,8 +1304,8 @@ TEST_F(LlvmLibcSPrintfTest, FloatDecimalConv) {
}

{
__llvm_libc::testutils::ForceRoundingMode r(
__llvm_libc::testutils::RoundingMode::Downward);
__llvm_libc::fputil::testing::ForceRoundingMode r(
__llvm_libc::fputil::testing::RoundingMode::Downward);

written = __llvm_libc::sprintf(buff, "%.1f", 1.75);
ASSERT_STREQ_LEN(written, buff, "1.7");
Expand Down Expand Up @@ -1345,8 +1345,8 @@ TEST_F(LlvmLibcSPrintfTest, FloatDecimalConv) {
}

{
__llvm_libc::testutils::ForceRoundingMode r(
__llvm_libc::testutils::RoundingMode::TowardZero);
__llvm_libc::fputil::testing::ForceRoundingMode r(
__llvm_libc::fputil::testing::RoundingMode::TowardZero);

written = __llvm_libc::sprintf(buff, "%.1f", 1.75);
ASSERT_STREQ_LEN(written, buff, "1.7");
Expand Down Expand Up @@ -1453,8 +1453,8 @@ TEST_F(LlvmLibcSPrintfTest, FloatDecimalConv) {
}

TEST_F(LlvmLibcSPrintfTest, FloatExponentConv) {
__llvm_libc::testutils::ForceRoundingMode r(
__llvm_libc::testutils::RoundingMode::Nearest);
__llvm_libc::fputil::testing::ForceRoundingMode r(
__llvm_libc::fputil::testing::RoundingMode::Nearest);
double inf = __llvm_libc::fputil::FPBits<double>::inf().get_val();
double nan = __llvm_libc::fputil::FPBits<double>::build_nan(1);

Expand Down Expand Up @@ -1808,8 +1808,8 @@ TEST_F(LlvmLibcSPrintfTest, FloatExponentConv) {
// Rounding Mode Tests.

{
__llvm_libc::testutils::ForceRoundingMode r(
__llvm_libc::testutils::RoundingMode::Nearest);
__llvm_libc::fputil::testing::ForceRoundingMode r(
__llvm_libc::fputil::testing::RoundingMode::Nearest);

written = __llvm_libc::sprintf(buff, "%.1e", 1.75);
ASSERT_STREQ_LEN(written, buff, "1.8e+00");
Expand Down Expand Up @@ -1849,8 +1849,8 @@ TEST_F(LlvmLibcSPrintfTest, FloatExponentConv) {
}

{
__llvm_libc::testutils::ForceRoundingMode r(
__llvm_libc::testutils::RoundingMode::Upward);
__llvm_libc::fputil::testing::ForceRoundingMode r(
__llvm_libc::fputil::testing::RoundingMode::Upward);

written = __llvm_libc::sprintf(buff, "%.1e", 1.75);
ASSERT_STREQ_LEN(written, buff, "1.8e+00");
Expand Down Expand Up @@ -1890,8 +1890,8 @@ TEST_F(LlvmLibcSPrintfTest, FloatExponentConv) {
}

{
__llvm_libc::testutils::ForceRoundingMode r(
__llvm_libc::testutils::RoundingMode::Downward);
__llvm_libc::fputil::testing::ForceRoundingMode r(
__llvm_libc::fputil::testing::RoundingMode::Downward);

written = __llvm_libc::sprintf(buff, "%.1e", 1.75);
ASSERT_STREQ_LEN(written, buff, "1.7e+00");
Expand Down Expand Up @@ -1931,8 +1931,8 @@ TEST_F(LlvmLibcSPrintfTest, FloatExponentConv) {
}

{
__llvm_libc::testutils::ForceRoundingMode r(
__llvm_libc::testutils::RoundingMode::TowardZero);
__llvm_libc::fputil::testing::ForceRoundingMode r(
__llvm_libc::fputil::testing::RoundingMode::TowardZero);

written = __llvm_libc::sprintf(buff, "%.1e", 1.75);
ASSERT_STREQ_LEN(written, buff, "1.7e+00");
Expand Down Expand Up @@ -2048,8 +2048,8 @@ TEST_F(LlvmLibcSPrintfTest, FloatExponentConv) {
}

TEST_F(LlvmLibcSPrintfTest, FloatAutoConv) {
__llvm_libc::testutils::ForceRoundingMode r(
__llvm_libc::testutils::RoundingMode::Nearest);
__llvm_libc::fputil::testing::ForceRoundingMode r(
__llvm_libc::fputil::testing::RoundingMode::Nearest);
double inf = __llvm_libc::fputil::FPBits<double>::inf().get_val();
double nan = __llvm_libc::fputil::FPBits<double>::build_nan(1);

Expand Down Expand Up @@ -2427,8 +2427,8 @@ TEST_F(LlvmLibcSPrintfTest, FloatAutoConv) {
// Rounding Mode Tests.

{
__llvm_libc::testutils::ForceRoundingMode r(
__llvm_libc::testutils::RoundingMode::Nearest);
__llvm_libc::fputil::testing::ForceRoundingMode r(
__llvm_libc::fputil::testing::RoundingMode::Nearest);

written = __llvm_libc::sprintf(buff, "%.2g", 1.75);
ASSERT_STREQ_LEN(written, buff, "1.8");
Expand Down Expand Up @@ -2468,8 +2468,8 @@ TEST_F(LlvmLibcSPrintfTest, FloatAutoConv) {
}

{
__llvm_libc::testutils::ForceRoundingMode r(
__llvm_libc::testutils::RoundingMode::Upward);
__llvm_libc::fputil::testing::ForceRoundingMode r(
__llvm_libc::fputil::testing::RoundingMode::Upward);

written = __llvm_libc::sprintf(buff, "%.2g", 1.75);
ASSERT_STREQ_LEN(written, buff, "1.8");
Expand Down Expand Up @@ -2509,8 +2509,8 @@ TEST_F(LlvmLibcSPrintfTest, FloatAutoConv) {
}

{
__llvm_libc::testutils::ForceRoundingMode r(
__llvm_libc::testutils::RoundingMode::Downward);
__llvm_libc::fputil::testing::ForceRoundingMode r(
__llvm_libc::fputil::testing::RoundingMode::Downward);

written = __llvm_libc::sprintf(buff, "%.2g", 1.75);
ASSERT_STREQ_LEN(written, buff, "1.7");
Expand Down Expand Up @@ -2550,8 +2550,8 @@ TEST_F(LlvmLibcSPrintfTest, FloatAutoConv) {
}

{
__llvm_libc::testutils::ForceRoundingMode r(
__llvm_libc::testutils::RoundingMode::TowardZero);
__llvm_libc::fputil::testing::ForceRoundingMode r(
__llvm_libc::fputil::testing::RoundingMode::TowardZero);

written = __llvm_libc::sprintf(buff, "%.2g", 1.75);
ASSERT_STREQ_LEN(written, buff, "1.7");
Expand Down
4 changes: 2 additions & 2 deletions libc/test/src/stdlib/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ add_libc_unittest(
libc.src.stdlib.atoll
)

add_libc_unittest(
add_fp_unittest(
strtod_test
SUITE
libc_stdlib_unittests
Expand All @@ -64,7 +64,7 @@ add_libc_unittest(
libc.src.stdlib.strtod
)

add_libc_unittest(
add_fp_unittest(
strtof_test
SUITE
libc_stdlib_unittests
Expand Down
Loading

0 comments on commit 447d59e

Please sign in to comment.