diff --git a/src/common/fp/process_nan.cpp b/src/common/fp/process_nan.cpp index a6d81344..3fb3666a 100644 --- a/src/common/fp/process_nan.cpp +++ b/src/common/fp/process_nan.cpp @@ -31,12 +31,13 @@ FPT FPProcessNaN(FPType type, FPT op, FPCR fpcr, FPSR& fpsr) { } if (fpcr.DN()) { - result = FPInfo::DefaultNaN(); + result = FPT(FPInfo::DefaultNaN()); } return result; } +template u16 FPProcessNaN(FPType type, u16 op, FPCR fpcr, FPSR& fpsr); template u32 FPProcessNaN(FPType type, u32 op, FPCR fpcr, FPSR& fpsr); template u64 FPProcessNaN(FPType type, u64 op, FPCR fpcr, FPSR& fpsr); @@ -57,6 +58,7 @@ std::optional FPProcessNaNs(FPType type1, FPType type2, FPT op1, FPT op2, F return std::nullopt; } +template std::optional FPProcessNaNs(FPType type1, FPType type2, u16 op1, u16 op2, FPCR fpcr, FPSR& fpsr); template std::optional FPProcessNaNs(FPType type1, FPType type2, u32 op1, u32 op2, FPCR fpcr, FPSR& fpsr); template std::optional FPProcessNaNs(FPType type1, FPType type2, u64 op1, u64 op2, FPCR fpcr, FPSR& fpsr); @@ -83,6 +85,7 @@ std::optional FPProcessNaNs3(FPType type1, FPType type2, FPType type3, FPT return std::nullopt; } +template std::optional FPProcessNaNs3(FPType type1, FPType type2, FPType type3, u16 op1, u16 op2, u16 op3, FPCR fpcr, FPSR& fpsr); template std::optional FPProcessNaNs3(FPType type1, FPType type2, FPType type3, u32 op1, u32 op2, u32 op3, FPCR fpcr, FPSR& fpsr); template std::optional FPProcessNaNs3(FPType type1, FPType type2, FPType type3, u64 op1, u64 op2, u64 op3, FPCR fpcr, FPSR& fpsr);