process_nan: Add two operand variant
This commit is contained in:
parent
ace7d2ba50
commit
ca6774ccce
2 changed files with 23 additions and 0 deletions
|
@ -40,6 +40,26 @@ FPT FPProcessNaN(FPType type, FPT op, FPCR fpcr, FPSR& fpsr) {
|
||||||
template u32 FPProcessNaN<u32>(FPType type, u32 op, FPCR fpcr, FPSR& fpsr);
|
template u32 FPProcessNaN<u32>(FPType type, u32 op, FPCR fpcr, FPSR& fpsr);
|
||||||
template u64 FPProcessNaN<u64>(FPType type, u64 op, FPCR fpcr, FPSR& fpsr);
|
template u64 FPProcessNaN<u64>(FPType type, u64 op, FPCR fpcr, FPSR& fpsr);
|
||||||
|
|
||||||
|
template<typename FPT>
|
||||||
|
boost::optional<FPT> FPProcessNaNs(FPType type1, FPType type2, FPT op1, FPT op2, FPCR fpcr, FPSR& fpsr) {
|
||||||
|
if (type1 == FPType::SNaN) {
|
||||||
|
return FPProcessNaN<FPT>(type1, op1, fpcr, fpsr);
|
||||||
|
}
|
||||||
|
if (type2 == FPType::SNaN) {
|
||||||
|
return FPProcessNaN<FPT>(type2, op2, fpcr, fpsr);
|
||||||
|
}
|
||||||
|
if (type1 == FPType::QNaN) {
|
||||||
|
return FPProcessNaN<FPT>(type1, op1, fpcr, fpsr);
|
||||||
|
}
|
||||||
|
if (type2 == FPType::QNaN) {
|
||||||
|
return FPProcessNaN<FPT>(type2, op2, fpcr, fpsr);
|
||||||
|
}
|
||||||
|
return boost::none;
|
||||||
|
}
|
||||||
|
|
||||||
|
template boost::optional<u32> FPProcessNaNs<u32>(FPType type1, FPType type2, u32 op1, u32 op2, FPCR fpcr, FPSR& fpsr);
|
||||||
|
template boost::optional<u64> FPProcessNaNs<u64>(FPType type1, FPType type2, u64 op1, u64 op2, FPCR fpcr, FPSR& fpsr);
|
||||||
|
|
||||||
template<typename FPT>
|
template<typename FPT>
|
||||||
boost::optional<FPT> FPProcessNaNs3(FPType type1, FPType type2, FPType type3, FPT op1, FPT op2, FPT op3, FPCR fpcr, FPSR& fpsr) {
|
boost::optional<FPT> FPProcessNaNs3(FPType type1, FPType type2, FPType type3, FPT op1, FPT op2, FPT op3, FPCR fpcr, FPSR& fpsr) {
|
||||||
if (type1 == FPType::SNaN) {
|
if (type1 == FPType::SNaN) {
|
||||||
|
|
|
@ -17,6 +17,9 @@ enum class FPType;
|
||||||
template<typename FPT>
|
template<typename FPT>
|
||||||
FPT FPProcessNaN(FPType type, FPT op, FPCR fpcr, FPSR& fpsr);
|
FPT FPProcessNaN(FPType type, FPT op, FPCR fpcr, FPSR& fpsr);
|
||||||
|
|
||||||
|
template<typename FPT>
|
||||||
|
boost::optional<FPT> FPProcessNaNs(FPType type1, FPType type2, FPT op1, FPT op2, FPCR fpcr, FPSR& fpsr);
|
||||||
|
|
||||||
template<typename FPT>
|
template<typename FPT>
|
||||||
boost::optional<FPT> FPProcessNaNs3(FPType type1, FPType type2, FPType type3, FPT op1, FPT op2, FPT op3, FPCR fpcr, FPSR& fpsr);
|
boost::optional<FPT> FPProcessNaNs3(FPType type1, FPType type2, FPType type3, FPT op1, FPT op2, FPT op3, FPCR fpcr, FPSR& fpsr);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue