Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

4580 lines
140 KiB

/*++
Copyright (c) 1996-2000 Microsoft Corporation
Module Name:
idata.h
Abstract:
This module contains definitions of all x86 instructions. Before
including this file, the DEF_INSTR macro must be defined.
Author:
Dave Hastings (daveh) creation-date 23-Jun-1995
Revision History:
--*/
//
// Possible values for instruction flags (OPFL_):
// CTRLTRNS -
// Direct control transfers. The compiler will build an entrypoint
// for the destination of the call, provided it is within the
// current instruction stream
// END_NEXT_EP -
// Indicates the instruction following the current one must
// have its own entrypoint. ie. CALL instructions.
// STOP_COMPILE -
// Compilation will halt after this instruction. The remainder
// of the instruction stream will be discarded.
// ALIGN -
// The instruction has an ALIGNED flavor, created by adding 1
// to the current Operation value.
// HASNOFLAGS -
// The instruction as a NOFLAGS flavor, created by the following
// formula:
// OP_NOFLAGS = OP + (Flags & OPFL_ALIGN) ? 2 : 1;
//
//
#include <eflags.h>
#define ALLFLAGS (FLAG_CF|FLAG_AUX|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF)
#ifndef DEF_INSTR
#error Must define DEF_INSTR(OpName,FlagsNeeded,FlagsSet,RegsSet,Opfl,FastPlaceFn,FastSize,SlowPlaceFn,SlowSize,FragName) before including this file
#endif
//
// Each DEF_INSTR defines a new instruction, with the following format:
// DEF_INSTR(instruction name,
// flags read, flags set, registers implictly modified
// OP flags
// place function, size of assembly code for call to fragment
// address of fragment)
//
DEF_INSTR(OP_CTRL_COND_Ja,
FLAG_CF|FLAG_ZF, 0, 0,
OPFL_CTRLTRNS,
FN_PlaceJxx,
FN_PlaceJxxSlow,
GenJaFrag)
DEF_INSTR(OP_CTRL_COND_Jae,
FLAG_CF, 0, 0,
OPFL_CTRLTRNS,
FN_PlaceJxx,
FN_PlaceJxxSlow,
GenJaeFrag)
DEF_INSTR(OP_CTRL_COND_Jbe,
FLAG_CF|FLAG_ZF, 0, 0,
OPFL_CTRLTRNS,
FN_PlaceJxx,
FN_PlaceJxxSlow,
GenJbeFrag)
DEF_INSTR(OP_CTRL_COND_Jb,
FLAG_CF, 0, 0,
OPFL_CTRLTRNS,
FN_PlaceJxx,
FN_PlaceJxxSlow,
GenJbFrag)
DEF_INSTR(OP_CTRL_COND_Je,
FLAG_ZF, 0, 0,
OPFL_CTRLTRNS,
FN_PlaceJxx,
FN_PlaceJxxSlow,
GenJeFrag)
DEF_INSTR(OP_CTRL_COND_Jg,
FLAG_ZF|FLAG_SF|FLAG_OF, 0, 0,
OPFL_CTRLTRNS,
FN_PlaceJxx,
FN_PlaceJxxSlow,
GenJgFrag)
DEF_INSTR(OP_CTRL_COND_Jl,
FLAG_SF|FLAG_OF, 0, 0,
OPFL_CTRLTRNS,
FN_PlaceJxx,
FN_PlaceJxxSlow,
GenJlFrag)
DEF_INSTR(OP_CTRL_COND_Jle,
FLAG_ZF|FLAG_SF|FLAG_OF, 0, 0,
OPFL_CTRLTRNS,
FN_PlaceJxx,
FN_PlaceJxxSlow,
GenJleFrag)
DEF_INSTR(OP_CTRL_COND_Jne,
FLAG_ZF, 0, 0,
OPFL_CTRLTRNS,
FN_PlaceJxx,
FN_PlaceJxxSlow,
GenJneFrag)
DEF_INSTR(OP_CTRL_COND_Jnl,
FLAG_SF|FLAG_OF, 0, 0,
OPFL_CTRLTRNS,
FN_PlaceJxx,
FN_PlaceJxxSlow,
GenJnlFrag)
DEF_INSTR(OP_CTRL_COND_Jno,
FLAG_OF, 0, 0,
OPFL_CTRLTRNS,
FN_PlaceJxx,
FN_PlaceJxxSlow,
GenJnoFrag)
DEF_INSTR(OP_CTRL_COND_Jnp,
FLAG_PF, 0, 0,
OPFL_CTRLTRNS,
FN_PlaceJxx,
FN_PlaceJxxSlow,
GenJnpFrag)
DEF_INSTR(OP_CTRL_COND_Jns,
FLAG_SF, 0, 0,
OPFL_CTRLTRNS,
FN_PlaceJxx,
FN_PlaceJxxSlow,
GenJnsFrag)
DEF_INSTR(OP_CTRL_COND_Jo,
FLAG_OF, 0, 0,
OPFL_CTRLTRNS,
FN_PlaceJxx,
FN_PlaceJxxSlow,
GenJoFrag)
DEF_INSTR(OP_CTRL_COND_Jp,
FLAG_PF, 0, 0,
OPFL_CTRLTRNS,
FN_PlaceJxx,
FN_PlaceJxxSlow,
GenJpFrag)
DEF_INSTR(OP_CTRL_COND_Js,
FLAG_SF, 0, 0,
OPFL_CTRLTRNS,
FN_PlaceJxx,
FN_PlaceJxxSlow,
GenJsFrag)
DEF_INSTR(OP_CTRL_COND_JaFwd,
FLAG_CF|FLAG_ZF, 0, 0,
OPFL_CTRLTRNS,
FN_PlaceJxxFwd,
FN_PlaceJxxSlow,
GenJaFrag)
DEF_INSTR(OP_CTRL_COND_JaeFwd,
FLAG_CF, 0, 0,
OPFL_CTRLTRNS,
FN_PlaceJxxFwd,
FN_PlaceJxxSlow,
GenJaeFrag)
DEF_INSTR(OP_CTRL_COND_JbeFwd,
FLAG_CF|FLAG_ZF, 0, 0,
OPFL_CTRLTRNS,
FN_PlaceJxxFwd,
FN_PlaceJxxSlow,
GenJbeFrag)
DEF_INSTR(OP_CTRL_COND_JbFwd,
FLAG_CF, 0, 0,
OPFL_CTRLTRNS,
FN_PlaceJxxFwd,
FN_PlaceJxxSlow,
GenJbFrag)
DEF_INSTR(OP_CTRL_COND_JeFwd,
FLAG_ZF, 0, 0,
OPFL_CTRLTRNS,
FN_PlaceJxxFwd,
FN_PlaceJxxSlow,
GenJeFrag)
DEF_INSTR(OP_CTRL_COND_JgFwd,
FLAG_ZF|FLAG_SF|FLAG_OF, 0, 0,
OPFL_CTRLTRNS,
FN_PlaceJxxFwd,
FN_PlaceJxxSlow,
GenJgFrag)
DEF_INSTR(OP_CTRL_COND_JlFwd,
FLAG_SF|FLAG_OF, 0, 0,
OPFL_CTRLTRNS,
FN_PlaceJxxFwd,
FN_PlaceJxxSlow,
GenJlFrag)
DEF_INSTR(OP_CTRL_COND_JleFwd,
FLAG_ZF|FLAG_SF|FLAG_OF, 0, 0,
OPFL_CTRLTRNS,
FN_PlaceJxxFwd,
FN_PlaceJxxSlow,
GenJleFrag)
DEF_INSTR(OP_CTRL_COND_JneFwd,
FLAG_ZF, 0, 0,
OPFL_CTRLTRNS,
FN_PlaceJxxFwd,
FN_PlaceJxxSlow,
GenJneFrag)
DEF_INSTR(OP_CTRL_COND_JnlFwd,
FLAG_SF|FLAG_OF, 0, 0,
OPFL_CTRLTRNS,
FN_PlaceJxxFwd,
FN_PlaceJxxSlow,
GenJnlFrag)
DEF_INSTR(OP_CTRL_COND_JnoFwd,
FLAG_OF, 0, 0,
OPFL_CTRLTRNS,
FN_PlaceJxxFwd,
FN_PlaceJxxSlow,
GenJnoFrag)
DEF_INSTR(OP_CTRL_COND_JnpFwd,
FLAG_PF, 0, 0,
OPFL_CTRLTRNS,
FN_PlaceJxxFwd,
FN_PlaceJxxSlow,
GenJnpFrag)
DEF_INSTR(OP_CTRL_COND_JnsFwd,
FLAG_SF, 0, 0,
OPFL_CTRLTRNS,
FN_PlaceJxxFwd,
FN_PlaceJxxSlow,
GenJnsFrag)
DEF_INSTR(OP_CTRL_COND_JoFwd,
FLAG_OF, 0, 0,
OPFL_CTRLTRNS,
FN_PlaceJxxFwd,
FN_PlaceJxxSlow,
GenJoFrag)
DEF_INSTR(OP_CTRL_COND_JpFwd,
FLAG_PF, 0, 0,
OPFL_CTRLTRNS,
FN_PlaceJxxFwd,
FN_PlaceJxxSlow,
GenJpFrag)
DEF_INSTR(OP_CTRL_COND_JsFwd,
FLAG_SF, 0, 0,
OPFL_CTRLTRNS,
FN_PlaceJxxFwd,
FN_PlaceJxxSlow,
GenJsFrag)
DEF_INSTR(OP_CTRL_COND_Jcxz_b32,
0, 0, 0,
OPFL_CTRLTRNS,
FN_PlaceJxx,
FN_PlaceJxxSlow,
GenJecxzFrag)
DEF_INSTR(OP_CTRL_COND_Jcxz_b16,
0, 0, 0,
OPFL_CTRLTRNS,
FN_PlaceJxx,
FN_PlaceJxxSlow,
GenJcxzFrag)
DEF_INSTR(OP_CTRL_COND_Jcxz_bFwd32,
0, 0, 0,
OPFL_CTRLTRNS,
FN_PlaceJxxFwd,
FN_PlaceJxxSlow,
GenJecxzFrag)
DEF_INSTR(OP_CTRL_COND_Jcxz_bFwd16,
0, 0, 0,
OPFL_CTRLTRNS,
FN_PlaceJxxFwd,
FN_PlaceJxxSlow,
GenJcxzFrag)
DEF_INSTR(OP_CTRL_COND_Loop_b32,
0, 0, 0,
OPFL_CTRLTRNS,
FN_PlaceJxx,
FN_PlaceJxxSlow,
GenLoopFrag32)
DEF_INSTR(OP_CTRL_COND_Loop_b16,
0, 0, 0,
OPFL_CTRLTRNS,
FN_PlaceJxx,
FN_PlaceJxxSlow,
GenLoopFrag16)
DEF_INSTR(OP_CTRL_COND_Loop_bFwd32,
0, 0, 0,
OPFL_CTRLTRNS,
FN_PlaceJxxFwd,
FN_PlaceJxxSlow,
GenLoopFrag32)
DEF_INSTR(OP_CTRL_COND_Loop_bFwd16,
0, 0, 0,
OPFL_CTRLTRNS,
FN_PlaceJxxFwd,
FN_PlaceJxxSlow,
GenLoopFrag16)
DEF_INSTR(OP_CTRL_COND_Loope_b32,
FLAG_ZF, 0, 0,
OPFL_CTRLTRNS,
FN_PlaceJxx,
FN_PlaceJxxSlow,
GenLoopeFrag32)
DEF_INSTR(OP_CTRL_COND_Loope_b16,
FLAG_ZF, 0, 0,
OPFL_CTRLTRNS,
FN_PlaceJxx,
FN_PlaceJxxSlow,
GenLoopeFrag16)
DEF_INSTR(OP_CTRL_COND_Loope_bFwd32,
FLAG_ZF, 0, 0,
OPFL_CTRLTRNS,
FN_PlaceJxxFwd,
FN_PlaceJxxSlow,
GenLoopeFrag32)
DEF_INSTR(OP_CTRL_COND_Loope_bFwd16,
FLAG_ZF, 0, 0,
OPFL_CTRLTRNS,
FN_PlaceJxxFwd,
FN_PlaceJxxSlow,
GenLoopeFrag16)
DEF_INSTR(OP_CTRL_COND_Loopne_b32,
FLAG_ZF, 0, 0,
OPFL_CTRLTRNS,
FN_PlaceJxx,
FN_PlaceJxxSlow,
GenLoopneFrag32)
DEF_INSTR(OP_CTRL_COND_Loopne_b16,
FLAG_ZF, 0, 0,
OPFL_CTRLTRNS,
FN_PlaceJxx,
FN_PlaceJxxSlow,
GenLoopneFrag16)
DEF_INSTR(OP_CTRL_COND_Loopne_bFwd32,
FLAG_ZF, 0, 0,
OPFL_CTRLTRNS,
FN_PlaceJxxFwd,
FN_PlaceJxxSlow,
GenLoopneFrag32)
DEF_INSTR(OP_CTRL_COND_Loopne_bFwd16,
FLAG_ZF, 0, 0,
OPFL_CTRLTRNS,
FN_PlaceJxxFwd,
FN_PlaceJxxSlow,
GenLoopneFrag16)
DEF_INSTR(OP_CTRL_UNCOND_Call,
0, 0, ALLREGS,
OPFL_CTRLTRNS|OPFL_END_NEXT_EP,
FN_PlaceCallDirect,
FN_PlaceCallDirect,
NULL)
DEF_INSTR(OP_CTRL_UNCOND_Callf,
0, 0, ALLREGS,
OPFL_CTRLTRNS|OPFL_END_NEXT_EP,
FN_PlaceCallfDirect,
FN_PlaceCallfDirect,
NULL)
DEF_INSTR(OP_CTRL_INDIR_Call,
ALLFLAGS, 0, ALLREGS,
OPFL_END_NEXT_EP,
FN_GenCallIndirect,
FN_GenCallIndirect,
NULL)
DEF_INSTR(OP_CTRL_INDIR_Callf,
ALLFLAGS, 0, ALLREGS,
OPFL_END_NEXT_EP,
FN_GenCallfIndirect,
FN_GenCallfIndirect,
NULL)
DEF_INSTR(OP_CTRL_INDIR_Jmp,
ALLFLAGS, 0, 0,
OPFL_END_NEXT_EP,
FN_GenCallJmpIndirect,
FN_GenCallJmpIndirect,
NULL)
DEF_INSTR(OP_CTRL_INDIR_Jmpf,
ALLFLAGS, 0, 0,
OPFL_END_NEXT_EP,
FN_GenCallJmpfIndirect,
FN_GenCallJmpfIndirect,
NULL)
DEF_INSTR(OP_CTRL_UNCOND_Jmp,
0, 0, 0,
OPFL_END_NEXT_EP|OPFL_CTRLTRNS,
FN_PlaceJmpDirect,
FN_PlaceJmpDirectSlow,
NULL)
DEF_INSTR(OP_CTRL_UNCOND_JmpFwd,
0, 0, 0,
OPFL_END_NEXT_EP|OPFL_CTRLTRNS,
FN_PlaceJmpFwdDirect,
FN_PlaceJmpDirectSlow,
NULL)
DEF_INSTR(OP_CTRL_UNCOND_Jmpf,
0, 0, 0,
OPFL_END_NEXT_EP|OPFL_CTRLTRNS,
FN_PlaceJmpfDirect,
FN_PlaceJmpfDirect,
NULL)
DEF_INSTR(OP_CTRL_INDIR_Retn_i16,
ALLFLAGS, 0, REGESP,
OPFL_END_NEXT_EP,
FN_GenCallRetIndirect,
FN_GenCallRetIndirect,
CTRL_INDIR_Retn_iFrag16)
DEF_INSTR(OP_CTRL_INDIR_Retn_i32,
ALLFLAGS, 0, REGESP,
OPFL_END_NEXT_EP,
FN_GenCallRetIndirect,
FN_GenCallRetIndirect,
CTRL_INDIR_Retn_iFrag32)
DEF_INSTR(OP_CTRL_INDIR_Retn16,
ALLFLAGS, 0, REGESP,
OPFL_END_NEXT_EP,
FN_GenCallRetIndirect,
FN_GenCallRetIndirect,
CTRL_INDIR_RetnFrag16)
DEF_INSTR(OP_CTRL_INDIR_Retn32,
ALLFLAGS, 0, REGESP,
OPFL_END_NEXT_EP,
FN_GenCallRetIndirect,
FN_GenCallRetIndirect,
CTRL_INDIR_RetnFrag32)
DEF_INSTR(OP_CTRL_INDIR_Retf_i16,
ALLFLAGS, 0, REGESP,
OPFL_END_NEXT_EP,
FN_GenCallRetIndirect,
FN_GenCallRetIndirect,
CTRL_INDIR_Retf_iFrag16)
DEF_INSTR(OP_CTRL_INDIR_Retf_i32,
ALLFLAGS, 0, REGESP,
OPFL_END_NEXT_EP,
FN_GenCallRetIndirect,
FN_GenCallRetIndirect,
CTRL_INDIR_Retf_iFrag32)
DEF_INSTR(OP_CTRL_INDIR_Retf16,
ALLFLAGS, 0, REGESP,
OPFL_END_NEXT_EP,
FN_GenCallRetIndirect,
FN_GenCallRetIndirect,
CTRL_INDIR_RetfFrag16)
DEF_INSTR(OP_CTRL_INDIR_Retf32,
ALLFLAGS, 0, REGESP,
OPFL_END_NEXT_EP,
FN_GenCallRetIndirect,
FN_GenCallRetIndirect,
CTRL_INDIR_RetfFrag32)
DEF_INSTR(OP_Int,
ALLFLAGS, ALLFLAGS, ALLREGS,
OPFL_STOP_COMPILE,
FN_GenCallCFragLoadEip,
FN_GenCallCFragLoadEipSlow,
IntFrag)
DEF_INSTR(OP_CTRL_INDIR_IRet,
ALLFLAGS, ALLFLAGS, REGESP,
OPFL_END_NEXT_EP,
FN_GenCallRetIndirect,
FN_GenCallRetIndirect,
CTRL_INDIR_IRetFrag)
DEF_INSTR(OP_Unsimulate,
ALLFLAGS, ALLFLAGS, ALLREGS,
OPFL_STOP_COMPILE,
FN_GenCallCFragNoCpu,
FN_GenCallCFragNoCpuSlow,
UnsimulateFrag)
DEF_INSTR(OP_PrivilegedInstruction,
ALLFLAGS, ALLFLAGS, ALLREGS,
OPFL_STOP_COMPILE,
FN_GenCallCFragLoadEip,
FN_GenCallCFragLoadEipSlow,
PrivilegedInstructionFrag)
DEF_INSTR(OP_BadInstruction,
ALLFLAGS, ALLFLAGS, ALLREGS,
OPFL_STOP_COMPILE,
FN_GenCallCFragLoadEip,
FN_GenCallCFragLoadEipSlow,
BadInstructionFrag)
DEF_INSTR(OP_Fault,
ALLFLAGS, ALLFLAGS, ALLREGS,
OPFL_STOP_COMPILE,
FN_GenCallCFragLoadEip,
FN_GenCallCFragLoadEipSlow,
FaultFrag)
DEF_INSTR(OP_IntO,
FLAG_OF, ALLFLAGS, ALLREGS,
OPFL_STOP_COMPILE,
FN_GenCallCFragLoadEip,
FN_GenCallCFragLoadEipSlow,
IntOFrag)
// Next 4 must be consecutive
DEF_INSTR(OP_Add32,
0, ALLFLAGS, 0,
OPFL_ALIGN|OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
AddFrag32)
DEF_INSTR(OP_Add32A,
0, ALLFLAGS, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
AddFrag32A)
DEF_INSTR(OP_AddNoFlags32,
0, ALLFLAGS, 0,
OPFL_ALIGN|OPFL_INLINEARITH,
FN_GenAddFragNoFlags32, FN_GenCallCFragNoCpuSlow,
AddNoFlagsFrag32)
DEF_INSTR(OP_AddNoFlags32A,
0, ALLFLAGS, 0,
OPFL_INLINEARITH,
FN_GenAddFragNoFlags32A, FN_GenCallCFragNoCpuSlow,
AddNoFlagsFrag32A)
// Next 4 must be consecutive
DEF_INSTR(OP_Add16,
0, ALLFLAGS, 0,
OPFL_ALIGN|OPFL_ADDR16|OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
AddFrag16)
DEF_INSTR(OP_Add16A,
0, ALLFLAGS, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
AddFrag16A)
DEF_INSTR(OP_AddNoFlags16,
0, ALLFLAGS, 0,
OPFL_ADDR16|OPFL_ALIGN,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
AddNoFlagsFrag16)
DEF_INSTR(OP_AddNoFlags16A,
0, ALLFLAGS, 0,
0,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
AddNoFlagsFrag16A)
// Next 2 must be consecutive
DEF_INSTR(OP_Add8,
0, ALLFLAGS, 0,
OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
AddFrag8)
DEF_INSTR(OP_AddNoFlags8,
0, ALLFLAGS, 0,
0,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
AddNoFlagsFrag8)
// Next 4 must be consecutive
DEF_INSTR(OP_Inc32,
0, FLAG_AUX|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
OPFL_ALIGN|OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
IncFrag32)
DEF_INSTR(OP_Inc32A,
0, FLAG_AUX|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
IncFrag32A)
DEF_INSTR(OP_IncNoFlags32,
0, FLAG_AUX|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
OPFL_ALIGN|OPFL_INLINEARITH,
FN_GenIncFragNoFlags32, FN_GenCallCFragNoCpuSlow,
IncNoFlagsFrag32)
DEF_INSTR(OP_IncNoFlags32A,
0, FLAG_AUX|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
OPFL_INLINEARITH,
FN_GenIncFragNoFlags32A, FN_GenCallCFragNoCpuSlow,
IncNoFlagsFrag32A)
// Next 4 must be consecutive
DEF_INSTR(OP_Inc16,
0, FLAG_AUX|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
OPFL_ALIGN|OPFL_ADDR16|OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
IncFrag16)
DEF_INSTR(OP_Inc16A,
0, FLAG_AUX|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
IncFrag16A)
DEF_INSTR(OP_IncNoFlags16,
0, FLAG_AUX|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
OPFL_ADDR16|OPFL_ALIGN,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
IncNoFlagsFrag16)
DEF_INSTR(OP_IncNoFlags16A,
0, FLAG_AUX|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
0,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
IncNoFlagsFrag16A)
// Next 2 must be consecutive
DEF_INSTR(OP_Inc8,
0, FLAG_AUX|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
IncFrag8)
DEF_INSTR(OP_IncNoFlags8,
0, FLAG_AUX|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
0,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
IncNoFlagsFrag8)
// Next 4 must be consecutive
DEF_INSTR(OP_Dec32,
0, FLAG_AUX|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
OPFL_ALIGN|OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
DecFrag32)
DEF_INSTR(OP_Dec32A,
0, FLAG_AUX|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
DecFrag32A)
DEF_INSTR(OP_DecNoFlags32,
0, FLAG_AUX|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
OPFL_ALIGN|OPFL_INLINEARITH,
FN_GenDecFragNoFlags32, FN_GenCallCFragNoCpuSlow,
DecNoFlagsFrag32)
DEF_INSTR(OP_DecNoFlags32A,
0, FLAG_AUX|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
OPFL_INLINEARITH,
FN_GenDecFragNoFlags32A, FN_GenCallCFragNoCpuSlow,
DecNoFlagsFrag32A)
// Next 4 must be consecutive
DEF_INSTR(OP_Dec16,
0, FLAG_AUX|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
OPFL_ALIGN|OPFL_ADDR16|OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
DecFrag16)
DEF_INSTR(OP_Dec16A,
0, FLAG_AUX|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
DecFrag16A)
DEF_INSTR(OP_DecNoFlags16,
0, FLAG_AUX|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
OPFL_ADDR16|OPFL_ALIGN,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
DecNoFlagsFrag16)
DEF_INSTR(OP_DecNoFlags16A,
0, FLAG_AUX|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
0,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
DecNoFlagsFrag16A)
// Next 2 must be consecutive
DEF_INSTR(OP_Dec8,
0, FLAG_AUX|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
DecFrag8)
DEF_INSTR(OP_DecNoFlags8,
0, FLAG_AUX|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
0,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
DecNoFlagsFrag8)
// Next 4 must be consecutive
DEF_INSTR(OP_Sub32,
0, ALLFLAGS, 0,
OPFL_ALIGN|OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SubFrag32)
DEF_INSTR(OP_Sub32A,
0, ALLFLAGS, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SubFrag32A)
DEF_INSTR(OP_SubNoFlags32,
0, ALLFLAGS, 0,
OPFL_ALIGN|OPFL_INLINEARITH,
FN_GenSubFragNoFlags32, FN_GenCallCFragNoCpuSlow,
SubNoFlagsFrag32)
DEF_INSTR(OP_SubNoFlags32A,
0, ALLFLAGS, 0,
OPFL_INLINEARITH,
FN_GenSubFragNoFlags32A, FN_GenCallCFragNoCpuSlow,
SubNoFlagsFrag32A)
// Next 4 must be consecutive
DEF_INSTR(OP_Sub16,
0, ALLFLAGS, 0,
OPFL_ALIGN|OPFL_ADDR16|OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SubFrag16)
DEF_INSTR(OP_Sub16A,
0, ALLFLAGS, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SubFrag16A)
DEF_INSTR(OP_SubNoFlags16,
0, ALLFLAGS, 0,
OPFL_ADDR16|OPFL_ALIGN,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
SubNoFlagsFrag16)
DEF_INSTR(OP_SubNoFlags16A,
0, ALLFLAGS, 0,
0,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
SubNoFlagsFrag16A)
// Next 2 must be consecutive
DEF_INSTR(OP_Sub8,
0, ALLFLAGS, 0,
OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SubFrag8)
DEF_INSTR(OP_SubNoFlags8,
0, ALLFLAGS, 0,
0,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
SubNoFlagsFrag8)
DEF_INSTR(OP_Cmp32,
0, ALLFLAGS, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
CmpFrag32)
DEF_INSTR(OP_Cmp16,
0, ALLFLAGS, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
CmpFrag16)
DEF_INSTR(OP_Cmp8,
0, ALLFLAGS, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
CmpFrag8)
// Next 4 must be consecutive
DEF_INSTR(OP_Adc32,
FLAG_CF, ALLFLAGS, 0,
OPFL_ALIGN|OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
AdcFrag32)
DEF_INSTR(OP_Adc32A,
FLAG_CF, ALLFLAGS, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
AdcFrag32A)
DEF_INSTR(OP_AdcNoFlags32,
FLAG_CF, ALLFLAGS, 0,
OPFL_ALIGN,
FN_GenCallCFrag, FN_GenCallCFragSlow,
AdcNoFlagsFrag32)
DEF_INSTR(OP_AdcNoFlags32A,
FLAG_CF, ALLFLAGS, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
AdcNoFlagsFrag32A)
// Next 4 must be consecutive
DEF_INSTR(OP_Adc16,
FLAG_CF, ALLFLAGS, 0,
OPFL_ALIGN|OPFL_ADDR16|OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
AdcFrag16)
DEF_INSTR(OP_Adc16A,
FLAG_CF, ALLFLAGS, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
AdcFrag16A)
DEF_INSTR(OP_AdcNoFlags16,
FLAG_CF, ALLFLAGS, 0,
OPFL_ADDR16|OPFL_ALIGN,
FN_GenCallCFrag, FN_GenCallCFragSlow,
AdcNoFlagsFrag16)
DEF_INSTR(OP_AdcNoFlags16A,
FLAG_CF, ALLFLAGS, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
AdcNoFlagsFrag16A)
// Next 2 must be consecutive
DEF_INSTR(OP_Adc8,
FLAG_CF, ALLFLAGS, 0,
OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
AdcFrag8)
DEF_INSTR(OP_AdcNoFlags8,
FLAG_CF, ALLFLAGS, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
AdcNoFlagsFrag8)
// Next 4 must be consecutive
DEF_INSTR(OP_Sbb32,
FLAG_CF, ALLFLAGS, 0,
OPFL_ALIGN|OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SbbFrag32)
DEF_INSTR(OP_Sbb32A,
FLAG_CF, ALLFLAGS, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SbbFrag32A)
DEF_INSTR(OP_SbbNoFlags32,
FLAG_CF, ALLFLAGS, 0,
OPFL_ALIGN,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SbbNoFlagsFrag32)
DEF_INSTR(OP_SbbNoFlags32A,
FLAG_CF, ALLFLAGS, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SbbNoFlagsFrag32A)
// Next 4 must be consecutive
DEF_INSTR(OP_Sbb16,
FLAG_CF, ALLFLAGS, 0,
OPFL_ALIGN|OPFL_ADDR16|OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SbbFrag16)
DEF_INSTR(OP_Sbb16A,
FLAG_CF, ALLFLAGS, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SbbFrag16A)
DEF_INSTR(OP_SbbNoFlags16,
FLAG_CF, ALLFLAGS, 0,
OPFL_ADDR16|OPFL_ALIGN,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SbbNoFlagsFrag16)
DEF_INSTR(OP_SbbNoFlags16A,
FLAG_CF, ALLFLAGS, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SbbNoFlagsFrag16A)
// Next 2 must be consecutive
DEF_INSTR(OP_Sbb8,
FLAG_CF, ALLFLAGS, 0,
OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SbbFrag8)
DEF_INSTR(OP_SbbNoFlags8,
FLAG_CF, ALLFLAGS, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SbbNoFlagsFrag8)
DEF_INSTR(OP_Mov32,
0, 0, 0,
0,
FN_PlaceNop, FN_GenEndMovSlow,
NULL)
DEF_INSTR(OP_Mov16,
0, 0, 0,
OPFL_ADDR16,
FN_PlaceNop, FN_GenEndMovSlow,
NULL)
DEF_INSTR(OP_Mov8,
0, 0, 0,
0,
FN_PlaceNop, FN_GenEndMovSlow,
NULL)
// Next 4 must be consecutive
DEF_INSTR(OP_Or32,
0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
OPFL_ALIGN|OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
OrFrag32)
DEF_INSTR(OP_Or32A,
0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
OrFrag32A)
DEF_INSTR(OP_OrNoFlags32,
0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
OPFL_ALIGN|OPFL_INLINEARITH,
FN_GenOrFragNoFlags32, FN_GenCallCFragNoCpuSlow,
OrNoFlagsFrag32)
DEF_INSTR(OP_OrNoFlags32A,
0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
OPFL_INLINEARITH,
FN_GenOrFragNoFlags32A, FN_GenCallCFragNoCpuSlow,
OrNoFlagsFrag32A)
// Next 4 must be consecutive
DEF_INSTR(OP_Or16,
0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
OPFL_ALIGN|OPFL_ADDR16|OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
OrFrag16)
DEF_INSTR(OP_Or16A,
0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
OrFrag16A)
DEF_INSTR(OP_OrNoFlags16,
0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
OPFL_ADDR16|OPFL_ALIGN,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
OrNoFlagsFrag16)
DEF_INSTR(OP_OrNoFlags16A,
0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
0,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
OrNoFlagsFrag16A)
// Next 2 must be consecutive
DEF_INSTR(OP_Or8,
0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
OrFrag8)
DEF_INSTR(OP_OrNoFlags8,
0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
0,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
OrNoFlagsFrag8)
// Next 4 must be consecutive
DEF_INSTR(OP_And32,
0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
OPFL_ALIGN|OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
AndFrag32)
DEF_INSTR(OP_And32A,
0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
AndFrag32A)
DEF_INSTR(OP_AndNoFlags32,
0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
OPFL_ALIGN|OPFL_INLINEARITH,
FN_GenAndFragNoFlags32, FN_GenCallCFragNoCpuSlow,
AndNoFlagsFrag32)
DEF_INSTR(OP_AndNoFlags32A,
0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
OPFL_INLINEARITH,
FN_GenAndFragNoFlags32A, FN_GenCallCFragNoCpuSlow,
AndNoFlagsFrag32A)
// Next 4 must be consecutive
DEF_INSTR(OP_And16,
0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
OPFL_ALIGN|OPFL_ADDR16|OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
AndFrag16)
DEF_INSTR(OP_And16A,
0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
AndFrag16A)
DEF_INSTR(OP_AndNoFlags16,
0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
OPFL_ADDR16|OPFL_ALIGN,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
AndNoFlagsFrag16)
DEF_INSTR(OP_AndNoFlags16A,
0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
0,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
AndNoFlagsFrag16A)
// Next 2 must be consecutive
DEF_INSTR(OP_And8,
0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
AndFrag8)
DEF_INSTR(OP_AndNoFlags8,
0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
0,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
AndNoFlagsFrag8)
// Next 4 must be consecutive
DEF_INSTR(OP_Xor32,
0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
OPFL_ALIGN|OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
XorFrag32)
DEF_INSTR(OP_Xor32A,
0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
XorFrag32A)
DEF_INSTR(OP_XorNoFlags32,
0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
OPFL_ALIGN|OPFL_INLINEARITH,
FN_GenXorFragNoFlags32, FN_GenCallCFragNoCpuSlow,
XorNoFlagsFrag32)
DEF_INSTR(OP_XorNoFlags32A,
0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
OPFL_INLINEARITH,
FN_GenXorFragNoFlags32A, FN_GenCallCFragNoCpuSlow,
XorNoFlagsFrag32A)
// Next 4 must be consecutive
DEF_INSTR(OP_Xor16,
0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
OPFL_ALIGN|OPFL_ADDR16|OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
XorFrag16)
DEF_INSTR(OP_Xor16A,
0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
XorFrag16A)
DEF_INSTR(OP_XorNoFlags16,
0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
OPFL_ADDR16|OPFL_ALIGN,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
XorNoFlagsFrag16)
DEF_INSTR(OP_XorNoFlags16A,
0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
0,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
XorNoFlagsFrag16A)
// Next 2 must be consecutive
DEF_INSTR(OP_Xor8,
0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
XorFrag8)
DEF_INSTR(OP_XorNoFlags8,
0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
0,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
XorNoFlagsFrag8)
DEF_INSTR(OP_Test32,
0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
TestFrag32)
DEF_INSTR(OP_Test16,
0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
TestFrag16)
DEF_INSTR(OP_Test8,
0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
TestFrag8)
// Next 2 must be consecutive
DEF_INSTR(OP_Xchg32,
0, 0, 0,
OPFL_ALIGN,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
XchgFrag32)
DEF_INSTR(OP_Xchg32A,
0, 0, 0,
0,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
XchgFrag32A)
// Next 2 must be consecutive
DEF_INSTR(OP_Xchg16,
0, 0, 0,
OPFL_ALIGN|OPFL_ADDR16,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
XchgFrag16)
DEF_INSTR(OP_Xchg16A,
0, 0, 0,
0,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
XchgFrag16A)
DEF_INSTR(OP_Xchg8,
0, 0, 0,
0,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
XchgFrag8)
// Next 2 must be consecutive
DEF_INSTR(OP_Rol32,
FLAG_CF, FLAG_CF, 0,
OPFL_ALIGN,
FN_GenCallCFrag, FN_GenCallCFragSlow,
RolFrag32)
DEF_INSTR(OP_Rol32A,
FLAG_CF, FLAG_CF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
RolFrag32A)
// Next 2 must be consecutive
DEF_INSTR(OP_Rol16,
FLAG_CF, FLAG_CF, 0,
OPFL_ALIGN|OPFL_ADDR16,
FN_GenCallCFrag, FN_GenCallCFragSlow,
RolFrag16)
DEF_INSTR(OP_Rol16A,
FLAG_CF, FLAG_CF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
RolFrag16A)
DEF_INSTR(OP_Rol8,
FLAG_CF, FLAG_CF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
RolFrag8)
// Next 2 must be consecutive
DEF_INSTR(OP_Ror32,
FLAG_CF, FLAG_CF, 0,
OPFL_ALIGN,
FN_GenCallCFrag, FN_GenCallCFragSlow,
RorFrag32)
DEF_INSTR(OP_Ror32A,
FLAG_CF, FLAG_CF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
RorFrag32A)
// Next 2 must be consecutive
DEF_INSTR(OP_Ror16,
FLAG_CF, FLAG_CF, 0,
OPFL_ALIGN|OPFL_ADDR16,
FN_GenCallCFrag, FN_GenCallCFragSlow,
RorFrag16)
DEF_INSTR(OP_Ror16A,
FLAG_CF, FLAG_CF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
RorFrag16A)
DEF_INSTR(OP_Ror8,
FLAG_CF, FLAG_CF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
RorFrag8)
// Next 2 must be consecutive
DEF_INSTR(OP_Rcl32,
FLAG_CF, FLAG_CF, 0,
OPFL_ALIGN,
FN_GenCallCFrag, FN_GenCallCFragSlow,
RclFrag32)
DEF_INSTR(OP_Rcl32A,
FLAG_CF, FLAG_CF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
RclFrag32A)
// Next 2 must be consecutive
DEF_INSTR(OP_Rcl16,
FLAG_CF, FLAG_CF, 0,
OPFL_ALIGN|OPFL_ADDR16,
FN_GenCallCFrag, FN_GenCallCFragSlow,
RclFrag16)
DEF_INSTR(OP_Rcl16A,
FLAG_CF, FLAG_CF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
RclFrag16A)
DEF_INSTR(OP_Rcl8,
FLAG_CF, FLAG_CF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
RclFrag8)
// Next 2 must be consecutive
DEF_INSTR(OP_Rcr32,
FLAG_CF, FLAG_CF, 0,
OPFL_ALIGN,
FN_GenCallCFrag, FN_GenCallCFragSlow,
RcrFrag32)
DEF_INSTR(OP_Rcr32A,
FLAG_CF, FLAG_CF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
RcrFrag32A)
// Next 2 must be consecutive
DEF_INSTR(OP_Rcr16,
FLAG_CF, FLAG_CF, 0,
OPFL_ALIGN|OPFL_ADDR16,
FN_GenCallCFrag, FN_GenCallCFragSlow,
RcrFrag16)
DEF_INSTR(OP_Rcr16A,
FLAG_CF, FLAG_CF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
RcrFrag16A)
DEF_INSTR(OP_Rcr8,
FLAG_CF, FLAG_CF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
RcrFrag8)
// Next 4 must be consecutive
DEF_INSTR(OP_Shl32,
FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
OPFL_ALIGN|OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
ShlFrag32)
DEF_INSTR(OP_Shl32A,
FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
ShlFrag32A)
DEF_INSTR(OP_ShlNoFlags32,
FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
OPFL_ALIGN,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
ShlNoFlagsFrag32)
DEF_INSTR(OP_ShlNoFlags32A,
FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
0,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
ShlNoFlagsFrag32A)
// Next 4 must be consecutive
DEF_INSTR(OP_Shl16,
FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
OPFL_ALIGN|OPFL_ADDR16|OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
ShlFrag16)
DEF_INSTR(OP_Shl16A,
FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
ShlFrag16A)
DEF_INSTR(OP_ShlNoFlags16,
FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
OPFL_ADDR16|OPFL_ALIGN,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
ShlNoFlagsFrag16)
DEF_INSTR(OP_ShlNoFlags16A,
FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
0,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
ShlNoFlagsFrag16A)
// Next 2 must be consecutive
DEF_INSTR(OP_Shl8,
FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
ShlFrag8)
DEF_INSTR(OP_ShlNoFlags8,
FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
0,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
ShlNoFlagsFrag8)
// Next 4 must be consecutive
DEF_INSTR(OP_Shr32,
FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
OPFL_ALIGN|OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
ShrFrag32)
DEF_INSTR(OP_Shr32A,
FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
ShrFrag32A)
DEF_INSTR(OP_ShrNoFlags32,
FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
OPFL_ALIGN,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
ShrNoFlagsFrag32)
DEF_INSTR(OP_ShrNoFlags32A,
FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
0,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
ShrNoFlagsFrag32A)
// Next 4 must be consecutive
DEF_INSTR(OP_Shr16,
FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
OPFL_ALIGN|OPFL_ADDR16|OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
ShrFrag16)
DEF_INSTR(OP_Shr16A,
FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
ShrFrag16A)
DEF_INSTR(OP_ShrNoFlags16,
FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
OPFL_ADDR16|OPFL_ALIGN,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
ShrNoFlagsFrag16)
DEF_INSTR(OP_ShrNoFlags16A,
FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
0,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
ShrNoFlagsFrag16A)
// Next 2 must be consecutive
DEF_INSTR(OP_Shr8,
FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
ShrFrag8)
DEF_INSTR(OP_ShrNoFlags8,
FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
0,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
ShrNoFlagsFrag8)
// Next 4 must be consecutive
DEF_INSTR(OP_Sar32,
FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
OPFL_ALIGN|OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SarFrag32)
DEF_INSTR(OP_Sar32A,
FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SarFrag32A)
DEF_INSTR(OP_SarNoFlags32,
FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
OPFL_ALIGN,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
SarNoFlagsFrag32)
DEF_INSTR(OP_SarNoFlags32A,
FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
0,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
SarNoFlagsFrag32A)
// Next 4 must be consecutive
DEF_INSTR(OP_Sar16,
FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
OPFL_ALIGN|OPFL_ADDR16|OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SarFrag16)
DEF_INSTR(OP_Sar16A,
FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SarFrag16A)
DEF_INSTR(OP_SarNoFlags16,
FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
OPFL_ADDR16|OPFL_ALIGN,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
SarNoFlagsFrag16)
DEF_INSTR(OP_SarNoFlags16A,
FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
0,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
SarNoFlagsFrag16A)
// Next 2 must be consecutive
DEF_INSTR(OP_Sar8,
FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SarFrag8)
DEF_INSTR(OP_SarNoFlags8,
FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
0,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
SarNoFlagsFrag8)
// Next 4 must be consecutive
DEF_INSTR(OP_Rol132,
0, FLAG_CF|FLAG_OF, 0,
OPFL_ALIGN|OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
Rol1Frag32)
DEF_INSTR(OP_Rol132A,
0, FLAG_CF|FLAG_OF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
Rol1Frag32A)
DEF_INSTR(OP_Rol1NoFlags32,
0, FLAG_CF|FLAG_OF, 0,
OPFL_ALIGN,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
Rol1NoFlagsFrag32)
DEF_INSTR(OP_Rol1NoFlags32A,
0, FLAG_CF|FLAG_OF, 0,
0,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
Rol1NoFlagsFrag32A)
// Next 4 must be consecutive
DEF_INSTR(OP_Rol116,
0, FLAG_CF|FLAG_OF, 0,
OPFL_ALIGN|OPFL_ADDR16|OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
Rol1Frag16)
DEF_INSTR(OP_Rol116A,
0, FLAG_CF|FLAG_OF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
Rol1Frag16A)
DEF_INSTR(OP_Rol1NoFlags16,
0, FLAG_CF|FLAG_OF, 0,
OPFL_ADDR16|OPFL_ALIGN,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
Rol1NoFlagsFrag16)
DEF_INSTR(OP_Rol1NoFlags16A,
0, FLAG_CF|FLAG_OF, 0,
0,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
Rol1NoFlagsFrag16A)
// Next 2 must be consecutive
DEF_INSTR(OP_Rol18,
0, FLAG_CF|FLAG_OF, 0,
OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
Rol1Frag8)
DEF_INSTR(OP_Rol1NoFlags8,
0, FLAG_CF|FLAG_OF, 0,
0,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
Rol1NoFlagsFrag8)
// Next 4 must be consecutive
DEF_INSTR(OP_Ror132,
0, FLAG_CF|FLAG_OF, 0,
OPFL_ALIGN|OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
Ror1Frag32)
DEF_INSTR(OP_Ror132A,
0, FLAG_CF|FLAG_OF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
Ror1Frag32A)
DEF_INSTR(OP_Ror1NoFlags32,
0, FLAG_CF|FLAG_OF, 0,
OPFL_ALIGN,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
Ror1NoFlagsFrag32)
DEF_INSTR(OP_Ror1NoFlags32A,
0, FLAG_CF|FLAG_OF, 0,
0,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
Ror1NoFlagsFrag32A)
// Next 4 must be consecutive
DEF_INSTR(OP_Ror116,
0, FLAG_CF|FLAG_OF, 0,
OPFL_ALIGN|OPFL_ADDR16|OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
Ror1Frag16)
DEF_INSTR(OP_Ror116A,
0, FLAG_CF|FLAG_OF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
Ror1Frag16A)
DEF_INSTR(OP_Ror1NoFlags16,
0, FLAG_CF|FLAG_OF, 0,
OPFL_ADDR16|OPFL_ALIGN,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
Ror1NoFlagsFrag16)
DEF_INSTR(OP_Ror1NoFlags16A,
0, FLAG_CF|FLAG_OF, 0,
0,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
Ror1NoFlagsFrag16A)
// Next 2 must be consecutive
DEF_INSTR(OP_Ror18,
0, FLAG_CF|FLAG_OF, 0,
OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
Ror1Frag8)
DEF_INSTR(OP_Ror1NoFlags8,
0, FLAG_CF|FLAG_OF, 0,
0,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
Ror1NoFlagsFrag8)
// Next 4 must be consecutive
DEF_INSTR(OP_Rcl132,
FLAG_CF, FLAG_CF|FLAG_OF, 0,
OPFL_ALIGN|OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
Rcl1Frag32)
DEF_INSTR(OP_Rcl132A,
FLAG_CF, FLAG_CF|FLAG_OF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
Rcl1Frag32A)
DEF_INSTR(OP_Rcl1NoFlags32,
FLAG_CF, FLAG_CF|FLAG_OF, 0,
OPFL_ALIGN,
FN_GenCallCFrag, FN_GenCallCFragSlow,
Rcl1NoFlagsFrag32)
DEF_INSTR(OP_Rcl1NoFlags32A,
FLAG_CF, FLAG_CF|FLAG_OF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
Rcl1NoFlagsFrag32A)
// Next 4 must be consecutive
DEF_INSTR(OP_Rcl116,
FLAG_CF, FLAG_CF|FLAG_OF, 0,
OPFL_ALIGN|OPFL_ADDR16|OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
Rcl1Frag16)
DEF_INSTR(OP_Rcl116A,
FLAG_CF, FLAG_CF|FLAG_OF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
Rcl1Frag16A)
DEF_INSTR(OP_Rcl1NoFlags16,
FLAG_CF, FLAG_CF|FLAG_OF, 0,
OPFL_ADDR16|OPFL_ALIGN,
FN_GenCallCFrag, FN_GenCallCFragSlow,
Rcl1NoFlagsFrag16)
DEF_INSTR(OP_Rcl1NoFlags16A,
FLAG_CF, FLAG_CF|FLAG_OF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
Rcl1NoFlagsFrag16A)
// Next 2 must be consecutive
DEF_INSTR(OP_Rcl18,
FLAG_CF, FLAG_CF|FLAG_OF, 0,
OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
Rcl1Frag8)
DEF_INSTR(OP_Rcl1NoFlags8,
FLAG_CF, FLAG_CF|FLAG_OF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
Rcl1NoFlagsFrag8)
// Next 4 must be consecutive
DEF_INSTR(OP_Rcr132,
FLAG_CF, FLAG_CF|FLAG_OF, 0,
OPFL_ALIGN|OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
Rcr1Frag32)
DEF_INSTR(OP_Rcr132A,
FLAG_CF, FLAG_CF|FLAG_OF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
Rcr1Frag32A)
DEF_INSTR(OP_Rcr1NoFlags32,
FLAG_CF, FLAG_CF|FLAG_OF, 0,
OPFL_ALIGN,
FN_GenCallCFrag, FN_GenCallCFragSlow,
Rcr1NoFlagsFrag32)
DEF_INSTR(OP_Rcr1NoFlags32A,
FLAG_CF, FLAG_CF|FLAG_OF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
Rcr1NoFlagsFrag32A)
// Next 4 must be consecutive
DEF_INSTR(OP_Rcr116,
FLAG_CF, FLAG_CF|FLAG_OF, 0,
OPFL_ALIGN|OPFL_ADDR16|OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
Rcr1Frag16)
DEF_INSTR(OP_Rcr116A,
FLAG_CF, FLAG_CF|FLAG_OF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
Rcr1Frag16A)
DEF_INSTR(OP_Rcr1NoFlags16,
FLAG_CF, FLAG_CF|FLAG_OF, 0,
OPFL_ADDR16|OPFL_ALIGN,
FN_GenCallCFrag, FN_GenCallCFragSlow,
Rcr1NoFlagsFrag16)
DEF_INSTR(OP_Rcr1NoFlags16A,
FLAG_CF, FLAG_CF|FLAG_OF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
Rcr1NoFlagsFrag16A)
// Next 2 must be consecutive
DEF_INSTR(OP_Rcr18,
FLAG_CF, FLAG_CF|FLAG_OF, 0,
OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
Rcr1Frag8)
DEF_INSTR(OP_Rcr1NoFlags8,
FLAG_CF, FLAG_CF|FLAG_OF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
Rcr1NoFlagsFrag8)
// Next 4 must be consecutive
DEF_INSTR(OP_Shl132,
0, FLAG_CF|FLAG_OF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
OPFL_ALIGN|OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
Shl1Frag32)
DEF_INSTR(OP_Shl132A,
0, FLAG_CF|FLAG_OF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
Shl1Frag32A)
DEF_INSTR(OP_Shl1NoFlags32,
0, FLAG_CF|FLAG_OF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
OPFL_ALIGN,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
Shl1NoFlagsFrag32)
DEF_INSTR(OP_Shl1NoFlags32A,
0, FLAG_CF|FLAG_OF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
0,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
Shl1NoFlagsFrag32A)
// Next 4 must be consecutive
DEF_INSTR(OP_Shl116,
0, FLAG_CF|FLAG_OF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
OPFL_ALIGN|OPFL_ADDR16|OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
Shl1Frag16)
DEF_INSTR(OP_Shl116A,
0, FLAG_CF|FLAG_OF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
Shl1Frag16A)
DEF_INSTR(OP_Shl1NoFlags16,
0, FLAG_CF|FLAG_OF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
OPFL_ADDR16|OPFL_ALIGN,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
Shl1NoFlagsFrag16)
DEF_INSTR(OP_Shl1NoFlags16A,
0, FLAG_CF|FLAG_OF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
0,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
Shl1NoFlagsFrag16A)
// Next 2 must be consecutive
DEF_INSTR(OP_Shl18,
0, FLAG_CF|FLAG_OF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
Shl1Frag8)
DEF_INSTR(OP_Shl1NoFlags8,
0, FLAG_CF|FLAG_OF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
0,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
Shl1NoFlagsFrag8)
// Next 4 must be consecutive
DEF_INSTR(OP_Shr132,
0, FLAG_CF|FLAG_OF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
OPFL_ALIGN|OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
Shr1Frag32)
DEF_INSTR(OP_Shr132A,
0, FLAG_CF|FLAG_OF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
Shr1Frag32A)
DEF_INSTR(OP_Shr1NoFlags32,
0, FLAG_CF|FLAG_OF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
OPFL_ALIGN,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
Shr1NoFlagsFrag32)
DEF_INSTR(OP_Shr1NoFlags32A,
0, FLAG_CF|FLAG_OF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
0,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
Shr1NoFlagsFrag32A)
// Next 4 must be consecutive
DEF_INSTR(OP_Shr116,
0, FLAG_CF|FLAG_OF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
OPFL_ALIGN|OPFL_ADDR16|OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
Shr1Frag16)
DEF_INSTR(OP_Shr116A,
0, FLAG_CF|FLAG_OF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
Shr1Frag16A)
DEF_INSTR(OP_Shr1NoFlags16,
0, FLAG_CF|FLAG_OF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
OPFL_ADDR16|OPFL_ALIGN,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
Shr1NoFlagsFrag16)
DEF_INSTR(OP_Shr1NoFlags16A,
0, FLAG_CF|FLAG_OF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
0,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
Shr1NoFlagsFrag16A)
// Next 2 must be consecutive
DEF_INSTR(OP_Shr18,
0, FLAG_CF|FLAG_OF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
Shr1Frag8)
DEF_INSTR(OP_Shr1NoFlags8,
0, FLAG_CF|FLAG_OF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
0,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
Shr1NoFlagsFrag8)
// Next 4 must be consecutive
DEF_INSTR(OP_Sar132,
0, FLAG_CF|FLAG_OF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
OPFL_ALIGN|OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
Sar1Frag32)
DEF_INSTR(OP_Sar132A,
0, FLAG_CF|FLAG_OF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
Sar1Frag32A)
DEF_INSTR(OP_Sar1NoFlags32,
0, FLAG_CF|FLAG_OF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
OPFL_ALIGN,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
Sar1NoFlagsFrag32)
DEF_INSTR(OP_Sar1NoFlags32A,
0, FLAG_CF|FLAG_OF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
0,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
Sar1NoFlagsFrag32A)
// Next 4 must be consecutive
DEF_INSTR(OP_Sar116,
0, FLAG_CF|FLAG_OF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
OPFL_ALIGN|OPFL_ADDR16|OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
Sar1Frag16)
DEF_INSTR(OP_Sar116A,
0, FLAG_CF|FLAG_OF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
Sar1Frag16A)
DEF_INSTR(OP_Sar1NoFlags16,
0, FLAG_CF|FLAG_OF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
OPFL_ADDR16|OPFL_ALIGN,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
Sar1NoFlagsFrag16)
DEF_INSTR(OP_Sar1NoFlags16A,
0, FLAG_CF|FLAG_OF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
0,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
Sar1NoFlagsFrag16A)
// Next 2 must be consecutive
DEF_INSTR(OP_Sar18,
0, FLAG_CF|FLAG_OF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
Sar1Frag8)
DEF_INSTR(OP_Sar1NoFlags8,
0, FLAG_CF|FLAG_OF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
0,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
Sar1NoFlagsFrag8)
// Next 2 must be consecutive
DEF_INSTR(OP_Not32,
0, 0, 0,
OPFL_ALIGN,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
NotFrag32)
DEF_INSTR(OP_Not32A,
0, 0, 0,
0,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
NotFrag32A)
// Next 2 must be consecutive
DEF_INSTR(OP_Not16,
0, 0, 0,
OPFL_ALIGN|OPFL_ADDR16,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
NotFrag16)
DEF_INSTR(OP_Not16A,
0, 0, 0,
0,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
NotFrag16A)
DEF_INSTR(OP_Not8,
0, 0, 0,
0,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
NotFrag8)
// Next 4 must be consecutive
DEF_INSTR(OP_Neg32,
0, ALLFLAGS, 0,
OPFL_ALIGN|OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
NegFrag32)
DEF_INSTR(OP_Neg32A,
0, ALLFLAGS, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
NegFrag32A)
DEF_INSTR(OP_NegNoFlags32,
0, ALLFLAGS, 0,
OPFL_ALIGN,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
NegNoFlagsFrag32)
DEF_INSTR(OP_NegNoFlags32A,
0, ALLFLAGS, 0,
0,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
NegNoFlagsFrag32A)
// Next 4 must be consecutive
DEF_INSTR(OP_Neg16,
0, ALLFLAGS, 0,
OPFL_ALIGN|OPFL_ADDR16|OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
NegFrag16)
DEF_INSTR(OP_Neg16A,
0, ALLFLAGS, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
NegFrag16A)
DEF_INSTR(OP_NegNoFlags16,
0, ALLFLAGS, 0,
OPFL_ADDR16|OPFL_ALIGN,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
NegNoFlagsFrag16)
DEF_INSTR(OP_NegNoFlags16A,
0, ALLFLAGS, 0,
0,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
NegNoFlagsFrag16A)
// Next 2 must be consecutive
DEF_INSTR(OP_Neg8,
0, ALLFLAGS, 0,
OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
NegFrag8)
DEF_INSTR(OP_NegNoFlags8,
0, ALLFLAGS, 0,
0,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
NegNoFlagsFrag8)
// Next 4 must be consecutive
DEF_INSTR(OP_Mul32,
0, FLAG_CF|FLAG_OF, REGEAX|REGEDX,
OPFL_ALIGN|OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
MulFrag32)
DEF_INSTR(OP_Mul32A,
0, FLAG_CF|FLAG_OF, REGEAX|REGEDX,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
MulFrag32A)
DEF_INSTR(OP_MulNoFlags32,
0, FLAG_CF|FLAG_OF, REGEAX|REGEDX,
OPFL_ALIGN,
FN_GenCallCFrag, FN_GenCallCFragSlow,
MulNoFlagsFrag32)
DEF_INSTR(OP_MulNoFlags32A,
0, FLAG_CF|FLAG_OF, REGEAX|REGEDX,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
MulNoFlagsFrag32A)
// Next 4 must be consecutive
DEF_INSTR(OP_Mul16,
0, FLAG_CF|FLAG_OF, REGAX|REGDX,
OPFL_ALIGN|OPFL_ADDR16|OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
MulFrag16)
DEF_INSTR(OP_Mul16A,
0, FLAG_CF|FLAG_OF, REGAX|REGDX,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
MulFrag16A)
DEF_INSTR(OP_MulNoFlags16,
0, FLAG_CF|FLAG_OF, REGAX|REGDX,
OPFL_ADDR16|OPFL_ALIGN,
FN_GenCallCFrag, FN_GenCallCFragSlow,
MulNoFlagsFrag16)
DEF_INSTR(OP_MulNoFlags16A,
0, FLAG_CF|FLAG_OF, REGAX|REGDX,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
MulNoFlagsFrag16A)
// Next 2 must be consecutive
DEF_INSTR(OP_Mul8,
0, FLAG_CF|FLAG_OF, REGAX,
OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
MulFrag8)
DEF_INSTR(OP_MulNoFlags8,
0, FLAG_CF|FLAG_OF, REGAX,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
MulNoFlagsFrag8)
// Next 4 must be consecutive
DEF_INSTR(OP_Muli32,
0, FLAG_CF|FLAG_OF, REGEAX|REGEDX,
OPFL_ALIGN|OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
MuliFrag32)
DEF_INSTR(OP_Muli32A,
0, FLAG_CF|FLAG_OF, REGEAX|REGEDX,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
MuliFrag32A)
DEF_INSTR(OP_MuliNoFlags32,
0, FLAG_CF|FLAG_OF, REGEAX|REGEDX,
OPFL_ALIGN,
FN_GenCallCFrag, FN_GenCallCFragSlow,
MuliNoFlagsFrag32)
DEF_INSTR(OP_MuliNoFlags32A,
0, FLAG_CF|FLAG_OF, REGEAX|REGEDX,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
MuliNoFlagsFrag32A)
// Next 4 must be consecutive
DEF_INSTR(OP_Muli16,
0, FLAG_CF|FLAG_OF, REGAX|REGDX,
OPFL_ALIGN|OPFL_ADDR16|OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
MuliFrag16)
DEF_INSTR(OP_Muli16A,
0, FLAG_CF|FLAG_OF, REGAX|REGDX,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
MuliFrag16A)
DEF_INSTR(OP_MuliNoFlags16,
0, FLAG_CF|FLAG_OF, REGAX|REGDX,
OPFL_ADDR16|OPFL_ALIGN,
FN_GenCallCFrag, FN_GenCallCFragSlow,
MuliNoFlagsFrag16)
DEF_INSTR(OP_MuliNoFlags16A,
0, FLAG_CF|FLAG_OF, REGAX|REGDX,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
MuliNoFlagsFrag16A)
// Next 2 must be consecutive
DEF_INSTR(OP_Muli8,
0, FLAG_CF|FLAG_OF, REGAX,
OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
MuliFrag8)
DEF_INSTR(OP_MuliNoFlags8,
0, FLAG_CF|FLAG_OF, REGAX,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
MuliNoFlagsFrag8)
// Next 2 must be consecutive
DEF_INSTR(OP_Div32,
0, 0, REGEAX|REGEDX,
OPFL_ALIGN,
FN_GenCallCFrag, FN_GenCallCFragSlow,
DivFrag32)
DEF_INSTR(OP_Div32A,
0, 0, REGEAX|REGEDX,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
DivFrag32A)
// Next 2 must be consecutive
DEF_INSTR(OP_Div16,
0, 0, REGAX|REGDX,
OPFL_ALIGN|OPFL_ADDR16,
FN_GenCallCFrag, FN_GenCallCFragSlow,
DivFrag16)
DEF_INSTR(OP_Div16A,
0, 0, REGAX|REGDX,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
DivFrag16A)
DEF_INSTR(OP_Div8,
0, 0, REGAX,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
DivFrag8)
// Next 2 must be consecutive
DEF_INSTR(OP_Idiv32,
0, 0, REGEAX|REGEDX,
OPFL_ALIGN,
FN_GenCallCFrag, FN_GenCallCFragSlow,
IdivFrag32)
DEF_INSTR(OP_Idiv32A,
0, 0, REGEAX|REGEDX,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
IdivFrag32A)
// Next 2 must be consecutive
DEF_INSTR(OP_Idiv16,
0, 0, REGAX|REGDX,
OPFL_ALIGN|OPFL_ADDR16,
FN_GenCallCFrag, FN_GenCallCFragSlow,
IdivFrag16)
DEF_INSTR(OP_Idiv16A,
0, 0, REGAX|REGDX,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
IdivFrag16A)
DEF_INSTR(OP_Idiv8,
0, 0, REGAX,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
IdivFrag8)
DEF_INSTR(OP_Lods32,
0, 0, REGEAX|REGESI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
LodsFrag32)
DEF_INSTR(OP_Lods16,
0, 0, REGAX|REGESI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
LodsFrag16)
DEF_INSTR(OP_Lods8,
0, 0, REGAL|REGESI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
LodsFrag8)
DEF_INSTR(OP_FsLods32,
0, 0, REGEAX|REGESI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
FsLodsFrag32)
DEF_INSTR(OP_FsLods16,
0, 0, REGAX|REGESI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
FsLodsFrag16)
DEF_INSTR(OP_FsLods8,
0, 0, REGAL|REGESI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
FsLodsFrag8)
DEF_INSTR(OP_RepLods32,
0, 0, REGEAX|REGECX|REGESI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
RepLodsFrag32)
DEF_INSTR(OP_RepLods16,
0, 0, REGAX|REGECX|REGESI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
RepLodsFrag16)
DEF_INSTR(OP_RepLods8,
0, 0, REGAL|REGECX|REGESI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
RepLodsFrag8)
DEF_INSTR(OP_FsRepLods32,
0, 0, REGEAX|REGECX|REGESI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
FsRepLodsFrag32)
DEF_INSTR(OP_FsRepLods16,
0, 0, REGAX|REGECX|REGESI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
FsRepLodsFrag16)
DEF_INSTR(OP_FsRepLods8,
0, 0, REGAL|REGECX|REGESI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
FsRepLodsFrag8)
// Next 2 must be consecutive
DEF_INSTR(OP_Scas32,
0, ALLFLAGS, REGEDI,
OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
ScasFrag32)
DEF_INSTR(OP_ScasNoFlags32,
0, ALLFLAGS, REGEDI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
ScasNoFlagsFrag32)
// Next 2 must be consecutive
DEF_INSTR(OP_Scas16,
0, ALLFLAGS, REGEDI,
OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
ScasFrag16)
DEF_INSTR(OP_ScasNoFlags16,
0, ALLFLAGS, REGEDI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
ScasNoFlagsFrag16)
// Next 2 must be consecutive
DEF_INSTR(OP_Scas8,
0, ALLFLAGS, REGEDI,
OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
ScasFrag8)
DEF_INSTR(OP_ScasNoFlags8,
0, ALLFLAGS, REGEDI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
ScasNoFlagsFrag8)
// Next 2 must be consecutive
DEF_INSTR(OP_FsScas32,
0, ALLFLAGS, REGEDI,
OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
FsScasFrag32)
DEF_INSTR(OP_FsScasNoFlags32,
0, ALLFLAGS, REGEDI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
FsScasNoFlagsFrag32)
// Next 2 must be consecutive
DEF_INSTR(OP_FsScas16,
0, ALLFLAGS, REGEDI,
OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
FsScasFrag16)
DEF_INSTR(OP_FsScasNoFlags16,
0, ALLFLAGS, REGEDI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
FsScasNoFlagsFrag16)
// Next 2 must be consecutive
DEF_INSTR(OP_FsScas8,
0, ALLFLAGS, REGEDI,
OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
FsScasFrag8)
DEF_INSTR(OP_FsScasNoFlags8,
0, ALLFLAGS, REGEDI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
FsScasNoFlagsFrag8)
// Next 2 must be consecutive
DEF_INSTR(OP_RepnzScas32,
ALLFLAGS, ALLFLAGS, REGECX|REGEDI,
OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
RepnzScasFrag32)
DEF_INSTR(OP_RepnzScasNoFlags32,
ALLFLAGS, ALLFLAGS, REGECX|REGEDI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
RepnzScasNoFlagsFrag32)
// Next 2 must be consecutive
DEF_INSTR(OP_RepnzScas16,
ALLFLAGS, ALLFLAGS, REGECX|REGEDI,
OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
RepnzScasFrag16)
DEF_INSTR(OP_RepnzScasNoFlags16,
ALLFLAGS, ALLFLAGS, REGECX|REGEDI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
RepnzScasNoFlagsFrag16)
// Next 2 must be consecutive
DEF_INSTR(OP_RepnzScas8,
ALLFLAGS, ALLFLAGS, REGECX|REGEDI,
OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
RepnzScasFrag8)
DEF_INSTR(OP_RepnzScasNoFlags8,
ALLFLAGS, ALLFLAGS, REGECX|REGEDI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
RepnzScasNoFlagsFrag8)
// Next 2 must be consecutive
DEF_INSTR(OP_FsRepnzScas32,
ALLFLAGS, ALLFLAGS, REGECX|REGEDI,
OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
FsRepnzScasFrag32)
DEF_INSTR(OP_FsRepnzScasNoFlags32,
ALLFLAGS, ALLFLAGS, REGECX|REGEDI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
FsRepnzScasNoFlagsFrag32)
// Next 2 must be consecutive
DEF_INSTR(OP_FsRepnzScas16,
ALLFLAGS, ALLFLAGS, REGECX|REGEDI,
OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
FsRepnzScasFrag16)
DEF_INSTR(OP_FsRepnzScasNoFlags16,
ALLFLAGS, ALLFLAGS, REGECX|REGEDI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
FsRepnzScasNoFlagsFrag16)
// Next 2 must be consecutive
DEF_INSTR(OP_FsRepnzScas8,
ALLFLAGS, ALLFLAGS, REGECX|REGEDI,
OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
FsRepnzScasFrag8)
DEF_INSTR(OP_FsRepnzScasNoFlags8,
ALLFLAGS, ALLFLAGS, REGECX|REGEDI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
FsRepnzScasNoFlagsFrag8)
// Next 2 must be consecutive
DEF_INSTR(OP_RepzScas32,
ALLFLAGS, ALLFLAGS, REGECX|REGEDI,
OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
RepzScasFrag32)
DEF_INSTR(OP_RepzScasNoFlags32,
ALLFLAGS, ALLFLAGS, REGECX|REGEDI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
RepzScasNoFlagsFrag32)
// Next 2 must be consecutive
DEF_INSTR(OP_RepzScas16,
ALLFLAGS, ALLFLAGS, REGECX|REGEDI,
OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
RepzScasFrag16)
DEF_INSTR(OP_RepzScasNoFlags16,
ALLFLAGS, ALLFLAGS, REGECX|REGEDI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
RepzScasNoFlagsFrag16)
// Next 2 must be consecutive
DEF_INSTR(OP_RepzScas8,
ALLFLAGS, ALLFLAGS, REGECX|REGEDI,
OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
RepzScasFrag8)
DEF_INSTR(OP_RepzScasNoFlags8,
ALLFLAGS, ALLFLAGS, REGECX|REGEDI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
RepzScasNoFlagsFrag8)
// Next 2 must be consecutive
DEF_INSTR(OP_FsRepzScas32,
ALLFLAGS, ALLFLAGS, REGECX|REGEDI,
OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
FsRepzScasFrag32)
DEF_INSTR(OP_FsRepzScasNoFlags32,
ALLFLAGS, ALLFLAGS, REGECX|REGEDI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
FsRepzScasNoFlagsFrag32)
// Next 2 must be consecutive
DEF_INSTR(OP_FsRepzScas16,
ALLFLAGS, ALLFLAGS, REGECX|REGEDI,
OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
FsRepzScasFrag16)
DEF_INSTR(OP_FsRepzScasNoFlags16,
ALLFLAGS, ALLFLAGS, REGECX|REGEDI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
FsRepzScasNoFlagsFrag16)
// Next 2 must be consecutive
DEF_INSTR(OP_FsRepzScas8,
ALLFLAGS, ALLFLAGS, REGECX|REGEDI,
OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
FsRepzScasFrag8)
DEF_INSTR(OP_FsRepzScasNoFlags8,
ALLFLAGS, ALLFLAGS, REGECX|REGEDI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
FsRepzScasNoFlagsFrag8)
DEF_INSTR(OP_Stos32,
0, 0, REGEDI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
StosFrag32)
DEF_INSTR(OP_Stos16,
0, 0, REGEDI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
StosFrag16)
DEF_INSTR(OP_Stos8,
0, 0, REGEDI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
StosFrag8)
DEF_INSTR(OP_RepStos32,
0, 0, REGECX|REGEDI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
RepStosFrag32)
DEF_INSTR(OP_RepStos16,
0, 0, REGECX|REGEDI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
RepStosFrag16)
DEF_INSTR(OP_RepStos8,
0, 0, REGECX|REGEDI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
RepStosFrag8)
DEF_INSTR(OP_Movs32,
0, 0, REGESI|REGEDI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
MovsFrag32)
DEF_INSTR(OP_Movs16,
0, 0, REGESI|REGEDI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
MovsFrag16)
DEF_INSTR(OP_Movs8,
0, 0, REGESI|REGEDI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
MovsFrag8)
DEF_INSTR(OP_FsMovs32,
0, 0, REGESI|REGEDI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
FsMovsFrag32)
DEF_INSTR(OP_FsMovs16,
0, 0, REGESI|REGEDI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
FsMovsFrag16)
DEF_INSTR(OP_FsMovs8,
0, 0, REGESI|REGEDI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
FsMovsFrag8)
DEF_INSTR(OP_RepMovs32,
0, 0, REGECX|REGESI|REGEDI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
RepMovsFrag32)
DEF_INSTR(OP_RepMovs16,
0, 0, REGECX|REGESI|REGEDI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
RepMovsFrag16)
DEF_INSTR(OP_RepMovs8,
0, 0, REGECX|REGESI|REGEDI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
RepMovsFrag8)
DEF_INSTR(OP_FsRepMovs32,
0, 0, REGECX|REGESI|REGEDI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
FsRepMovsFrag32)
DEF_INSTR(OP_FsRepMovs16,
0, 0, REGECX|REGESI|REGEDI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
FsRepMovsFrag16)
DEF_INSTR(OP_FsRepMovs8,
0, 0, REGECX|REGESI|REGEDI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
FsRepMovsFrag8)
DEF_INSTR(OP_Cmps32,
0, ALLFLAGS, REGESI|REGEDI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
CmpsFrag32)
DEF_INSTR(OP_Cmps16,
0, ALLFLAGS, REGESI|REGEDI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
CmpsFrag16)
DEF_INSTR(OP_Cmps8,
0, ALLFLAGS, REGESI|REGEDI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
CmpsFrag8)
DEF_INSTR(OP_RepzCmps32,
ALLFLAGS, ALLFLAGS, REGECX|REGESI|REGEDI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
RepzCmpsFrag32)
DEF_INSTR(OP_RepzCmps16,
ALLFLAGS, ALLFLAGS, REGECX|REGESI|REGEDI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
RepzCmpsFrag16)
DEF_INSTR(OP_RepzCmps8,
ALLFLAGS, ALLFLAGS, REGECX|REGESI|REGEDI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
RepzCmpsFrag8)
DEF_INSTR(OP_FsRepzCmps32,
ALLFLAGS, ALLFLAGS, REGECX|REGESI|REGEDI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
FsRepzCmpsFrag32)
DEF_INSTR(OP_FsRepzCmps16,
ALLFLAGS, ALLFLAGS, REGECX|REGESI|REGEDI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
FsRepzCmpsFrag16)
DEF_INSTR(OP_FsRepzCmps8,
ALLFLAGS, ALLFLAGS, REGECX|REGESI|REGEDI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
FsRepzCmpsFrag8)
DEF_INSTR(OP_FsCmps32,
0, ALLFLAGS, REGESI|REGEDI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
FsCmpsFrag32)
DEF_INSTR(OP_FsCmps16,
0, ALLFLAGS, REGESI|REGEDI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
FsCmpsFrag16)
DEF_INSTR(OP_FsCmps8,
0, ALLFLAGS, REGESI|REGEDI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
FsCmpsFrag8)
DEF_INSTR(OP_RepnzCmps32,
ALLFLAGS, ALLFLAGS, REGECX|REGESI|REGEDI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
RepnzCmpsFrag32)
DEF_INSTR(OP_RepnzCmps16,
ALLFLAGS, ALLFLAGS, REGECX|REGESI|REGEDI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
RepnzCmpsFrag16)
DEF_INSTR(OP_RepnzCmps8,
ALLFLAGS, ALLFLAGS, REGECX|REGESI|REGEDI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
RepnzCmpsFrag8)
DEF_INSTR(OP_FsRepnzCmps32,
ALLFLAGS, ALLFLAGS, REGECX|REGESI|REGEDI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
FsRepnzCmpsFrag32)
DEF_INSTR(OP_FsRepnzCmps16,
ALLFLAGS, ALLFLAGS, REGECX|REGESI|REGEDI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
FsRepnzCmpsFrag16)
DEF_INSTR(OP_FsRepnzCmps8,
ALLFLAGS, ALLFLAGS, REGECX|REGESI|REGEDI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
FsRepnzCmpsFrag8)
DEF_INSTR(OP_PushA32,
0, 0, REGESP,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
PushAFrag32)
DEF_INSTR(OP_PushA16,
0, 0, REGESP,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
PushAFrag16)
DEF_INSTR(OP_PopA32,
0, 0, ALLREGS,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
PopAFrag32)
DEF_INSTR(OP_PopA16,
0, 0, ALLREGS,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
PopAFrag16)
DEF_INSTR(OP_Push32,
0, 0, REGESP,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
PushFrag32)
DEF_INSTR(OP_Push16,
0, 0, REGESP,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
PushFrag16)
// Next 2 must be consecutive
DEF_INSTR(OP_Pop32,
0, 0, REGESP,
OPFL_ALIGN,
FN_GenCallCFrag, FN_GenCallCFragSlow,
PopFrag32)
DEF_INSTR(OP_Pop32A,
0, 0, REGESP,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
PopFrag32A)
// Next 2 must be consecutive
DEF_INSTR(OP_Pop16,
0, 0, REGESP,
OPFL_ALIGN|OPFL_ADDR16,
FN_GenCallCFrag, FN_GenCallCFragSlow,
PopFrag16)
DEF_INSTR(OP_Pop16A,
0, 0, REGESP,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
PopFrag16A)
DEF_INSTR(OP_Cbw32,
0, 0, REGEAX,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
CbwFrag32)
DEF_INSTR(OP_Cbw16,
0, 0, REGAX,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
CbwFrag16)
DEF_INSTR(OP_Cwd32,
0, 0, REGEDX,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
CwdFrag32)
DEF_INSTR(OP_Cwd16,
0, 0, REGDX,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
CwdFrag16)
DEF_INSTR(OP_Bound32,
ALLFLAGS, ALLFLAGS, ALLREGS,
0,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
BoundFrag32)
DEF_INSTR(OP_Bound16,
ALLFLAGS, ALLFLAGS, ALLREGS,
0,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
BoundFrag16)
DEF_INSTR(OP_Enter32,
0, 0, REGESP|REGEBP,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
EnterFrag32)
DEF_INSTR(OP_Enter16,
0, 0, REGESP|REGEBP,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
EnterFrag16)
DEF_INSTR(OP_Leave32,
0, 0, REGESP|REGEBP,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
LeaveFrag32)
DEF_INSTR(OP_Leave16,
0, 0, REGESP|REGEBP,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
LeaveFrag16)
DEF_INSTR(OP_Les32,
0, 0, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
LesFrag32)
DEF_INSTR(OP_Les16,
0, 0, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
LesFrag16)
DEF_INSTR(OP_Lds32,
0, 0, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
LdsFrag32)
DEF_INSTR(OP_Lds16,
0, 0, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
LdsFrag16)
DEF_INSTR(OP_Lss32,
0, 0, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
LssFrag32)
DEF_INSTR(OP_Lss16,
0, 0, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
LssFrag16)
DEF_INSTR(OP_Lfs32,
0, 0, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
LfsFrag32)
DEF_INSTR(OP_Lfs16,
0, 0, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
LfsFrag16)
DEF_INSTR(OP_Lgs32,
0, 0, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
LgsFrag32)
DEF_INSTR(OP_Lgs16,
0, 0, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
LgsFrag16)
DEF_INSTR(OP_BtReg32,
0, FLAG_CF, 0,
OPFL_ALIGN,
FN_GenCallCFrag, FN_GenCallCFragSlow,
BtRegFrag32)
DEF_INSTR(OP_BtReg32A,
0, FLAG_CF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
BtRegFrag32A)
DEF_INSTR(OP_BtReg16,
0, FLAG_CF, 0,
OPFL_ALIGN|OPFL_ADDR16,
FN_GenCallCFrag, FN_GenCallCFragSlow,
BtRegFrag16)
DEF_INSTR(OP_BtReg16A,
0, FLAG_CF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
BtRegFrag16)
DEF_INSTR(OP_BtsReg32,
0, FLAG_CF, 0,
OPFL_ALIGN,
FN_GenCallCFrag, FN_GenCallCFragSlow,
BtsRegFrag32)
DEF_INSTR(OP_BtsReg32A,
0, FLAG_CF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
BtsRegFrag32A)
DEF_INSTR(OP_BtsReg16,
0, FLAG_CF, 0,
OPFL_ALIGN|OPFL_ADDR16,
FN_GenCallCFrag, FN_GenCallCFragSlow,
BtsRegFrag16)
DEF_INSTR(OP_BtsReg16A,
0, FLAG_CF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
BtsRegFrag16A)
DEF_INSTR(OP_BtcReg32,
0, FLAG_CF, 0,
OPFL_ALIGN,
FN_GenCallCFrag, FN_GenCallCFragSlow,
BtcRegFrag32)
DEF_INSTR(OP_BtcReg32A,
0, FLAG_CF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
BtcRegFrag32A)
DEF_INSTR(OP_BtcReg16,
0, FLAG_CF, 0,
OPFL_ALIGN|OPFL_ADDR16,
FN_GenCallCFrag, FN_GenCallCFragSlow,
BtcRegFrag16)
DEF_INSTR(OP_BtcReg16A,
0, FLAG_CF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
BtcRegFrag16A)
DEF_INSTR(OP_BtrReg32,
0, FLAG_CF, 0,
OPFL_ALIGN,
FN_GenCallCFrag, FN_GenCallCFragSlow,
BtrRegFrag32)
DEF_INSTR(OP_BtrReg32A,
0, FLAG_CF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
BtrRegFrag32A)
DEF_INSTR(OP_BtrReg16,
0, FLAG_CF, 0,
OPFL_ALIGN|OPFL_ADDR16,
FN_GenCallCFrag, FN_GenCallCFragSlow,
BtrRegFrag16)
DEF_INSTR(OP_BtrReg16A,
0, FLAG_CF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
BtrRegFrag16A)
// Next 2 must be consecutive
DEF_INSTR(OP_BtMem32,
0, FLAG_CF, 0,
OPFL_ALIGN,
FN_GenCallCFrag, FN_GenCallCFragSlow,
BtMemFrag32)
DEF_INSTR(OP_BtMem32A,
0, FLAG_CF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
BtMemFrag32A)
// Next 2 must be consecutive
DEF_INSTR(OP_BtMem16,
0, FLAG_CF, 0,
OPFL_ALIGN|OPFL_ADDR16,
FN_GenCallCFrag, FN_GenCallCFragSlow,
BtMemFrag16)
DEF_INSTR(OP_BtMem16A,
0, FLAG_CF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
BtMemFrag16A)
// Next 2 must be consecutive
DEF_INSTR(OP_BtsMem32,
0, FLAG_CF, 0,
OPFL_ALIGN,
FN_GenCallCFrag, FN_GenCallCFragSlow,
BtsMemFrag32)
DEF_INSTR(OP_BtsMem32A,
0, FLAG_CF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
BtsMemFrag32A)
// Next 2 must be consecutive
DEF_INSTR(OP_BtsMem16,
0, FLAG_CF, 0,
OPFL_ALIGN|OPFL_ADDR16,
FN_GenCallCFrag, FN_GenCallCFragSlow,
BtsMemFrag16)
DEF_INSTR(OP_BtsMem16A,
0, FLAG_CF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
BtsMemFrag16A)
// Next 2 must be consecutive
DEF_INSTR(OP_BtcMem32,
0, FLAG_CF, 0,
OPFL_ALIGN,
FN_GenCallCFrag, FN_GenCallCFragSlow,
BtcMemFrag32)
DEF_INSTR(OP_BtcMem32A,
0, FLAG_CF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
BtcMemFrag32A)
// Next 2 must be consecutive
DEF_INSTR(OP_BtcMem16,
0, FLAG_CF, 0,
OPFL_ALIGN|OPFL_ADDR16,
FN_GenCallCFrag, FN_GenCallCFragSlow,
BtcMemFrag16)
DEF_INSTR(OP_BtcMem16A,
0, FLAG_CF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
BtcMemFrag16A)
// Next 2 must be consecutive
DEF_INSTR(OP_BtrMem32,
0, FLAG_CF, 0,
OPFL_ALIGN,
FN_GenCallCFrag, FN_GenCallCFragSlow,
BtrMemFrag32)
DEF_INSTR(OP_BtrMem32A,
0, FLAG_CF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
BtrMemFrag32A)
// Next 2 must be consecutive
DEF_INSTR(OP_BtrMem16,
0, FLAG_CF, 0,
OPFL_ALIGN|OPFL_ADDR16,
FN_GenCallCFrag, FN_GenCallCFragSlow,
BtrMemFrag16)
DEF_INSTR(OP_BtrMem16A,
0, FLAG_CF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
BtrMemFrag16A)
DEF_INSTR(OP_Pushf32,
ALLFLAGS, 0, REGESP,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
PushfFrag32)
DEF_INSTR(OP_Pushf16,
ALLFLAGS, 0, REGESP,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
PushfFrag16)
DEF_INSTR(OP_Popf32,
0, ALLFLAGS, REGESP,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
PopfFrag32)
DEF_INSTR(OP_Popf16,
0, ALLFLAGS, REGESP,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
PopfFrag16)
// Next 4 must be consecutive
DEF_INSTR(OP_Shld32,
FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
OPFL_ALIGN|OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
ShldFrag32)
DEF_INSTR(OP_Shld32A,
FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
ShldFrag32A)
DEF_INSTR(OP_ShldNoFlags32,
FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
OPFL_ALIGN,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
ShldNoFlagsFrag32)
DEF_INSTR(OP_ShldNoFlags32A,
FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
0,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
ShldNoFlagsFrag32A)
// Next 4 must be consecutive
DEF_INSTR(OP_Shld16,
FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
OPFL_ALIGN|OPFL_ADDR16|OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
ShldFrag16)
DEF_INSTR(OP_Shld16A,
FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
ShldFrag16A)
DEF_INSTR(OP_ShldNoFlags16,
FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
OPFL_ADDR16|OPFL_ALIGN,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
ShldNoFlagsFrag16)
DEF_INSTR(OP_ShldNoFlags16A,
FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
0,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
ShldNoFlagsFrag16A)
// Next 4 must be consecutive
DEF_INSTR(OP_Shrd32,
FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
OPFL_ALIGN|OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
ShrdFrag32)
DEF_INSTR(OP_Shrd32A,
FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
ShrdFrag32A)
DEF_INSTR(OP_ShrdNoFlags32,
FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
OPFL_ALIGN,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
ShrdNoFlagsFrag32)
DEF_INSTR(OP_ShrdNoFlags32A,
FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
0,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
ShrdNoFlagsFrag32A)
// Next 4 must be consecutive
DEF_INSTR(OP_Shrd16,
FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
OPFL_ALIGN|OPFL_ADDR16|OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
ShrdFrag16)
DEF_INSTR(OP_Shrd16A,
FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
ShrdFrag16A)
DEF_INSTR(OP_ShrdNoFlags16,
FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
OPFL_ADDR16|OPFL_ALIGN,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
ShrdNoFlagsFrag16)
DEF_INSTR(OP_ShrdNoFlags16A,
FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_PF, 0,
0,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
ShrdNoFlagsFrag16A)
// Next 2 must be consecutive
DEF_INSTR(OP_Bsr32,
0, FLAG_ZF, 0,
OPFL_ALIGN,
FN_GenCallCFrag, FN_GenCallCFragSlow,
BsrFrag32)
DEF_INSTR(OP_Bsr32A,
0, FLAG_ZF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
BsrFrag32A)
// Next 2 must be consecutive
DEF_INSTR(OP_Bsr16,
0, FLAG_ZF, 0,
OPFL_ALIGN|OPFL_ADDR16,
FN_GenCallCFrag, FN_GenCallCFragSlow,
BsrFrag16)
DEF_INSTR(OP_Bsr16A,
0, FLAG_ZF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
BsrFrag16A)
// Next 2 must be consecutive
DEF_INSTR(OP_Bsf32,
0, FLAG_ZF, 0,
OPFL_ALIGN,
FN_GenCallCFrag, FN_GenCallCFragSlow,
BsfFrag32)
DEF_INSTR(OP_Bsf32A,
0, FLAG_ZF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
BsfFrag32A)
// Next 2 must be consecutive
DEF_INSTR(OP_Bsf16,
0, FLAG_ZF, 0,
OPFL_ALIGN|OPFL_ADDR16,
FN_GenCallCFrag, FN_GenCallCFragSlow,
BsfFrag16)
DEF_INSTR(OP_Bsf16A,
0, FLAG_ZF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
BsfFrag16A)
// Next 4 must be consecutive
DEF_INSTR(OP_Xadd32,
0, ALLFLAGS, 0,
OPFL_ALIGN|OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
XaddFrag32)
DEF_INSTR(OP_Xadd32A,
0, ALLFLAGS, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
XaddFrag32A)
DEF_INSTR(OP_XaddNoFlags32,
0, ALLFLAGS, 0,
OPFL_ALIGN,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
XaddNoFlagsFrag32)
DEF_INSTR(OP_XaddNoFlags32A,
0, ALLFLAGS, 0,
0,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
XaddNoFlagsFrag32A)
// Next 4 must be consecutive
DEF_INSTR(OP_Xadd16,
0, ALLFLAGS, 0,
OPFL_ALIGN|OPFL_ADDR16|OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
XaddFrag16)
DEF_INSTR(OP_Xadd16A,
0, ALLFLAGS, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
XaddFrag16A)
DEF_INSTR(OP_XaddNoFlags16,
0, ALLFLAGS, 0,
OPFL_ADDR16|OPFL_ALIGN,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
XaddNoFlagsFrag16)
DEF_INSTR(OP_XaddNoFlags16A,
0, ALLFLAGS, 0,
0,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
XaddNoFlagsFrag16A)
// Next 2 must be consecutive
DEF_INSTR(OP_Xadd8,
0, ALLFLAGS, 0,
OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
XaddFrag8)
DEF_INSTR(OP_XaddNoFlags8,
0, ALLFLAGS, 0,
0,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
XaddNoFlagsFrag8)
// Next 2 must be consecutive
DEF_INSTR(OP_CmpXchg32,
0, ALLFLAGS, REGEAX,
OPFL_ALIGN,
FN_GenCallCFrag, FN_GenCallCFragSlow,
CmpXchgFrag32)
DEF_INSTR(OP_CmpXchg32A,
0, ALLFLAGS, REGEAX,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
CmpXchgFrag32A)
// Next 2 must be consecutive
DEF_INSTR(OP_CmpXchg16,
0, ALLFLAGS, REGAX,
OPFL_ALIGN|OPFL_ADDR16,
FN_GenCallCFrag, FN_GenCallCFragSlow,
CmpXchgFrag16)
DEF_INSTR(OP_CmpXchg16A,
0, ALLFLAGS, REGAX,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
CmpXchgFrag16A)
DEF_INSTR(OP_CmpXchg8,
0, ALLFLAGS, REGAL,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
CmpXchgFrag8)
DEF_INSTR(OP_CMPXCHG8B,
0, FLAG_ZF, REGEAX|REGEDX,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
CmpXchg8bFrag32)
DEF_INSTR(OP_SynchLockCMPXCHG8B,
0, FLAG_ZF, REGEAX|REGEDX,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SynchLockCmpXchg8bFrag32)
DEF_INSTR(OP_Lar32,
0, FLAG_ZF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
LarFrag32)
DEF_INSTR(OP_Lar16,
0, FLAG_ZF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
LarFrag16)
DEF_INSTR(OP_Lsl32,
0, FLAG_ZF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
LslFrag32)
DEF_INSTR(OP_Lsl16,
0, FLAG_ZF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
LslFrag16)
DEF_INSTR(OP_BOP,
ALLFLAGS, ALLFLAGS, ALLREGS,
0,
FN_GenCallCFragLoadEipNoCpu, FN_GenCallCFragLoadEipNoCpuSlow,
BOPFrag)
DEF_INSTR(OP_BOP_STOP_DECODE,
ALLFLAGS, ALLFLAGS, ALLREGS,
OPFL_STOP_COMPILE,
FN_GenCallCFragLoadEipNoCpu, FN_GenCallCFragLoadEipNoCpuSlow,
BOPFrag)
DEF_INSTR(OP_PushEs,
0, 0, REGESP,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
PushEsFrag)
DEF_INSTR(OP_PopEs,
0, 0, REGESP,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
PopEsFrag)
DEF_INSTR(OP_PushFs,
0, 0, REGESP,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
PushFsFrag)
DEF_INSTR(OP_PopFs,
0, 0, REGESP,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
PopFsFrag)
DEF_INSTR(OP_PushGs,
0, 0, REGESP,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
PushGsFrag)
DEF_INSTR(OP_PopGs,
0, 0, REGESP,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
PopGsFrag)
DEF_INSTR(OP_PushCs,
0, 0, REGESP,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
PushCsFrag)
DEF_INSTR(OP_PushSs,
0, 0, REGESP,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
PushSsFrag)
DEF_INSTR(OP_PopSs,
0, 0, REGESP,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
PopSsFrag)
DEF_INSTR(OP_PushDs,
0, 0, REGESP,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
PushDsFrag)
DEF_INSTR(OP_PopDs,
0, 0, REGESP,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
PopDsFrag)
DEF_INSTR(OP_Aas,
FLAG_AUX, FLAG_CF|FLAG_AUX, REGAX,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
AasFrag)
DEF_INSTR(OP_Daa,
FLAG_AUX|FLAG_CF, FLAG_SF|FLAG_ZF|FLAG_CF|FLAG_AUX|FLAG_PF, REGAL,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
DaaFrag)
DEF_INSTR(OP_Das,
FLAG_AUX|FLAG_CF, FLAG_SF|FLAG_ZF|FLAG_AUX|FLAG_CF|FLAG_PF, REGAL,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
DasFrag)
DEF_INSTR(OP_Aaa,
FLAG_AUX, FLAG_AUX|FLAG_CF, REGAX,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
AaaFrag)
DEF_INSTR(OP_Aad,
0, FLAG_PF|FLAG_ZF|FLAG_SF, REGAX,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
AadFrag)
DEF_INSTR(OP_Aam,
0, FLAG_SF|FLAG_PF|FLAG_ZF, REGAX,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
AamFrag)
// Next 4 must be consecutive
DEF_INSTR(OP_Imul32,
0, FLAG_OF|FLAG_CF, 0,
OPFL_ALIGN|OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
ImulFrag32)
DEF_INSTR(OP_Imul32A,
0, FLAG_OF|FLAG_CF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
ImulFrag32A)
DEF_INSTR(OP_ImulNoFlags32,
0, FLAG_OF|FLAG_CF, 0,
OPFL_ALIGN,
FN_GenCallCFrag, FN_GenCallCFragSlow,
ImulNoFlagsFrag32)
DEF_INSTR(OP_ImulNoFlags32A,
0, FLAG_OF|FLAG_CF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
ImulNoFlagsFrag32A)
// Next 4 must be consecutive
DEF_INSTR(OP_Imul16,
0, FLAG_OF|FLAG_CF, 0,
OPFL_ALIGN|OPFL_ADDR16|OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
ImulFrag16)
DEF_INSTR(OP_Imul16A,
0, FLAG_OF|FLAG_CF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
ImulFrag16A)
DEF_INSTR(OP_ImulNoFlags16,
0, FLAG_OF|FLAG_CF, 0,
OPFL_ALIGN|OPFL_ADDR16,
FN_GenCallCFrag, FN_GenCallCFragSlow,
ImulNoFlagsFrag16)
DEF_INSTR(OP_ImulNoFlags16A,
0, FLAG_OF|FLAG_CF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
ImulNoFlagsFrag16A)
// Next 4 must be consecutive
DEF_INSTR(OP_Imul3Arg32,
0, FLAG_OF|FLAG_CF, 0,
OPFL_ALIGN|OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
Imul3ArgFrag32)
DEF_INSTR(OP_Imul3Arg32A,
0, FLAG_OF|FLAG_CF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
Imul3ArgFrag32A)
DEF_INSTR(OP_Imul3ArgNoFlags32,
0, FLAG_OF|FLAG_CF, 0,
OPFL_ALIGN,
FN_GenCallCFrag, FN_GenCallCFragSlow,
Imul3ArgNoFlagsFrag32)
DEF_INSTR(OP_Imul3ArgNoFlags32A,
0, FLAG_OF|FLAG_CF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
Imul3ArgNoFlagsFrag32A)
// Next 4 must be consecutive
DEF_INSTR(OP_Imul3Arg16,
0, FLAG_OF|FLAG_CF, 0,
OPFL_ALIGN|OPFL_ADDR16|OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
Imul3ArgFrag16)
DEF_INSTR(OP_Imul3Arg16A,
0, FLAG_OF|FLAG_CF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
Imul3ArgFrag16A)
DEF_INSTR(OP_Imul3ArgNoFlags16,
0, FLAG_OF|FLAG_CF, 0,
OPFL_ALIGN|OPFL_ADDR16,
FN_GenCallCFrag, FN_GenCallCFragSlow,
Imul3ArgNoFlagsFrag16)
DEF_INSTR(OP_Imul3ArgNoFlags16A,
0, FLAG_OF|FLAG_CF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
Imul3ArgNoFlagsFrag16A)
DEF_INSTR(OP_Sahf,
0, ALLFLAGS, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SahfFrag)
DEF_INSTR(OP_Lahf,
ALLFLAGS, 0, REGAH,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
LahfFrag)
DEF_INSTR(OP_Xlat,
0, 0, REGAL,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
XlatFrag)
DEF_INSTR(OP_Cmc,
FLAG_CF, FLAG_CF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
CmcFrag)
DEF_INSTR(OP_Clc,
0, FLAG_CF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
ClcFrag)
DEF_INSTR(OP_Stc,
0, FLAG_CF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
StcFrag)
DEF_INSTR(OP_Cld,
0, 0, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
CldFrag)
DEF_INSTR(OP_Std,
0, 0, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
StdFrag)
DEF_INSTR(OP_Seto,
0, FLAG_OF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SetoFrag)
DEF_INSTR(OP_Setno,
0, FLAG_OF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SetnoFrag)
DEF_INSTR(OP_Setb,
0, FLAG_CF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SetbFrag)
DEF_INSTR(OP_Setae,
0, FLAG_CF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SetaeFrag)
DEF_INSTR(OP_Sete,
0, FLAG_ZF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SeteFrag)
DEF_INSTR(OP_Setne,
0, FLAG_ZF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SetneFrag)
DEF_INSTR(OP_Setbe,
0, FLAG_CF|FLAG_ZF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SetbeFrag)
DEF_INSTR(OP_Seta,
0, FLAG_CF|FLAG_ZF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SetaFrag)
DEF_INSTR(OP_Sets,
0, FLAG_SF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SetsFrag)
DEF_INSTR(OP_Setns,
0, FLAG_SF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SetnsFrag)
DEF_INSTR(OP_Setp,
0, FLAG_PF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SetpFrag)
DEF_INSTR(OP_Setnp,
0, FLAG_PF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SetnpFrag)
DEF_INSTR(OP_Setl,
0, FLAG_SF|FLAG_OF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SetlFrag)
DEF_INSTR(OP_Setge,
0, FLAG_SF|FLAG_OF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SetgeFrag)
DEF_INSTR(OP_Setle,
0, FLAG_SF|FLAG_ZF|FLAG_OF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SetleFrag)
DEF_INSTR(OP_Setg,
0, FLAG_SF|FLAG_ZF|FLAG_OF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SetgFrag)
DEF_INSTR(OP_Nop,
0, 0, 0,
0,
FN_PlaceNop, FN_GenCallCFragNoCpuSlow,
NopFrag)
DEF_INSTR(OP_Movsx8To32,
0, 0, 0,
0,
FN_GenMovsx8To32,
FN_GenMovsx8To32Slow,
NULL)
DEF_INSTR(OP_Movsx8To16,
0, 0, 0,
0,
FN_GenMovsx8To16,
FN_GenMovsx8To16Slow,
NULL)
DEF_INSTR(OP_Movsx16To32,
0, 0, 0,
0,
FN_GenMovsx16To32,
FN_GenMovsx16To32Slow,
NULL)
DEF_INSTR(OP_Movzx8To32,
0, 0, 0,
0,
FN_GenMovzx8To32,
FN_GenMovzx8To32Slow,
NULL)
DEF_INSTR(OP_Movzx8To16,
0, 0, 0,
0,
FN_GenMovzx8To16,
FN_GenMovzx8To16Slow,
NULL)
DEF_INSTR(OP_Movzx16To32,
0, 0, 0,
0,
FN_GenMovzx16To32,
FN_GenMovzx16To32Slow,
NULL)
DEF_INSTR(OP_Wait,
0, 0, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
WaitFrag)
DEF_INSTR(OP_Bswap32,
0, 0, 0,
0,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
BswapFrag32)
DEF_INSTR(OP_Arpl,
0, FLAG_ZF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
ArplFrag)
DEF_INSTR(OP_Verr,
0, FLAG_ZF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
VerrFrag)
DEF_INSTR(OP_Verw,
0, FLAG_ZF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
VerwFrag)
DEF_INSTR(OP_Smsw,
0, 0, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SmswFrag)
DEF_INSTR(OP_FP_FADD32,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FADD32)
DEF_INSTR(OP_FP_FMUL32,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FMUL32)
DEF_INSTR(OP_FP_FCOM32,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FCOM32)
DEF_INSTR(OP_FP_FCOMP32,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FCOMP32)
DEF_INSTR(OP_FP_FSUB32,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FSUB32)
DEF_INSTR(OP_FP_FDIV32,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FDIV32)
DEF_INSTR(OP_FP_FDIVR32,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FDIVR32)
DEF_INSTR(OP_FP_FADD_ST_STi,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FADD_ST_STi)
DEF_INSTR(OP_FP_FMUL_ST_STi,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FMUL_ST_STi)
DEF_INSTR(OP_FP_FCOM_STi,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FCOM_STi)
DEF_INSTR(OP_FP_FCOMP_STi,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FCOMP_STi)
DEF_INSTR(OP_FP_FSUB_ST_STi,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FSUB_ST_STi)
DEF_INSTR(OP_FP_FSUBR_ST_STi,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FSUBR_ST_STi)
DEF_INSTR(OP_FP_FDIV_ST_STi,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FDIV_ST_STi)
DEF_INSTR(OP_FP_FDIVR_ST_STi,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FDIVR_ST_STi)
DEF_INSTR(OP_FP_FCHS,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FCHS)
DEF_INSTR(OP_FP_FABS,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FABS)
DEF_INSTR(OP_FP_FTST,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FTST)
DEF_INSTR(OP_FP_FXAM,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FXAM)
DEF_INSTR(OP_FP_FLD1,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FLD1)
DEF_INSTR(OP_FP_FLDL2T,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FLDL2T)
DEF_INSTR(OP_FP_FLDL2E,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FLDL2E)
DEF_INSTR(OP_FP_FLDPI,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FLDPI)
DEF_INSTR(OP_FP_FLDLG2,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FLDLG2)
DEF_INSTR(OP_FP_FLDLN2,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FLDLN2)
DEF_INSTR(OP_FP_FLDZ,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FLDZ)
DEF_INSTR(OP_FP_F2XM1,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
F2XM1)
DEF_INSTR(OP_FP_FYL2X,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FYL2X)
DEF_INSTR(OP_FP_FPTAN,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FPTAN)
DEF_INSTR(OP_FP_FPATAN,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FPATAN)
DEF_INSTR(OP_FP_FXTRACT,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FXTRACT)
DEF_INSTR(OP_FP_FPREM1,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FPREM1)
DEF_INSTR(OP_FP_FDECSTP,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FDECSTP)
DEF_INSTR(OP_FP_FINCSTP,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FINCSTP)
DEF_INSTR(OP_FP_FPREM,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FPREM)
DEF_INSTR(OP_FP_FYL2XP1,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FYL2XP1)
DEF_INSTR(OP_FP_FSQRT,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FSQRT)
DEF_INSTR(OP_FP_FSINCOS,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FSINCOS)
DEF_INSTR(OP_FP_FRNDINT,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FRNDINT)
DEF_INSTR(OP_FP_FSCALE,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FSCALE)
DEF_INSTR(OP_FP_FSIN,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FSIN)
DEF_INSTR(OP_FP_FCOS,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FCOS)
DEF_INSTR(OP_FP_FLD32,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FLD32)
DEF_INSTR(OP_FP_FST32,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FST32)
DEF_INSTR(OP_FP_FSTP32,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FSTP32)
DEF_INSTR(OP_FP_FLDENV,
0, 0, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
FLDENV)
DEF_INSTR(OP_FP_FLDCW,
0, 0, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
FLDCW)
DEF_INSTR(OP_FP_FNSTENV,
0, 0, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
FNSTENV)
DEF_INSTR(OP_FP_FNSTCW,
0, 0, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
FNSTCW)
DEF_INSTR(OP_FP_FIADD32,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FIADD32)
DEF_INSTR(OP_FP_FIMUL32,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FIMUL32)
DEF_INSTR(OP_FP_FICOM32,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FICOM32)
DEF_INSTR(OP_FP_FICOMP32,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FICOMP32)
DEF_INSTR(OP_FP_FISUBR32,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FISUBR32)
DEF_INSTR(OP_FP_FISUBR16,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FISUBR16)
DEF_INSTR(OP_FP_FIDIV32,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FIDIV32)
DEF_INSTR(OP_FP_FIDIVR32,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FIDIVR32)
DEF_INSTR(OP_FP_FADD64,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FADD64)
DEF_INSTR(OP_FP_FMUL64,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FMUL64)
DEF_INSTR(OP_FP_FCOM64,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FCOM64)
DEF_INSTR(OP_FP_FSUB64,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FSUB64)
DEF_INSTR(OP_FP_FSUBR64,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FSUBR64)
DEF_INSTR(OP_FP_FDIV64,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FDIV64)
DEF_INSTR(OP_FP_FDIVR64,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FDIVR64)
DEF_INSTR(OP_FP_FADD_STi_ST,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FADD_STi_ST)
DEF_INSTR(OP_FP_FMUL_STi_ST,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FMUL_STi_ST)
DEF_INSTR(OP_FP_FSUBR_STi_ST,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FSUBR_STi_ST)
DEF_INSTR(OP_FP_FSUB_STi_ST,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FSUB_STi_ST)
DEF_INSTR(OP_FP_FDIVR_STi_ST,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FDIVR_STi_ST)
DEF_INSTR(OP_FP_FDIV_STi_ST,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FDIV_STi_ST)
DEF_INSTR(OP_FP_FFREE,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FFREE)
DEF_INSTR(OP_FP_FXCH_STi,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FXCH_STi)
DEF_INSTR(OP_FP_FST_STi,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FST_STi)
DEF_INSTR(OP_FP_FSTP_STi,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FSTP_STi)
DEF_INSTR(OP_FP_FUCOM,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FUCOM)
DEF_INSTR(OP_FP_FUCOMP,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FUCOMP)
DEF_INSTR(OP_FP_FIADD16,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FIADD16)
DEF_INSTR(OP_FP_FIMUL16,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FIMUL16)
DEF_INSTR(OP_FP_FICOM16,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FICOM16)
DEF_INSTR(OP_FP_FICOMP16,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FICOMP16)
DEF_INSTR(OP_FP_FISUB16,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FISUB16)
DEF_INSTR(OP_FP_FIDIV16,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FIDIV16)
DEF_INSTR(OP_FP_FIDIVR16,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FIDIVR16)
DEF_INSTR(OP_FP_FADDP_STi_ST,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FADDP_STi_ST)
DEF_INSTR(OP_FP_FMULP_STi_ST,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FMULP_STi_ST)
DEF_INSTR(OP_FP_FCOMPP,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FCOMPP)
DEF_INSTR(OP_FP_FSUBP_STi_ST,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FSUBP_STi_ST)
DEF_INSTR(OP_FP_FSUBRP_STi_ST,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FSUBRP_STi_ST)
DEF_INSTR(OP_FP_FDIVRP_STi_ST,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FDIVRP_STi_ST)
DEF_INSTR(OP_FP_FILD16,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FILD16)
DEF_INSTR(OP_FP_FIST16,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FIST16)
DEF_INSTR(OP_FP_FBLD,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FBLD)
DEF_INSTR(OP_FP_FILD64,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FILD64)
DEF_INSTR(OP_FP_FBSTP,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FBSTP)
DEF_INSTR(OP_FP_FLD80,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FLD80)
DEF_INSTR(OP_FP_FSTP80,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FSTP80)
DEF_INSTR(OP_FP_FISUB32,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FISUB32)
DEF_INSTR(OP_FP_FCOMP64,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FCOMP64)
DEF_INSTR(OP_FP_FLD64,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FLD64)
DEF_INSTR(OP_FP_FST64,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FST64)
DEF_INSTR(OP_FP_FSTP64,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FSTP64)
DEF_INSTR(OP_FP_FRSTOR,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FRSTOR)
DEF_INSTR(OP_FP_FNSAVE,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FNSAVE)
DEF_INSTR(OP_FP_FDIVP_STi_ST,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FDIVP_STi_ST)
DEF_INSTR(OP_FP_FISTP16,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FISTP16)
DEF_INSTR(OP_FP_FISTP64,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FISTP64)
DEF_INSTR(OP_FP_FLD_STi,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FLD_STi)
DEF_INSTR(OP_FP_FUCOMPP,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FUCOMPP)
DEF_INSTR(OP_FP_FILD32,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FILD32)
DEF_INSTR(OP_FP_FIST32,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FIST32)
DEF_INSTR(OP_FP_FISTP32,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FISTP32)
DEF_INSTR(OP_FP_FNCLEX,
0, 0, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
FNCLEX)
DEF_INSTR(OP_FP_FNINIT,
0, 0, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
FNINIT)
DEF_INSTR(OP_FP_FNSTSW,
0, 0, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
FNSTSW)
DEF_INSTR(OP_FP_FSUBR32,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
FSUBR32)
DEF_INSTR(OP_FP_FNOP,
0, 0, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
FNOP)
DEF_INSTR(OP_CPUID,
0, 0, GP_EAX|GP_EBX|GP_ECX|GP_EDX,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
CPUID)
DEF_INSTR(OP_SynchLockAdd32,
0, ALLFLAGS, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SynchLockAddFrag32)
DEF_INSTR(OP_SynchLockAdd16,
0, ALLFLAGS, 0,
OPFL_ADDR16,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SynchLockAddFrag16)
DEF_INSTR(OP_SynchLockAdd8,
0, ALLFLAGS, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SynchLockAddFrag8)
DEF_INSTR(OP_SynchLockSub32,
0, ALLFLAGS, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SynchLockSubFrag32)
DEF_INSTR(OP_SynchLockSub16,
0, ALLFLAGS, 0,
OPFL_ADDR16,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SynchLockSubFrag16)
DEF_INSTR(OP_SynchLockSub8,
0, ALLFLAGS, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SynchLockSubFrag8)
DEF_INSTR(OP_SynchLockNeg32,
0, ALLFLAGS, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SynchLockNegFrag32)
DEF_INSTR(OP_SynchLockNeg16,
0, ALLFLAGS, 0,
OPFL_ADDR16,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SynchLockNegFrag16)
DEF_INSTR(OP_SynchLockNeg8,
0, ALLFLAGS, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SynchLockNegFrag8)
DEF_INSTR(OP_SynchLockInc32,
0, FLAG_AUX|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SynchLockIncFrag32)
DEF_INSTR(OP_SynchLockInc16,
0, FLAG_AUX|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
OPFL_ADDR16,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SynchLockIncFrag16)
DEF_INSTR(OP_SynchLockInc8,
0, FLAG_AUX|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SynchLockIncFrag8)
DEF_INSTR(OP_SynchLockDec32,
0, FLAG_AUX|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SynchLockDecFrag32)
DEF_INSTR(OP_SynchLockDec16,
0, FLAG_AUX|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
OPFL_ADDR16,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SynchLockDecFrag16)
DEF_INSTR(OP_SynchLockDec8,
0, FLAG_AUX|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SynchLockDecFrag8)
DEF_INSTR(OP_SynchLockAdc32,
FLAG_CF, ALLFLAGS, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SynchLockAdcFrag32)
DEF_INSTR(OP_SynchLockAdc16,
FLAG_CF, ALLFLAGS, 0,
OPFL_ADDR16,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SynchLockAdcFrag16)
DEF_INSTR(OP_SynchLockAdc8,
FLAG_CF, ALLFLAGS, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SynchLockAdcFrag8)
DEF_INSTR(OP_SynchLockSbb32,
FLAG_CF, ALLFLAGS, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SynchLockSbbFrag32)
DEF_INSTR(OP_SynchLockSbb16,
FLAG_CF, ALLFLAGS, 0,
OPFL_ADDR16,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SynchLockSbbFrag16)
DEF_INSTR(OP_SynchLockSbb8,
FLAG_CF, ALLFLAGS, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SynchLockSbbFrag8)
DEF_INSTR(OP_SynchLockOr32,
0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SynchLockOrFrag32)
DEF_INSTR(OP_SynchLockOr16,
0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
OPFL_ADDR16,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SynchLockOrFrag16)
DEF_INSTR(OP_SynchLockOr8,
0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SynchLockOrFrag8)
DEF_INSTR(OP_SynchLockAnd32,
0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SynchLockAndFrag32)
DEF_INSTR(OP_SynchLockAnd16,
0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
OPFL_ADDR16,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SynchLockAndFrag16)
DEF_INSTR(OP_SynchLockAnd8,
0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SynchLockAndFrag8)
DEF_INSTR(OP_SynchLockXor32,
0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SynchLockXorFrag32)
DEF_INSTR(OP_SynchLockXor16,
0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
OPFL_ADDR16,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SynchLockXorFrag16)
DEF_INSTR(OP_SynchLockXor8,
0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SynchLockXorFrag8)
DEF_INSTR(OP_SynchLockNot32,
0, 0, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SynchLockNotFrag32)
DEF_INSTR(OP_SynchLockNot16,
0, 0, 0,
OPFL_ADDR16,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SynchLockNotFrag16)
DEF_INSTR(OP_SynchLockNot8,
0, 0, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SynchLockNotFrag8)
DEF_INSTR(OP_SynchLockBtsMem32,
0, FLAG_CF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SynchLockBtsMemFrag32)
DEF_INSTR(OP_SynchLockBtsMem16,
0, FLAG_CF, 0,
OPFL_ADDR16,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SynchLockBtsMemFrag16)
DEF_INSTR(OP_SynchLockBtrMem32,
0, FLAG_CF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SynchLockBtrMemFrag32)
DEF_INSTR(OP_SynchLockBtrMem16,
0, FLAG_CF, 0,
OPFL_ADDR16,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SynchLockBtrMemFrag16)
DEF_INSTR(OP_SynchLockBtcMem32,
0, FLAG_CF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SynchLockBtcMemFrag32)
DEF_INSTR(OP_SynchLockBtcMem16,
0, FLAG_CF, 0,
OPFL_ADDR16,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SynchLockBtcMemFrag16)
DEF_INSTR(OP_SynchLockBtsReg32,
0, FLAG_CF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SynchLockBtsRegFrag32)
DEF_INSTR(OP_SynchLockBtsReg16,
0, FLAG_CF, 0,
OPFL_ADDR16,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SynchLockBtsRegFrag16)
DEF_INSTR(OP_SynchLockBtrReg32,
0, FLAG_CF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SynchLockBtrRegFrag32)
DEF_INSTR(OP_SynchLockBtrReg16,
0, FLAG_CF, 0,
OPFL_ADDR16,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SynchLockBtrRegFrag16)
DEF_INSTR(OP_SynchLockBtcReg32,
0, FLAG_CF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SynchLockBtcRegFrag32)
DEF_INSTR(OP_SynchLockBtcReg16,
0, FLAG_CF, 0,
OPFL_ADDR16,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SynchLockBtcRegFrag16)
DEF_INSTR(OP_SynchLockXchg32,
0, 0, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SynchLockXchgFrag32)
DEF_INSTR(OP_SynchLockXchg16,
0, 0, 0,
OPFL_ADDR16,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SynchLockXchgFrag16)
DEF_INSTR(OP_SynchLockXchg8,
0, 0, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SynchLockXchgFrag8)
DEF_INSTR(OP_SynchLockXadd32,
0, ALLFLAGS, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SynchLockXaddFrag32)
DEF_INSTR(OP_SynchLockXadd16,
0, ALLFLAGS, 0,
OPFL_ADDR16,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SynchLockXaddFrag16)
DEF_INSTR(OP_SynchLockXadd8,
0, ALLFLAGS, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SynchLockXaddFrag8)
DEF_INSTR(OP_SynchLockCmpXchg32,
0, ALLFLAGS, REGEAX,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SynchLockCmpXchgFrag32)
DEF_INSTR(OP_SynchLockCmpXchg16,
0, ALLFLAGS, REGAX,
OPFL_ADDR16,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SynchLockCmpXchgFrag16)
DEF_INSTR(OP_SynchLockCmpXchg8,
0, ALLFLAGS, REGAL,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
SynchLockCmpXchgFrag8)
// Next 2 must be consecutive
DEF_INSTR(OP_OPT_SetupStack,
0, ALLFLAGS, REGEBP|REGESP,
OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
OPT_SetupStackFrag)
DEF_INSTR(OP_OPT_SetupStackNoFlags,
0, ALLFLAGS, REGEBP|REGESP,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
OPT_SetupStackNoFlagsFrag)
DEF_INSTR(OP_OPT_PushEbxEsiEdi,
0, 0, REGESP,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
OPT_PushEbxEsiEdiFrag)
DEF_INSTR(OP_OPT_PopEdiEsiEbx,
0, 0, REGESP|REGEBX|REGESI|REGEDI,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
OPT_PopEdiEsiEbxFrag)
// Next 2 must be consecutive
DEF_INSTR(OP_OPT_ZERO32,
0, ALLFLAGS, 0,
OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
OPT_ZEROFrag32)
DEF_INSTR(OP_OPT_ZERONoFlags32,
0, ALLFLAGS, 0,
0,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
OPT_ZERONoFlagsFrag32)
DEF_INSTR(OP_OPT_FastTest32,
0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
OPT_FastTestFrag32)
DEF_INSTR(OP_OPT_FastTest16,
0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
OPFL_ADDR16,
FN_GenCallCFrag, FN_GenCallCFragSlow,
OPT_FastTestFrag16)
DEF_INSTR(OP_OPT_FastTest8,
0, FLAG_CF|FLAG_ZF|FLAG_SF|FLAG_OF|FLAG_PF, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
OPT_FastTestFrag8)
// Next 2 must be consecutive
DEF_INSTR(OP_OPT_CmpSbb32,
0, ALLFLAGS, 0,
OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
OPT_CmpSbbFrag32)
DEF_INSTR(OP_OPT_CmpSbbNoFlags32,
0, ALLFLAGS, 0,
0,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
OPT_CmpSbbNoFlagsFrag32)
// Next 2 must be consecutive
DEF_INSTR(OP_OPT_CmpSbbNeg32,
0, ALLFLAGS, 0,
OPFL_HASNOFLAGS,
FN_GenCallCFrag, FN_GenCallCFragSlow,
OPT_CmpSbbNegFrag32)
DEF_INSTR(OP_OPT_CmpSbbNegNoFlags32,
0, ALLFLAGS, 0,
0,
FN_GenCallCFragNoCpu, FN_GenCallCFragNoCpuSlow,
OPT_CmpSbbNegNoFlagsFrag32)
DEF_INSTR(OP_OPT_Push232,
0, 0, REGESP,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
OPT_Push2Frag32)
DEF_INSTR(OP_OPT_Pop232,
0, 0, REGESP,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
OPT_Pop2Frag32)
// Next 2 must be consecutive
DEF_INSTR(OP_OPT_CwdIdiv32,
0, 0, REGEAX|REGEDX,
OPFL_ALIGN,
FN_GenCallCFrag, FN_GenCallCFragSlow,
OPT_CwdIdivFrag32)
DEF_INSTR(OP_OPT_CwdIdiv32A,
0, 0, REGEAX|REGEDX,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
OPT_CwdIdivFrag32A)
// Next 2 must be consecutive
DEF_INSTR(OP_OPT_CwdIdiv16,
0, 0, REGAX|REGDX,
OPFL_ALIGN|OPFL_ADDR16,
FN_GenCallCFrag, FN_GenCallCFragSlow,
OPT_CwdIdivFrag16)
DEF_INSTR(OP_OPT_CwdIdiv16A,
0, 0, REGAX|REGDX,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
OPT_CwdIdivFrag16A)
DEF_INSTR(OP_OPT_FNSTSWAxSahf,
0, FLAG_CF|FLAG_PF|FLAG_AUX|FLAG_ZF|FLAG_SF, REGAX,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
OPT_FNSTSWAxSahf)
DEF_INSTR(OP_OPT_FSTP_ST0,
0, 0, 0,
0,
FN_GenCallCFragLoadEip, FN_GenCallCFragLoadEipSlow,
OPT_FSTP_ST0)
DEF_INSTR(OP_Rdtsc,
0, 0, 0,
0,
FN_GenCallCFrag, FN_GenCallCFragSlow,
Rdtsc)
// Undefine DEF_INSTR so this file can be included multiple times
#undef DEF_INSTR