Lines Matching full:parts

297 /* A tight upper bound on number of parts required to hold the value
302 However, whilst the result may require only this many parts,
306 requires two parts to hold the single-part result). So we add an
656 lostFractionThroughTruncation(const APFloatBase::integerPart *parts,
662 lsb = APInt::tcLSB(parts, partCount);
670 APInt::tcExtractBit(parts, bits - 1))
678 shiftRight(APFloatBase::integerPart *dst, unsigned int parts, unsigned int bits)
682 lost_fraction = lostFractionThroughTruncation(dst, parts, bits);
684 APInt::tcShiftRight(dst, parts, bits);
726 ulpsFromBoundary(const APFloatBase::integerPart *parts, unsigned int bits,
737 part = parts[count] & (~(APFloatBase::integerPart) 0 >> (APFloatBase::integerPartWidth - partBits));
753 if (parts[count])
756 return parts[0];
759 if (~parts[count])
762 return -parts[0];
768 /* Place pow(5, power) in DST, and return the number of parts used.
808 /* Now result is in p1 with partsCount parts and p2 is scratch
892 significand.parts = new integerPart[count];
897 delete [] significand.parts;
1053 const integerPart *Parts = significandParts();
1056 if (~Parts[i])
1065 if ((semantics->precision <= 1) || (~(Parts[PartCount - 1] | HighBitFill)))
1074 const integerPart *Parts = significandParts();
1076 if (Parts[0] & 1)
1081 if (~Parts[i] & ~unsigned{!i})
1091 if (~(Parts[PartCount - 1] | HighBitFill | 0x1))
1100 const integerPart *Parts = significandParts();
1104 if (Parts[i])
1113 if ((semantics->precision > 1) && (Parts[PartCount - 1] & HighBitMask))
1120 const integerPart *Parts = significandParts();
1124 if (Parts[i])
1131 return ((semantics->precision <= 1) || (Parts[PartCount - 1] == MSBMask));
1223 return significand.parts;
1245 integerPart *parts;
1247 parts = significandParts();
1252 return APInt::tcAdd(parts, rhs.significandParts(), 0, partCount());
1259 integerPart *parts;
1261 parts = significandParts();
1266 return APInt::tcSubtract(parts, rhs.significandParts(), borrow,
1345 significand.parts = fullSignificand;
1557 static void tcSetLeastSignificantBits(APInt::WordType *dst, unsigned parts,
1568 while (i < parts)
2595 significand.parts = newParts;
2672 destination parts are unspecified. If the rounded value is in
2680 MutableArrayRef<integerPart> parts, unsigned int width, bool isSigned,
2693 assert(dstPartsCount <= parts.size() && "Integer too big");
2696 APInt::tcSet(parts.data(), 0, dstPartsCount);
2708 APInt::tcSet(parts.data(), 0, dstPartsCount);
2724 APInt::tcExtract(parts.data(), dstPartsCount, src, bits, truncatedBits);
2727 APInt::tcExtract(parts.data(), dstPartsCount, src, semantics->precision,
2729 APInt::tcShiftLeft(parts.data(), dstPartsCount,
2742 if (APInt::tcIncrement(parts.data(), dstPartsCount))
2750 unsigned int omsb = APInt::tcMSB(parts.data(), dstPartsCount) + 1;
2762 APInt::tcLSB(parts.data(), dstPartsCount) + 1 != omsb)
2770 APInt::tcNegate (parts.data(), dstPartsCount);
2793 IEEEFloat::convertToInteger(MutableArrayRef<integerPart> parts,
2798 fs = convertToSignExtendedInteger(parts, width, isSigned, rounding_mode,
2805 assert(dstPartsCount <= parts.size() && "Integer too big");
2814 tcSetLeastSignificantBits(parts.data(), dstPartsCount, bits);
2816 APInt::tcShiftLeft(parts.data(), dstPartsCount, width - 1);
2897 IEEEFloat::convertFromZeroExtendedInteger(const integerPart *parts,
2901 APInt api = APInt(width, ArrayRef(parts, partCount));
2904 if (isSigned && APInt::tcExtractBit(parts, width - 1)) {
3010 unsigned int parts, pow5PartCount;
3018 parts = partCountForBits(semantics->precision + 11);
3023 for (;; parts *= 2) {
3027 calcSemantics.precision = parts * integerPartWidth - 1;
4550 const integerPart *Parts = significandParts();
4555 PopCount += llvm::popcount(Parts[i]);
4566 if (Parts[i] != 0) {
4568 llvm::countr_zero(Parts[i]) + 1;
4678 integerPart *Parts = significandParts();
4679 APInt::tcDecrement(Parts, partCount());
4685 APInt::tcSetBit(Parts, semantics->precision - 1);
4703 integerPart *Parts = significandParts();
4704 APInt::tcSet(Parts, 0, partCount());
4705 APInt::tcSetBit(Parts, semantics->precision - 1);
5517 SmallVector<uint64_t, 4> parts(result.getNumWords());
5518 opStatus status = convertToInteger(parts, bitWidth, result.isSigned(),
5521 result = APInt(bitWidth, parts);