/****************************************************************************
*
* Description:  instructions which are to be replaced in long-mode
*
****************************************************************************/

/*   tok   (suffix)             op1-3                          byte1_info opnd_dir rm_info opcode    rm_byte     cpu      prefix */

#if AMD64_SUPPORT
ins (CALL, call,                OpCls( I32,     NONE,     NONE ), 0,       0,  no_RM,  0xE8,     0x00,       P_64,        AP_BND)
insn(CALL, 1,                   OpCls( R64_M64, NONE,     NONE ), 0,       0,  no_WDS, 0xFF,     0x10,       P_64,        AP_BND)
//insn(CALL, 2,                   OpCls( M64,     NONE,     NONE ), 0,       0,  no_WDS, 0xFF,     0x10,       P_64,        0)
/* FAR call */
insm(CALL, 3,                   OpCls( M32,     NONE,     NONE ), F_16,    0,  no_WDS, 0xFF,     0x18,       P_64,        0)
insn(CALL, 4,                   OpCls( M48,     NONE,     NONE ), 0,       0,  no_WDS, 0xFF,     0x18,       P_64,        0)
insn(CALL, 5,                   OpCls( M80,     NONE,     NONE ), F_48,    0,  no_WDS, 0xFF,     0x18,       P_64,        0)
ins (JMP, jmp,                  OpCls( I8,      NONE,     NONE ), 0,       0,  no_RM,  0xEB,     0x00,       P_86,        AP_BND)
insn(JMP, 1,                    OpCls( I32,     NONE,     NONE ), 0,       0,  no_RM,  0xE9,     0x00,       P_64,        AP_BND)
insn(JMP, 2,                    OpCls( R64_M64, NONE,     NONE ), 0,       0,  no_WDS, 0xFF,     0x20,       P_64,        AP_BND)
//insn(JMP, 3,                    OpCls( M64,     NONE,     NONE ), 0,       0,  no_WDS, 0xFF,     0x20,       P_64,        0)
/* FAR jmp */
insm(JMP, 4,                    OpCls( M32,     NONE,     NONE ), F_16,    0,  no_WDS, 0xFF,     0x28,       P_64,        0)
insn(JMP, 5,                    OpCls( M48,     NONE,     NONE ), 0,       0,  no_WDS, 0xFF,     0x28,       P_64,        0)
insn(JMP, 6,                    OpCls( M80,     NONE,     NONE ), F_48,    0,  no_WDS, 0xFF,     0x28,       P_64,        0)
ins (LGDT, lgdt,                OpCls( M80,     NONE,     NONE ), F_0F,    0,  no_WDS, 0x01,     0x10,       P_64,        0)
ins (LIDT, lidt,                OpCls( M80,     NONE,     NONE ), F_0F,    0,  no_WDS, 0x01,     0x18,       P_64,        0)
#if 1
ins (SLDT, sldt,                OpCls( RGT8,    NONE,     NONE ), F_0F,    0,  no_WDS, 0x00,     0x00,       P_64,        0)
insn(SLDT, 1,                   OpCls( M16,     NONE,     NONE ), F_0FNO66,0,  no_WDS, 0x00,     0x00,       P_286,       0)
ins (SMSW, smsw,                OpCls( RGT8,    NONE,     NONE ), F_0F,    0,  no_WDS, 0x01,     0x20,       P_64,        0)
insn(SMSW, 1,                   OpCls( M16,     NONE,     NONE ), F_0FNO66,0,  no_WDS, 0x01,     0x20,       P_286,       0)
ins (STR,  str,                 OpCls( RGT8,    NONE,     NONE ), F_0F,    0,  no_WDS, 0x00,     0x08,       P_64,        0)
insn(STR,  1,                   OpCls( M16,     NONE,     NONE ), F_0FNO66,0,  no_WDS, 0x00,     0x08,       P_286,       0)
#endif
/* v2.06: POP/PUSH added */
ins (POP, pop,                  OpCls( R16_R64, NONE,     NONE ), 0,       0,  R_in_OP,0x58,     0x00,       P_86,        0)
insn(POP, 1,                    OpCls( M16_M64, NONE,     NONE ), 0,       0,  0,      0x8F,     0x00,       P_86,        0)
insn(POP, 2,                    OpCls( SR386,   NONE,     NONE ), F_0F,    1,  R_in_OP,0x81,     0x00,       P_386,       0)
ins (PUSH, push,                OpCls( R16_R64, NONE,     NONE ), 0,       0,  R_in_OP,0x50,     0x00,       P_86,        0)
insn(PUSH, 1,                   OpCls( I8,      NONE,     NONE ), 0,       0,  no_RM,  0x6A,     0x00,       P_186,       0)
insn(PUSH, 2,                   OpCls( I,       NONE,     NONE ), 0,       0,  no_RM,  0x68,     0x00,       P_186,       0)
insn(PUSH, 3,                   OpCls( M16_M64, NONE,     NONE ), 0,       0,  0,      0xFF,     0x30,       P_86,        0)
insn(PUSH, 4,                   OpCls( SR386,   NONE,     NONE ), F_0F,    1,  R_in_OP,0x80,     0x00,       P_386,       0)
#if VMXSUPP /* v2.09: added */
ins (VMREAD,  vmread,           OpCls( R64_M64, R64,      NONE ), F_0F,    0,  no_WDS, 0x78,     0x00,       P_686p,      0)
ins (VMWRITE, vmwrite,          OpCls( R64,     R64_M64,  NONE ), F_0F,    1,  no_WDS, 0x79,     0x00,       P_686p,      0)
#endif
#endif
