@ -183,16 +183,30 @@ std::shared_ptr<Dynarmic::A32::Jit> ARM_Dynarmic_32::MakeJit(Common::PageTable*
// Unsafe optimizations
if ( Settings : : values . cpu_accuracy . GetValue ( ) = = Settings : : CPUAccuracy : : Unsafe ) {
config . unsafe_optimizations = true ;
if ( Settings : : values . cpuopt_unsafe_unfuse_fma .GetValue ( ) ) {
if ( Settings : : values . cpuopt_unsafe_unfuse_fma ) {
config . optimizations | = Dynarmic : : OptimizationFlag : : Unsafe_UnfuseFMA ;
}
if ( Settings : : values . cpuopt_unsafe_reduce_fp_error .GetValue ( ) ) {
if ( Settings : : values . cpuopt_unsafe_reduce_fp_error ) {
config . optimizations | = Dynarmic : : OptimizationFlag : : Unsafe_ReducedErrorFP ;
}
if ( Settings : : values . cpuopt_unsafe_ignore_standard_fpcr .GetValue ( ) ) {
if ( Settings : : values . cpuopt_unsafe_ignore_standard_fpcr ) {
config . optimizations | = Dynarmic : : OptimizationFlag : : Unsafe_IgnoreStandardFPCRValue ;
}
if ( Settings : : values . cpuopt_unsafe_inaccurate_nan . GetValue ( ) ) {
if ( Settings : : values . cpuopt_unsafe_inaccurate_nan ) {
config . optimizations | = Dynarmic : : OptimizationFlag : : Unsafe_InaccurateNaN ;
}
}
// Curated optimizations
if ( Settings : : values . cpu_accuracy . GetValue ( ) = = Settings : : CPUAccuracy : : Auto ) {
config . unsafe_optimizations = true ;
if ( Settings : : values . cpuopt_unsafe_unfuse_fma ) {
config . optimizations | = Dynarmic : : OptimizationFlag : : Unsafe_UnfuseFMA ;
}
if ( Settings : : values . cpuopt_unsafe_ignore_standard_fpcr ) {
config . optimizations | = Dynarmic : : OptimizationFlag : : Unsafe_IgnoreStandardFPCRValue ;
}
if ( Settings : : values . cpuopt_unsafe_inaccurate_nan ) {
config . optimizations | = Dynarmic : : OptimizationFlag : : Unsafe_InaccurateNaN ;
}
}