* insns.dat is used to generate all i386*.inc files

This commit is contained in:
peter 1999-10-27 16:11:27 +00:00
parent 63158d246c
commit f5a9e30c98
11 changed files with 6275 additions and 3060 deletions

View File

@ -25,7 +25,7 @@ unit aasm;
interface
uses
globtype,systems,cobjects,files,globals;
globtype,systems,cobjects,globals;
type
@ -350,7 +350,7 @@ type
implementation
uses
strings,verbose;
strings,files,verbose;
{****************************************************************************
TAI
@ -987,7 +987,10 @@ uses
end.
{
$Log$
Revision 1.64 1999-09-20 16:38:51 peter
Revision 1.65 1999-10-27 16:11:27 peter
* insns.dat is used to generate all i386*.inc files
Revision 1.64 1999/09/20 16:38:51 peter
* cs_create_smart instead of cs_smartlink
* -CX is create smartlink
* -CD is create dynamic, but does nothing atm.

View File

@ -699,7 +699,7 @@ unit ag386att;
{ call maybe not translated to call }
s:=#9+att_op2str[op]+cond2str[paicpu(hp)^.condition];
if (not calljmp) and
(not att_nosuffix[op]) and
(att_needsuffix[op]) and
not(
(paicpu(hp)^.oper[0].typ=top_reg) and
(paicpu(hp)^.oper[0].reg in [R_ST..R_ST7])
@ -873,7 +873,10 @@ unit ag386att;
end.
{
$Log$
Revision 1.17 1999-09-27 23:36:33 peter
Revision 1.18 1999-10-27 16:11:28 peter
* insns.dat is used to generate all i386*.inc files
Revision 1.17 1999/09/27 23:36:33 peter
* fixed -al with macro's
Revision 1.16 1999/09/21 20:53:21 florian

View File

@ -35,7 +35,7 @@ uses
const
{ Size of the instruction table converted by nasmconv.pas }
instabentries = 1292;
instabentries = 1309;
maxinfolen = 8;
{ By default we want everything }
@ -146,6 +146,7 @@ const
OT_UNITY = $00802000; { for shift/rotate instructions }
{Instruction flags }
IF_NONE = $00000000;
IF_SM = $00000001; { size match first two operands }
IF_SM2 = $00000002;
IF_SB = $00000004; { unsized operands can't be non-byte }
@ -180,80 +181,8 @@ const
IF_PASS2 = $80000000; { if the instruction can change in a second pass }
type
TAsmOp=(A_None,
{ prefixes }
A_LOCK,A_REP,A_REPE,A_REPNE,A_REPNZ,A_REPZ,
A_CS,A_ES,A_DS,A_FS,A_GS,A_SS,
{ normal }
A_AAA, A_AAD, A_AAM, A_AAS, A_ADC, A_ADD, A_AND, A_ARPL,
A_BOUND, A_BSF, A_BSR, A_BSWAP, A_BT, A_BTC, A_BTR, A_BTS,
A_CALL, A_CBW, A_CDQ, A_CLC, A_CLD, A_CLI, A_CLTS, A_CMC, A_CMP,
A_CMPSB, A_CMPSD, A_CMPSW, A_CMPXCHG, A_CMPXCHG486, A_CMPXCHG8B,
A_CPUID, A_CWD, A_CWDE, A_DAA, A_DAS, A_DEC, A_DIV,
A_EMMS, A_ENTER, A_EQU, A_F2XM1, A_FABS,
A_FADD, A_FADDP, A_FBLD, A_FBSTP, A_FCHS, A_FCLEX, A_FCMOVB,
A_FCMOVBE, A_FCMOVE, A_FCMOVNB, A_FCMOVNBE, A_FCMOVNE,
A_FCMOVNU, A_FCMOVU, A_FCOM, A_FCOMI, A_FCOMIP, A_FCOMP,
A_FCOMPP, A_FCOS, A_FDECSTP, A_FDISI, A_FDIV, A_FDIVP, A_FDIVR,
A_FDIVRP, A_FEMMS,
A_FENI, A_FFREE, A_FIADD, A_FICOM, A_FICOMP, A_FIDIV,
A_FIDIVR, A_FILD, A_FIMUL, A_FINCSTP, A_FINIT, A_FIST, A_FISTP,
A_FISUB, A_FISUBR, A_FLD, A_FLD1, A_FLDCW, A_FLDENV, A_FLDL2E,
A_FLDL2T, A_FLDLG2, A_FLDLN2, A_FLDPI, A_FLDZ, A_FMUL, A_FMULP,
A_FNCLEX, A_FNDISI, A_FNENI, A_FNINIT, A_FNOP, A_FNSAVE,
A_FNSTCW, A_FNSTENV, A_FNSTSW, A_FPATAN, A_FPREM, A_FPREM1,
A_FPTAN, A_FRNDINT, A_FRSTOR, A_FSAVE, A_FSCALE, A_FSETPM,
A_FSIN, A_FSINCOS, A_FSQRT, A_FST, A_FSTCW, A_FSTENV, A_FSTP,
A_FSTSW, A_FSUB, A_FSUBP, A_FSUBR, A_FSUBRP, A_FTST, A_FUCOM,
A_FUCOMI, A_FUCOMIP, A_FUCOMP, A_FUCOMPP, A_FWAIT,A_FXAM, A_FXCH,
A_FXTRACT, A_FYL2X, A_FYL2XP1, A_HLT, A_IBTS, A_ICEBP, A_IDIV,
A_IMUL, A_IN, A_INC, A_INSB, A_INSD, A_INSW, A_INT,
A_INT01, A_INT1, A_INT03, A_INT3, A_INTO, A_INVD, A_INVLPG, A_IRET,
A_IRETD, A_IRETW, A_JCXZ, A_JECXZ, A_JMP, A_LAHF, A_LAR, A_LDS,
A_LEA, A_LEAVE, A_LES, A_LFS, A_LGDT, A_LGS, A_LIDT, A_LLDT,
A_LMSW, A_LOADALL, A_LOADALL286, A_LODSB, A_LODSD, A_LODSW,
A_LOOP, A_LOOPE, A_LOOPNE, A_LOOPNZ, A_LOOPZ, A_LSL, A_LSS,
A_LTR, A_MOV, A_MOVD, A_MOVQ, A_MOVSB, A_MOVSD, A_MOVSW,
A_MOVSX, A_MOVZX, A_MUL, A_NEG, A_NOP, A_NOT, A_OR, A_OUT,
A_OUTSB, A_OUTSD, A_OUTSW, A_PACKSSDW, A_PACKSSWB, A_PACKUSWB,
A_PADDB, A_PADDD, A_PADDSB, A_PADDSIW, A_PADDSW, A_PADDUSB,
A_PADDUSW, A_PADDW, A_PAND, A_PANDN, A_PAVEB,
A_PAVGUSB, A_PCMPEQB, A_PCMPEQD, A_PCMPEQW, A_PCMPGTB, A_PCMPGTD,
A_PCMPGTW, A_PDISTIB,
A_PF2ID, A_PFACC, A_PFADD, A_PFCMPEQ, A_PFCMPGE, A_PFCMPGT,
A_PFMAX, A_PFMIN, A_PFMUL, A_PFRCP, A_PFRCPIT1, A_PFRCPIT2,
A_PFRSQIT1, A_PFRSQRT, A_PFSUB, A_PFSUBR, A_PI2FD,
A_PMACHRIW, A_PMADDWD, A_PMAGW, A_PMULHRIW, A_PMULHRWA,
A_PMULHRWC, A_PMULHW, A_PMULLW, A_PMVGEZB, A_PMVLZB, A_PMVNZB,
A_PMVZB, A_POP, A_POPA, A_POPAD, A_POPAW, A_POPF, A_POPFD,
A_POPFW, A_POR, A_PREFETCH, A_PREFETCHW,
A_PSLLD, A_PSLLQ, A_PSLLW, A_PSRAD, A_PSRAW,
A_PSRLD, A_PSRLQ, A_PSRLW, A_PSUBB, A_PSUBD, A_PSUBSB,
A_PSUBSIW, A_PSUBSW, A_PSUBUSB, A_PSUBUSW, A_PSUBW, A_PUNPCKHBW,
A_PUNPCKHDQ, A_PUNPCKHWD, A_PUNPCKLBW, A_PUNPCKLDQ, A_PUNPCKLWD,
A_PUSH, A_PUSHA, A_PUSHAD, A_PUSHAW, A_PUSHF, A_PUSHFD,
A_PUSHFW, A_PXOR, A_RCL, A_RCR, A_RDSHR, A_RDMSR, A_RDPMC, A_RDTSC,
A_RESB, A_RET, A_RETF, A_RETN,
A_ROL, A_ROR, A_RSDC, A_RSLDT, A_RSM, A_SAHF, A_SAL, A_SALC, A_SAR, A_SBB,
A_SCASB, A_SCASD, A_SCASW, A_SGDT, A_SHL, A_SHLD, A_SHR, A_SHRD,
A_SIDT, A_SLDT, A_SMI, A_SMINT, A_SMINTOLD, A_SMSW, A_STC, A_STD, A_STI, A_STOSB,
A_STOSD, A_STOSW, A_STR, A_SUB, A_SVDC, A_SVLDT, A_SVTS, A_SYSCALL, A_SYSENTER,
A_SYSEXIT, A_SYSRET, A_TEST, A_UD1, A_UD2, A_UMOV, A_VERR, A_VERW,
A_WAIT, A_WBINVD, A_WRSHR, A_WRMSR, A_XADD, A_XBTS, A_XCHG, A_XLAT, A_XLATB,
A_XOR, A_CMOVcc, A_Jcc, A_SETcc,
A_ADDPS, A_ADDSS, A_ANDNPS, A_ANDPS, A_CMPEQPS, A_CMPEQSS, A_CMPLEPS,
A_CMPLESS, A_CMPLTPS, A_CMPLTSS, A_CMPNEQPS, A_CMPNEQSS, A_CMPNLEPS,
A_CMPNLESS, A_CMPNLTPS, A_CMPNLTSS, A_CMPORDPS, A_CMPORDSS, A_CMPUNORDPS, A_CMPUNORDSS,
A_CMPPS, A_CMPSS, A_COMISS, A_CVTPI2PS, A_CVTPS2PI, A_CVTSI2SS, A_CVTSS2SI,
A_CVTTPS2PI, A_CVTTSS2SI, A_DIVPS, A_DIVSS, A_LDMXCSR, A_MAXPS, A_MAXSS, A_MINPS,
A_MINSS, A_MOVAPS, A_MOVHPS, A_MOVLHPS, A_MOVLPS, A_MOVHLPS, A_MOVMSKPS,
A_MOVNTPS, A_MOVSS, A_MOVUPS, A_MULPS, A_MULSS, A_ORPS, A_RCPPS, A_RCPSS,
A_RSQRTPS, A_RSQRTSS, A_SHUFPS, A_SQRTPS, A_SQRTSS, A_STMXCSR, A_SUBPS, A_SUBSS,
A_UCOMISS, A_UNPCKHPS, A_UNPCKLPS, A_XORPS, A_FXRSTOR, A_FXSAVE, A_PREFETCHNTA,
A_PREFETCHT0, A_PREFETCHT1,A_PREFETCHT2,
A_SFENCE, A_MASKMOVQ, A_MOVNTQ, A_PAVGB, A_PAVGW, A_PEXTRW, A_PINSRW, A_PMAXSW,
A_PMAXUB, A_PMINSW, A_PMINUB, A_PMOVMSKB, A_PMULHUW, A_PSADBW, A_PSHUFW
);
TAsmOp=
{$i i386op.inc}
op2strtable=array[tasmop] of string[10];
@ -273,211 +202,16 @@ const
{$ifdef INTELOP}
int_op2str:op2strtable=('<none>',
{ prefixes }
'lock','rep','repe','repne','repnz','repz',
'segcs','seges','segds','segfs','seggs','segss',
{ normal }
'aaa','aad','aam','aas','adc','add','and','arpl',
'bound','bsf','bsr','bswap','bt','btc','btr','bts',
'call','cbw','cdq','clc','cld','cli','clts','cmc','cmp',
'cmpsb','cmpsd','cmpsw','cmpxchg','cmpxchg486','cmpxchg8b',
'cpuid','cwd','cwde','daa','das','dec','div','emms',
'enter','equ','f2xm1','fabs',
'fadd','faddp','fbld','fbstp','fchs','fclex','fcmovb',
'fcmovbe','fcmove','fcmovnb','fcmovnbe','fcmovne',
'fcmovnu','fcmovu','fcom','fcomi','fcomip','fcomp',
'fcompp','fcos','fdecstp','fdisi','fdiv','fdivp','fdivr',
'fdivrp',
'femms',
'feni','ffree','fiadd','ficom','ficomp','fidiv',
'fidivr','fild','fimul','fincstp','finit','fist','fistp',
'fisub','fisubr','fld','fld1','fldcw','fldenv','fldl2e',
'fldl2t','fldlg2','fldln2','fldpi','fldz','fmul','fmulp',
'fnclex','fndisi','fneni','fninit','fnop','fnsave',
'fnstcw','fnstenv','fnstsw','fpatan','fprem','fprem1',
'fptan','frndint','frstor','fsave','fscale','fsetpm',
'fsin','fsincos','fsqrt','fst','fstcw','fstenv','fstp',
'fstsw','fsub','fsubp','fsubr','fsubrp','ftst','fucom',
'fucomi','fucomip','fucomp','fucompp','fwait','fxam','fxch',
'fxtract','fyl2x','fyl2xp1','hlt','ibts','icebp','idiv',
'imul','in','inc','insb','insd','insw','int',
'int01','int1','int03','int3','into','invd','invlpg','iret',
'iretd','iretw','jcxz','jecxz','jmp','lahf','lar','lds',
'lea','leave','les','lfs','lgdt','lgs','lidt','lldt',
'lmsw','loadall','loadall286','lodsb','lodsd','lodsw',
'loop','loope','loopne','loopnz','loopz','lsl','lss',
'ltr','mov','movd','movq','movsb','movsd','movsw',
'movsx','movzx','mul','neg','nop','not','or','out',
'outsb','outsd','outsw','packssdw','packsswb','packuswb',
'paddb','paddd','paddsb','paddsiw','paddsw','paddusb',
'paddusw','paddw','pand','pandn','paveb',
'pavgusb','pcmpeqb',
'pcmpeqd','pcmpeqw','pcmpgtb','pcmpgtd','pcmpgtw',
'pdistib',
'pf2id','pfacc','pfadd','pfcmpeq','pfcmpge','pfcmpgt',
'pfmax','pfmin','pfmul','pfrcp','pfrcpit1','pfrcpit2',
'pfrsqit1','pfrsqrt','pfsub','pfsubr','pi2fd',
'pmachriw','pmaddwd','pmagw','pmulhriw','pmulhrwa','pmulhrwc',
'pmulhw','pmullw','pmvgezb','pmvlzb','pmvnzb',
'pmvzb','pop','popa','popad','popaw','popf','popfd',
'popfw','por',
'prefetch','prefetchw','pslld','psllq','psllw','psrad','psraw',
'psrld','psrlq','psrlw','psubb','psubd','psubsb',
'psubsiw','psubsw','psubusb','psubusw','psubw','punpckhbw',
'punpckhdq','punpckhwd','punpcklbw','punpckldq','punpcklwd',
'push','pusha','pushad','pushaw','pushf','pushfd',
'pushfw','pxor','rcl','rcr','rdshr','rdmsr','rdpmc','rdtsc',
'resb','ret','retf','retn',
'rol','ror','rsdc','rsldt','rsm','sahf','sal','salc','sar','sbb',
'scasb','scasd','scasw','sgdt','shl','shld','shr','shrd',
'sidt','sldt','smi','smint','smintold','smsw','stc','std','sti','stosb',
'stosd','stosw','str','sub','svdc','svldt','svts','syscall','sysenter',
'sysexit','sysret','test','ud1','ud2','umov','verr','verw',
'wait','wbinvd','wrshr','wrmsr','xadd','xbts','xchg','xlat','xlatb',
'xor','cmov','j','set',
'addps','addss','andnps','andps','cmpeqps','cmpeqss','cmpleps','cmpless','cmpltps',
'cmpltss','cmpneqps','cmpneqss','cmpnleps','cmpnless','cmpnltps','cmpnltss',
'cmpordps','cmpordss','cmpunordps','cmpunordss','cmpps','cmpss','comiss','cvtpi2ps','cvtps2pi',
'cvtsi2ss','cvtss2si','cvttps2pi','cvttss2si','divps','divss','ldmxcsr','maxps',
'maxss','minps','minss','movaps','movhps','movlhps','movlps','movhlps','movmskps',
'movntps','movss','movups','mulps','mulss','orps','rcpps','rcpss','rsqrtps','rsqrtss',
'shufps','sqrtps','sqrtss','stmxcsr','subps','subss','ucomiss','unpckhps','unpcklps',
'xorps','fxrstor','fxsave','prefetchnta','prefetcht0','prefetcht1','prefetcht2',
'sfence','maskmovq','movntq','pavgb','pavgw','pextrw','pinsrw','pmaxsw','pmaxub',
'pminsw','pminub','pmovmskb','pmulhuw','psadbw','pshufw'
);
int_op2str:op2strtable=
{$i i386int.inc}
{$endif INTELOP}
{$ifdef ATTOP}
att_op2str:op2strtable=('<none>',
{ prefixes }
'lock','rep','repe','repne','repnz','repz',
'cs','es','ds','fs','gs','ss',
{ normal }
'aaa','aad','aam','aas','adc','add','and','arpl',
'bound','bsf','bsr','bswap','bt','btc','btr','bts',
'call','cbtw','cltd','clc','cld','cli','clts','cmc','cmp',
'cmpsb','cmpsl','cmpsw','cmpxchg','cmpxchg486','cmpxchg8b',
'cpuid','cwtd','cwtl','daa','das','dec','div',
'emms','enter','equ','f2xm1','fabs',
'fadd','faddp','fbld','fbstp','fchs','fclex','fcmovb',
'fcmovbe','fcmove','fcmovnb','fcmovnbe','fcmovne',
'fcmovnu','fcmovu','fcom','fcomi','fcomip','fcomp',
'fcompp','fcos','fdecstp','fdisi','fdiv','fdivp','fdivr',
'fdivrp','femms',
'feni','ffree','fiadd','ficom','ficomp','fidiv',
'fidivr','fild','fimul','fincstp','finit','fist','fistp',
'fisub','fisubr','fld','fld1','fldcw','fldenv','fldl2e',
'fldl2t','fldlg2','fldln2','fldpi','fldz','fmul','fmulp',
'fnclex','fndisi','fneni','fninit','fnop','fnsave',
'fnstcw','fnstenv','fnstsw','fpatan','fprem','fprem1',
'fptan','frndint','frstor','fsave','fscale','fsetpm',
'fsin','fsincos','fsqrt','fst','fstcw','fstenv','fstp',
'fstsw','fsub','fsubp','fsubr','fsubrp','ftst','fucom',
'fucomi','fucomip','fucomp','fucompp','fwait','fxam','fxch',
'fxtract','fyl2x','fyl2xp1','hlt','ibts','icebp','idiv',
'imul','in','inc','insb','insl','insw','int',
'int01','int1','int03','int3','into','invd','invlpg','iret',
'iretd','iretw','jcxz','jecxz','jmp','lahf','lar','lds',
'lea','leave','les','lfs','lgdt','lgs','lidt','lldt',
'lmsw','loadall','loadall286','lodsb','lodsl','lodsw',
'loop','loope','loopne','loopnz','loopz','lsl','lss',
'ltr','mov','movd','movq','movsb','movsl','movsw',
'movs','movz','mul','neg','nop','not','or','out',
'outsb','outsl','outsw','packssd','packssw','packusw',
'paddb','paddd','paddsb','paddsiw','paddsw','paddusb',
'paddusw','paddw','pand','pandn','paveb',
'pavgusb','pcmpeqb',
'pcmpeqd','pcmpeqw','pcmpgtb','pcmpgtd','pcmpgtw',
'pdistib',
'pf2id','pfacc','pfadd','pfcmpeq','pfcmpge','pfcmpgt',
'pfmax','pfmin','pfmul','pfrcp','pfrcpit1','pfrcpit2',
'pfrsqit1','pfrsqrt','pfsub','pfsubr','pi2fd',
'pmachriw','pmaddwd','pmagw','pmulhriw','pmulhrwa','pmulhrwc',
'pmulhw','pmullw','pmvgezb','pmvlzb','pmvnzb',
'pmvzb','pop','popa','popal','popaw','popf','popfl',
'popfw','por',
'prefetch','prefetchw','pslld','psllq','psllw','psrad','psraw',
'psrld','psrlq','psrlw','psubb','psubd','psubsb',
'psubsiw','psubsw','psubusb','psubusw','psubw','punpckhbw',
'punpckhdq','punpckhwd','punpcklbw','punpckldq','punpcklwd',
'push','pusha','pushal','pushaw','pushf','pushfl',
'pushfw','pxor','rcl','rcr','rdshr','rdmsr','rdpmc','rdtsc',
'resb','ret','retf','retn',
'rol','ror','rsdc','rsldt','rsm','sahf','sal','salc','sar','sbb',
'scasb','scasl','scasw','sgdt','shl','shld','shr','shrd',
'sidt','sldt','smi','smint','smintold','smsw','stc','std','sti','stosb',
'stosl','stosw','str','sub','svdc','svldt','svts','syscall','sysenter',
'sysexit','sysret','test','ud1','ud2','umov','verr','verw',
'wait','wbinvd','wrshr','wrmsr','xadd','xbts','xchg','xlat','xlatb',
'xor','cmov','j','set',
'addps','addss','andnps','andps','cmpeqps','cmpeqss','cmpleps','cmpless','cmpltps',
'cmpltss','cmpneqps','cmpneqss','cmpnleps','cmpnless','cmpnltps','cmpnltss',
'cmpordps','cmpordss','cmpunordps','cmpunordss','cmpps','cmpss','comiss','cvtpi2ps','cvtps2pi',
'cvtsi2ss','cvtss2si','cvttps2pi','cvttss2si','divps','divss','ldmxcsr','maxps',
'maxss','minps','minss','movaps','movhps','movlhps','movlps','movhlps','movmskps',
'movntps','movss','movups','mulps','mulss','orps','rcpps','rcpss','rsqrtps','rsqrtss',
'shufps','sqrtps','sqrtss','stmxcsr','subps','subss','ucomiss','unpckhps','unpcklps',
'xorps','fxrstor','fxsave','prefetchnta','prefetcht0','prefetcht1','prefetcht2',
'sfence','maskmovq','movntq','pavgb','pavgw','pextrw','pinsrw','pmaxsw','pmaxub',
'pminsw','pminub','pmovmskb','pmulhuw','psadbw','pshufw'
);
att_nosuffix:array[tasmop] of boolean=(
{ 0 }
false,false,false,false,false,false,false,false,false,false,
false,false,false,false,false,false,false,false,false,false,
false,false,false,false,false,false,false,false,false,false,
false,false,false,false,false,false,false,false,false,false,
false,false,false,false,false,false,false,false,false,false,
false,false,false,false,false,false,false,false,false,false,
false,false,false,false,false,false,false,false,false,false,
false,false,false,false,false,false,false,false,false,false,
false,false,false,false,false,false,false,false,false,false,
false,false,false,false,false,false,false,false,false,false,
{ 100 }
false,false,false,false,false,false,false,false,false,false,
false,false,false,false,false,false,false,false,false,false,
false,false,false,false,false,false,false,false,false,false,
false,false,false,false,false,false,false,false,false,false,
false,false,false,false,false,false,false,false,false,false,
false,false,false,false,false,false,false,false,false,false,
false,false,false,false,false,false,false,false,false,false,
false,false,false,false,false,false,false,false,false,false,
false,false,false,false,false,false,false,false,false,false,
false,false,false,false,false,false,false,false,false,false,
{ 200 }
false,false,true,true,true,true,true,false,false,false,
false,false,false,false,false,false,false,false,true,true,
true,true,true,true,true,true,true,true,true,true,
true,true,true,true,true,true,true,true,true,true,
true,true,true,true,true,true,true,true,true,true,
true,true,true,true,true,true,true,true,true,true,
true,true,true,true,true,true,true,true,false,false,
false,false,false,false,false,false,true,true,true,true,
true,true,true,true,true,true,true,true,true,true,
true,true,true,true,true,true,true,true,true,
{ 300 }
true,false,false,true,true,false,true,true,true,false,false,
false,false,false,false,false,false,false,false,false,false,
false,false,false,false,false,false,false,false,false,false,
false,false,false,false,false,false,false,false,false,false,
false,false,false,false,false,false,false,false,false,false,
false,false,false,false,false,false,false,false,false,false,
false,false,false,false,false,false,false,false,false,false,
false,false,false,false,false,false,false,true,true,true,
true,true,true,true,true,true,true,true,true,true,
true,true,true,true,true,true,true,true,true,true,
{ 400 }
true,true,true,true,true,true,true,true,true,true,
true,true,true,true,true,true,true,true,true,true,
true,true,true,true,true,true,true,true,true,true,
true,true,true,true,true,true,true,true,true,true,
true,true,true,true,true,true,true,true,true,true,
true,true,true,true,true,true,true,true,true,true
);
att_op2str:op2strtable=
{$i i386att.inc}
att_needsuffix:array[tasmop] of boolean=
{$i i386atts.inc}
{$endif ATTOP}
@ -694,7 +428,7 @@ type
offsetfixup : longint;
options : trefoptions;
{$ifdef newcg}
alignment : byte;+
alignment : byte;
{$endif newcg}
end;
@ -827,6 +561,67 @@ var
{$endif NOAG386BIN}
{*****************************************************************************
Opcode propeties (needed for optimizer)
*****************************************************************************}
{$ifndef NOOPT}
Type
{What an instruction can change}
TInsChange = (Ch_None,
{Read from a register}
Ch_REAX, Ch_RECX, Ch_REDX, Ch_REBX, Ch_RESP, Ch_REBP, Ch_RESI, Ch_REDI,
{write from a register}
Ch_WEAX, Ch_WECX, Ch_WEDX, Ch_WEBX, Ch_WESP, Ch_WEBP, Ch_WESI, Ch_WEDI,
{read and write from/to a register}
Ch_RWEAX, Ch_RWECX, Ch_RWEDX, Ch_RWEBX, Ch_RWESP, Ch_RWEBP, Ch_RWESI, Ch_RWEDI,
{modify the contents of a register with the purpose of using
this changed content afterwards (add/sub/..., but e.g. not rep
or movsd)}
{$ifdef arithopt}
Ch_MEAX, Ch_MECX, Ch_MEDX, Ch_MEBX, Ch_MESP, Ch_MEBP, Ch_MESI, Ch_MEDI,
{$endif arithopt}
Ch_CDirFlag {clear direction flag}, Ch_SDirFlag {set dir flag},
Ch_RFlags, Ch_WFlags, Ch_RWFlags, Ch_FPU,
Ch_Rop1, Ch_Wop1, Ch_RWop1,
Ch_Rop2, Ch_Wop2, Ch_RWop2,
Ch_Rop3, Ch_WOp3, Ch_RWOp3,
{$ifdef arithopt}
Ch_Mop1, Ch_Mop2, Ch_Mop3,
{$endif arithopt}
Ch_WMemEDI,
Ch_All
);
{$ifndef arithopt}
Const
Ch_MEAX = Ch_RWEAX;
Ch_MECX = Ch_RWECX;
Ch_MEDX = Ch_RWEDX;
Ch_MEBX = Ch_RWEBX;
Ch_MESP = Ch_RWESP;
Ch_MEBP = Ch_RWEBP;
Ch_MESI = Ch_RWESI;
Ch_MEDI = Ch_RWEDI;
Ch_Mop1 = Ch_RWOp1;
Ch_Mop2 = Ch_RWOp2;
Ch_Mop3 = Ch_RWOp3;
{$endif arithopt}
const
MaxCh = 3; { Max things a instruction can change }
type
TInsProp = packed record
Ch : Array[1..MaxCh] of TInsChange;
end;
const
InsProp : array[tasmop] of TInsProp =
{$i i386prop.inc}
{$endif NOOPT}
{*****************************************************************************
Init/Done
*****************************************************************************}
@ -1094,7 +889,10 @@ end;
end.
{
$Log$
Revision 1.14 1999-10-14 14:57:51 florian
Revision 1.15 1999-10-27 16:11:28 peter
* insns.dat is used to generate all i386*.inc files
Revision 1.14 1999/10/14 14:57:51 florian
- removed the hcodegen use in the new cg, use cgbase instead
Revision 1.13 1999/09/15 20:35:39 florian

View File

@ -92,11 +92,6 @@ Const
,ait_regalloc, ait_tempalloc
];
{the maximum number of things (registers, memory, ...) a single instruction
changes}
MaxCh = 3;
{Possible register content types}
con_Unknown = 0;
con_ref = 1;
@ -104,61 +99,10 @@ Const
{********************************* Types *********************************}
Type
{What an instruction can change}
TChange = (C_None,
{Read from a register}
C_REAX, C_RECX, C_REDX, C_REBX, C_RESP, C_REBP, C_RESI, C_REDI,
{write from a register}
C_WEAX, C_WECX, C_WEDX, C_WEBX, C_WESP, C_WEBP, C_WESI, C_WEDI,
{read and write from/to a register}
C_RWEAX, C_RWECX, C_RWEDX, C_RWEBX, C_RWESP, C_RWEBP, C_RWESI, C_RWEDI,
{modify the contents of a register with the purpose of using
this changed content afterwards (add/sub/..., but e.g. not rep
or movsd)}
{$ifdef arithopt}
C_MEAX, C_MECX, C_MEDX, C_MEBX, C_MESP, C_MEBP, C_MESI, C_MEDI,
{$endif arithopt}
C_CDirFlag {clear direction flag}, C_SDirFlag {set dir flag},
C_RFlags, C_WFlags, C_RWFlags, C_FPU,
C_Rop1, C_Wop1, C_RWop1,
C_Rop2, C_Wop2, C_RWop2,
C_Rop3, C_WOp3, C_RWOp3,
{$ifdef arithopt}
C_Mop1, C_Mop2, C_Mop3,
{$endif arithopt}
C_WMemEDI,
C_All);
{$ifndef arithopt}
Const
C_MEAX = C_RWEAX;
C_MECX = C_RWECX;
C_MEDX = C_RWEDX;
C_MEBX = C_RWEBX;
C_MESP = C_RWESP;
C_MEBP = C_RWEBP;
C_MESI = C_RWESI;
C_MEDI = C_RWEDI;
C_Mop1 = C_RWOp1;
C_Mop2 = C_RWOp2;
C_Mop3 = C_RWOp3;
Type
{$endif arithopt}
type
{the possible states of a flag}
TFlagContents = (F_Unknown, F_NotSet, F_Set);
{the properties of a cpu instruction}
TAsmInstrucProp = Record
{how many things it changes}
{ NCh: Byte;}
{and what it changes}
Ch: Array[1..MaxCh] of TChange;
End;
TContent = Packed Record
{start and end of block instructions that defines the
content of this register. If Typ = con_const, then
@ -240,474 +184,8 @@ Implementation
Uses
globals, systems, strings, verbose, hcodegen;
Type TRefCompare = function(const r1, r2: TReference): Boolean;
Const AsmInstr: Array[tasmop] Of TAsmInstrucProp = (
{A_<NONE>} (Ch: (C_All, C_None, C_None)), { new }
{A_LOCK} (Ch: (C_None, C_None, C_None)),
{ the repCC instructions don't write to the flags themselves, but since }
{ they loop as long as CC is not fulfilled, it's possible that after the }
{ repCC instructions the flags have changed }
{A_REP} (Ch: (C_RWECX, C_RWFlags, C_None)),
{A_REPE} (Ch: (C_RWECX, C_RWFlags, C_None)),
{A_REPNE} (Ch: (C_RWECX, C_RWFlags, C_None)),
{A_REPNZ} (Ch: (C_RWECX, C_RWFLAGS, C_None)), { new }
{A_REPZ} (Ch: (C_RWECX, C_RWFLAGS, C_None)), { new }
{A_SEGCS} (Ch: (C_None, C_None, C_None)), { new }
{A_SEGES} (Ch: (C_None, C_None, C_None)), { new }
{A_SEGDS} (Ch: (C_None, C_None, C_None)), { new }
{A_SEGFS} (Ch: (C_None, C_None, C_None)), { new }
{A_SEGGS} (Ch: (C_None, C_None, C_None)), { new }
{A_SEGSS} (Ch: (C_None, C_None, C_None)), { new }
{A_AAA} (Ch: (C_MEAX, C_WFlags, C_None)),
{A_AAD} (Ch: (C_MEAX, C_WFlags, C_None)),
{A_AAM} (Ch: (C_MEAX, C_WFlags, C_None)),
{A_AAS} (Ch: (C_MEAX, C_WFlags, C_None)),
{A_ADC} (Ch: (C_Mop2, C_Rop1, C_RWFlags)),
{A_ADD} (Ch: (C_Mop2, C_Rop1, C_WFlags)),
{A_AND} (Ch: (C_Mop2, C_Rop1, C_WFlags)),
{A_ARPL} (Ch: (C_WFlags, C_None, C_None)),
{A_BOUND} (Ch: (C_Rop1, C_None, C_None)),
{A_BSF} (Ch: (C_Wop2, C_WFlags, C_Rop1)),
{A_BSR} (Ch: (C_Wop2, C_WFlags, C_Rop1)),
{A_BSWAP} (Ch: (C_MOp1, C_None, C_None)), { new }
{A_BT} (Ch: (C_WFlags, C_Rop1, C_None)),
{A_BTC} (Ch: (C_Mop2, C_Rop1, C_WFlags)),
{A_BTR} (Ch: (C_Mop2, C_Rop1, C_WFlags)),
{A_BTS} (Ch: (C_Mop2, C_Rop1, C_WFlags)),
{A_CALL} (Ch: (C_All, C_None, C_None)), {don't know value of any register}
{A_CBW} (Ch: (C_MEAX, C_None, C_None)),
{A_CDQ} (Ch: (C_MEAX, C_WEDX, C_None)),
{A_CLC} (Ch: (C_WFlags, C_None, C_None)),
{A_CLD} (Ch: (C_CDirFlag, C_None, C_None)),
{A_CLI} (Ch: (C_WFlags, C_None, C_None)),
{A_CLTS} (Ch: (C_None, C_None, C_None)),
{A_CMC} (Ch: (C_WFlags, C_None, C_None)),
{A_CMP} (Ch: (C_WFlags, C_None, C_None)),
{A_CMPSB} (Ch: (C_All, C_None, C_None)), { new }
{A_CMPSD} (Ch: (C_All, C_None, C_None)), { new }
{A_CMPSW} (Ch: (C_All, C_None, C_None)), { new }
{A_CMPXCHG} (Ch: (C_All, C_None, C_None)), { new }
{A_CMPXCHG486} (Ch: (C_All, C_None, C_None)), { new }
{A_CMPXCHG8B} (Ch: (C_All, C_None, C_None)), { new }
{A_CPUID} (Ch: (C_All, C_None, C_none)),
{A_CWD} (Ch: (C_MEAX, C_WEDX, C_None)),
{A_CWDE} (Ch: (C_MEAX, C_None, C_None)),
{A_DAA} (Ch: (C_MEAX, C_None, C_None)),
{A_DAS} (Ch: (C_MEAX, C_None, C_None)),
{A_DEC} (Ch: (C_Mop1, C_WFlags, C_None)),
{A_DIV} (Ch: (C_RWEAX, C_WEDX, C_WFlags)), {handled separately, because modifies more than three things}
{A_EMMS} (Ch: (C_FPU, C_None, C_None)), { new }
{A_ENTER} (Ch: (C_RWESP, C_None, C_None)),
{A_EQU} (Ch: (C_ALL, C_None, C_None)), { new }
{A_F2XM1} (Ch: (C_FPU, C_None, C_None)),
{A_FABS} (Ch: (C_FPU, C_None, C_None)),
{A_FADD} (Ch: (C_FPU, C_None, C_None)),
{A_FADDP} (Ch: (C_FPU, C_None, C_None)),
{A_FBLD} (Ch: (C_Rop1, C_FPU, C_None)),
{A_FBSTP} (Ch: (C_Wop1, C_FPU, C_None)),
{A_FCHS} (Ch: (C_FPU, C_None, C_None)),
{A_FCLEX} (Ch: (C_FPU, C_None, C_None)),
{A_FCMOVB} (Ch: (C_FPU, C_RFLAGS, C_None)), { new }
{A_FCMOVBE} (Ch: (C_FPU, C_RFLAGS, C_None)), { new }
{A_FCMOVE} (Ch: (C_FPU, C_RFLAGS, C_None)), { new }
{A_FCMOVNB} (Ch: (C_FPU, C_RFLAGS, C_None)), { new }
{A_FCMOVNBE} (Ch: (C_FPU, C_RFLAGS, C_None)), { new }
{A_FCMOVNE} (Ch: (C_FPU, C_RFLAGS, C_None)), { new }
{A_FCMOVNU} (Ch: (C_FPU, C_RFLAGS, C_None)), { new }
{A_FCMOVU} (Ch: (C_FPU, C_RFLAGS, C_None)), { new }
{A_FCOM} (Ch: (C_FPU, C_None, C_None)),
{A_FCOMI} (Ch: (C_WFLAGS, C_None, C_None)), { new }
{A_FCOMIP} (Ch: (C_FPU, C_WFLAGS, C_None)), { new }
{A_FCOMP} (Ch: (C_FPU, C_None, C_None)),
{A_FCOMPP} (Ch: (C_FPU, C_None, C_None)),
{A_FCOS} (Ch: (C_FPU, C_None, C_None)),
{A_FDECSTP} (Ch: (C_FPU, C_None, C_None)),
{A_FDISI} (Ch: (C_FPU, C_None, C_None)),
{A_FDIV} (Ch: (C_FPU, C_None, C_None)),
{A_FDIVP} (Ch: (C_FPU, C_None, C_None)),
{A_FDIVR} (Ch: (C_FPU, C_None, C_None)),
{A_FDIVRP} (Ch: (C_FPU, C_None, C_None)),
{A_FEMMS} (Ch: (C_All, C_None, C_None)), { new }
{A_FENI} (Ch: (C_FPU, C_None, C_None)),
{A_FFREE} (Ch: (C_FPU, C_None, C_None)),
{A_FIADD} (Ch: (C_FPU, C_None, C_None)),
{A_FICOM} (Ch: (C_FPU, C_None, C_None)),
{A_FICOMP} (Ch: (C_FPU, C_None, C_None)),
{A_FIDIV} (Ch: (C_FPU, C_None, C_None)),
{A_FIDIVR} (Ch: (C_FPU, C_None, C_None)),
{A_FILD} (Ch: (C_FPU, C_None, C_None)),
{A_FIMUL} (Ch: (C_FPU, C_None, C_None)),
{A_FINCSTP} (Ch: (C_FPU, C_None, C_None)),
{A_FINIT} (Ch: (C_FPU, C_None, C_None)),
{A_FIST} (Ch: (C_Wop1, C_None, C_None)),
{A_FISTP} (Ch: (C_Wop1, C_None, C_None)),
{A_FISUB} (Ch: (C_FPU, C_None, C_None)),
{A_FISUBR} (Ch: (C_FPU, C_None, C_None)), { new }
{A_FLD} (Ch: (C_Rop1, C_FPU, C_None)),
{A_FLD1} (Ch: (C_FPU, C_None, C_None)),
{A_FLDCW} (Ch: (C_FPU, C_None, C_None)),
{A_FLDENV} (Ch: (C_FPU, C_None, C_None)),
{A_FLDL2E} (Ch: (C_FPU, C_None, C_None)),
{A_FLDL2T} (Ch: (C_FPU, C_None, C_None)),
{A_FLDLG2} (Ch: (C_FPU, C_None, C_None)),
{A_FLDLN2} (Ch: (C_FPU, C_None, C_None)),
{A_FLDPI} (Ch: (C_FPU, C_None, C_None)),
{A_FLDZ} (Ch: (C_FPU, C_None, C_None)),
{A_FMUL} (Ch: (C_ROp1, C_FPU, C_None)),
{A_FMULP} (Ch: (C_ROp1, C_FPU, C_None)),
{A_FNCLEX} (Ch: (C_FPU, C_None, C_None)),
{A_FNDISI} (Ch: (C_FPU, C_None, C_None)),
{A_FNENI} (Ch: (C_FPU, C_None, C_None)),
{A_FNINIT} (Ch: (C_FPU, C_None, C_None)),
{A_FNOP} (Ch: (C_FPU, C_None, C_None)),
{A_FNSAVE} (Ch: (C_FPU, C_None, C_None)),
{A_FNSTCW} (Ch: (C_Wop1, C_None, C_None)),
{A_FNSTENV} (Ch: (C_Wop1, C_None, C_None)),
{A_FNSTSW} (Ch: (C_Wop1, C_None, C_None)),
{A_FPATAN} (Ch: (C_FPU, C_None, C_None)),
{A_FPREM} (Ch: (C_FPU, C_None, C_None)),
{A_FPREM1} (Ch: (C_FPU, C_None, C_None)),
{A_FPTAN} (Ch: (C_FPU, C_None, C_None)),
{A_FRNDINT} (Ch: (C_FPU, C_None, C_None)),
{A_FRSTOR} (Ch: (C_FPU, C_None, C_None)),
{A_FSAVE} (Ch: (C_Wop1, C_None, C_None)),
{A_FSCALE} (Ch: (C_FPU, C_None, C_None)),
{A_FSETPM} (Ch: (C_FPU, C_None, C_None)),
{A_FSIN} (Ch: (C_FPU, C_None, C_None)),
{A_FSINCOS} (Ch: (C_FPU, C_None, C_None)),
{A_FSQRT} (Ch: (C_FPU, C_None, C_None)),
{A_FST} (Ch: (C_Wop1, C_None, C_None)),
{A_FSTCW} (Ch: (C_Wop1, C_None, C_None)),
{A_FSTENV} (Ch: (C_Wop1, C_None, C_None)),
{A_FSTP} (Ch: (C_Wop1, C_FPU, C_None)),
{A_FSTSW} (Ch: (C_Wop1, C_None, C_None)),
{A_FSUB} (Ch: (C_ROp1, C_FPU, C_None)),
{A_FSUBP} (Ch: (C_ROp1, C_FPU, C_None)),
{A_FSUBR} (Ch: (C_ROp1, C_FPU, C_None)),
{A_FSUBRP} (Ch: (C_ROp1, C_FPU, C_None)),
{A_FTST} (Ch: (C_FPU, C_None, C_None)),
{A_FUCOM} (Ch: (C_None, C_None, C_None)), {changes fpu status word}
{A_FUCOMI} (Ch: (C_WFLAGS, C_None, C_None)), { new }
{A_FUCOMIP} (Ch: (C_FPU, C_WFLAGS, C_None)), { new }
{A_FUCOMP} (Ch: (C_FPU, C_None, C_None)),
{A_FUCOMPP} (Ch: (C_FPU, C_None, C_None)),
{A_FWAIT} (Ch: (C_FPU, C_None, C_None)),
{A_FXAM} (Ch: (C_FPU, C_None, C_None)),
{A_FXCH} (Ch: (C_FPU, C_None, C_None)),
{A_FXTRACT} (Ch: (C_FPU, C_None, C_None)),
{A_FYL2X} (Ch: (C_FPU, C_None, C_None)),
{A_FYL2XP1} (Ch: (C_FPU, C_None, C_None)),
{A_HLT} (Ch: (C_None, C_None, C_None)),
{A_IBTS} (Ch: (C_All, C_None, C_None)), { new }
{A_ICEBP} (Ch: (C_All, C_None, C_None)), { new }
{A_IDIV} (Ch: (C_RWEAX, C_WEDX, C_WFlags)), {handled separately, because modifies more than three things}
{A_IMUL} (Ch: (C_RWEAX, C_WEDX, C_WFlags)), {handled separately, because several forms exist}
{A_IN} (Ch: (C_Wop2, C_Rop1, C_None)),
{A_INC} (Ch: (C_Mop1, C_WFlags, C_None)),
{A_INSB} (Ch: (C_WMemEDI, C_RWEDI, C_REDX)), { new }
{A_INSD} (Ch: (C_WMemEDI, C_RWEDI, C_REDX)), { new }
{A_INSW} (Ch: (C_WMemEDI, C_RWEDI, C_REDX)), { new }
{A_INT} (Ch: (C_All, C_None, C_None)), {don't know value of any register}
{A_INT01} (Ch: (C_All, C_None, C_None)), { new }
{A_INT1} (Ch: (C_All, C_None, C_None)), { new }
{!!!} {A_INT03} (Ch: (C_None, C_None, C_None)),
{A_INT3} (Ch: (C_None, C_None, C_None)),
{A_INTO} (Ch: (C_All, C_None, C_None)), {don't know value of any register}
{A_INVD} (Ch: (C_All, C_None, C_None)), { new }
{A_INVLPG} (Ch: (C_All, C_None, C_None)), { new }
{A_IRET} (Ch: (C_All, C_None, C_None)), {don't know value of any register}
{A_IRETD} (Ch: (C_All, C_None, C_None)), { new }
{A_IRETW} (Ch: (C_All, C_None, C_None)), { new }
{A_JCXZ} (Ch: (C_RECX, C_None, C_None)),
{A_JECXZ} (Ch: (C_RECX, C_None, C_None)),
{A_JMP} (Ch: (C_None, C_None, C_None)),
{A_LAHF} (Ch: (C_WEAX, C_RFlags, C_None)),
{A_LAR} (Ch: (C_Wop2, C_None, C_None)),
{A_LDS} (Ch: (C_Wop2, C_None, C_None)),
{A_LEA} (Ch: (C_Wop2, C_Rop1, C_None)),
{A_LEAVE} (Ch: (C_RWESP, C_None, C_None)),
{A_LES} (Ch: (C_Wop2, C_None, C_None)),
{A_LFS} (Ch: (C_Wop2, C_None, C_None)),
{A_LGDT} (Ch: (C_None, C_None, C_None)),
{A_LGS} (Ch: (C_Wop2, C_None, C_None)),
{A_LIDT} (Ch: (C_None, C_None, C_None)),
{A_LLDT} (Ch: (C_None, C_None, C_None)),
{A_LMSW} (Ch: (C_None, C_None, C_None)),
{A_LOADALL} (Ch: (C_All, C_None, C_None)), { new }
{A_LOADALL286} (Ch: (C_All, C_None, C_None)), { new }
{A_LODSB} (Ch: (C_WEAX, C_RWESI, C_None)), { new }
{A_LODSD} (Ch: (C_WEAX, C_RWESI, C_None)), { new }
{A_LODSW} (Ch: (C_WEAX, C_RWESI, C_None)), { new }
{A_LOOP} (Ch: (C_RWECX, C_None, C_None)),
{A_LOOPE} (Ch: (C_RWECX, C_RFlags, C_None)),
{A_LOOPNE} (Ch: (C_RWECX, C_RFlags, C_None)),
{A_LOOPNZ} (Ch: (C_RWECX, C_RFlags, C_None)),
{A_LOOPZ} (Ch: (C_RWECX, C_RFlags, C_None)),
{A_LSL} (Ch: (C_Wop2, C_WFlags, C_None)),
{A_LSS} (Ch: (C_Wop2, C_None, C_None)),
{A_LTR} (Ch: (C_None, C_None, C_None)),
{A_MOV} (Ch: (C_Wop2, C_Rop1, C_None)),
{A_MOVD} (Ch: (C_All, C_None, C_None)), { new }
{A_MOVQ} (Ch: (C_All, C_None, C_None)), { new }
{A_MOVSB} (Ch: (C_All, C_Rop1, C_None)),
{A_MOVSD} (Ch: (C_All, C_None, C_None)), { new }
{A_MOVSW} (Ch: (C_All, C_None, C_None)), { new }
{A_MOVSX} (Ch: (C_Wop2, C_Rop1, C_None)),
{A_MOVZX} (Ch: (C_Wop2, C_Rop1, C_None)),
{A_MUL} (Ch: (C_RWEAX, C_WEDX, C_WFlags)), {handled separately, because modifies more than three things}
{A_NEG} (Ch: (C_Mop1, C_None, C_None)),
{A_NOP} (Ch: (C_None, C_None, C_None)),
{A_NOT} (Ch: (C_Mop1, C_WFlags, C_None)),
{A_OR} (Ch: (C_Mop2, C_WFlags, C_None)),
{A_OUT} (Ch: (C_Rop1, C_Rop2, C_None)),
{A_OUTSB} (Ch: (C_All, C_None, C_None)), { new }
{A_OUTSD} (Ch: (C_All, C_None, C_None)), { new }
{A_OUTSW} (Ch: (C_All, C_None, C_None)), { new }
{A_PACKSSDW} (Ch: (C_All, C_None, C_None)), { new }
{A_PACKSSWB} (Ch: (C_All, C_None, C_None)), { new }
{A_PACKUSWB} (Ch: (C_All, C_None, C_None)), { new }
{A_PADDB} (Ch: (C_All, C_None, C_None)), { new }
{A_PADDD} (Ch: (C_All, C_None, C_None)), { new }
{A_PADDSB} (Ch: (C_All, C_None, C_None)), { new }
{A_PADDSIW} (Ch: (C_All, C_None, C_None)), { new }
{A_PADDSW} (Ch: (C_All, C_None, C_None)), { new }
{A_PADDUSB} (Ch: (C_All, C_None, C_None)), { new }
{A_PADDUSW} (Ch: (C_All, C_None, C_None)), { new }
{A_PADDW} (Ch: (C_All, C_None, C_None)), { new }
{A_PAND} (Ch: (C_All, C_None, C_None)), { new }
{A_PANDN} (Ch: (C_All, C_None, C_None)), { new }
{A_PAVEB} (Ch: (C_All, C_None, C_None)), { new }
{A_PAVGUSB} (Ch: (C_All, C_None, C_None)), { new }
{A_PCMPEQB} (Ch: (C_All, C_None, C_None)), { new }
{A_PCMPEQD} (Ch: (C_All, C_None, C_None)), { new }
{A_PCMPEQW} (Ch: (C_All, C_None, C_None)), { new }
{A_PCMPGTB} (Ch: (C_All, C_None, C_None)), { new }
{A_PCMPGTD} (Ch: (C_All, C_None, C_None)), { new }
{A_PCMPGTW} (Ch: (C_All, C_None, C_None)), { new }
{A_PDISTIB} (Ch: (C_All, C_None, C_None)), { new }
{A_PF2ID} (Ch: (C_All, C_None, C_None)), { new }
{A_PFACC} (Ch: (C_All, C_None, C_None)), { new }
{A_PFADD} (Ch: (C_All, C_None, C_None)), { new }
{A_PFCMPEQ} (Ch: (C_All, C_None, C_None)), { new }
{A_PFCMPGE} (Ch: (C_All, C_None, C_None)), { new }
{A_PFCMPGT} (Ch: (C_All, C_None, C_None)), { new }
{A_PFMAX} (Ch: (C_All, C_None, C_None)), { new }
{A_PFMIN} (Ch: (C_All, C_None, C_None)), { new }
{A_PFMUL} (Ch: (C_All, C_None, C_None)), { new }
{A_PFRCP} (Ch: (C_All, C_None, C_None)), { new }
{A_PFRCPIT1} (Ch: (C_All, C_None, C_None)), { new }
{A_PFRCPIT2} (Ch: (C_All, C_None, C_None)), { new }
{A_PFRSQIT1} (Ch: (C_All, C_None, C_None)), { new }
{A_PFRSQRT} (Ch: (C_All, C_None, C_None)), { new }
{A_PFSUB} (Ch: (C_All, C_None, C_None)), { new }
{A_PFSUBR} (Ch: (C_All, C_None, C_None)), { new }
{A_PI2FD} (Ch: (C_All, C_None, C_None)), { new }
{A_PMACHRIW} (Ch: (C_All, C_None, C_None)), { new }
{A_PMADDWD} (Ch: (C_All, C_None, C_None)), { new }
{A_PMAGW} (Ch: (C_All, C_None, C_None)), { new }
{A_PMULHRIW} (Ch: (C_All, C_None, C_None)), { new }
{A_PMULHRWA} (Ch: (C_All, C_None, C_None)), { new }
{A_PMULHRWC} (Ch: (C_All, C_None, C_None)), { new }
{A_PMULHW} (Ch: (C_All, C_None, C_None)), { new }
{A_PMULLW} (Ch: (C_All, C_None, C_None)), { new }
{A_PMVGEZB} (Ch: (C_All, C_None, C_None)), { new }
{A_PMVLZB} (Ch: (C_All, C_None, C_None)), { new }
{A_PMVNZB} (Ch: (C_All, C_None, C_None)), { new }
{A_PMVZB} (Ch: (C_All, C_None, C_None)), { new }
{A_POP} (Ch: (C_Wop1, C_RWESP, C_None)),
{A_POPA} (Ch: (C_All, C_None, C_None)), {don't know value of any register}
{A_POPAD} (Ch: (C_All, C_None, C_None)), {don't know value of any register}
{A_POPAW} (Ch: (C_All, C_None, C_None)), { new }
{A_POPF} (Ch: (C_RWESP, C_WFlags, C_None)),
{A_POPFD} (Ch: (C_RWESP, C_WFlags, C_None)),
{A_POPFW} (Ch: (C_RWESP, C_WFLAGS, C_None)), { new }
{A_POR} (Ch: (C_All, C_None, C_None)), { new }
{A_PREFETCH} (Ch: (C_All, C_None, C_None)), { new }
{A_PREFETCHW} (Ch: (C_All, C_None, C_None)), { new }
{A_PSLLD} (Ch: (C_All, C_None, C_None)), { new }
{A_PSLLQ} (Ch: (C_All, C_None, C_None)), { new }
{A_PSLLW} (Ch: (C_All, C_None, C_None)), { new }
{A_PSRAD} (Ch: (C_All, C_None, C_None)), { new }
{A_PSRAW} (Ch: (C_All, C_None, C_None)), { new }
{A_PSRLD} (Ch: (C_All, C_None, C_None)), { new }
{A_PSRLQ} (Ch: (C_All, C_None, C_None)), { new }
{A_PSRLW} (Ch: (C_All, C_None, C_None)), { new }
{A_PSUBB} (Ch: (C_All, C_None, C_None)), { new }
{A_PSUBD} (Ch: (C_All, C_None, C_None)), { new }
{A_PSUBSB} (Ch: (C_All, C_None, C_None)), { new }
{A_PSUBSIW} (Ch: (C_All, C_None, C_None)), { new }
{A_PSUBSW} (Ch: (C_All, C_None, C_None)), { new }
{A_PSUBUSB} (Ch: (C_All, C_None, C_None)), { new }
{A_PSUBUSW} (Ch: (C_All, C_None, C_None)), { new }
{A_PSUBW} (Ch: (C_All, C_None, C_None)), { new }
{A_PUNPCKHBW} (Ch: (C_All, C_None, C_None)), { new }
{A_PUNPCKHDQ} (Ch: (C_All, C_None, C_None)), { new }
{A_PUNPCKHWD} (Ch: (C_All, C_None, C_None)), { new }
{A_PUNPCKLBW} (Ch: (C_All, C_None, C_None)), { new }
{A_PUNPCKLDQ} (Ch: (C_All, C_None, C_None)), { new }
{A_PUNPCKLWD} (Ch: (C_All, C_None, C_None)), { new }
{A_PUSH} (Ch: (C_Rop1, C_RWESP, C_None)),
{A_PUSHA} (Ch: (C_All, C_None, C_None)),
{A_PUSHAD} (Ch: (C_All, C_None, C_None)),
{A_PUSHAW} (Ch: (C_All, C_None, C_None)), { new }
{A_PUSHF} (Ch: (C_RWESP, C_RFlags, C_None)),
{A_PUSHFD} (Ch: (C_RWESP, C_RFlags, C_None)),
{A_PUSHFW} (Ch: (C_RWESP, C_RFLAGS, C_None)), { new }
{A_PXOR} (Ch: (C_All, C_None, C_None)), { new }
{A_RCL} (Ch: (C_Mop2, C_Rop1, C_RWFlags)),
{A_RCR} (Ch: (C_Mop2, C_Rop1, C_RWFlags)),
{!!!} {A_RDSHR} (Ch: (C_All, C_None, C_None)), { new }
{A_RDMSR} (Ch: (C_WEAX, C_WEDX, C_None)), { new }
{A_RDPMC} (Ch: (C_WEAX, C_WEDX, C_None)), { new }
{A_RDTSC} (Ch: (C_WEAX, C_WEDX, C_None)), { new }
{A_RESB} (Ch: (C_All, C_None, C_None)), { new }
{A_RET} (Ch: (C_All, C_None, C_None)),
{A_RETF} (Ch: (C_All, C_None, C_None)), { new }
{A_RETN} (Ch: (C_All, C_None, C_None)), { new }
{A_ROL} (Ch: (C_Mop2, C_Rop1, C_RWFlags)),
{A_ROR} (Ch: (C_Mop2, C_Rop1, C_RWFlags)),
{!!!} {A_RSDC} (Ch: (C_All, C_None, C_None)), { new }
{!!!} {A_RSLDT} (Ch: (C_All, C_None, C_None)), { new }
{A_RSM} (Ch: (C_All, C_None, C_None)), { new }
{A_SAHF} (Ch: (C_WFlags, C_REAX, C_None)),
{A_SAL} (Ch: (C_Mop2, C_Rop1, C_RWFlags)),
{A_SALC} (Ch: (C_WEAX, C_RFLAGS, C_None)), { new }
{A_SAR} (Ch: (C_Mop2, C_Rop1, C_WFlags)),
{A_SBB} (Ch: (C_Mop2, C_Rop1, C_RWFlags)),
{A_SCASB} (Ch: (C_All, C_None, C_None)), { new }
{A_SCASD} (Ch: (C_All, C_None, C_None)), { new }
{A_SCASW} (Ch: (C_All, C_None, C_None)), { new }
{A_SGDT} (Ch: (C_Wop1, C_None, C_None)),
{A_SHL} (Ch: (C_Mop2, C_Rop1, C_WFlags)),
{A_SHLD} (Ch: (C_MOp3, C_RWFlags, C_Rop2)),
{A_SHR} (Ch: (C_Mop2, C_Rop1, C_WFlags)),
{A_SHRD} (Ch: (C_MOp3, C_RWFlags, C_Rop2)),
{A_SIDT} (Ch: (C_Wop1, C_None, C_None)),
{A_SLDT} (Ch: (C_Wop1, C_None, C_None)),
{A_SMI} (Ch: (C_All, C_None, C_None)), { new }
{!!!} {A_SMINT} (Ch: (C_All, C_None, C_None)), { new }
{!!!} {A_SMINTOLD} (Ch: (C_All, C_None, C_None)), { new }
{A_SMSW} (Ch: (C_Wop1, C_None, C_None)),
{A_STC} (Ch: (C_WFlags, C_None, C_None)),
{A_STD} (Ch: (C_SDirFlag, C_None, C_None)),
{A_STI} (Ch: (C_WFlags, C_None, C_None)),
{A_STOSB} (Ch: (C_REAX, C_WMemEDI, C_RWEDI)), { new }
{A_STOSD} (Ch: (C_REAX, C_WMemEDI, C_RWEDI)), { new }
{A_STOSW} (Ch: (C_REAX, C_WMemEDI, C_RWEDI)), { new }
{A_STR} (Ch: (C_Wop1, C_None, C_None)),
{A_SUB} (Ch: (C_Mop2, C_Rop1, C_WFlags)),
{!!!} {A_SVDC} (Ch: (C_All, C_None, C_None)), { new }
{!!!} {A_SVLDT} (Ch: (C_All, C_None, C_None)), { new }
{!!!} {A_SVTS} (Ch: (C_All, C_None, C_None)), { new }
{!!!} {A_SYSCALL} (Ch: (C_All, C_None, C_None)), { new }
{!!!} {A_SYSENTER} (Ch: (C_All, C_None, C_None)), { new }
{!!!} {A_SYSEXIT} (Ch: (C_All, C_None, C_None)), { new }
{!!!} {A_SYSRET} (Ch: (C_All, C_None, C_None)), { new }
{A_TEST} (Ch: (C_WFlags, C_Rop1, C_Rop2)),
{!!!} {A_UD1} (Ch: (C_All, C_None, C_None)), { new }
{!!!} {A_UD2} (Ch: (C_All, C_None, C_None)), { new }
{A_UMOV} (Ch: (C_All, C_None, C_None)), { new }
{A_VERR} (Ch: (C_WFlags, C_None, C_None)),
{A_VERW} (Ch: (C_WFlags, C_None, C_None)),
{A_WAIT} (Ch: (C_None, C_None, C_None)),
{A_WBINVD} (Ch: (C_None, C_None, C_None)), { new }
{!!!} {A_WRSHR} (Ch: (C_All, C_None, C_None)), { new }
{A_WRMSR} (Ch: (C_All, C_None, C_None)), { new }
{A_XADD} (Ch: (C_All, C_None, C_None)), { new }
{A_XBTS} (Ch: (C_All, C_None, C_None)), { new }
{A_XCHG} (Ch: (C_RWop1, C_RWop2, C_None)), {(might be) handled seperately}
{A_XLAT} (Ch: (C_WEAX, C_REBX, C_None)),
{A_XLATB} (Ch: (C_WEAX, C_REBX, C_None)),
{A_XOR} (Ch: (C_Mop2, C_Rop1, C_WFlags)),
{A_CMOV} (Ch: (C_ROp1, C_WOp2, C_RFLAGS)), { new }
{A_J} (Ch: (C_None, C_None, C_None)), { new }
{A_SET} (Ch: (C_WEAX, C_RFLAGS, C_None)), { new }
{!!!! From here everything is new !!!!!!!!}
{ADDPS} (Ch: (C_All, C_None, C_None)), { new }
{ADDSS} (Ch: (C_All, C_None, C_None)), { new }
{ANDNPS} (Ch: (C_All, C_None, C_None)), { new }
{ANDPS} (Ch: (C_All, C_None, C_None)), { new }
{CMPEQPS} (Ch: (C_All, C_None, C_None)), { new }
{CMPEQSS} (Ch: (C_All, C_None, C_None)), { new }
{CMPLEPS} (Ch: (C_All, C_None, C_None)), { new }
{CMPLESS} (Ch: (C_All, C_None, C_None)), { new }
{CMPLTPS} (Ch: (C_All, C_None, C_None)), { new }
{CMPLTSS} (Ch: (C_All, C_None, C_None)), { new }
{CMPNEQPS} (Ch: (C_All, C_None, C_None)), { new }
{CMPNEQSS} (Ch: (C_All, C_None, C_None)), { new }
{CMPNLEPS} (Ch: (C_All, C_None, C_None)), { new }
{CMPNLESS} (Ch: (C_All, C_None, C_None)), { new }
{CMPNLTPS} (Ch: (C_All, C_None, C_None)), { new }
{CMPNLTSS} (Ch: (C_All, C_None, C_None)), { new }
{CMPORDPS} (Ch: (C_All, C_None, C_None)), { new }
{CMPORDSS} (Ch: (C_All, C_None, C_None)), { new }
{CMPUNORDPS} (Ch: (C_All, C_None, C_None)), { new }
{CMPUNORDSS} (Ch: (C_All, C_None, C_None)), { new }
{CMPPS} (Ch: (C_All, C_None, C_None)), { new }
{CMPSS} (Ch: (C_All, C_None, C_None)), { new }
{COMISS} (Ch: (C_All, C_None, C_None)), { new }
{CVTPI2PS} (Ch: (C_All, C_None, C_None)), { new }
{CVTPS2PI} (Ch: (C_All, C_None, C_None)), { new }
{CVTSI2SS} (Ch: (C_All, C_None, C_None)), { new }
{CVTSS2SI} (Ch: (C_All, C_None, C_None)), { new }
{CVTTPS2PI} (Ch: (C_All, C_None, C_None)), { new }
{CVTTSS2SI} (Ch: (C_All, C_None, C_None)), { new }
{DIVPS} (Ch: (C_All, C_None, C_None)), { new }
{DIVSS} (Ch: (C_All, C_None, C_None)), { new }
{LDMXCSR} (Ch: (C_All, C_None, C_None)), { new }
{MAXPS} (Ch: (C_All, C_None, C_None)), { new }
{MAXSS} (Ch: (C_All, C_None, C_None)), { new }
{MINPS} (Ch: (C_All, C_None, C_None)), { new }
{MINSS} (Ch: (C_All, C_None, C_None)), { new }
{MOVAPS} (Ch: (C_All, C_None, C_None)), { new }
{MOVHPS} (Ch: (C_All, C_None, C_None)), { new }
{MOVLHPS} (Ch: (C_All, C_None, C_None)), { new }
{MOVLPS} (Ch: (C_All, C_None, C_None)), { new }
{MOVHLPS} (Ch: (C_All, C_None, C_None)), { new }
{MOVMSKPS} (Ch: (C_All, C_None, C_None)), { new }
{MOVNTPS} (Ch: (C_All, C_None, C_None)), { new }
{MOVSS} (Ch: (C_All, C_None, C_None)), { new }
{MOVUPS} (Ch: (C_All, C_None, C_None)), { new }
{MULPS} (Ch: (C_All, C_None, C_None)), { new }
{MULSS} (Ch: (C_All, C_None, C_None)), { new }
{ORPS} (Ch: (C_All, C_None, C_None)), { new }
{RCPPS} (Ch: (C_All, C_None, C_None)), { new }
{RCPSS} (Ch: (C_All, C_None, C_None)), { new }
{RSQRTPS} (Ch: (C_All, C_None, C_None)), { new }
{RSQRTSS} (Ch: (C_All, C_None, C_None)), { new }
{SHUFPS} (Ch: (C_All, C_None, C_None)), { new }
{SQRTPS} (Ch: (C_All, C_None, C_None)), { new }
{SQRTSS} (Ch: (C_All, C_None, C_None)), { new }
{STMXCSR} (Ch: (C_All, C_None, C_None)), { new }
{SUBPS} (Ch: (C_All, C_None, C_None)), { new }
{SUBSS} (Ch: (C_All, C_None, C_None)), { new }
{UCOMISS} (Ch: (C_All, C_None, C_None)), { new }
{UNPCKHPS} (Ch: (C_All, C_None, C_None)), { new }
{UNPCKLPS} (Ch: (C_All, C_None, C_None)), { new }
{XORPS} (Ch: (C_All, C_None, C_None)), { new }
{FXRSTOR} (Ch: (C_All, C_None, C_None)), { new }
{FXSAVE} (Ch: (C_All, C_None, C_None)), { new }
{PREFETCHNTA} (Ch: (C_All, C_None, C_None)), { new }
{PREFETCHT0} (Ch: (C_All, C_None, C_None)), { new }
{PREFETCHT1} (Ch: (C_All, C_None, C_None)), { new }
{PREFETCHT2} (Ch: (C_All, C_None, C_None)), { new }
{SFENCE} (Ch: (C_All, C_None, C_None)), { new }
{MASKMOVQ} (Ch: (C_All, C_None, C_None)), { new }
{MOVNTQ} (Ch: (C_All, C_None, C_None)), { new }
{PAVGB} (Ch: (C_All, C_None, C_None)), { new }
{PAVGW} (Ch: (C_All, C_None, C_None)), { new }
{PEXTRW} (Ch: (C_All, C_None, C_None)), { new }
{PINSRW} (Ch: (C_All, C_None, C_None)), { new }
{PMAXSW} (Ch: (C_All, C_None, C_None)), { new }
{PMAXUB} (Ch: (C_All, C_None, C_None)), { new }
{PMINSW} (Ch: (C_All, C_None, C_None)), { new }
{PMINUB} (Ch: (C_All, C_None, C_None)), { new }
{PMOVMSKB} (Ch: (C_All, C_None, C_None)), { new }
{PMULHUW} (Ch: (C_All, C_None, C_None)), { new }
{PSADBW} (Ch: (C_All, C_None, C_None)), { new }
{PSHUFW} (Ch: (C_All, C_None, C_None)) { new }
);
Type
TRefCompare = function(const r1, r2: TReference): Boolean;
Var
{How many instructions are between the current instruction and the last one
@ -1274,20 +752,20 @@ Begin
Else FindZeroReg := False;
End;*)
Function TCh2Reg(Ch: TChange): TRegister;
Function TCh2Reg(Ch: TInsChange): TRegister;
{converts a TChange variable to a TRegister}
Begin
If (Ch <= C_REDI) Then
If (Ch <= Ch_REDI) Then
TCh2Reg := TRegister(Byte(Ch))
Else
If (Ch <= C_WEDI) Then
TCh2Reg := TRegister(Byte(Ch) - Byte(C_REDI))
If (Ch <= Ch_WEDI) Then
TCh2Reg := TRegister(Byte(Ch) - Byte(Ch_REDI))
Else
If (Ch <= C_RWEDI) Then
TCh2Reg := TRegister(Byte(Ch) - Byte(C_WEDI))
If (Ch <= Ch_RWEDI) Then
TCh2Reg := TRegister(Byte(Ch) - Byte(Ch_WEDI))
Else
If (Ch <= C_MEDI) Then
TCh2Reg := TRegister(Byte(Ch) - Byte(C_RWEDI))
If (Ch <= Ch_MEDI) Then
TCh2Reg := TRegister(Byte(Ch) - Byte(Ch_RWEDI))
Else InternalError($db)
End;
@ -1841,7 +1319,7 @@ Var
TmpState: Byte;
{$endif AnalyzeLoops}
Cnt, InstrCnt : Longint;
InstrProp: TAsmInstrucProp;
InstrProp: TInsProp;
UsedRegs: TRegSet;
p, hp : Pai;
TmpRef: TReference;
@ -2077,7 +1555,7 @@ Begin
end
else
begin
InstrProp := AsmInstr[Paicpu(p)^.opcode];
InstrProp := InsProp[Paicpu(p)^.opcode];
Case Paicpu(p)^.opcode Of
A_MOV, A_MOVZX, A_MOVSX:
Begin
@ -2213,68 +1691,68 @@ Begin
Begin
Cnt := 1;
While (Cnt <= MaxCh) And
(InstrProp.Ch[Cnt] <> C_None) Do
(InstrProp.Ch[Cnt] <> Ch_None) Do
Begin
Case InstrProp.Ch[Cnt] Of
C_REAX..C_REDI: ReadReg(CurProp,TCh2Reg(InstrProp.Ch[Cnt]));
C_WEAX..C_RWEDI:
Ch_REAX..Ch_REDI: ReadReg(CurProp,TCh2Reg(InstrProp.Ch[Cnt]));
Ch_WEAX..Ch_RWEDI:
Begin
If (InstrProp.Ch[Cnt] >= C_RWEAX) Then
If (InstrProp.Ch[Cnt] >= Ch_RWEAX) Then
ReadReg(CurProp, TCh2Reg(InstrProp.Ch[Cnt]));
DestroyReg(CurProp, TCh2Reg(InstrProp.Ch[Cnt]));
End;
{$ifdef arithopt}
C_MEAX..C_MEDI:
Ch_MEAX..Ch_MEDI:
AddInstr2RegContents({$ifdef statedebug} asml, {$endif}
Paicpu(p),
TCh2Reg(InstrProp.Ch[Cnt]));
{$endif arithopt}
C_CDirFlag: CurProp^.DirFlag := F_NotSet;
C_SDirFlag: CurProp^.DirFlag := F_Set;
C_Rop1: ReadOp(CurProp, Paicpu(p)^.oper[0]);
C_Rop2: ReadOp(CurProp, Paicpu(p)^.oper[1]);
C_ROp3: ReadOp(CurProp, Paicpu(p)^.oper[2]);
C_Wop1..C_RWop1:
Ch_CDirFlag: CurProp^.DirFlag := F_NotSet;
Ch_SDirFlag: CurProp^.DirFlag := F_Set;
Ch_Rop1: ReadOp(CurProp, Paicpu(p)^.oper[0]);
Ch_Rop2: ReadOp(CurProp, Paicpu(p)^.oper[1]);
Ch_ROp3: ReadOp(CurProp, Paicpu(p)^.oper[2]);
Ch_Wop1..Ch_RWop1:
Begin
If (InstrProp.Ch[Cnt] in [C_RWop1]) Then
If (InstrProp.Ch[Cnt] in [Ch_RWop1]) Then
ReadOp(CurProp, Paicpu(p)^.oper[0]);
DestroyOp(p, Paicpu(p)^.oper[0]);
End;
{$ifdef arithopt}
C_Mop1:
Ch_Mop1:
AddInstr2OpContents({$ifdef statedebug} asml, {$endif}
Paicpu(p), Paicpu(p)^.oper[0]);
{$endif arithopt}
C_Wop2..C_RWop2:
Ch_Wop2..Ch_RWop2:
Begin
If (InstrProp.Ch[Cnt] = C_RWop2) Then
If (InstrProp.Ch[Cnt] = Ch_RWop2) Then
ReadOp(CurProp, Paicpu(p)^.oper[1]);
DestroyOp(p, Paicpu(p)^.oper[1]);
End;
{$ifdef arithopt}
C_Mop2:
Ch_Mop2:
AddInstr2OpContents({$ifdef statedebug} asml, {$endif}
Paicpu(p), Paicpu(p)^.oper[1]);
{$endif arithopt}
C_WOp3..C_RWOp3:
Ch_WOp3..Ch_RWOp3:
Begin
If (InstrProp.Ch[Cnt] = C_RWOp3) Then
If (InstrProp.Ch[Cnt] = Ch_RWOp3) Then
ReadOp(CurProp, Paicpu(p)^.oper[2]);
DestroyOp(p, Paicpu(p)^.oper[2]);
End;
{$ifdef arithopt}
C_Mop3:
Ch_Mop3:
AddInstr2OpContents({$ifdef statedebug} asml, {$endif}
Paicpu(p), Paicpu(p)^.oper[2]);
{$endif arithopt}
C_WMemEDI:
Ch_WMemEDI:
Begin
ReadReg(CurProp, R_EDI);
FillChar(TmpRef, SizeOf(TmpRef), 0);
TmpRef.Base := R_EDI;
DestroyRefs(p, TmpRef, R_NO)
End;
C_RFlags, C_WFlags, C_RWFlags, C_FPU:
Ch_RFlags, Ch_WFlags, Ch_RWFlags, Ch_FPU:
Else
Begin
DestroyAllRegs(CurProp);
@ -2392,7 +1870,10 @@ End.
{
$Log$
Revision 1.64 1999-10-23 14:44:24 jonas
Revision 1.65 1999-10-27 16:11:28 peter
* insns.dat is used to generate all i386*.inc files
Revision 1.64 1999/10/23 14:44:24 jonas
* finally got around making GetNextInstruction return false when
the current pai object is a AsmBlockStart marker
* changed a loop in aopt386 which was incompatible with this change
@ -2525,7 +2006,7 @@ End.
Revision 1.29 1998/11/26 21:45:31 jonas
- removed A_CLTD opcode (use A_CDQ instead)
* changed cbw, cwde and cwd to cbtw, cwtl and cwtd in att_.oper[1]str array
* in daopt386: adapted AsmInstr array to reflect changes + fixed line too long
* in daopt386: adapted InsProp array to reflect changes + fixed line too long
Revision 1.27 1998/11/24 19:47:22 jonas
* fixed problems posible with 3 operand instructions

473
compiler/i386att.inc Normal file
View File

@ -0,0 +1,473 @@
{ don't edit, this file is generated from insns.dat }
(
'none',
'aaa',
'aad',
'aam',
'aas',
'adc',
'add',
'and',
'arpl',
'bound',
'bsf',
'bsr',
'bswap',
'bt',
'btc',
'btr',
'bts',
'call',
'cbtw',
'cltd',
'clc',
'cld',
'cli',
'clts',
'cmc',
'cmp',
'cmpsb',
'cmpsl',
'cmpsw',
'cmpxchg',
'cmpxchg486',
'cmpxchg8b',
'cpuid',
'cs',
'cwd',
'cwtl',
'daa',
'das',
'dec',
'div',
'ds',
'emms',
'enter',
'es',
'f2xm1',
'fabs',
'fadd',
'faddp',
'fbld',
'fbstp',
'fchs',
'fclex',
'fcmovb',
'fcmovbe',
'fcmove',
'fcmovnb',
'fcmovnbe',
'fcmovne',
'fcmovnu',
'fcmovu',
'fcom',
'fcomi',
'fcomip',
'fcomp',
'fcompp',
'fcos',
'fdecstp',
'fdisi',
'fdiv',
'fdivp',
'fdivr',
'fdivrp',
'femms',
'feni',
'ffree',
'fiadd',
'ficom',
'ficomp',
'fidiv',
'fidivr',
'fild',
'fimul',
'fincstp',
'finit',
'fist',
'fistp',
'fisub',
'fisubr',
'fld',
'fld1',
'fldcw',
'fldenv',
'fldl2e',
'fldl2t',
'fldlg2',
'fldln2',
'fldpi',
'fldz',
'fmul',
'fmulp',
'fnclex',
'fndisi',
'fneni',
'fninit',
'fnop',
'fnsave',
'fnstcw',
'fnstenv',
'fnstsw',
'fpatan',
'fprem',
'fprem1',
'fptan',
'frndint',
'frstor',
'fs',
'fsave',
'fscale',
'fsetpm',
'fsin',
'fsincos',
'fsqrt',
'fst',
'fstcw',
'fstenv',
'fstp',
'fstsw',
'fsub',
'fsubp',
'fsubr',
'fsubrp',
'ftst',
'fucom',
'fucomi',
'fucomip',
'fucomp',
'fucompp',
'fwait',
'fxam',
'fxch',
'fxtract',
'fyl2x',
'fyl2xp1',
'gs',
'hlt',
'ibts',
'icebp',
'idiv',
'imul',
'in',
'inc',
'insb',
'insl',
'insw',
'int',
'int01',
'int1',
'int03',
'int3',
'into',
'invd',
'invlpg',
'iret',
'iretd',
'iretw',
'jcxz',
'jecxz',
'jmp',
'lahf',
'lar',
'lds',
'lea',
'leave',
'les',
'lfs',
'lgdt',
'lgs',
'lidt',
'lldt',
'lmsw',
'loadall',
'loadall286',
'lock',
'lodsb',
'lodsl',
'lodsw',
'loop',
'loope',
'loopne',
'loopnz',
'loopz',
'lsl',
'lss',
'ltr',
'mov',
'movl',
'movq',
'movsb',
'movsl',
'movsw',
'movs',
'movz',
'mul',
'neg',
'nop',
'not',
'or',
'out',
'outsb',
'outsl',
'outsw',
'packssdw',
'packsswb',
'packuswb',
'paddb',
'paddd',
'paddsb',
'paddsiw',
'paddsw',
'paddusb',
'paddusw',
'paddw',
'pand',
'pandn',
'paveb',
'pavgusb',
'pcmpeqb',
'pcmpeqd',
'pcmpeqw',
'pcmpgtb',
'pcmpgtd',
'pcmpgtw',
'pdistib',
'pf2id',
'pfacc',
'pfadd',
'pfcmpeq',
'pfcmpge',
'pfcmpgt',
'pfmax',
'pfmin',
'pfmul',
'pfrcp',
'pfrcpit1',
'pfrcpit2',
'pfrsqit1',
'pfrsqrt',
'pfsub',
'pfsubr',
'pi2fd',
'pmachriw',
'pmaddwd',
'pmagw',
'pmulhriw',
'pmulhrwa',
'pmulhrwc',
'pmulhw',
'pmullw',
'pmvgezb',
'pmvlzb',
'pmvnzb',
'pmvzb',
'pop',
'popa',
'popal',
'popaw',
'popf',
'popfl',
'popfw',
'por',
'prefetch',
'prefetchw',
'pslld',
'psllq',
'psllw',
'psrad',
'psraw',
'psrld',
'psrlq',
'psrlw',
'psubb',
'psubd',
'psubsb',
'psubsiw',
'psubsw',
'psubusb',
'psubusw',
'psubw',
'punpckhbw',
'punpckhdq',
'punpckhwd',
'punpcklbw',
'punpckldq',
'punpcklwd',
'push',
'pusha',
'pushal',
'pushaw',
'pushf',
'pushfl',
'pushfw',
'pxor',
'rcl',
'rcr',
'rdshr',
'rdmsr',
'rdpmc',
'rdtsc',
'rep',
'repe',
'repne',
'repnz',
'repz',
'ret',
'retf',
'retn',
'rol',
'ror',
'rsdc',
'rsldt',
'rsm',
'sahf',
'sal',
'salc',
'sar',
'sbb',
'scasb',
'scasl',
'scasw',
'segcs',
'segds',
'seges',
'segfs',
'seggs',
'segss',
'sgdt',
'shl',
'shld',
'shr',
'shrd',
'sidt',
'sldt',
'smi',
'smint',
'smintold',
'smsw',
'ss',
'stc',
'std',
'sti',
'stosb',
'stosl',
'stosw',
'str',
'sub',
'svdc',
'svldt',
'svts',
'syscall',
'sysenter',
'sysexit',
'sysret',
'test',
'ud1',
'ud2',
'umov',
'verr',
'verw',
'wait',
'wbinvd',
'wrshr',
'wrmsr',
'xadd',
'xbts',
'xchg',
'xlat',
'xlatb',
'xor',
'cmov',
'j',
'set',
'addps',
'addss',
'andnps',
'andps',
'cmpeqps',
'cmpeqss',
'cmpleps',
'cmpless',
'cmpltps',
'cmpltss',
'cmpneqps',
'cmpneqss',
'cmpnleps',
'cmpnless',
'cmpnltps',
'cmpnltss',
'cmpordps',
'cmpordss',
'cmpunordps',
'cmpunordss',
'cmpps',
'cmpss',
'comiss',
'cvtpi2ps',
'cvtps2pi',
'cvtsi2ss',
'cvtss2si',
'cvttps2pi',
'cvttss2si',
'divps',
'divss',
'ldmxcsr',
'maxps',
'maxss',
'minps',
'minss',
'movaps',
'movhps',
'movlhps',
'movlps',
'movhlps',
'movmskps',
'movntps',
'movss',
'movups',
'mulps',
'mulss',
'orps',
'rcpps',
'rcpss',
'rsqrtps',
'rsqrtss',
'shufps',
'sqrtps',
'sqrtss',
'stmxcsr',
'subps',
'subss',
'ucomiss',
'unpckhps',
'unpcklps',
'xorps',
'fxrstor',
'fxsave',
'prefetchnta',
'prefetcht0',
'prefetcht1',
'prefetcht2',
'sfence',
'maskmovq',
'movntq',
'pavgb',
'pavgw',
'pextrw',
'pinsrw',
'pmaxsw',
'pmaxub',
'pminsw',
'pminub',
'pmovmskb',
'pmulhuw',
'psadbw',
'pshufw',
'pfnacc',
'pfpnacc',
'pi2fw',
'pf2iw',
'pswapd',
'ffreep'
);

473
compiler/i386atts.inc Normal file
View File

@ -0,0 +1,473 @@
{ don't edit, this file is generated from insns.dat }
(
false,
false,
true,
true,
false,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
false,
false,
false,
false,
false,
false,
false,
true,
false,
false,
false,
true,
true,
true,
false,
false,
false,
false,
false,
false,
true,
true,
false,
false,
true,
false,
false,
false,
true,
true,
true,
true,
false,
false,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
true,
false,
false,
false,
false,
true,
true,
true,
true,
false,
false,
false,
true,
true,
true,
true,
true,
true,
true,
false,
false,
true,
true,
true,
true,
true,
false,
true,
true,
false,
false,
false,
false,
false,
false,
true,
true,
false,
false,
false,
false,
false,
true,
true,
true,
true,
false,
false,
false,
false,
false,
true,
false,
true,
false,
false,
false,
false,
false,
true,
true,
true,
true,
true,
true,
true,
true,
true,
false,
true,
true,
true,
true,
false,
false,
false,
true,
false,
false,
false,
false,
false,
true,
false,
true,
true,
true,
true,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
true,
false,
false,
false,
false,
false,
true,
false,
true,
true,
true,
false,
true,
true,
true,
true,
true,
true,
true,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
true,
true,
true,
true,
false,
false,
false,
false,
false,
true,
true,
true,
true,
false,
true,
true,
true,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
true,
true,
false,
false,
false,
false,
false,
false,
true,
true,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
true,
true,
false,
false,
false,
false,
false,
false,
true,
true,
false,
false,
false,
false,
false,
false,
false,
false,
false,
true,
true,
true,
true,
true,
false,
false,
false,
false,
true,
false,
true,
true,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
true,
true,
true,
true,
true,
true,
false,
false,
false,
true,
false,
false,
false,
false,
false,
false,
false,
true,
true,
true,
true,
true,
false,
false,
false,
false,
true,
false,
false,
true,
true,
false,
false,
false,
false,
false,
true,
true,
true,
false,
false,
true,
true,
false,
true,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false,
false
);

473
compiler/i386int.inc Normal file
View File

@ -0,0 +1,473 @@
{ don't edit, this file is generated from insns.dat }
(
'none',
'aaa',
'aad',
'aam',
'aas',
'adc',
'add',
'and',
'arpl',
'bound',
'bsf',
'bsr',
'bswap',
'bt',
'btc',
'btr',
'bts',
'call',
'cbw',
'cdq',
'clc',
'cld',
'cli',
'clts',
'cmc',
'cmp',
'cmpsb',
'cmpsd',
'cmpsw',
'cmpxchg',
'cmpxchg486',
'cmpxchg8b',
'cpuid',
'cs',
'cwd',
'cwde',
'daa',
'das',
'dec',
'div',
'ds',
'emms',
'enter',
'es',
'f2xm1',
'fabs',
'fadd',
'faddp',
'fbld',
'fbstp',
'fchs',
'fclex',
'fcmovb',
'fcmovbe',
'fcmove',
'fcmovnb',
'fcmovnbe',
'fcmovne',
'fcmovnu',
'fcmovu',
'fcom',
'fcomi',
'fcomip',
'fcomp',
'fcompp',
'fcos',
'fdecstp',
'fdisi',
'fdiv',
'fdivp',
'fdivr',
'fdivrp',
'femms',
'feni',
'ffree',
'fiadd',
'ficom',
'ficomp',
'fidiv',
'fidivr',
'fild',
'fimul',
'fincstp',
'finit',
'fist',
'fistp',
'fisub',
'fisubr',
'fld',
'fld1',
'fldcw',
'fldenv',
'fldl2e',
'fldl2t',
'fldlg2',
'fldln2',
'fldpi',
'fldz',
'fmul',
'fmulp',
'fnclex',
'fndisi',
'fneni',
'fninit',
'fnop',
'fnsave',
'fnstcw',
'fnstenv',
'fnstsw',
'fpatan',
'fprem',
'fprem1',
'fptan',
'frndint',
'frstor',
'fs',
'fsave',
'fscale',
'fsetpm',
'fsin',
'fsincos',
'fsqrt',
'fst',
'fstcw',
'fstenv',
'fstp',
'fstsw',
'fsub',
'fsubp',
'fsubr',
'fsubrp',
'ftst',
'fucom',
'fucomi',
'fucomip',
'fucomp',
'fucompp',
'fwait',
'fxam',
'fxch',
'fxtract',
'fyl2x',
'fyl2xp1',
'gs',
'hlt',
'ibts',
'icebp',
'idiv',
'imul',
'in',
'inc',
'insb',
'insd',
'insw',
'int',
'int01',
'int1',
'int03',
'int3',
'into',
'invd',
'invlpg',
'iret',
'iretd',
'iretw',
'jcxz',
'jecxz',
'jmp',
'lahf',
'lar',
'lds',
'lea',
'leave',
'les',
'lfs',
'lgdt',
'lgs',
'lidt',
'lldt',
'lmsw',
'loadall',
'loadall286',
'lock',
'lodsb',
'lodsd',
'lodsw',
'loop',
'loope',
'loopne',
'loopnz',
'loopz',
'lsl',
'lss',
'ltr',
'mov',
'movd',
'movq',
'movsb',
'movsd',
'movsw',
'movsx',
'movzx',
'mul',
'neg',
'nop',
'not',
'or',
'out',
'outsb',
'outsd',
'outsw',
'packssdw',
'packsswb',
'packuswb',
'paddb',
'paddd',
'paddsb',
'paddsiw',
'paddsw',
'paddusb',
'paddusw',
'paddw',
'pand',
'pandn',
'paveb',
'pavgusb',
'pcmpeqb',
'pcmpeqd',
'pcmpeqw',
'pcmpgtb',
'pcmpgtd',
'pcmpgtw',
'pdistib',
'pf2id',
'pfacc',
'pfadd',
'pfcmpeq',
'pfcmpge',
'pfcmpgt',
'pfmax',
'pfmin',
'pfmul',
'pfrcp',
'pfrcpit1',
'pfrcpit2',
'pfrsqit1',
'pfrsqrt',
'pfsub',
'pfsubr',
'pi2fd',
'pmachriw',
'pmaddwd',
'pmagw',
'pmulhriw',
'pmulhrwa',
'pmulhrwc',
'pmulhw',
'pmullw',
'pmvgezb',
'pmvlzb',
'pmvnzb',
'pmvzb',
'pop',
'popa',
'popad',
'popaw',
'popf',
'popfd',
'popfw',
'por',
'prefetch',
'prefetchw',
'pslld',
'psllq',
'psllw',
'psrad',
'psraw',
'psrld',
'psrlq',
'psrlw',
'psubb',
'psubd',
'psubsb',
'psubsiw',
'psubsw',
'psubusb',
'psubusw',
'psubw',
'punpckhbw',
'punpckhdq',
'punpckhwd',
'punpcklbw',
'punpckldq',
'punpcklwd',
'push',
'pusha',
'pushad',
'pushaw',
'pushf',
'pushfd',
'pushfw',
'pxor',
'rcl',
'rcr',
'rdshr',
'rdmsr',
'rdpmc',
'rdtsc',
'rep',
'repe',
'repne',
'repnz',
'repz',
'ret',
'retf',
'retn',
'rol',
'ror',
'rsdc',
'rsldt',
'rsm',
'sahf',
'sal',
'salc',
'sar',
'sbb',
'scasb',
'scasd',
'scasw',
'segcs',
'segds',
'seges',
'segfs',
'seggs',
'segss',
'sgdt',
'shl',
'shld',
'shr',
'shrd',
'sidt',
'sldt',
'smi',
'smint',
'smintold',
'smsw',
'ss',
'stc',
'std',
'sti',
'stosb',
'stosd',
'stosw',
'str',
'sub',
'svdc',
'svldt',
'svts',
'syscall',
'sysenter',
'sysexit',
'sysret',
'test',
'ud1',
'ud2',
'umov',
'verr',
'verw',
'wait',
'wbinvd',
'wrshr',
'wrmsr',
'xadd',
'xbts',
'xchg',
'xlat',
'xlatb',
'xor',
'cmov',
'j',
'set',
'addps',
'addss',
'andnps',
'andps',
'cmpeqps',
'cmpeqss',
'cmpleps',
'cmpless',
'cmpltps',
'cmpltss',
'cmpneqps',
'cmpneqss',
'cmpnleps',
'cmpnless',
'cmpnltps',
'cmpnltss',
'cmpordps',
'cmpordss',
'cmpunordps',
'cmpunordss',
'cmpps',
'cmpss',
'comiss',
'cvtpi2ps',
'cvtps2pi',
'cvtsi2ss',
'cvtss2si',
'cvttps2pi',
'cvttss2si',
'divps',
'divss',
'ldmxcsr',
'maxps',
'maxss',
'minps',
'minss',
'movaps',
'movhps',
'movlhps',
'movlps',
'movhlps',
'movmskps',
'movntps',
'movss',
'movups',
'mulps',
'mulss',
'orps',
'rcpps',
'rcpss',
'rsqrtps',
'rsqrtss',
'shufps',
'sqrtps',
'sqrtss',
'stmxcsr',
'subps',
'subss',
'ucomiss',
'unpckhps',
'unpcklps',
'xorps',
'fxrstor',
'fxsave',
'prefetchnta',
'prefetcht0',
'prefetcht1',
'prefetcht2',
'sfence',
'maskmovq',
'movntq',
'pavgb',
'pavgw',
'pextrw',
'pinsrw',
'pmaxsw',
'pmaxub',
'pminsw',
'pminub',
'pmovmskb',
'pmulhuw',
'psadbw',
'pshufw',
'pfnacc',
'pfpnacc',
'pi2fw',
'pf2iw',
'pswapd',
'ffreep'
);

473
compiler/i386op.inc Normal file
View File

@ -0,0 +1,473 @@
{ don't edit, this file is generated from insns.dat }
(
A_NONE,
A_AAA,
A_AAD,
A_AAM,
A_AAS,
A_ADC,
A_ADD,
A_AND,
A_ARPL,
A_BOUND,
A_BSF,
A_BSR,
A_BSWAP,
A_BT,
A_BTC,
A_BTR,
A_BTS,
A_CALL,
A_CBW,
A_CDQ,
A_CLC,
A_CLD,
A_CLI,
A_CLTS,
A_CMC,
A_CMP,
A_CMPSB,
A_CMPSD,
A_CMPSW,
A_CMPXCHG,
A_CMPXCHG486,
A_CMPXCHG8B,
A_CPUID,
A_CS,
A_CWD,
A_CWDE,
A_DAA,
A_DAS,
A_DEC,
A_DIV,
A_DS,
A_EMMS,
A_ENTER,
A_ES,
A_F2XM1,
A_FABS,
A_FADD,
A_FADDP,
A_FBLD,
A_FBSTP,
A_FCHS,
A_FCLEX,
A_FCMOVB,
A_FCMOVBE,
A_FCMOVE,
A_FCMOVNB,
A_FCMOVNBE,
A_FCMOVNE,
A_FCMOVNU,
A_FCMOVU,
A_FCOM,
A_FCOMI,
A_FCOMIP,
A_FCOMP,
A_FCOMPP,
A_FCOS,
A_FDECSTP,
A_FDISI,
A_FDIV,
A_FDIVP,
A_FDIVR,
A_FDIVRP,
A_FEMMS,
A_FENI,
A_FFREE,
A_FIADD,
A_FICOM,
A_FICOMP,
A_FIDIV,
A_FIDIVR,
A_FILD,
A_FIMUL,
A_FINCSTP,
A_FINIT,
A_FIST,
A_FISTP,
A_FISUB,
A_FISUBR,
A_FLD,
A_FLD1,
A_FLDCW,
A_FLDENV,
A_FLDL2E,
A_FLDL2T,
A_FLDLG2,
A_FLDLN2,
A_FLDPI,
A_FLDZ,
A_FMUL,
A_FMULP,
A_FNCLEX,
A_FNDISI,
A_FNENI,
A_FNINIT,
A_FNOP,
A_FNSAVE,
A_FNSTCW,
A_FNSTENV,
A_FNSTSW,
A_FPATAN,
A_FPREM,
A_FPREM1,
A_FPTAN,
A_FRNDINT,
A_FRSTOR,
A_FS,
A_FSAVE,
A_FSCALE,
A_FSETPM,
A_FSIN,
A_FSINCOS,
A_FSQRT,
A_FST,
A_FSTCW,
A_FSTENV,
A_FSTP,
A_FSTSW,
A_FSUB,
A_FSUBP,
A_FSUBR,
A_FSUBRP,
A_FTST,
A_FUCOM,
A_FUCOMI,
A_FUCOMIP,
A_FUCOMP,
A_FUCOMPP,
A_FWAIT,
A_FXAM,
A_FXCH,
A_FXTRACT,
A_FYL2X,
A_FYL2XP1,
A_GS,
A_HLT,
A_IBTS,
A_ICEBP,
A_IDIV,
A_IMUL,
A_IN,
A_INC,
A_INSB,
A_INSD,
A_INSW,
A_INT,
A_INT01,
A_INT1,
A_INT03,
A_INT3,
A_INTO,
A_INVD,
A_INVLPG,
A_IRET,
A_IRETD,
A_IRETW,
A_JCXZ,
A_JECXZ,
A_JMP,
A_LAHF,
A_LAR,
A_LDS,
A_LEA,
A_LEAVE,
A_LES,
A_LFS,
A_LGDT,
A_LGS,
A_LIDT,
A_LLDT,
A_LMSW,
A_LOADALL,
A_LOADALL286,
A_LOCK,
A_LODSB,
A_LODSD,
A_LODSW,
A_LOOP,
A_LOOPE,
A_LOOPNE,
A_LOOPNZ,
A_LOOPZ,
A_LSL,
A_LSS,
A_LTR,
A_MOV,
A_MOVD,
A_MOVQ,
A_MOVSB,
A_MOVSD,
A_MOVSW,
A_MOVSX,
A_MOVZX,
A_MUL,
A_NEG,
A_NOP,
A_NOT,
A_OR,
A_OUT,
A_OUTSB,
A_OUTSD,
A_OUTSW,
A_PACKSSDW,
A_PACKSSWB,
A_PACKUSWB,
A_PADDB,
A_PADDD,
A_PADDSB,
A_PADDSIW,
A_PADDSW,
A_PADDUSB,
A_PADDUSW,
A_PADDW,
A_PAND,
A_PANDN,
A_PAVEB,
A_PAVGUSB,
A_PCMPEQB,
A_PCMPEQD,
A_PCMPEQW,
A_PCMPGTB,
A_PCMPGTD,
A_PCMPGTW,
A_PDISTIB,
A_PF2ID,
A_PFACC,
A_PFADD,
A_PFCMPEQ,
A_PFCMPGE,
A_PFCMPGT,
A_PFMAX,
A_PFMIN,
A_PFMUL,
A_PFRCP,
A_PFRCPIT1,
A_PFRCPIT2,
A_PFRSQIT1,
A_PFRSQRT,
A_PFSUB,
A_PFSUBR,
A_PI2FD,
A_PMACHRIW,
A_PMADDWD,
A_PMAGW,
A_PMULHRIW,
A_PMULHRWA,
A_PMULHRWC,
A_PMULHW,
A_PMULLW,
A_PMVGEZB,
A_PMVLZB,
A_PMVNZB,
A_PMVZB,
A_POP,
A_POPA,
A_POPAD,
A_POPAW,
A_POPF,
A_POPFD,
A_POPFW,
A_POR,
A_PREFETCH,
A_PREFETCHW,
A_PSLLD,
A_PSLLQ,
A_PSLLW,
A_PSRAD,
A_PSRAW,
A_PSRLD,
A_PSRLQ,
A_PSRLW,
A_PSUBB,
A_PSUBD,
A_PSUBSB,
A_PSUBSIW,
A_PSUBSW,
A_PSUBUSB,
A_PSUBUSW,
A_PSUBW,
A_PUNPCKHBW,
A_PUNPCKHDQ,
A_PUNPCKHWD,
A_PUNPCKLBW,
A_PUNPCKLDQ,
A_PUNPCKLWD,
A_PUSH,
A_PUSHA,
A_PUSHAD,
A_PUSHAW,
A_PUSHF,
A_PUSHFD,
A_PUSHFW,
A_PXOR,
A_RCL,
A_RCR,
A_RDSHR,
A_RDMSR,
A_RDPMC,
A_RDTSC,
A_REP,
A_REPE,
A_REPNE,
A_REPNZ,
A_REPZ,
A_RET,
A_RETF,
A_RETN,
A_ROL,
A_ROR,
A_RSDC,
A_RSLDT,
A_RSM,
A_SAHF,
A_SAL,
A_SALC,
A_SAR,
A_SBB,
A_SCASB,
A_SCASD,
A_SCASW,
A_SEGCS,
A_SEGDS,
A_SEGES,
A_SEGFS,
A_SEGGS,
A_SEGSS,
A_SGDT,
A_SHL,
A_SHLD,
A_SHR,
A_SHRD,
A_SIDT,
A_SLDT,
A_SMI,
A_SMINT,
A_SMINTOLD,
A_SMSW,
A_SS,
A_STC,
A_STD,
A_STI,
A_STOSB,
A_STOSD,
A_STOSW,
A_STR,
A_SUB,
A_SVDC,
A_SVLDT,
A_SVTS,
A_SYSCALL,
A_SYSENTER,
A_SYSEXIT,
A_SYSRET,
A_TEST,
A_UD1,
A_UD2,
A_UMOV,
A_VERR,
A_VERW,
A_WAIT,
A_WBINVD,
A_WRSHR,
A_WRMSR,
A_XADD,
A_XBTS,
A_XCHG,
A_XLAT,
A_XLATB,
A_XOR,
A_CMOVcc,
A_Jcc,
A_SETcc,
A_ADDPS,
A_ADDSS,
A_ANDNPS,
A_ANDPS,
A_CMPEQPS,
A_CMPEQSS,
A_CMPLEPS,
A_CMPLESS,
A_CMPLTPS,
A_CMPLTSS,
A_CMPNEQPS,
A_CMPNEQSS,
A_CMPNLEPS,
A_CMPNLESS,
A_CMPNLTPS,
A_CMPNLTSS,
A_CMPORDPS,
A_CMPORDSS,
A_CMPUNORDPS,
A_CMPUNORDSS,
A_CMPPS,
A_CMPSS,
A_COMISS,
A_CVTPI2PS,
A_CVTPS2PI,
A_CVTSI2SS,
A_CVTSS2SI,
A_CVTTPS2PI,
A_CVTTSS2SI,
A_DIVPS,
A_DIVSS,
A_LDMXCSR,
A_MAXPS,
A_MAXSS,
A_MINPS,
A_MINSS,
A_MOVAPS,
A_MOVHPS,
A_MOVLHPS,
A_MOVLPS,
A_MOVHLPS,
A_MOVMSKPS,
A_MOVNTPS,
A_MOVSS,
A_MOVUPS,
A_MULPS,
A_MULSS,
A_ORPS,
A_RCPPS,
A_RCPSS,
A_RSQRTPS,
A_RSQRTSS,
A_SHUFPS,
A_SQRTPS,
A_SQRTSS,
A_STMXCSR,
A_SUBPS,
A_SUBSS,
A_UCOMISS,
A_UNPCKHPS,
A_UNPCKLPS,
A_XORPS,
A_FXRSTOR,
A_FXSAVE,
A_PREFETCHNTA,
A_PREFETCHT0,
A_PREFETCHT1,
A_PREFETCHT2,
A_SFENCE,
A_MASKMOVQ,
A_MOVNTQ,
A_PAVGB,
A_PAVGW,
A_PEXTRW,
A_PINSRW,
A_PMAXSW,
A_PMAXUB,
A_PMINSW,
A_PMINUB,
A_PMOVMSKB,
A_PMULHUW,
A_PSADBW,
A_PSHUFW,
A_PFNACC,
A_PFPNACC,
A_PI2FW,
A_PF2IW,
A_PSWAPD,
A_FFREEP
);

473
compiler/i386prop.inc Normal file
View File

@ -0,0 +1,473 @@
{ don't edit, this file is generated from insns.dat }
(
(Ch: (Ch_None, Ch_None, Ch_None)),
(Ch: (Ch_MEAX, Ch_WFlags, Ch_None)),
(Ch: (Ch_MEAX, Ch_WFlags, Ch_None)),
(Ch: (Ch_MEAX, Ch_WFlags, Ch_None)),
(Ch: (Ch_MEAX, Ch_WFlags, Ch_None)),
(Ch: (Ch_Mop2, Ch_Rop1, Ch_RWFlags)),
(Ch: (Ch_Mop2, Ch_Rop1, Ch_WFlags)),
(Ch: (Ch_Mop2, Ch_Rop1, Ch_WFlags)),
(Ch: (Ch_WFlags, Ch_None, Ch_None)),
(Ch: (Ch_Rop1, Ch_None, Ch_None)),
(Ch: (Ch_Wop2, Ch_WFlags, Ch_Rop1)),
(Ch: (Ch_Wop2, Ch_WFlags, Ch_Rop1)),
(Ch: (Ch_MOp1, Ch_None, Ch_None)),
(Ch: (Ch_WFlags, Ch_Rop1, Ch_None)),
(Ch: (Ch_Mop2, Ch_Rop1, Ch_WFlags)),
(Ch: (Ch_Mop2, Ch_Rop1, Ch_WFlags)),
(Ch: (Ch_Mop2, Ch_Rop1, Ch_WFlags)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_MEAX, Ch_None, Ch_None)),
(Ch: (Ch_MEAX, Ch_WEDX, Ch_None)),
(Ch: (Ch_WFlags, Ch_None, Ch_None)),
(Ch: (Ch_CDirFlag, Ch_None, Ch_None)),
(Ch: (Ch_WFlags, Ch_None, Ch_None)),
(Ch: (Ch_None, Ch_None, Ch_None)),
(Ch: (Ch_WFlags, Ch_None, Ch_None)),
(Ch: (Ch_WFlags, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_none)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_MEAX, Ch_WEDX, Ch_None)),
(Ch: (Ch_MEAX, Ch_None, Ch_None)),
(Ch: (Ch_MEAX, Ch_None, Ch_None)),
(Ch: (Ch_MEAX, Ch_None, Ch_None)),
(Ch: (Ch_Mop1, Ch_WFlags, Ch_None)),
(Ch: (Ch_RWEAX, Ch_WEDX, Ch_WFlags)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_RWESP, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_Rop1, Ch_FPU, Ch_None)),
(Ch: (Ch_Wop1, Ch_FPU, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_FPU, Ch_RFLAGS, Ch_None)),
(Ch: (Ch_FPU, Ch_RFLAGS, Ch_None)),
(Ch: (Ch_FPU, Ch_RFLAGS, Ch_None)),
(Ch: (Ch_FPU, Ch_RFLAGS, Ch_None)),
(Ch: (Ch_FPU, Ch_RFLAGS, Ch_None)),
(Ch: (Ch_FPU, Ch_RFLAGS, Ch_None)),
(Ch: (Ch_FPU, Ch_RFLAGS, Ch_None)),
(Ch: (Ch_FPU, Ch_RFLAGS, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_WFLAGS, Ch_None, Ch_None)),
(Ch: (Ch_FPU, Ch_WFLAGS, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_Wop1, Ch_None, Ch_None)),
(Ch: (Ch_Wop1, Ch_None, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_Rop1, Ch_FPU, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_ROp1, Ch_FPU, Ch_None)),
(Ch: (Ch_ROp1, Ch_FPU, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_Wop1, Ch_None, Ch_None)),
(Ch: (Ch_Wop1, Ch_None, Ch_None)),
(Ch: (Ch_Wop1, Ch_None, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_Wop1, Ch_None, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_Wop1, Ch_None, Ch_None)),
(Ch: (Ch_Wop1, Ch_None, Ch_None)),
(Ch: (Ch_Wop1, Ch_None, Ch_None)),
(Ch: (Ch_Wop1, Ch_FPU, Ch_None)),
(Ch: (Ch_Wop1, Ch_None, Ch_None)),
(Ch: (Ch_ROp1, Ch_FPU, Ch_None)),
(Ch: (Ch_ROp1, Ch_FPU, Ch_None)),
(Ch: (Ch_ROp1, Ch_FPU, Ch_None)),
(Ch: (Ch_ROp1, Ch_FPU, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_None, Ch_None, Ch_None)),
(Ch: (Ch_WFLAGS, Ch_None, Ch_None)),
(Ch: (Ch_FPU, Ch_WFLAGS, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_FPU, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_None, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_RWEAX, Ch_WEDX, Ch_WFlags)),
(Ch: (Ch_RWEAX, Ch_WEDX, Ch_WFlags)),
(Ch: (Ch_Wop2, Ch_Rop1, Ch_None)),
(Ch: (Ch_Mop1, Ch_WFlags, Ch_None)),
(Ch: (Ch_WMemEDI, Ch_RWEDI, Ch_REDX)),
(Ch: (Ch_WMemEDI, Ch_RWEDI, Ch_REDX)),
(Ch: (Ch_WMemEDI, Ch_RWEDI, Ch_REDX)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_None, Ch_None, Ch_None)),
(Ch: (Ch_None, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_RECX, Ch_None, Ch_None)),
(Ch: (Ch_RECX, Ch_None, Ch_None)),
(Ch: (Ch_None, Ch_None, Ch_None)),
(Ch: (Ch_WEAX, Ch_RFlags, Ch_None)),
(Ch: (Ch_Wop2, Ch_None, Ch_None)),
(Ch: (Ch_Wop2, Ch_None, Ch_None)),
(Ch: (Ch_Wop2, Ch_Rop1, Ch_None)),
(Ch: (Ch_RWESP, Ch_None, Ch_None)),
(Ch: (Ch_Wop2, Ch_None, Ch_None)),
(Ch: (Ch_Wop2, Ch_None, Ch_None)),
(Ch: (Ch_None, Ch_None, Ch_None)),
(Ch: (Ch_Wop2, Ch_None, Ch_None)),
(Ch: (Ch_None, Ch_None, Ch_None)),
(Ch: (Ch_None, Ch_None, Ch_None)),
(Ch: (Ch_None, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_None, Ch_None, Ch_None)),
(Ch: (Ch_WEAX, Ch_RWESI, Ch_None)),
(Ch: (Ch_WEAX, Ch_RWESI, Ch_None)),
(Ch: (Ch_WEAX, Ch_RWESI, Ch_None)),
(Ch: (Ch_RWECX, Ch_None, Ch_None)),
(Ch: (Ch_RWECX, Ch_RFlags, Ch_None)),
(Ch: (Ch_RWECX, Ch_RFlags, Ch_None)),
(Ch: (Ch_RWECX, Ch_RFlags, Ch_None)),
(Ch: (Ch_RWECX, Ch_RFlags, Ch_None)),
(Ch: (Ch_Wop2, Ch_WFlags, Ch_None)),
(Ch: (Ch_Wop2, Ch_None, Ch_None)),
(Ch: (Ch_None, Ch_None, Ch_None)),
(Ch: (Ch_Wop2, Ch_Rop1, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_Rop1, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_Wop2, Ch_Rop1, Ch_None)),
(Ch: (Ch_Wop2, Ch_Rop1, Ch_None)),
(Ch: (Ch_RWEAX, Ch_WEDX, Ch_WFlags)),
(Ch: (Ch_Mop1, Ch_None, Ch_None)),
(Ch: (Ch_None, Ch_None, Ch_None)),
(Ch: (Ch_Mop1, Ch_WFlags, Ch_None)),
(Ch: (Ch_Mop2, Ch_WFlags, Ch_None)),
(Ch: (Ch_Rop1, Ch_Rop2, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_Wop1, Ch_RWESP, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_RWESP, Ch_WFlags, Ch_None)),
(Ch: (Ch_RWESP, Ch_WFlags, Ch_None)),
(Ch: (Ch_RWESP, Ch_WFLAGS, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_Rop1, Ch_RWESP, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_RWESP, Ch_RFlags, Ch_None)),
(Ch: (Ch_RWESP, Ch_RFlags, Ch_None)),
(Ch: (Ch_RWESP, Ch_RFLAGS, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_Mop2, Ch_Rop1, Ch_RWFlags)),
(Ch: (Ch_Mop2, Ch_Rop1, Ch_RWFlags)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_WEAX, Ch_WEDX, Ch_None)),
(Ch: (Ch_WEAX, Ch_WEDX, Ch_None)),
(Ch: (Ch_WEAX, Ch_WEDX, Ch_None)),
(Ch: (Ch_RWECX, Ch_RWFlags, Ch_None)),
(Ch: (Ch_RWECX, Ch_RWFlags, Ch_None)),
(Ch: (Ch_RWECX, Ch_RWFlags, Ch_None)),
(Ch: (Ch_RWECX, Ch_RWFLAGS, Ch_None)),
(Ch: (Ch_RWECX, Ch_RWFLAGS, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_Mop2, Ch_Rop1, Ch_RWFlags)),
(Ch: (Ch_Mop2, Ch_Rop1, Ch_RWFlags)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_WFlags, Ch_REAX, Ch_None)),
(Ch: (Ch_Mop2, Ch_Rop1, Ch_RWFlags)),
(Ch: (Ch_WEAX, Ch_RFLAGS, Ch_None)),
(Ch: (Ch_Mop2, Ch_Rop1, Ch_WFlags)),
(Ch: (Ch_Mop2, Ch_Rop1, Ch_RWFlags)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_None, Ch_None, Ch_None)),
(Ch: (Ch_None, Ch_None, Ch_None)),
(Ch: (Ch_None, Ch_None, Ch_None)),
(Ch: (Ch_None, Ch_None, Ch_None)),
(Ch: (Ch_None, Ch_None, Ch_None)),
(Ch: (Ch_None, Ch_None, Ch_None)),
(Ch: (Ch_Wop1, Ch_None, Ch_None)),
(Ch: (Ch_Mop2, Ch_Rop1, Ch_WFlags)),
(Ch: (Ch_MOp3, Ch_RWFlags, Ch_Rop2)),
(Ch: (Ch_Mop2, Ch_Rop1, Ch_WFlags)),
(Ch: (Ch_MOp3, Ch_RWFlags, Ch_Rop2)),
(Ch: (Ch_Wop1, Ch_None, Ch_None)),
(Ch: (Ch_Wop1, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_Wop1, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_WFlags, Ch_None, Ch_None)),
(Ch: (Ch_SDirFlag, Ch_None, Ch_None)),
(Ch: (Ch_WFlags, Ch_None, Ch_None)),
(Ch: (Ch_REAX, Ch_WMemEDI, Ch_RWEDI)),
(Ch: (Ch_REAX, Ch_WMemEDI, Ch_RWEDI)),
(Ch: (Ch_REAX, Ch_WMemEDI, Ch_RWEDI)),
(Ch: (Ch_Wop1, Ch_None, Ch_None)),
(Ch: (Ch_Mop2, Ch_Rop1, Ch_WFlags)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_WFlags, Ch_Rop1, Ch_Rop2)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_WFlags, Ch_None, Ch_None)),
(Ch: (Ch_WFlags, Ch_None, Ch_None)),
(Ch: (Ch_None, Ch_None, Ch_None)),
(Ch: (Ch_None, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_RWop1, Ch_RWop2, Ch_None)),
(Ch: (Ch_WEAX, Ch_REBX, Ch_None)),
(Ch: (Ch_WEAX, Ch_REBX, Ch_None)),
(Ch: (Ch_Mop2, Ch_Rop1, Ch_WFlags)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None)),
(Ch: (Ch_All, Ch_None, Ch_None))
);

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff