@ -269,13 +269,8 @@ std::shared_ptr<Dynarmic::A32::Jit> ArmDynarmic32::MakeJit(Common::PageTable* pa
config . check_halt_on_memory_access = true ;
config . check_halt_on_memory_access = true ;
}
}
} else {
} else {
# if defined(__FreeBSD__) || defined(__OpenBSD__) || defined(__sun__)
config . fastmem_pointer = std : : nullopt ;
config . fastmem_exclusive_access = false ;
# endif
switch ( Settings : : values . cpu_accuracy . GetValue ( ) ) {
// Unsafe optimizations
// Unsafe optimizations
cas e Settings : : CpuAccuracy : : Unsafe :
if ( Settings : : values . cpu_accuracy . GetValue ( ) = = Settings : : CpuAccuracy : : Unsafe ) {
config . unsafe_optimizations = true ;
config . unsafe_optimizations = true ;
if ( Settings : : values . cpuopt_unsafe_unfuse_fma ) {
if ( Settings : : values . cpuopt_unsafe_unfuse_fma ) {
config . optimizations | = Dynarmic : : OptimizationFlag : : Unsafe_UnfuseFMA ;
config . optimizations | = Dynarmic : : OptimizationFlag : : Unsafe_UnfuseFMA ;
@ -292,22 +287,21 @@ std::shared_ptr<Dynarmic::A32::Jit> ArmDynarmic32::MakeJit(Common::PageTable* pa
if ( Settings : : values . cpuopt_unsafe_ignore_global_monitor ) {
if ( Settings : : values . cpuopt_unsafe_ignore_global_monitor ) {
config . optimizations | = Dynarmic : : OptimizationFlag : : Unsafe_IgnoreGlobalMonitor ;
config . optimizations | = Dynarmic : : OptimizationFlag : : Unsafe_IgnoreGlobalMonitor ;
}
}
break ;
}
// Curated optimizations
// Curated optimizations
cas e Settings : : CpuAccuracy : : Auto :
if ( S ettings : : values . cpu_accuracy . GetValue ( ) = = Settings : : CpuAccuracy : : Auto ) {
config . unsafe_optimizations = true ;
config . unsafe_optimizations = true ;
config . optimizations | = Dynarmic : : OptimizationFlag : : Unsafe_UnfuseFMA ;
config . optimizations | = Dynarmic : : OptimizationFlag : : Unsafe_UnfuseFMA ;
config . optimizations | = Dynarmic : : OptimizationFlag : : Unsafe_IgnoreStandardFPCRValue ;
config . optimizations | = Dynarmic : : OptimizationFlag : : Unsafe_IgnoreStandardFPCRValue ;
config . optimizations | = Dynarmic : : OptimizationFlag : : Unsafe_InaccurateNaN ;
config . optimizations | = Dynarmic : : OptimizationFlag : : Unsafe_InaccurateNaN ;
config . optimizations | = Dynarmic : : OptimizationFlag : : Unsafe_IgnoreGlobalMonitor ;
config . optimizations | = Dynarmic : : OptimizationFlag : : Unsafe_IgnoreGlobalMonitor ;
break ;
}
// Paranoia mode for debugging optimizations
// Paranoia mode for debugging optimizations
cas e Settings : : CpuAccuracy : : Paranoid :
if ( S ettings : : values . cpu_accuracy . GetValue ( ) = = Settings : : CpuAccuracy : : Paranoid ) {
config . unsafe_optimizations = false ;
config . unsafe_optimizations = false ;
config . optimizations = Dynarmic : : no_optimizations ;
config . optimizations = Dynarmic : : no_optimizations ;
break ;
default :
break ;
}
}
}
}