mirror of
https://git.suyu.dev/suyu/dynarmic.git
synced 2026-03-25 20:32:56 +00:00
fp: Remove MantissaT
This commit is contained in:
@@ -25,33 +25,31 @@ enum class FPType {
|
||||
};
|
||||
|
||||
/// value = (sign ? -1 : +1) * mantissa * 2^exponent
|
||||
template<typename MantissaT>
|
||||
struct FPUnpacked {
|
||||
bool sign;
|
||||
int exponent;
|
||||
MantissaT mantissa;
|
||||
u64 mantissa;
|
||||
};
|
||||
|
||||
template<typename MantissaT>
|
||||
inline bool operator==(const FPUnpacked<MantissaT>& a, const FPUnpacked<MantissaT>& b) {
|
||||
inline bool operator==(const FPUnpacked& a, const FPUnpacked& b) {
|
||||
return std::tie(a.sign, a.exponent, a.mantissa) == std::tie(b.sign, b.exponent, b.mantissa);
|
||||
}
|
||||
|
||||
template<typename FPT>
|
||||
std::tuple<FPType, bool, FPUnpacked<u64>> FPUnpack(FPT op, FPCR fpcr, FPSR& fpsr);
|
||||
std::tuple<FPType, bool, FPUnpacked> FPUnpack(FPT op, FPCR fpcr, FPSR& fpsr);
|
||||
|
||||
template<typename FPT, typename MantissaT>
|
||||
FPT FPRoundBase(FPUnpacked<MantissaT> op, FPCR fpcr, RoundingMode rounding, FPSR& fpsr);
|
||||
template<typename FPT>
|
||||
FPT FPRoundBase(FPUnpacked op, FPCR fpcr, RoundingMode rounding, FPSR& fpsr);
|
||||
|
||||
template<typename FPT, typename MantissaT>
|
||||
FPT FPRound(FPUnpacked<MantissaT> op, FPCR fpcr, RoundingMode rounding, FPSR& fpsr) {
|
||||
template<typename FPT>
|
||||
FPT FPRound(FPUnpacked op, FPCR fpcr, RoundingMode rounding, FPSR& fpsr) {
|
||||
fpcr.AHP(false);
|
||||
return FPRoundBase<FPT, MantissaT>(op, fpcr, rounding, fpsr);
|
||||
return FPRoundBase<FPT>(op, fpcr, rounding, fpsr);
|
||||
}
|
||||
|
||||
template<typename FPT, typename MantissaT>
|
||||
FPT FPRound(FPUnpacked<MantissaT> op, FPCR fpcr, FPSR& fpsr) {
|
||||
return FPRound<FPT, MantissaT>(op, fpcr, fpcr.RMode(), fpsr);
|
||||
template<typename FPT>
|
||||
FPT FPRound(FPUnpacked op, FPCR fpcr, FPSR& fpsr) {
|
||||
return FPRound<FPT>(op, fpcr, fpcr.RMode(), fpsr);
|
||||
}
|
||||
|
||||
} // namespace Dynarmic::FP
|
||||
|
||||
Reference in New Issue
Block a user