[libc][NFC][Obvious] Convert the MPFR operations enum to an enum class.

This was suggested in https://reviews.llvm.org/D79149.
This commit is contained in:
Siva Chandra Reddy
2020-05-26 22:26:41 -07:00
parent 0ed2d4c7cb
commit 9f69d3d0bc
9 changed files with 43 additions and 41 deletions
+4 -4
View File
@@ -80,7 +80,7 @@ TEST(CosfTest, InFloatRange) {
float x = valueFromBits(v);
if (isnan(x) || isinf(x))
continue;
ASSERT_MPFR_MATCH(mpfr::OP_Cos, x, __llvm_libc::cosf(x), tolerance);
ASSERT_MPFR_MATCH(mpfr::Operation::Cos, x, __llvm_libc::cosf(x), tolerance);
}
}
@@ -88,12 +88,12 @@ TEST(CosfTest, InFloatRange) {
TEST(CosfTest, SmallValues) {
float x = valueFromBits(0x17800000U);
float result = __llvm_libc::cosf(x);
EXPECT_MPFR_MATCH(mpfr::OP_Cos, x, result, tolerance);
EXPECT_MPFR_MATCH(mpfr::Operation::Cos, x, result, tolerance);
EXPECT_EQ(BitPatterns::one, valueAsBits(result));
x = valueFromBits(0x0040000U);
result = __llvm_libc::cosf(x);
EXPECT_MPFR_MATCH(mpfr::OP_Cos, x, result, tolerance);
EXPECT_MPFR_MATCH(mpfr::Operation::Cos, x, result, tolerance);
EXPECT_EQ(BitPatterns::one, valueAsBits(result));
}
@@ -102,6 +102,6 @@ TEST(CosfTest, SmallValues) {
TEST(CosfTest, SDCOMP_26094) {
for (uint32_t v : sdcomp26094Values) {
float x = valueFromBits(v);
ASSERT_MPFR_MATCH(mpfr::OP_Cos, x, __llvm_libc::cosf(x), tolerance);
ASSERT_MPFR_MATCH(mpfr::Operation::Cos, x, __llvm_libc::cosf(x), tolerance);
}
}
+10 -9
View File
@@ -92,27 +92,27 @@ TEST(ExpfTest, Borderline) {
llvmlibc_errno = 0;
x = valueFromBits(0x42fa0001U);
EXPECT_MPFR_MATCH(mpfr::OP_Exp2, x, __llvm_libc::exp2f(x), tolerance);
EXPECT_MPFR_MATCH(mpfr::Operation::Exp2, x, __llvm_libc::exp2f(x), tolerance);
EXPECT_EQ(llvmlibc_errno, 0);
x = valueFromBits(0x42ffffffU);
EXPECT_MPFR_MATCH(mpfr::OP_Exp2, x, __llvm_libc::exp2f(x), tolerance);
EXPECT_MPFR_MATCH(mpfr::Operation::Exp2, x, __llvm_libc::exp2f(x), tolerance);
EXPECT_EQ(llvmlibc_errno, 0);
x = valueFromBits(0xc2fa0001U);
EXPECT_MPFR_MATCH(mpfr::OP_Exp2, x, __llvm_libc::exp2f(x), tolerance);
EXPECT_MPFR_MATCH(mpfr::Operation::Exp2, x, __llvm_libc::exp2f(x), tolerance);
EXPECT_EQ(llvmlibc_errno, 0);
x = valueFromBits(0xc2fc0000U);
EXPECT_MPFR_MATCH(mpfr::OP_Exp2, x, __llvm_libc::exp2f(x), tolerance);
EXPECT_MPFR_MATCH(mpfr::Operation::Exp2, x, __llvm_libc::exp2f(x), tolerance);
EXPECT_EQ(llvmlibc_errno, 0);
x = valueFromBits(0xc2fc0001U);
EXPECT_MPFR_MATCH(mpfr::OP_Exp2, x, __llvm_libc::exp2f(x), tolerance);
EXPECT_MPFR_MATCH(mpfr::Operation::Exp2, x, __llvm_libc::exp2f(x), tolerance);
EXPECT_EQ(llvmlibc_errno, 0);
x = valueFromBits(0xc3150000U);
EXPECT_MPFR_MATCH(mpfr::OP_Exp2, x, __llvm_libc::exp2f(x), tolerance);
EXPECT_MPFR_MATCH(mpfr::Operation::Exp2, x, __llvm_libc::exp2f(x), tolerance);
EXPECT_EQ(llvmlibc_errno, 0);
}
@@ -124,12 +124,12 @@ TEST(ExpfTest, Underflow) {
llvmlibc_errno = 0;
float x = valueFromBits(0xc3158000U);
EXPECT_MPFR_MATCH(mpfr::OP_Exp2, x, __llvm_libc::exp2f(x), tolerance);
EXPECT_MPFR_MATCH(mpfr::Operation::Exp2, x, __llvm_libc::exp2f(x), tolerance);
EXPECT_EQ(llvmlibc_errno, ERANGE);
llvmlibc_errno = 0;
x = valueFromBits(0xc3165432U);
EXPECT_MPFR_MATCH(mpfr::OP_Exp2, x, __llvm_libc::exp2f(x), tolerance);
EXPECT_MPFR_MATCH(mpfr::Operation::Exp2, x, __llvm_libc::exp2f(x), tolerance);
EXPECT_EQ(llvmlibc_errno, ERANGE);
}
@@ -149,6 +149,7 @@ TEST(exp2fTest, InFloatRange) {
// wider precision.
if (isnan(result) || isinf(result) || llvmlibc_errno != 0)
continue;
ASSERT_MPFR_MATCH(mpfr::OP_Exp2, x, __llvm_libc::exp2f(x), tolerance);
ASSERT_MPFR_MATCH(mpfr::Operation::Exp2, x, __llvm_libc::exp2f(x),
tolerance);
}
}
+5 -5
View File
@@ -109,19 +109,19 @@ TEST(ExpfTest, Borderline) {
llvmlibc_errno = 0;
x = valueFromBits(0x42affff8U);
ASSERT_MPFR_MATCH(mpfr::OP_Exp, x, __llvm_libc::expf(x), tolerance);
ASSERT_MPFR_MATCH(mpfr::Operation::Exp, x, __llvm_libc::expf(x), tolerance);
EXPECT_EQ(llvmlibc_errno, 0);
x = valueFromBits(0x42b00008U);
ASSERT_MPFR_MATCH(mpfr::OP_Exp, x, __llvm_libc::expf(x), tolerance);
ASSERT_MPFR_MATCH(mpfr::Operation::Exp, x, __llvm_libc::expf(x), tolerance);
EXPECT_EQ(llvmlibc_errno, 0);
x = valueFromBits(0xc2affff8U);
ASSERT_MPFR_MATCH(mpfr::OP_Exp, x, __llvm_libc::expf(x), tolerance);
ASSERT_MPFR_MATCH(mpfr::Operation::Exp, x, __llvm_libc::expf(x), tolerance);
EXPECT_EQ(llvmlibc_errno, 0);
x = valueFromBits(0xc2b00008U);
ASSERT_MPFR_MATCH(mpfr::OP_Exp, x, __llvm_libc::expf(x), tolerance);
ASSERT_MPFR_MATCH(mpfr::Operation::Exp, x, __llvm_libc::expf(x), tolerance);
EXPECT_EQ(llvmlibc_errno, 0);
}
@@ -141,6 +141,6 @@ TEST(ExpfTest, InFloatRange) {
// wider precision.
if (isnan(result) || isinf(result) || llvmlibc_errno != 0)
continue;
ASSERT_MPFR_MATCH(mpfr::OP_Exp, x, __llvm_libc::expf(x), tolerance);
ASSERT_MPFR_MATCH(mpfr::Operation::Exp, x, __llvm_libc::expf(x), tolerance);
}
}
+1 -1
View File
@@ -59,6 +59,6 @@ TEST(FabsTest, InDoubleRange) {
double x = valueFromBits(v);
if (isnan(x) || isinf(x))
continue;
ASSERT_MPFR_MATCH(mpfr::OP_Abs, x, __llvm_libc::fabs(x), tolerance);
ASSERT_MPFR_MATCH(mpfr::Operation::Abs, x, __llvm_libc::fabs(x), tolerance);
}
}
+2 -1
View File
@@ -61,6 +61,7 @@ TEST(FabsfTest, InFloatRange) {
double x = valueFromBits(v);
if (isnan(x) || isinf(x))
continue;
ASSERT_MPFR_MATCH(mpfr::OP_Abs, x, __llvm_libc::fabsf(x), tolerance);
ASSERT_MPFR_MATCH(mpfr::Operation::Abs, x, __llvm_libc::fabsf(x),
tolerance);
}
}
+8 -8
View File
@@ -95,8 +95,8 @@ TEST(SinCosfTest, InFloatRange) {
float sin, cos;
__llvm_libc::sincosf(x, &sin, &cos);
ASSERT_MPFR_MATCH(mpfr::OP_Cos, x, cos, tolerance);
ASSERT_MPFR_MATCH(mpfr::OP_Sin, x, sin, tolerance);
ASSERT_MPFR_MATCH(mpfr::Operation::Cos, x, cos, tolerance);
ASSERT_MPFR_MATCH(mpfr::Operation::Sin, x, sin, tolerance);
}
}
@@ -106,16 +106,16 @@ TEST(SinCosfTest, SmallValues) {
float x = valueFromBits(bits);
float result_cos, result_sin;
__llvm_libc::sincosf(x, &result_sin, &result_cos);
EXPECT_MPFR_MATCH(mpfr::OP_Cos, x, result_cos, tolerance);
EXPECT_MPFR_MATCH(mpfr::OP_Sin, x, result_sin, tolerance);
EXPECT_MPFR_MATCH(mpfr::Operation::Cos, x, result_cos, tolerance);
EXPECT_MPFR_MATCH(mpfr::Operation::Sin, x, result_sin, tolerance);
EXPECT_EQ(BitPatterns::one, valueAsBits(result_cos));
EXPECT_EQ(bits, valueAsBits(result_sin));
bits = 0x00400000;
x = valueFromBits(bits);
__llvm_libc::sincosf(x, &result_sin, &result_cos);
EXPECT_MPFR_MATCH(mpfr::OP_Cos, x, result_cos, tolerance);
EXPECT_MPFR_MATCH(mpfr::OP_Sin, x, result_sin, tolerance);
EXPECT_MPFR_MATCH(mpfr::Operation::Cos, x, result_cos, tolerance);
EXPECT_MPFR_MATCH(mpfr::Operation::Sin, x, result_sin, tolerance);
EXPECT_EQ(BitPatterns::one, valueAsBits(result_cos));
EXPECT_EQ(bits, valueAsBits(result_sin));
}
@@ -127,7 +127,7 @@ TEST(SinCosfTest, SDCOMP_26094) {
float x = valueFromBits(v);
float sin, cos;
__llvm_libc::sincosf(x, &sin, &cos);
EXPECT_MPFR_MATCH(mpfr::OP_Cos, x, cos, tolerance);
EXPECT_MPFR_MATCH(mpfr::OP_Sin, x, sin, tolerance);
EXPECT_MPFR_MATCH(mpfr::Operation::Cos, x, cos, tolerance);
EXPECT_MPFR_MATCH(mpfr::Operation::Sin, x, sin, tolerance);
}
}
+5 -5
View File
@@ -80,13 +80,13 @@ TEST(SinfTest, InFloatRange) {
float x = valueFromBits(v);
if (isnan(x) || isinf(x))
continue;
ASSERT_MPFR_MATCH(mpfr::OP_Sin, x, __llvm_libc::sinf(x), tolerance);
ASSERT_MPFR_MATCH(mpfr::Operation::Sin, x, __llvm_libc::sinf(x), tolerance);
}
}
TEST(SinfTest, SpecificBitPatterns) {
float x = valueFromBits(0xc70d39a1);
EXPECT_MPFR_MATCH(mpfr::OP_Sin, x, __llvm_libc::sinf(x), tolerance);
EXPECT_MPFR_MATCH(mpfr::Operation::Sin, x, __llvm_libc::sinf(x), tolerance);
}
// For small values, sin(x) is x.
@@ -94,13 +94,13 @@ TEST(SinfTest, SmallValues) {
uint32_t bits = 0x17800000;
float x = valueFromBits(bits);
float result = __llvm_libc::sinf(x);
EXPECT_MPFR_MATCH(mpfr::OP_Sin, x, result, tolerance);
EXPECT_MPFR_MATCH(mpfr::Operation::Sin, x, result, tolerance);
EXPECT_EQ(bits, valueAsBits(result));
bits = 0x00400000;
x = valueFromBits(bits);
result = __llvm_libc::sinf(x);
EXPECT_MPFR_MATCH(mpfr::OP_Sin, x, result, tolerance);
EXPECT_MPFR_MATCH(mpfr::Operation::Sin, x, result, tolerance);
EXPECT_EQ(bits, valueAsBits(result));
}
@@ -109,6 +109,6 @@ TEST(SinfTest, SmallValues) {
TEST(SinfTest, SDCOMP_26094) {
for (uint32_t v : sdcomp26094Values) {
float x = valueFromBits(v);
EXPECT_MPFR_MATCH(mpfr::OP_Sin, x, __llvm_libc::sinf(x), tolerance);
EXPECT_MPFR_MATCH(mpfr::Operation::Sin, x, __llvm_libc::sinf(x), tolerance);
}
}
+7 -7
View File
@@ -86,21 +86,21 @@ public:
mpfr_init2(value, mpfrPrecision);
MPFRNumber mpfrInput(rawValue);
switch (op) {
case OP_Abs:
case Operation::Abs:
mpfr_abs(value, mpfrInput.value, MPFR_RNDN);
break;
case OP_Cos:
case Operation::Cos:
mpfr_cos(value, mpfrInput.value, MPFR_RNDN);
break;
case OP_Sin:
mpfr_sin(value, mpfrInput.value, MPFR_RNDN);
break;
case OP_Exp:
case Operation::Exp:
mpfr_exp(value, mpfrInput.value, MPFR_RNDN);
break;
case OP_Exp2:
case Operation::Exp2:
mpfr_exp2(value, mpfrInput.value, MPFR_RNDN);
break;
case Operation::Sin:
mpfr_sin(value, mpfrInput.value, MPFR_RNDN);
break;
}
}
+1 -1
View File
@@ -39,7 +39,7 @@ struct Tolerance {
uint32_t bits;
};
enum Operation { OP_Abs, OP_Cos, OP_Sin, OP_Exp, OP_Exp2 };
enum class Operation : int { Abs, Cos, Exp, Exp2, Sin };
namespace internal {