summaryrefslogtreecommitdiff
path: root/Source/Core/Common/Arm64Emitter.cpp
diff options
context:
space:
mode:
authorJosJuice <josjuice@gmail.com>2025-11-10 20:16:21 +0100
committerGitHub <noreply@github.com>2025-11-10 20:16:21 +0100
commitcd4902f0ed68ffac9f1e4ab853f37eefa34e6ae2 (patch)
tree08e4e8e09d2e4d955f0fd32bdb885e6f12533a78 /Source/Core/Common/Arm64Emitter.cpp
parentac62efaf9233c9c16f6636038d0c2a3c44ac3988 (diff)
parentc553344282fb8ae43c8ead70a5bfe639dc0412d1 (diff)
Merge pull request #13875 from JosJuice/jitarm64-orr-base-without-mirror
JitArm64: Add missing ORR pattern in MOVI2RImpl
Diffstat (limited to 'Source/Core/Common/Arm64Emitter.cpp')
-rw-r--r--Source/Core/Common/Arm64Emitter.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/Source/Core/Common/Arm64Emitter.cpp b/Source/Core/Common/Arm64Emitter.cpp
index fbf0031704..d78257cf4f 100644
--- a/Source/Core/Common/Arm64Emitter.cpp
+++ b/Source/Core/Common/Arm64Emitter.cpp
@@ -1908,12 +1908,17 @@ void ARM64XEmitter::MOVI2RImpl(ARM64Reg Rd, T imm)
{
if constexpr (sizeof(T) == 8)
{
- for (u64 orr_imm : {(imm << 32) | (imm & 0x0000'0000'FFFF'FFFF),
+ for (u64 orr_imm : {imm, (imm << 32) | (imm & 0x0000'0000'FFFF'FFFF),
(imm & 0xFFFF'FFFF'0000'0000) | (imm >> 32),
(imm << 48) | (imm & 0x0000'FFFF'FFFF'0000) | (imm >> 48)})
{
if (LogicalImm(orr_imm, GPRSize::B64))
+ {
try_base(orr_imm, Approach::ORRBase, false);
+
+ if (instructions_required(best_parts, best_approach) <= 1)
+ break;
+ }
}
}
else