dolphin/Source
Sintendo c081e3f2b3 Jit64: divwx - Optimize constant dividend
When the dividend is known at compile time, we can eliminate some of the
branching and precompute the result for the overflow case.

Before:
B8 54 D3 E6 02       mov         eax,2E6D354h
85 FF                test        edi,edi
74 0C                je          overflow
3D 00 00 00 80       cmp         eax,80000000h
75 0C                jne         normal_path
83 FF FF             cmp         edi,0FFFFFFFFh
75 07                jne         normal_path
overflow:
C1 F8 1F             sar         eax,1Fh
8B F8                mov         edi,eax
EB 05                jmp         done
normal_path:
99                   cdq
F7 FF                idiv        eax,edi
8B F8                mov         edi,eax
done:

After:
85 FF                test        edi,edi
75 04                jne         normal_path
33 FF                xor         edi,edi
EB 0A                jmp         done
normal_path:
B8 54 D3 E6 02       mov         eax,2E6D354h
99                   cdq
F7 FF                idiv        eax,edi
8B F8                mov         edi,eax
done:

Fairly common with constant dividend of zero. Non-zero values occur
frequently in Ocarina of Time Master Quest.
2021-03-07 18:25:08 +01:00
..
Android Merge pull request #9529 from JosJuice/android-broadcast-before-metadata 2021-03-05 00:48:04 +01:00
Core Jit64: divwx - Optimize constant dividend 2021-03-07 18:25:08 +01:00
DSPSpy
DSPTool msbuild: bundle all dolphin "core" code into single library 2021-01-27 14:29:49 -08:00
PCH msvc: bump _MSC_FULL_VER check to 192829335 2021-01-09 19:21:03 -08:00
UnitTests Arm64Emitter: Expand the MOVI2R unit test a little 2021-02-13 21:04:16 +01:00
VSProps msbuild: re-enable HAS_OPENGL and HAS_VULKAN 2021-01-27 19:10:53 -08:00
.clang-format
CMakeLists.txt CMake: Build with -std:c++latest for MSVC 2021-03-03 23:44:35 +01:00
dolphin-emu.sln msbuild: bundle all dolphin "core" code into single library 2021-01-27 14:29:49 -08:00