summaryrefslogtreecommitdiff
path: root/Source
diff options
context:
space:
mode:
authorJosJuice <josjuice@gmail.com>2025-08-16 18:19:08 +0200
committerJosJuice <josjuice@gmail.com>2025-08-21 20:56:06 +0200
commit596b29017757aefd90b5c8fb39006f70ec060752 (patch)
tree0f58d277219b3825be75ed2bad6ae444c62fe87e /Source
parent90a137ffdc96199c4e6105a4aadda30351a5ca75 (diff)
JitArm64: Add missing ORR pattern in MOVI2RImpl
We should attempt to use not only mirrored versions of the immediate as an ORR base, but also the immediate itself. This lets us emit certain 64-bit constants using fewer instructions.
Diffstat (limited to 'Source')
-rw-r--r--Source/Core/Common/Arm64Emitter.cpp2
1 files changed, 1 insertions, 1 deletions
diff --git a/Source/Core/Common/Arm64Emitter.cpp b/Source/Core/Common/Arm64Emitter.cpp
index 88d4109979..cbc114da5f 100644
--- a/Source/Core/Common/Arm64Emitter.cpp
+++ b/Source/Core/Common/Arm64Emitter.cpp
@@ -1908,7 +1908,7 @@ 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)})
{