It turns out it is useful to be able to declare operand name aliases. Introduce a macro to capture this functionality.
Signed-off-by: Jan Bobek <jan.bo...@gmail.com> --- target/i386/translate.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/target/i386/translate.c b/target/i386/translate.c index 78ef0e6608..a6f23bae4e 100644 --- a/target/i386/translate.c +++ b/target/i386/translate.c @@ -4606,6 +4606,26 @@ static bool check_cpuid(CPUX86State *env, DisasContext *s, CheckCpuidFeat feat) int modrm, bool is_write, \ insnop_arg_t(opT) arg) +/* + * Operand alias + */ +#define DEF_INSNOP_ALIAS(opT, opT2) \ + typedef insnop_arg_t(opT2) insnop_arg_t(opT); \ + typedef insnop_ctxt_t(opT2) insnop_ctxt_t(opT); \ + \ + INSNOP_INIT(opT) \ + { \ + return insnop_init(opT2)(ctxt, env, s, modrm, is_write); \ + } \ + INSNOP_PREPARE(opT) \ + { \ + return insnop_prepare(opT2)(ctxt, env, s, modrm, is_write); \ + } \ + INSNOP_FINALIZE(opT) \ + { \ + insnop_finalize(opT2)(ctxt, env, s, modrm, is_write, arg); \ + } + static void gen_sse_ng(CPUX86State *env, DisasContext *s, int b) { enum { -- 2.20.1