drc, tiny x86 optimisation

This commit is contained in:
kub 2022-01-05 23:41:24 +01:00
parent 6488bec805
commit cd18409722

View file

@ -519,15 +519,23 @@ enum { xAX = 0, xCX, xDX, xBX, xSP, xBP, xSI, xDI, // x86-64,i386 common
// _r_r_imm - use lea // _r_r_imm - use lea
#define emith_add_r_r_imm(d, s, imm) do { \ #define emith_add_r_r_imm(d, s, imm) do { \
EMIT_REX_IF(0, d, s); \ if (imm == 0) \
emith_deref_modrm(0x8d, 2, d, s); \ emith_move_r_r(d, s); \
EMIT(imm, s32); \ else { \
EMIT_REX_IF(0, d, s); \
emith_deref_modrm(0x8d, 2, d, s); \
EMIT(imm, s32); \
} \
} while (0) } while (0)
#define emith_add_r_r_ptr_imm(d, s, imm) do { \ #define emith_add_r_r_ptr_imm(d, s, imm) do { \
EMIT_REX_IF(1, d, s); \ if (imm == 0) \
emith_deref_modrm(0x8d, 2, d, s); \ emith_move_r_r_ptr(d, s); \
EMIT(imm, s32); \ else { \
EMIT_REX_IF(1, d, s); \
emith_deref_modrm(0x8d, 2, d, s); \
EMIT(imm, s32); \
} \
} while (0) } while (0)
#define emith_sub_r_r_imm(d, s, imm) do { \ #define emith_sub_r_r_imm(d, s, imm) do { \