summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authorJMC47 <JMC4789@gmail.com>2021-06-26 13:20:10 -0400
committerGitHub <noreply@github.com>2021-06-26 13:20:10 -0400
commit52fb2fad4016a58aacfbcf11bdf517f4680cd1fb (patch)
tree00ccfae767256be6879320662019e0354770c95e /Source/Core
parentc77a5f7e3246398aeb1d520d7bbc0bfdf5787754 (diff)
parent7de4623d48bc03c9167258f7f38298e49240e875 (diff)
Merge pull request #9845 from Sintendo/jit64mtfsfx
Jit64: mtfsfx - Optimized masking
Diffstat (limited to 'Source/Core')
-rw-r--r--Source/Core/Core/PowerPC/Jit64/Jit_SystemRegisters.cpp11
1 files changed, 7 insertions, 4 deletions
diff --git a/Source/Core/Core/PowerPC/Jit64/Jit_SystemRegisters.cpp b/Source/Core/Core/PowerPC/Jit64/Jit_SystemRegisters.cpp
index c074fdd96a..7965aab6e7 100644
--- a/Source/Core/Core/PowerPC/Jit64/Jit_SystemRegisters.cpp
+++ b/Source/Core/Core/PowerPC/Jit64/Jit_SystemRegisters.cpp
@@ -792,10 +792,13 @@ void Jit64::mtfsfx(UGeckoInstruction inst)
else
MOV(32, R(RSCRATCH), Rb);
- MOV(32, R(RSCRATCH2), PPCSTATE(fpscr));
- AND(32, R(RSCRATCH), Imm32(mask));
- AND(32, R(RSCRATCH2), Imm32(~mask));
- OR(32, R(RSCRATCH), R(RSCRATCH2));
+ if (mask != 0xFFFFFFFF)
+ {
+ MOV(32, R(RSCRATCH2), PPCSTATE(fpscr));
+ AND(32, R(RSCRATCH), Imm32(mask));
+ AND(32, R(RSCRATCH2), Imm32(~mask));
+ OR(32, R(RSCRATCH), R(RSCRATCH2));
+ }
MOV(32, PPCSTATE(fpscr), R(RSCRATCH));
if (inst.FM & 1)