File tree 2 files changed +6
-2
lines changed
2 files changed +6
-2
lines changed Original file line number Diff line number Diff line change @@ -408,7 +408,8 @@ exponentNaN(const fltSemantics &semantics) {
408
408
if (semantics.nonFiniteBehavior == fltNonfiniteBehavior::NanOnly) {
409
409
if (semantics.nanEncoding == fltNanEncoding::NegativeZero)
410
410
return exponentZero (semantics);
411
- return semantics.maxExponent ;
411
+ if (semantics.hasSignedRepr )
412
+ return semantics.maxExponent ;
412
413
}
413
414
return semantics.maxExponent + 1 ;
414
415
}
@@ -3663,7 +3664,7 @@ APInt IEEEFloat::convertIEEEFloatToAPInt() const {
3663
3664
std::array<uint64_t , (S.sizeInBits + 63 ) / 64 > words;
3664
3665
auto words_iter =
3665
3666
std::copy_n (mysignificand.begin (), mysignificand.size (), words.begin ());
3666
- if constexpr (significand_mask != 0 ) {
3667
+ if constexpr (significand_mask != 0 || trailing_significand_bits == 0 ) {
3667
3668
// Clear the integer bit.
3668
3669
words[mysignificand.size () - 1 ] &= significand_mask;
3669
3670
}
Original file line number Diff line number Diff line change @@ -5985,6 +5985,9 @@ TEST(APFloatTest, Float8E8M0FNUExhaustive) {
5985
5985
APFloat test(APFloat::Float8E8M0FNU(), APInt(8, i));
5986
5986
SCOPED_TRACE("i=" + std::to_string(i));
5987
5987
5988
+ // bitcastToAPInt
5989
+ EXPECT_EQ(i, test.bitcastToAPInt());
5990
+
5988
5991
// isLargest
5989
5992
if (i == 254) {
5990
5993
EXPECT_TRUE(test.isLargest());
You can’t perform that action at this time.
0 commit comments