JitArm64: Use LogicalImm in boolX
ARM64 has a special logical immediate encoding scheme, that can be used
with AND, ORR, and EOR. By taking advantage of this, we no longer need
to materialize the immediate value in a register, saving instructions
and/or reducing register pressure.
- orx
Before:
mov w23, #0x1
orr w23, w25, w23
After:
orr w23, w25, #0x1
- andx
Before:
mov w26, #-0x80000000
and w27, w27, w26
sxtw x24, w27
After:
and w27, w27, #0x80000000
sxtw x26, w27
- eqvx
Before:
mov w23, #0x4
eon w26, w23, w22
After:
eor w26, w22, #0xfffffffb
- xorx
Before:
mov w23, #0x1e
eor w23, w27, w23
After:
eor w23, w27, #0x1e
- norx
Before:
mov w25, #-0x2001
orr w23, w23, w25
mvn w23, w23
After:
orr w23, w23, #0xffffdfff
mvn w23, w23