mirror of
https://github.com/intel/llvm.git
synced 2026-02-04 20:00:11 +08:00
[libc][obvious] Fix x86 long double conversion to integer.
Fixes incorrectly constructed ceill tests.
This commit is contained in:
@@ -47,25 +47,25 @@ TEST(CeillTest, RoundedNumbers) {
|
||||
}
|
||||
|
||||
TEST(CeillTest, Fractions) {
|
||||
EXPECT_FP_EQ(0.0l, __llvm_libc::ceill(0.5l));
|
||||
EXPECT_FP_EQ(1.0l, __llvm_libc::ceill(0.5l));
|
||||
EXPECT_FP_EQ(-0.0l, __llvm_libc::ceill(-0.5l));
|
||||
EXPECT_FP_EQ(0.0l, __llvm_libc::ceill(0.115l));
|
||||
EXPECT_FP_EQ(1.0l, __llvm_libc::ceill(0.115l));
|
||||
EXPECT_FP_EQ(-0.0l, __llvm_libc::ceill(-0.115l));
|
||||
EXPECT_FP_EQ(0.0l, __llvm_libc::ceill(0.715l));
|
||||
EXPECT_FP_EQ(1.0l, __llvm_libc::ceill(0.715l));
|
||||
EXPECT_FP_EQ(-0.0l, __llvm_libc::ceill(-0.715l));
|
||||
EXPECT_FP_EQ(1.0l, __llvm_libc::ceill(1.3l));
|
||||
EXPECT_FP_EQ(2.0l, __llvm_libc::ceill(1.3l));
|
||||
EXPECT_FP_EQ(-1.0l, __llvm_libc::ceill(-1.3l));
|
||||
EXPECT_FP_EQ(1.0l, __llvm_libc::ceill(1.5l));
|
||||
EXPECT_FP_EQ(2.0l, __llvm_libc::ceill(1.5l));
|
||||
EXPECT_FP_EQ(-1.0l, __llvm_libc::ceill(-1.5l));
|
||||
EXPECT_FP_EQ(1.0l, __llvm_libc::ceill(1.75l));
|
||||
EXPECT_FP_EQ(2.0l, __llvm_libc::ceill(1.75l));
|
||||
EXPECT_FP_EQ(-1.0l, __llvm_libc::ceill(-1.75l));
|
||||
EXPECT_FP_EQ(10.0l, __llvm_libc::ceill(10.32l));
|
||||
EXPECT_FP_EQ(11.0l, __llvm_libc::ceill(10.32l));
|
||||
EXPECT_FP_EQ(-10.0l, __llvm_libc::ceill(-10.32l));
|
||||
EXPECT_FP_EQ(10.0l, __llvm_libc::ceill(10.65l));
|
||||
EXPECT_FP_EQ(11.0l, __llvm_libc::ceill(10.65l));
|
||||
EXPECT_FP_EQ(-10.0l, __llvm_libc::ceill(-10.65l));
|
||||
EXPECT_FP_EQ(1234.0l, __llvm_libc::ceill(1234.38l));
|
||||
EXPECT_FP_EQ(1235.0l, __llvm_libc::ceill(1234.38l));
|
||||
EXPECT_FP_EQ(-1234.0l, __llvm_libc::ceill(-1234.38l));
|
||||
EXPECT_FP_EQ(1234.0l, __llvm_libc::ceill(1234.96l));
|
||||
EXPECT_FP_EQ(1235.0l, __llvm_libc::ceill(1234.96l));
|
||||
EXPECT_FP_EQ(-1234.0l, __llvm_libc::ceill(-1234.96l));
|
||||
}
|
||||
|
||||
|
||||
@@ -96,8 +96,8 @@ template <> struct __attribute__((packed)) FPBits<long double> {
|
||||
// there can be garbage bits in the padding. So, we zero the padding bits
|
||||
// in |result|.
|
||||
static constexpr UIntType mask =
|
||||
(UIntType(1) << (sizeof(long double) -
|
||||
Padding<sizeof(uintptr_t)>::value / 8)) -
|
||||
(UIntType(1) << (sizeof(long double) * 8 -
|
||||
Padding<sizeof(uintptr_t)>::value)) -
|
||||
1;
|
||||
return result & mask;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user