ARM64: Fuse negative 32 bit constants into arithmetic ops again.

Thanks to Peter Cawley. #1065
This commit is contained in:
Mike Pall 2023-09-21 02:38:29 +02:00
parent 4b605a7da8
commit fca1f51bf8

View File

@ -222,7 +222,8 @@ static uint32_t asm_fuseopm(ASMState *as, A64Ins ai, IRRef ref, RegSet allow)
return A64F_M(ir->r);
} else if (irref_isk(ref)) {
int64_t k = get_k64val(as, ref);
uint32_t m = logical ? emit_isk13(k, irt_is64(ir->t)) : emit_isk12(k);
uint32_t m = logical ? emit_isk13(k, irt_is64(ir->t)) :
emit_isk12(irt_is64(ir->t) ? k : (int32_t)k);
if (m)
return m;
} else if (mayfuse(as, ref)) {