Compile with /fp:precise instead of /fp:fast in release mode on Windows
/fp:fast was introducing FP precision problems, and mixing it with some /fp:precise code caused strange game behaviors, DSI exceptions and freezes. This commit should fix most of the issues introduced by 3.0-73 (r95517a97). Thanks to hatarumoroboshi@hotmail.com for tracking a lot of these Win32 bugs. Fixes issue 4906. Fixes issue 5138. Probably fixes (not tested) issue 5067.
This commit is contained in:
parent
6202714efd
commit
70b6c4280f
|
@ -42,10 +42,6 @@ using namespace MathUtil;
|
||||||
|
|
||||||
void UpdateSSEState();
|
void UpdateSSEState();
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
#pragma float_control(precise, on, push)
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Extremely rare - actually, never seen.
|
// Extremely rare - actually, never seen.
|
||||||
// Star Wars : Rogue Leader spams that at some point :|
|
// Star Wars : Rogue Leader spams that at some point :|
|
||||||
void Interpreter::Helper_UpdateCR1(double _fValue)
|
void Interpreter::Helper_UpdateCR1(double _fValue)
|
||||||
|
@ -518,8 +514,4 @@ void Interpreter::fsqrtx(UGeckoInstruction _inst)
|
||||||
rPS0(_inst.FD) = sqrt(b);
|
rPS0(_inst.FD) = sqrt(b);
|
||||||
UpdateFPRF(rPS0(_inst.FD));
|
UpdateFPRF(rPS0(_inst.FD));
|
||||||
if (_inst.Rc) Helper_UpdateCR1(rPS0(_inst.FD));
|
if (_inst.Rc) Helper_UpdateCR1(rPS0(_inst.FD));
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef _MSC_VER
|
|
||||||
#pragma float_control(pop)
|
|
||||||
#endif
|
|
|
@ -19,7 +19,7 @@
|
||||||
<FunctionLevelLinking>false</FunctionLevelLinking>
|
<FunctionLevelLinking>false</FunctionLevelLinking>
|
||||||
<PreprocessorDefinitions>_SECURE_SCL=0;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
<PreprocessorDefinitions>_SECURE_SCL=0;_CRT_SECURE_NO_WARNINGS;_CRT_SECURE_NO_DEPRECATE;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
|
<EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
|
||||||
<FloatingPointModel>Fast</FloatingPointModel>
|
<FloatingPointModel>Precise</FloatingPointModel>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
<Link>
|
<Link>
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
|
Loading…
Reference in New Issue