dynarmic/src/backend/x64
Wunk e06933f123
block_of_code: Allow Fast BMI2 paths on Zen 3 (#593)
BMI2 instructions such as `pdep` and `pext` have been
known to be incredibly slow on AMD. But on Zen3
and newer, the performance of these instructions
are now much greater, but previous versions of AMD
architectures should still avoid BMI2.

On Zen 2, pdep/pext were 300 cycles. Now on Zen 3 it is 3 cycles.
This is a big enough improvement to allow BMI2 code to
be dispatched if available. The Zen 3 architecture is checked for
by detecting the family of the processor.
2021-03-27 21:36:51 +00:00
..
a32_emit_x64.cpp A32/ir_emitter: Implement UpdateUpperLocationDescriptor 2021-02-07 20:41:48 +00:00
a32_emit_x64.h a32_emit_x64: Update upper_location_descriptor in BXWritePC based on final location 2021-02-07 20:41:48 +00:00
a32_interface.cpp A32: Add arch_version option 2021-02-07 12:13:14 +00:00
a32_jitstate.cpp ir: Add fpcr_controlled argument to FPVector{Equal,Greater,GreaterEqual} 2020-06-20 00:50:40 +01:00
a32_jitstate.h ir: Add fpcr_controlled argument to FPVector{Equal,Greater,GreaterEqual} 2020-06-20 00:50:40 +01:00
a64_emit_x64.cpp fixed data + instruction cache callbacks (w/ tests) 2021-02-17 20:38:08 +00:00
a64_emit_x64.h Improve documentation of unsafe optimizations 2020-07-12 12:41:11 +01:00
a64_interface.cpp Add optimization flags to disable specific optimizations 2020-07-04 11:04:10 +01:00
a64_jitstate.cpp backend/x64: Implement separate MSXCSR for ASIMDStandardValue 2020-06-20 00:00:36 +01:00
a64_jitstate.h ir: Add fpcr_controlled argument to FPVector{Equal,Greater,GreaterEqual} 2020-06-20 00:50:40 +01:00
abi.cpp block_of_code: Encapsulate CPU feature detection code 2020-06-09 21:25:57 +01:00
abi.h Relicense to 0BSD 2020-04-23 15:45:57 +01:00
block_of_code.cpp block_of_code: Allow Fast BMI2 paths on Zen 3 (#593) 2021-03-27 21:36:51 +00:00
block_of_code.h block_of_code: Add HasAVX512_Icelake 2020-09-19 15:20:40 +01:00
block_range_information.cpp Use tsl::robin_map and tsl::robin_set 2020-05-26 20:51:48 +01:00
block_range_information.h Use tsl::robin_map and tsl::robin_set 2020-05-26 20:51:48 +01:00
callback.cpp Relicense to 0BSD 2020-04-23 15:45:57 +01:00
callback.h Relicense to 0BSD 2020-04-23 15:45:57 +01:00
constant_pool.cpp Relicense to 0BSD 2020-04-23 15:45:57 +01:00
constant_pool.h Relicense to 0BSD 2020-04-23 15:45:57 +01:00
devirtualize.h Relicense to 0BSD 2020-04-23 15:45:57 +01:00
emit_x64.cpp backend/x64: Touch PEXT/PDEP code 2020-06-10 22:30:22 +01:00
emit_x64.h Improve documentation of unsafe optimizations 2020-07-12 12:41:11 +01:00
emit_x64_aes.cpp emit_x64_aes: AESNI implementations of all opcodes 2020-06-19 12:11:45 +01:00
emit_x64_crc32.cpp block_of_code: Encapsulate CPU feature detection code 2020-06-09 21:25:57 +01:00
emit_x64_data_processing.cpp emit_x64_data_processing: Fix signed/unsigned warning 2021-01-02 20:12:48 +00:00
emit_x64_floating_point.cpp emit_x64{,_vector}_floating_point: Fix non-FMA execution 2021-01-02 20:40:32 +00:00
emit_x64_packed.cpp general: Resolve -Wmissing-prototypes warnings 2020-08-14 14:50:09 -04:00
emit_x64_saturation.cpp backend/x64: Temporarily avoid use of DefineValue(Argument&) 2020-06-27 10:52:59 +01:00
emit_x64_sm4.cpp Relicense to 0BSD 2020-04-23 15:45:57 +01:00
emit_x64_vector.cpp emit_x64_vector: Bugfix for EmitVectorReverseBits on AVX-512: Do not reverse bytes without vector 2021-03-27 21:32:43 +00:00
emit_x64_vector_floating_point.cpp EmitFPVectorMulAdd: Correct optimization flag (Unsafe_UnfuseFMA -> Unsafe_InaccurateNaN) 2021-02-21 21:30:20 +00:00
emit_x64_vector_saturation.cpp block_of_code: Encapsulate CPU feature detection code 2020-06-09 21:25:57 +01:00
exception_handler.h Relicense to 0BSD 2020-04-23 15:45:57 +01:00
exception_handler_generic.cpp Relicense to 0BSD 2020-04-23 15:45:57 +01:00
exception_handler_macos.cpp Relicense to 0BSD 2020-04-23 15:45:57 +01:00
exception_handler_posix.cpp backend/x64/exception_handler_posix: Fix signal stack memory leak in SigHandler 2020-10-02 05:56:07 +01:00
exception_handler_windows.cpp exception_handler_windows: Ignore irrelevant exceptions 2020-04-23 20:58:24 +01:00
exclusive_monitor.cpp Merge A32 and A64 exclusive monitors 2020-06-17 10:33:09 +01:00
hostloc.cpp Relicense to 0BSD 2020-04-23 15:45:57 +01:00
hostloc.h Relicense to 0BSD 2020-04-23 15:45:57 +01:00
jitstate_info.h backend/x64: Implement separate MSXCSR for ASIMDStandardValue 2020-06-20 00:00:36 +01:00
nzcv_util.h backend/x64: Reduce conversions required for cpsr_nzcv 2020-05-06 22:38:06 +01:00
oparg.h Relicense to 0BSD 2020-04-23 15:45:57 +01:00
perf_map.cpp general: Resolve -Wmissing-prototypes warnings 2020-08-14 14:50:09 -04:00
perf_map.h Relicense to 0BSD 2020-04-23 15:45:57 +01:00
reg_alloc.cpp block_of_code: Encapsulate CPU feature detection code 2020-06-09 21:25:57 +01:00
reg_alloc.h Relicense to 0BSD 2020-04-23 15:45:57 +01:00