From 1b66e4309483b79c4e7f6fd4e2b2ca0b7c87efe7 Mon Sep 17 00:00:00 2001 From: Lioncash Date: Sat, 9 Mar 2019 01:25:17 -0500 Subject: [PATCH] common/fp/process_nan: Add half-precision instantiations for NaN processing functions --- src/common/fp/process_nan.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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);