From dcf223c150197d1dd9276c06e73783d99825cf71 Mon Sep 17 00:00:00 2001 From: SimoneN64 Date: Wed, 10 Jan 2024 20:59:51 +0100 Subject: [PATCH] revert these --- src/backend/core/registers/Cop1.hpp | 4 ++-- .../core/registers/cop/cop1instructions.cpp | 20 +++++++++---------- 2 files changed, 11 insertions(+), 13 deletions(-) diff --git a/src/backend/core/registers/Cop1.hpp b/src/backend/core/registers/Cop1.hpp index 93203850..053b17da 100644 --- a/src/backend/core/registers/Cop1.hpp +++ b/src/backend/core/registers/Cop1.hpp @@ -107,9 +107,9 @@ struct Cop1 { void SetCauseDivisionByZero(); void SetCauseOverflow(); void SetCauseInvalid(); - int fp_class=0; private: - template auto FGR(Cop0Status&, u32) -> T&; + template + auto FGR(Cop0Status&, u32) -> T&; void decodeInterp(Interpreter&, u32); void decodeJIT(JIT&, u32); void absd(Registers&, u32 instr); diff --git a/src/backend/core/registers/cop/cop1instructions.cpp b/src/backend/core/registers/cop/cop1instructions.cpp index 740aa2ec..6138e5b7 100644 --- a/src/backend/core/registers/cop/cop1instructions.cpp +++ b/src/backend/core/registers/cop/cop1instructions.cpp @@ -138,8 +138,7 @@ void Cop1::SetCauseInvalid() { template FORCE_INLINE void SetCauseByArgWCVT(Registers& regs, T f) { - regs.cop1.fp_class = std::fpclassify(f); - switch (regs.cop1.fp_class) { + switch (std::fpclassify(f)) { case FP_NAN: case FP_INFINITE: case FP_SUBNORMAL: @@ -162,8 +161,7 @@ FORCE_INLINE void SetCauseByArgWCVT(Registers& regs, T f) { template FORCE_INLINE void SetCauseByArgLCVT(Registers& regs, T f) { - regs.cop1.fp_class = std::fpclassify(f); - switch (regs.cop1.fp_class) { + switch (std::fpclassify(f)) { case FP_NAN: case FP_INFINITE: case FP_SUBNORMAL: @@ -192,7 +190,7 @@ FORCE_INLINE void SetFPUCauseRaised(Registers& regs, int raised) { return; } - if (((raised & FE_UNDERFLOW) != 0) || regs.cop1.fp_class == FP_SUBNORMAL) { + if (raised & FE_UNDERFLOW) { if (!regs.cop1.fcr31.fs || regs.cop1.fcr31.enable_underflow || regs.cop1.fcr31.enable_inexact_operation) { regs.cop1.SetCauseUnimplemented(); return; @@ -247,8 +245,8 @@ FORCE_INLINE bool isqnan(T f) { template FORCE_INLINE void SetCauseByArg(Registers& regs, T f) { - regs.cop1.fp_class = std::fpclassify(f); - switch(regs.cop1.fp_class) { + auto fp_class = std::fpclassify(f); + switch(fp_class) { case FP_NAN: if(isqnan(f)) { regs.cop1.SetCauseInvalid(); @@ -267,7 +265,7 @@ FORCE_INLINE void SetCauseByArg(Registers& regs, T f) { case FP_NORMAL: break; // No-op, these are fine. default: - Util::panic("Unknown floating point classification: {}", regs.cop1.fp_class); + Util::panic("Unknown floating point classification: {}", fp_class); } } @@ -276,7 +274,7 @@ FORCE_INLINE void SetCauseByArg(Registers& regs, T f) { template FORCE_INLINE void SetCauseOnResult(Registers& regs, T& d) { Cop1& cop1 = regs.cop1; - regs.cop1.fp_class = std::fpclassify(d); + auto fp_class = std::fpclassify(d); T magic, min; if constexpr(std::is_same_v) { u32 c = 0x7FBFFFFF; @@ -287,7 +285,7 @@ FORCE_INLINE void SetCauseOnResult(Registers& regs, T& d) { magic = U64_TO_D(c); min = DBL_MIN; } - switch (regs.cop1.fp_class) { + switch (fp_class) { case FP_NAN: d = magic; // set result to sNAN break; @@ -326,7 +324,7 @@ FORCE_INLINE void SetCauseOnResult(Registers& regs, T& d) { case FP_NORMAL: break; // No-op, these are fine. default: - Util::panic("Unknown FP classification: {}", regs.cop1.fp_class); + Util::panic("Unknown FP classification: {}", fp_class); } }