op3
const char *op, const char *op2, const char *op3)
op3,
#define SHIFTOP4(s, op1, op2, op3, op4) \
((const char *[]){ op1, op2, op3, op4 })[(s) & 3]
#define SHIFTOP8(s, op1, op2, op3, op4, op5, op6, op7, op8) \
((const char *[]){ op1, op2, op3, op4, op5, op6, op7, op8 })[(s) & 7]
/*a4*/ { "shld", true, LONG, op3(Ib,R,E), 0 },
/*a5*/ { "shld", true, LONG, op3(CL,R,E), 0 },
/*ac*/ { "shrd", true, LONG, op3(Ib,R,E), 0 },
/*ad*/ { "shrd", true, LONG, op3(CL,R,E), 0 },
/*69*/ { "imul", true, LONG, op3(I,E,R), 0 },
/*6b*/ { "imul", true, LONG, op3(Ibs,E,R),0 },
/*a4*/ { "shld", true, LONG, op3(Ib,R,E), 0 },
/*a5*/ { "shld", true, LONG, op3(CL,R,E), 0 },
/*ac*/ { "shrd", true, LONG, op3(Ib,R,E), 0 },
/*ad*/ { "shrd", true, LONG, op3(CL,R,E), 0 },
/*69*/ { "imul", true, LONG, op3(I,E,R), 0 },
/*6b*/ { "imul", true, LONG, op3(Ibs,E,R),0 },
#define _I_OP3_GEN(form, rd, op3, rs1, low14) \
_I_ANY(form, (rd) << 25 | (op3) << 19 | (rs1) << 14 | (low14))
#define _I_OP3_LS_RAR(rd, op3, rs1, asi, rs2) \
_I_OP3_GEN(IOP_mem, rd, op3, rs1, (asi) << 5 | (rs2))
#define _I_OP3_LS_RI(rd, op3, rs1, simm13) \
_I_OP3_GEN(IOP_mem, rd, op3, rs1, _I_SIMM(simm13))
#define _I_OP3_LS_RR(rd, op3, rs1, rs2) \
_I_OP3_GEN(IOP_mem, rd, op3, rs1, rs2)
#define _I_OP3_R_RAR(rd, op3, rs1, asi, rs2) \
_I_OP3_GEN(IOP_reg, rd, op3, rs1, (asi) << 5 | (rs2))
#define _I_OP3_R_RI(rd, op3, rs1, simm13) \
_I_OP3_GEN(IOP_reg, rd, op3, rs1, _I_SIMM(simm13))
#define _I_OP3_R_RR(rd, op3, rs1, rs2) \
_I_OP3_GEN(IOP_reg, rd, op3, rs1, rs2)