From 596b29017757aefd90b5c8fb39006f70ec060752 Mon Sep 17 00:00:00 2001 From: JosJuice Date: Sat, 16 Aug 2025 18:19:08 +0200 Subject: 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. --- Source/Core/Common/Arm64Emitter.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'Source/Core/Common/Arm64Emitter.cpp') 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)}) { -- cgit v1.2.3