diff options
| author | lizzie <lizzie@eden-emu.dev> | 2026-05-09 05:41:41 +0200 |
|---|---|---|
| committer | crueter <crueter@eden-emu.dev> | 2026-05-09 05:41:41 +0200 |
| commit | eec460ec2ef13dee7376f2854ba00da9a98b0cd5 (patch) | |
| tree | c0f19f04bac33f2a7f53f0b0fadf3f167305a472 /src/dynarmic/tests | |
| parent | a6423a88cc068f8213db8707900a1d1b38b9566d (diff) | |
[dynarmic] remove decode matcher function handlers using std::function<>, use raw function pointers (#3920)
issues:
- std::function<> is used, which is famously bad
- storage of tehse in tables makes big fucking tables for no good reason
- lets just store a normal pointer and stuff! :)
this pr attempts to address that
Signed-off-by: lizzie <lizzie@eden-emu.dev>
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3920
Reviewed-by: CamilleLaVey <camillelavey99@gmail.com>
Diffstat (limited to 'src/dynarmic/tests')
| -rw-r--r-- | src/dynarmic/tests/decoder_tests.cpp | 2 | ||||
| -rw-r--r-- | src/dynarmic/tests/print_info.cpp | 12 |
2 files changed, 7 insertions, 7 deletions
diff --git a/src/dynarmic/tests/decoder_tests.cpp b/src/dynarmic/tests/decoder_tests.cpp index 2a6c0f6a4f..17ed2c0ce5 100644 --- a/src/dynarmic/tests/decoder_tests.cpp +++ b/src/dynarmic/tests/decoder_tests.cpp @@ -51,7 +51,7 @@ TEST_CASE("ASIMD Decoder: Ensure table order correctness", "[decode][a32][.]") { const bool iserr = is_decode_error(*iter, instruction); const auto alternative = std::find_if(table.cbegin(), iter, [instruction](const auto& m) { - return m.Matches(instruction); + return (instruction & mask) == expect; }); const bool altiserr = is_decode_error(*alternative, instruction); diff --git a/src/dynarmic/tests/print_info.cpp b/src/dynarmic/tests/print_info.cpp index 6d6109d849..988a8d294e 100644 --- a/src/dynarmic/tests/print_info.cpp +++ b/src/dynarmic/tests/print_info.cpp @@ -43,12 +43,12 @@ using namespace Dynarmic; std::string_view GetNameOfA32Instruction(u32 instruction) { - if (auto const vfp_decoder = A32::DecodeVFP<A32::TranslatorVisitor>(instruction)) - return *A32::GetNameVFP<A32::TranslatorVisitor>(instruction); - else if (auto const asimd_decoder = A32::DecodeASIMD<A32::TranslatorVisitor>(instruction)) - return *A32::GetNameASIMD<A32::TranslatorVisitor>(instruction); - else if (auto const decoder = A32::DecodeArm<A32::TranslatorVisitor>(instruction)) - return *A32::GetNameARM<A32::TranslatorVisitor>(instruction); + if (auto const vfp_decoder = A32::GetNameVFP<A32::TranslatorVisitor>(instruction)) + return *vfp_decoder; + else if (auto const asimd_decoder = A32::GetNameASIMD<A32::TranslatorVisitor>(instruction)) + return *asimd_decoder; + else if (auto const decoder = A32::GetNameArm<A32::TranslatorVisitor>(instruction)) + return *decoder; return "<null>"; } |
