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.
This commit is contained in:
JosJuice 2025-08-16 18:19:08 +02:00
parent 90a137ffdc
commit 596b290177

View File

@ -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)})
{