mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-01-10 16:19:28 +01:00
2cafa0a960
By taking advantage of three-operand IMUL, we can eliminate a MOV instruction. This is a small code size win. However, due to IMUL sign extending the immediate value to 64 bits, we can only apply this when the magic number's most significant bit is zero. To ensure this can actually happen, we also minimize the magic number by checking for trailing zeroes. Example (Unsigned division by 18) Before: 41 BE E4 38 8E E3 mov r14d,0E38E38E4h 4D 0F AF F5 imul r14,r13 49 C1 EE 24 shr r14,24h After: 4D 69 F5 39 8E E3 38 imul r14,r13,38E38E39h 49 C1 EE 22 shr r14,22h