diff options
| author | Mai <mai.iam2048@gmail.com> | 2024-02-06 17:53:17 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-02-06 17:53:17 -0500 |
| commit | a50ab40a5fbf4acb179a4c17da5f68a6e7cbf09e (patch) | |
| tree | 75fd8a129c264e84b08bd1026032e3d0be0adcf7 /Source/Core | |
| parent | 9240f579eab18a2f67eef23846a6b508393d0e6c (diff) | |
| parent | b5c5371848084f6b8738c3be85267c2cd2c9fbc2 (diff) | |
Merge pull request #12566 from JosJuice/arm64-add-imm-sp
Arm64Emitter: Don't optimize ADD to MOV for SP
Diffstat (limited to 'Source/Core')
| -rw-r--r-- | Source/Core/Common/Arm64Emitter.cpp | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/Source/Core/Common/Arm64Emitter.cpp b/Source/Core/Common/Arm64Emitter.cpp index 4dd39c4357..f769edc2f3 100644 --- a/Source/Core/Common/Arm64Emitter.cpp +++ b/Source/Core/Common/Arm64Emitter.cpp @@ -4222,9 +4222,15 @@ void ARM64XEmitter::ADDI2R_internal(ARM64Reg Rd, ARM64Reg Rn, u64 imm, bool nega // Special path for zeroes if (imm == 0 && !flags) { - if (Rd != Rn) + if (Rd == Rn) + { + return; + } + else if (DecodeReg(Rd) != DecodeReg(ARM64Reg::SP) && DecodeReg(Rn) != DecodeReg(ARM64Reg::SP)) + { MOV(Rd, Rn); - return; + return; + } } // Regular fast paths, aarch64 immediate instructions |
