From 0d9984b299ece57b5fec22d5d45d55d8f3f6554e Mon Sep 17 00:00:00 2001 From: Sintendo <3380580+Sintendo@users.noreply.github.com> Date: Thu, 10 Oct 2024 22:16:25 +0200 Subject: [PATCH] JitArm64_SystemRegisters: Optimize mtspr No need to materialize the immediate if it is zero, we can just use WZR. Before: mov w27, #0x0 ; =0 str w27, [x29, #0x1178] After: str wzr, [x29, #0x1178] --- Source/Core/Core/PowerPC/JitArm64/JitArm64_SystemRegisters.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Source/Core/Core/PowerPC/JitArm64/JitArm64_SystemRegisters.cpp b/Source/Core/Core/PowerPC/JitArm64/JitArm64_SystemRegisters.cpp index 87f652d6d4..8ffa1b84aa 100644 --- a/Source/Core/Core/PowerPC/JitArm64/JitArm64_SystemRegisters.cpp +++ b/Source/Core/Core/PowerPC/JitArm64/JitArm64_SystemRegisters.cpp @@ -477,7 +477,7 @@ void JitArm64::mtspr(UGeckoInstruction inst) } // OK, this is easy. - ARM64Reg RD = gpr.R(inst.RD); + ARM64Reg RD = gpr.IsImm(inst.RD, 0) ? ARM64Reg::WZR : gpr.R(inst.RD); STR(IndexType::Unsigned, RD, PPC_REG, PPCSTATE_OFF_SPR(iIndex)); }