+// (dlo,dhi) += signed(s1) * signed(s2)
+#define emith_mula_s64(dlo, dhi, s1, s2) { \
+ emith_push(dhi); \
+ emith_push(dlo); \
+ emith_mul_(5, dlo, dhi, s1, s2); \
+ EMIT_OP_MODRM(0x03, 0, dlo, 4); \
+ EMIT_SIB(0, 4, 4); /* add dlo, [esp] */ \
+ EMIT_OP_MODRM(0x13, 1, dhi, 4); \
+ EMIT_SIB(0, 4, 4); \
+ EMIT(4, u8); /* adc dhi, [esp+4] */ \
+ emith_add_r_imm(xSP, 4*2); \
+}
+