mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-19 18:24:00 +00:00
Add an APFloat::convertToInt(APSInt) function that automatically manages the
memory for the result. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@135259 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -13,6 +13,7 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
#include "llvm/ADT/APFloat.h"
|
||||
#include "llvm/ADT/APSInt.h"
|
||||
#include "llvm/ADT/StringRef.h"
|
||||
#include "llvm/ADT/FoldingSet.h"
|
||||
#include "llvm/Support/ErrorHandling.h"
|
||||
@ -2084,6 +2085,23 @@ APFloat::convertToInteger(integerPart *parts, unsigned int width,
|
||||
return fs;
|
||||
}
|
||||
|
||||
/* Same as convertToInteger(integerPart*, ...), except the result is returned in
|
||||
an APSInt, whose initial bit-width and signed-ness are used to determine the
|
||||
precision of the conversion.
|
||||
*/
|
||||
APFloat::opStatus
|
||||
APFloat::convertToInteger(APSInt &result,
|
||||
roundingMode rounding_mode, bool *isExact) const
|
||||
{
|
||||
unsigned bitWidth = result.getBitWidth();
|
||||
SmallVector<uint64_t, 4> parts(result.getNumWords());
|
||||
opStatus status = convertToInteger(
|
||||
parts.data(), bitWidth, result.isSigned(), rounding_mode, isExact);
|
||||
// Keeps the original signed-ness.
|
||||
result = APInt(bitWidth, parts.size(), parts.data());
|
||||
return status;
|
||||
}
|
||||
|
||||
/* Convert an unsigned integer SRC to a floating point number,
|
||||
rounding according to ROUNDING_MODE. The sign of the floating
|
||||
point number is not modified. */
|
||||
|
Reference in New Issue
Block a user