Pārlūkot izejas kodu

+ added detailed information for individual flag bits use for most x86
instructions. Not used by the compiler yet, but may allow more
optimizations in the future.

git-svn-id: trunk@35882 -

nickysn 8 gadi atpakaļ
vecāks
revīzija
1146b7c12c

+ 7 - 2
compiler/i386/aoptcpu.pas

@@ -233,7 +233,9 @@ unit aoptcpu;
                         exit
                         exit
                       end;
                       end;
                 end;
                 end;
-                if ([Ch_RFlags,Ch_RWFlags]*Ch<>[]) and (reg=NR_DEFAULTFLAGS) then
+                if ([Ch_RCarryFlag,Ch_RParityFlag,Ch_RAuxiliaryFlag,Ch_RZeroFlag,Ch_RSignFlag,Ch_ROverflowFlag,
+                     Ch_RWCarryFlag,Ch_RWParityFlag,Ch_RWAuxiliaryFlag,Ch_RWZeroFlag,Ch_RWSignFlag,Ch_RWOverflowFlag,
+                     Ch_RFlags,Ch_RWFlags]*Ch<>[]) and (reg=NR_DEFAULTFLAGS) then
                   begin
                   begin
                     RegReadByInstruction := true;
                     RegReadByInstruction := true;
                     exit
                     exit
@@ -284,7 +286,10 @@ function InstrReadsFlags(p: tai): boolean;
     InstrReadsFlags := true;
     InstrReadsFlags := true;
     case p.typ of
     case p.typ of
       ait_instruction:
       ait_instruction:
-        if InsProp[taicpu(p).opcode].Ch*[Ch_RFlags,Ch_RWFlags,Ch_All]<>[] then
+        if InsProp[taicpu(p).opcode].Ch*
+           [Ch_RCarryFlag,Ch_RParityFlag,Ch_RAuxiliaryFlag,Ch_RZeroFlag,Ch_RSignFlag,Ch_ROverflowFlag,
+            Ch_RWCarryFlag,Ch_RWParityFlag,Ch_RWAuxiliaryFlag,Ch_RWZeroFlag,Ch_RWSignFlag,Ch_RWOverflowFlag,
+            Ch_RFlags,Ch_RWFlags,Ch_All]<>[] then
           exit;
           exit;
       ait_label:
       ait_label:
         exit;
         exit;

+ 88 - 88
compiler/i386/i386prop.inc

@@ -1,44 +1,44 @@
 { don't edit, this file is generated from x86ins.dat }
 { don't edit, this file is generated from x86ins.dat }
 (
 (
 (Ch: []),
 (Ch: []),
-(Ch: [Ch_MEAX, Ch_RWFlags]),
-(Ch: [Ch_MEAX, Ch_WFlags]),
-(Ch: [Ch_MEAX, Ch_WFlags]),
-(Ch: [Ch_MEAX, Ch_RWFlags]),
-(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: [Ch_MEAX, Ch_RWAuxiliaryFlag, Ch_WCarryFlag, Ch_WUOverflowFlag, Ch_WUSignFlag, Ch_WUZeroFlag, Ch_WUParityFlag]),
+(Ch: [Ch_MEAX, Ch_WSignFlag, Ch_WZeroFlag, Ch_WParityFlag, Ch_WUOverflowFlag, Ch_WUAuxiliaryFlag, Ch_WUCarryFlag]),
+(Ch: [Ch_MEAX, Ch_WSignFlag, Ch_WZeroFlag, Ch_WParityFlag, Ch_WUOverflowFlag, Ch_WUAuxiliaryFlag, Ch_WUCarryFlag]),
+(Ch: [Ch_MEAX, Ch_RWAuxiliaryFlag, Ch_WCarryFlag, Ch_WUOverflowFlag, Ch_WUSignFlag, Ch_WUZeroFlag, Ch_WUParityFlag]),
+(Ch: [Ch_Mop2, Ch_Rop1, Ch_RWCarryFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WParityFlag]),
+(Ch: [Ch_Mop2, Ch_Rop1, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WCarryFlag, Ch_WParityFlag]),
+(Ch: [Ch_Mop2, Ch_Rop1, Ch_W0OverflowFlag, Ch_W0CarryFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WParityFlag, Ch_WUAuxiliaryFlag]),
+(Ch: [Ch_WZeroFlag]),
 (Ch: [Ch_Rop1]),
 (Ch: [Ch_Rop1]),
-(Ch: [Ch_Wop2, Ch_WFlags, Ch_Rop1]),
-(Ch: [Ch_Wop2, Ch_WFlags, Ch_Rop1]),
+(Ch: [Ch_Wop2, Ch_Rop1, Ch_WZeroFlag, Ch_WUCarryFlag, Ch_WUOverflowFlag, Ch_WUSignFlag, Ch_WUAuxiliaryFlag, Ch_WUParityFlag]),
+(Ch: [Ch_Wop2, Ch_Rop1, Ch_WZeroFlag, Ch_WUCarryFlag, Ch_WUOverflowFlag, Ch_WUSignFlag, Ch_WUAuxiliaryFlag, Ch_WUParityFlag]),
 (Ch: [Ch_MOp1]),
 (Ch: [Ch_MOp1]),
-(Ch: [Ch_WFlags, Ch_Rop1, Ch_Rop2]),
-(Ch: [Ch_Mop2, Ch_Rop1, Ch_WFlags]),
-(Ch: [Ch_Mop2, Ch_Rop1, Ch_WFlags]),
-(Ch: [Ch_Mop2, Ch_Rop1, Ch_WFlags]),
+(Ch: [Ch_Rop1, Ch_Rop2, Ch_WCarryFlag, Ch_WUOverflowFlag, Ch_WUSignFlag, Ch_WUAuxiliaryFlag, Ch_WUParityFlag]),
+(Ch: [Ch_Mop2, Ch_Rop1, Ch_WCarryFlag, Ch_WUOverflowFlag, Ch_WUSignFlag, Ch_WUAuxiliaryFlag, Ch_WUParityFlag]),
+(Ch: [Ch_Mop2, Ch_Rop1, Ch_WCarryFlag, Ch_WUOverflowFlag, Ch_WUSignFlag, Ch_WUAuxiliaryFlag, Ch_WUParityFlag]),
+(Ch: [Ch_Mop2, Ch_Rop1, Ch_WCarryFlag, Ch_WUOverflowFlag, Ch_WUSignFlag, Ch_WUAuxiliaryFlag, Ch_WUParityFlag]),
 (Ch: [Ch_ROp1, Ch_All]),
 (Ch: [Ch_ROp1, Ch_All]),
 (Ch: [Ch_MEAX]),
 (Ch: [Ch_MEAX]),
 (Ch: [Ch_MEAX, Ch_WEDX]),
 (Ch: [Ch_MEAX, Ch_WEDX]),
-(Ch: [Ch_WFlags]),
-(Ch: [Ch_CDirFlag]),
-(Ch: [Ch_WFlags]),
+(Ch: [Ch_W0CarryFlag]),
+(Ch: [Ch_W0DirFlag]),
+(Ch: [Ch_W0IntFlag]),
 (Ch: []),
 (Ch: []),
-(Ch: [Ch_RWFlags]),
-(Ch: [Ch_ROp1, Ch_ROp2, Ch_WFlags, Ch_NoReadIfEqualRegs]),
-(Ch: [Ch_All, Ch_WFlags, Ch_RDirFlag]),
-(Ch: [Ch_All, Ch_WFlags, Ch_RDirFlag]),
-(Ch: [Ch_All, Ch_WFlags, Ch_RDirFlag]),
-(Ch: [Ch_All]),
-(Ch: [Ch_All]),
-(Ch: [Ch_All]),
+(Ch: [Ch_RWCarryFlag]),
+(Ch: [Ch_ROp1, Ch_ROp2, Ch_NoReadIfEqualRegs, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WCarryFlag, Ch_WParityFlag]),
+(Ch: [Ch_All, Ch_RDirFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WCarryFlag, Ch_WParityFlag]),
+(Ch: [Ch_All, Ch_RDirFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WCarryFlag, Ch_WParityFlag]),
+(Ch: [Ch_All, Ch_RDirFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WCarryFlag, Ch_WParityFlag]),
+(Ch: [Ch_All, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WCarryFlag, Ch_WParityFlag]),
+(Ch: [Ch_All, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WCarryFlag, Ch_WParityFlag]),
+(Ch: [Ch_All, Ch_WZeroFlag]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_MEAX, Ch_WEDX]),
 (Ch: [Ch_MEAX, Ch_WEDX]),
 (Ch: [Ch_MEAX]),
 (Ch: [Ch_MEAX]),
-(Ch: [Ch_MEAX]),
-(Ch: [Ch_MEAX]),
-(Ch: [Ch_Mop1, Ch_WFlags]),
-(Ch: [Ch_RWEAX, Ch_WEDX, Ch_WFlags]),
+(Ch: [Ch_MEAX, Ch_RWAuxiliaryFlag, Ch_RWCarryFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WParityFlag, Ch_WUOverflowFlag]),
+(Ch: [Ch_MEAX, Ch_RWAuxiliaryFlag, Ch_RWCarryFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WParityFlag, Ch_WUOverflowFlag]),
+(Ch: [Ch_Mop1, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WParityFlag]),
+(Ch: [Ch_RWEAX, Ch_WEDX, Ch_WUCarryFlag, Ch_WUOverflowFlag, Ch_WUSignFlag, Ch_WUZeroFlag, Ch_WUAuxiliaryFlag, Ch_WUParityFlag]),
 (Ch: [Ch_FPU]),
 (Ch: [Ch_FPU]),
 (Ch: [Ch_RWESP]),
 (Ch: [Ch_RWESP]),
 (Ch: [Ch_FPU]),
 (Ch: [Ch_FPU]),
@@ -49,17 +49,17 @@
 (Ch: [Ch_Wop1, Ch_FPU]),
 (Ch: [Ch_Wop1, Ch_FPU]),
 (Ch: [Ch_FPU]),
 (Ch: [Ch_FPU]),
 (Ch: [Ch_FPU]),
 (Ch: [Ch_FPU]),
-(Ch: [Ch_FPU, Ch_RFLAGS]),
-(Ch: [Ch_FPU, Ch_RFLAGS]),
-(Ch: [Ch_FPU, Ch_RFLAGS]),
-(Ch: [Ch_FPU, Ch_RFLAGS]),
-(Ch: [Ch_FPU, Ch_RFLAGS]),
-(Ch: [Ch_FPU, Ch_RFLAGS]),
-(Ch: [Ch_FPU, Ch_RFLAGS]),
-(Ch: [Ch_FPU, Ch_RFLAGS]),
+(Ch: [Ch_FPU, Ch_RCarryFlag]),
+(Ch: [Ch_FPU, Ch_RCarryFlag, Ch_RZeroFlag]),
+(Ch: [Ch_FPU, Ch_RZeroFlag]),
+(Ch: [Ch_FPU, Ch_RCarryFlag]),
+(Ch: [Ch_FPU, Ch_RCarryFlag, Ch_RZeroFlag]),
+(Ch: [Ch_FPU, Ch_RZeroFlag]),
+(Ch: [Ch_FPU, Ch_RParityFlag]),
+(Ch: [Ch_FPU, Ch_RParityFlag]),
 (Ch: [Ch_FPU]),
 (Ch: [Ch_FPU]),
-(Ch: [Ch_WFLAGS]),
-(Ch: [Ch_FPU, Ch_WFLAGS]),
+(Ch: [Ch_WZeroFlag, Ch_WParityFlag, Ch_WCarryFlag, Ch_W0OverflowFlag, Ch_W0SignFlag, Ch_W0AuxiliaryFlag]),
+(Ch: [Ch_FPU, Ch_WZeroFlag, Ch_WParityFlag, Ch_WCarryFlag, Ch_W0OverflowFlag, Ch_W0SignFlag, Ch_W0AuxiliaryFlag]),
 (Ch: [Ch_FPU]),
 (Ch: [Ch_FPU]),
 (Ch: [Ch_FPU]),
 (Ch: [Ch_FPU]),
 (Ch: [Ch_FPU]),
 (Ch: [Ch_FPU]),
@@ -130,8 +130,8 @@
 (Ch: [Ch_ROp1, Ch_FPU]),
 (Ch: [Ch_ROp1, Ch_FPU]),
 (Ch: [Ch_FPU]),
 (Ch: [Ch_FPU]),
 (Ch: []),
 (Ch: []),
-(Ch: [Ch_WFLAGS]),
-(Ch: [Ch_FPU, Ch_WFLAGS]),
+(Ch: [Ch_WZeroFlag, Ch_WParityFlag, Ch_WCarryFlag, Ch_W0OverflowFlag, Ch_W0SignFlag, Ch_W0AuxiliaryFlag]),
+(Ch: [Ch_FPU, Ch_WZeroFlag, Ch_WParityFlag, Ch_WCarryFlag, Ch_W0OverflowFlag, Ch_W0SignFlag, Ch_W0AuxiliaryFlag]),
 (Ch: [Ch_FPU]),
 (Ch: [Ch_FPU]),
 (Ch: [Ch_FPU]),
 (Ch: [Ch_FPU]),
 (Ch: [Ch_FPU]),
 (Ch: [Ch_FPU]),
@@ -143,19 +143,19 @@
 (Ch: []),
 (Ch: []),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
-(Ch: [Ch_RWEAX, Ch_WEDX, Ch_WFlags]),
-(Ch: [Ch_RWEAX, Ch_WEDX, Ch_WFlags]),
+(Ch: [Ch_RWEAX, Ch_WEDX, Ch_WUCarryFlag, Ch_WUOverflowFlag, Ch_WUSignFlag, Ch_WUZeroFlag, Ch_WUAuxiliaryFlag, Ch_WUParityFlag]),
+(Ch: [Ch_RWEAX, Ch_WEDX, Ch_WCarryFlag, Ch_WOverflowFlag, Ch_WUSignFlag, Ch_WUZeroFlag, Ch_WUAuxiliaryFlag, Ch_WUParityFlag]),
 (Ch: [Ch_Wop2, Ch_Rop1]),
 (Ch: [Ch_Wop2, Ch_Rop1]),
-(Ch: [Ch_Mop1, Ch_WFlags]),
-(Ch: [Ch_WMemEDI, Ch_RWEDI, Ch_REDX]),
-(Ch: [Ch_WMemEDI, Ch_RWEDI, Ch_REDX]),
-(Ch: [Ch_WMemEDI, Ch_RWEDI, Ch_REDX]),
+(Ch: [Ch_Mop1, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WParityFlag]),
+(Ch: [Ch_WMemEDI, Ch_RWEDI, Ch_REDX, Ch_RDirFlag]),
+(Ch: [Ch_WMemEDI, Ch_RWEDI, Ch_REDX, Ch_RDirFlag]),
+(Ch: [Ch_WMemEDI, Ch_RWEDI, Ch_REDX, Ch_RDirFlag]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: []),
 (Ch: []),
 (Ch: []),
 (Ch: []),
-(Ch: [Ch_All]),
+(Ch: [Ch_All, Ch_ROverflowFlag]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
@@ -165,7 +165,7 @@
 (Ch: [Ch_RECX]),
 (Ch: [Ch_RECX]),
 (Ch: [Ch_ROp1]),
 (Ch: [Ch_ROp1]),
 (Ch: [Ch_WEAX, Ch_RFlags]),
 (Ch: [Ch_WEAX, Ch_RFlags]),
-(Ch: [Ch_Wop2]),
+(Ch: [Ch_Wop2, Ch_WZeroFlag]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_Wop2, Ch_Rop1]),
 (Ch: [Ch_Wop2, Ch_Rop1]),
 (Ch: [Ch_Wop2, Ch_Rop1]),
 (Ch: [Ch_Wop2, Ch_Rop1]),
@@ -185,11 +185,11 @@
 (Ch: [Ch_WEAX, Ch_RWESI, Ch_RDirFlag]),
 (Ch: [Ch_WEAX, Ch_RWESI, Ch_RDirFlag]),
 (Ch: [Ch_WEAX, Ch_RWESI, Ch_RDirFlag]),
 (Ch: [Ch_WEAX, Ch_RWESI, Ch_RDirFlag]),
 (Ch: [Ch_RWECX]),
 (Ch: [Ch_RWECX]),
-(Ch: [Ch_RWECX, Ch_RFlags]),
-(Ch: [Ch_RWECX, Ch_RFlags]),
-(Ch: [Ch_RWECX, Ch_RFlags]),
-(Ch: [Ch_RWECX, Ch_RFlags]),
-(Ch: [Ch_Wop2, Ch_WFlags]),
+(Ch: [Ch_RWECX, Ch_RZeroFlag]),
+(Ch: [Ch_RWECX, Ch_RZeroFlag]),
+(Ch: [Ch_RWECX, Ch_RZeroFlag]),
+(Ch: [Ch_RWECX, Ch_RZeroFlag]),
+(Ch: [Ch_Wop2, Ch_WZeroFlag]),
 (Ch: [Ch_Wop2, Ch_ROP1]),
 (Ch: [Ch_Wop2, Ch_ROP1]),
 (Ch: []),
 (Ch: []),
 (Ch: []),
 (Ch: []),
@@ -201,16 +201,16 @@
 (Ch: [Ch_All, Ch_RDirFlag]),
 (Ch: [Ch_All, Ch_RDirFlag]),
 (Ch: [Ch_Wop2, Ch_Rop1]),
 (Ch: [Ch_Wop2, Ch_Rop1]),
 (Ch: [Ch_Wop2, Ch_Rop1]),
 (Ch: [Ch_Wop2, Ch_Rop1]),
-(Ch: [Ch_RWEAX, Ch_WEDX, Ch_WFlags]),
+(Ch: [Ch_RWEAX, Ch_WEDX, Ch_WCarryFlag, Ch_WOverflowFlag, Ch_WUSignFlag, Ch_WUZeroFlag, Ch_WUAuxiliaryFlag, Ch_WUParityFlag]),
 (Ch: []),
 (Ch: []),
-(Ch: [Ch_Mop1]),
+(Ch: [Ch_Mop1, Ch_WCarryFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WParityFlag]),
 (Ch: []),
 (Ch: []),
 (Ch: [Ch_Mop1]),
 (Ch: [Ch_Mop1]),
-(Ch: [Ch_Mop2, Ch_Rop1, Ch_WFlags]),
+(Ch: [Ch_Mop2, Ch_Rop1, Ch_W0OverflowFlag, Ch_W0CarryFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WParityFlag, Ch_WUAuxiliaryFlag]),
 (Ch: [Ch_Rop1, Ch_Rop2]),
 (Ch: [Ch_Rop1, Ch_Rop2]),
-(Ch: [Ch_All]),
-(Ch: [Ch_All]),
-(Ch: [Ch_All]),
+(Ch: [Ch_All, Ch_RDirFlag]),
+(Ch: [Ch_All, Ch_RDirFlag]),
+(Ch: [Ch_All, Ch_RDirFlag]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
@@ -303,33 +303,33 @@
 (Ch: [Ch_RWESP, Ch_RFlags]),
 (Ch: [Ch_RWESP, Ch_RFlags]),
 (Ch: [Ch_RWESP, Ch_RFLAGS]),
 (Ch: [Ch_RWESP, Ch_RFLAGS]),
 (Ch: [Ch_Mop2, Ch_Rop1]),
 (Ch: [Ch_Mop2, Ch_Rop1]),
-(Ch: [Ch_Mop2, Ch_Rop1, Ch_RWFlags]),
-(Ch: [Ch_Mop2, Ch_Rop1, Ch_RWFlags]),
+(Ch: [Ch_Mop2, Ch_Rop1, Ch_RWCarryFlag, Ch_WOverflowFlag]),
+(Ch: [Ch_Mop2, Ch_Rop1, Ch_RWCarryFlag, Ch_WOverflowFlag]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_WEAX, Ch_WEDX]),
 (Ch: [Ch_WEAX, Ch_WEDX]),
 (Ch: [Ch_WEAX, Ch_WEDX]),
 (Ch: [Ch_WEAX, Ch_WEDX]),
 (Ch: [Ch_WEAX, Ch_WEDX]),
 (Ch: [Ch_WEAX, Ch_WEDX]),
 (Ch: [Ch_RWECX]),
 (Ch: [Ch_RWECX]),
-(Ch: [Ch_RWECX, Ch_RFlags]),
-(Ch: [Ch_RWECX, Ch_RFlags]),
-(Ch: [Ch_RWECX, Ch_RFLAGS]),
-(Ch: [Ch_RWECX, Ch_RFLAGS]),
+(Ch: [Ch_RWECX, Ch_RZeroFlag]),
+(Ch: [Ch_RWECX, Ch_RZeroFlag]),
+(Ch: [Ch_RWECX, Ch_RZeroFlag]),
+(Ch: [Ch_RWECX, Ch_RZeroFlag]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
-(Ch: [Ch_Mop2, Ch_Rop1, Ch_WFlags]),
-(Ch: [Ch_Mop2, Ch_Rop1, Ch_WFlags]),
+(Ch: [Ch_Mop2, Ch_Rop1, Ch_WCarryFlag, Ch_WOverflowFlag]),
+(Ch: [Ch_Mop2, Ch_Rop1, Ch_WCarryFlag, Ch_WOverflowFlag]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
-(Ch: [Ch_WFlags, Ch_REAX]),
-(Ch: [Ch_Mop2, Ch_Rop1, Ch_WFlags]),
+(Ch: [Ch_REAX, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WParityFlag, Ch_WCarryFlag]),
+(Ch: [Ch_Mop2, Ch_Rop1, Ch_WCarryFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WParityFlag, Ch_WUAuxiliaryFlag]),
 (Ch: [Ch_WEAX, Ch_RFLAGS]),
 (Ch: [Ch_WEAX, Ch_RFLAGS]),
-(Ch: [Ch_Mop2, Ch_Rop1, Ch_WFlags]),
-(Ch: [Ch_Mop2, Ch_Rop1, Ch_RWFlags, Ch_NoReadIfEqualRegs]),
-(Ch: [Ch_All, Ch_WFlags, Ch_RDirFlag]),
-(Ch: [Ch_All, Ch_WFlags, Ch_RDirFlag]),
-(Ch: [Ch_All, Ch_WFlags, Ch_RDirFlag]),
+(Ch: [Ch_Mop2, Ch_Rop1, Ch_WCarryFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WParityFlag, Ch_WUAuxiliaryFlag]),
+(Ch: [Ch_Mop2, Ch_Rop1, Ch_NoReadIfEqualRegs, Ch_RWCarryFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WParityFlag]),
+(Ch: [Ch_All, Ch_RDirFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WCarryFlag, Ch_WParityFlag]),
+(Ch: [Ch_All, Ch_RDirFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WCarryFlag, Ch_WParityFlag]),
+(Ch: [Ch_All, Ch_RDirFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WCarryFlag, Ch_WParityFlag]),
 (Ch: []),
 (Ch: []),
 (Ch: []),
 (Ch: []),
 (Ch: []),
 (Ch: []),
@@ -337,24 +337,24 @@
 (Ch: []),
 (Ch: []),
 (Ch: []),
 (Ch: []),
 (Ch: [Ch_Wop1]),
 (Ch: [Ch_Wop1]),
-(Ch: [Ch_Mop2, Ch_Rop1, Ch_WFlags]),
-(Ch: [Ch_MOp3, Ch_WFlags, Ch_Rop2]),
-(Ch: [Ch_Mop2, Ch_Rop1, Ch_WFlags]),
-(Ch: [Ch_MOp3, Ch_WFlags, Ch_Rop2]),
+(Ch: [Ch_Mop2, Ch_Rop1, Ch_WCarryFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WParityFlag, Ch_WUAuxiliaryFlag]),
+(Ch: [Ch_MOp3, Ch_Rop2, Ch_WCarryFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WParityFlag, Ch_WUAuxiliaryFlag]),
+(Ch: [Ch_Mop2, Ch_Rop1, Ch_WCarryFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WParityFlag, Ch_WUAuxiliaryFlag]),
+(Ch: [Ch_MOp3, Ch_Rop2, Ch_WCarryFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WParityFlag, Ch_WUAuxiliaryFlag]),
 (Ch: [Ch_Wop1]),
 (Ch: [Ch_Wop1]),
 (Ch: [Ch_Wop1]),
 (Ch: [Ch_Wop1]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_Wop1]),
 (Ch: [Ch_Wop1]),
-(Ch: [Ch_WFlags]),
-(Ch: [Ch_SDirFlag]),
-(Ch: [Ch_WFlags]),
+(Ch: [Ch_W1CarryFlag]),
+(Ch: [Ch_W1DirFlag]),
+(Ch: [Ch_W1IntFlag]),
 (Ch: [Ch_REAX, Ch_WMemEDI, Ch_RWEDI, Ch_RDirFlag]),
 (Ch: [Ch_REAX, Ch_WMemEDI, Ch_RWEDI, Ch_RDirFlag]),
 (Ch: [Ch_REAX, Ch_WMemEDI, Ch_RWEDI, Ch_RDirFlag]),
 (Ch: [Ch_REAX, Ch_WMemEDI, Ch_RWEDI, Ch_RDirFlag]),
 (Ch: [Ch_REAX, Ch_WMemEDI, Ch_RWEDI, Ch_RDirFlag]),
 (Ch: [Ch_REAX, Ch_WMemEDI, Ch_RWEDI, Ch_RDirFlag]),
 (Ch: [Ch_Wop1]),
 (Ch: [Ch_Wop1]),
-(Ch: [Ch_Mop2, Ch_Rop1, Ch_WFlags, Ch_NoReadIfEqualRegs]),
+(Ch: [Ch_Mop2, Ch_Rop1, Ch_NoReadIfEqualRegs, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WCarryFlag, Ch_WParityFlag]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
@@ -362,22 +362,22 @@
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
-(Ch: [Ch_WFlags, Ch_Rop1, Ch_Rop2]),
+(Ch: [Ch_Rop1, Ch_Rop2, Ch_W0OverflowFlag, Ch_W0CarryFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WParityFlag, Ch_WUAuxiliaryFlag]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
-(Ch: [Ch_WFlags]),
-(Ch: [Ch_WFlags]),
+(Ch: [Ch_WZeroFlag]),
+(Ch: [Ch_WZeroFlag]),
 (Ch: []),
 (Ch: []),
 (Ch: []),
 (Ch: []),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
-(Ch: [Ch_All]),
+(Ch: [Ch_All, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WCarryFlag, Ch_WParityFlag]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_RWop1, Ch_RWop2, Ch_NoReadIfEqualRegs]),
 (Ch: [Ch_RWop1, Ch_RWop2, Ch_NoReadIfEqualRegs]),
 (Ch: [Ch_WEAX, Ch_REBX]),
 (Ch: [Ch_WEAX, Ch_REBX]),
 (Ch: [Ch_WEAX, Ch_REBX]),
 (Ch: [Ch_WEAX, Ch_REBX]),
-(Ch: [Ch_Mop2, Ch_Rop1, Ch_WFlags, Ch_NoReadIfEqualRegs]),
+(Ch: [Ch_Mop2, Ch_Rop1, Ch_NoReadIfEqualRegs, Ch_W0OverflowFlag, Ch_W0CarryFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WParityFlag, Ch_WUAuxiliaryFlag]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),

+ 90 - 90
compiler/i8086/i8086prop.inc

@@ -1,44 +1,44 @@
 { don't edit, this file is generated from x86ins.dat }
 { don't edit, this file is generated from x86ins.dat }
 (
 (
 (Ch: []),
 (Ch: []),
-(Ch: [Ch_MEAX, Ch_RWFlags]),
-(Ch: [Ch_MEAX, Ch_WFlags]),
-(Ch: [Ch_MEAX, Ch_WFlags]),
-(Ch: [Ch_MEAX, Ch_RWFlags]),
-(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: [Ch_MEAX, Ch_RWAuxiliaryFlag, Ch_WCarryFlag, Ch_WUOverflowFlag, Ch_WUSignFlag, Ch_WUZeroFlag, Ch_WUParityFlag]),
+(Ch: [Ch_MEAX, Ch_WSignFlag, Ch_WZeroFlag, Ch_WParityFlag, Ch_WUOverflowFlag, Ch_WUAuxiliaryFlag, Ch_WUCarryFlag]),
+(Ch: [Ch_MEAX, Ch_WSignFlag, Ch_WZeroFlag, Ch_WParityFlag, Ch_WUOverflowFlag, Ch_WUAuxiliaryFlag, Ch_WUCarryFlag]),
+(Ch: [Ch_MEAX, Ch_RWAuxiliaryFlag, Ch_WCarryFlag, Ch_WUOverflowFlag, Ch_WUSignFlag, Ch_WUZeroFlag, Ch_WUParityFlag]),
+(Ch: [Ch_Mop2, Ch_Rop1, Ch_RWCarryFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WParityFlag]),
+(Ch: [Ch_Mop2, Ch_Rop1, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WCarryFlag, Ch_WParityFlag]),
+(Ch: [Ch_Mop2, Ch_Rop1, Ch_W0OverflowFlag, Ch_W0CarryFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WParityFlag, Ch_WUAuxiliaryFlag]),
+(Ch: [Ch_WZeroFlag]),
 (Ch: [Ch_Rop1]),
 (Ch: [Ch_Rop1]),
-(Ch: [Ch_Wop2, Ch_WFlags, Ch_Rop1]),
-(Ch: [Ch_Wop2, Ch_WFlags, Ch_Rop1]),
+(Ch: [Ch_Wop2, Ch_Rop1, Ch_WZeroFlag, Ch_WUCarryFlag, Ch_WUOverflowFlag, Ch_WUSignFlag, Ch_WUAuxiliaryFlag, Ch_WUParityFlag]),
+(Ch: [Ch_Wop2, Ch_Rop1, Ch_WZeroFlag, Ch_WUCarryFlag, Ch_WUOverflowFlag, Ch_WUSignFlag, Ch_WUAuxiliaryFlag, Ch_WUParityFlag]),
 (Ch: [Ch_MOp1]),
 (Ch: [Ch_MOp1]),
-(Ch: [Ch_WFlags, Ch_Rop1, Ch_Rop2]),
-(Ch: [Ch_Mop2, Ch_Rop1, Ch_WFlags]),
-(Ch: [Ch_Mop2, Ch_Rop1, Ch_WFlags]),
-(Ch: [Ch_Mop2, Ch_Rop1, Ch_WFlags]),
+(Ch: [Ch_Rop1, Ch_Rop2, Ch_WCarryFlag, Ch_WUOverflowFlag, Ch_WUSignFlag, Ch_WUAuxiliaryFlag, Ch_WUParityFlag]),
+(Ch: [Ch_Mop2, Ch_Rop1, Ch_WCarryFlag, Ch_WUOverflowFlag, Ch_WUSignFlag, Ch_WUAuxiliaryFlag, Ch_WUParityFlag]),
+(Ch: [Ch_Mop2, Ch_Rop1, Ch_WCarryFlag, Ch_WUOverflowFlag, Ch_WUSignFlag, Ch_WUAuxiliaryFlag, Ch_WUParityFlag]),
+(Ch: [Ch_Mop2, Ch_Rop1, Ch_WCarryFlag, Ch_WUOverflowFlag, Ch_WUSignFlag, Ch_WUAuxiliaryFlag, Ch_WUParityFlag]),
 (Ch: [Ch_ROp1, Ch_All]),
 (Ch: [Ch_ROp1, Ch_All]),
 (Ch: [Ch_MEAX]),
 (Ch: [Ch_MEAX]),
 (Ch: [Ch_MEAX, Ch_WEDX]),
 (Ch: [Ch_MEAX, Ch_WEDX]),
-(Ch: [Ch_WFlags]),
-(Ch: [Ch_CDirFlag]),
-(Ch: [Ch_WFlags]),
+(Ch: [Ch_W0CarryFlag]),
+(Ch: [Ch_W0DirFlag]),
+(Ch: [Ch_W0IntFlag]),
 (Ch: []),
 (Ch: []),
-(Ch: [Ch_RWFlags]),
-(Ch: [Ch_ROp1, Ch_ROp2, Ch_WFlags, Ch_NoReadIfEqualRegs]),
-(Ch: [Ch_All, Ch_WFlags, Ch_RDirFlag]),
-(Ch: [Ch_All, Ch_WFlags, Ch_RDirFlag]),
-(Ch: [Ch_All, Ch_WFlags, Ch_RDirFlag]),
-(Ch: [Ch_All]),
-(Ch: [Ch_All]),
-(Ch: [Ch_All]),
+(Ch: [Ch_RWCarryFlag]),
+(Ch: [Ch_ROp1, Ch_ROp2, Ch_NoReadIfEqualRegs, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WCarryFlag, Ch_WParityFlag]),
+(Ch: [Ch_All, Ch_RDirFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WCarryFlag, Ch_WParityFlag]),
+(Ch: [Ch_All, Ch_RDirFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WCarryFlag, Ch_WParityFlag]),
+(Ch: [Ch_All, Ch_RDirFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WCarryFlag, Ch_WParityFlag]),
+(Ch: [Ch_All, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WCarryFlag, Ch_WParityFlag]),
+(Ch: [Ch_All, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WCarryFlag, Ch_WParityFlag]),
+(Ch: [Ch_All, Ch_WZeroFlag]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_MEAX, Ch_WEDX]),
 (Ch: [Ch_MEAX, Ch_WEDX]),
 (Ch: [Ch_MEAX]),
 (Ch: [Ch_MEAX]),
-(Ch: [Ch_MEAX]),
-(Ch: [Ch_MEAX]),
-(Ch: [Ch_Mop1, Ch_WFlags]),
-(Ch: [Ch_RWEAX, Ch_WEDX, Ch_WFlags]),
+(Ch: [Ch_MEAX, Ch_RWAuxiliaryFlag, Ch_RWCarryFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WParityFlag, Ch_WUOverflowFlag]),
+(Ch: [Ch_MEAX, Ch_RWAuxiliaryFlag, Ch_RWCarryFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WParityFlag, Ch_WUOverflowFlag]),
+(Ch: [Ch_Mop1, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WParityFlag]),
+(Ch: [Ch_RWEAX, Ch_WEDX, Ch_WUCarryFlag, Ch_WUOverflowFlag, Ch_WUSignFlag, Ch_WUZeroFlag, Ch_WUAuxiliaryFlag, Ch_WUParityFlag]),
 (Ch: [Ch_FPU]),
 (Ch: [Ch_FPU]),
 (Ch: [Ch_RWESP]),
 (Ch: [Ch_RWESP]),
 (Ch: [Ch_FPU]),
 (Ch: [Ch_FPU]),
@@ -49,17 +49,17 @@
 (Ch: [Ch_Wop1, Ch_FPU]),
 (Ch: [Ch_Wop1, Ch_FPU]),
 (Ch: [Ch_FPU]),
 (Ch: [Ch_FPU]),
 (Ch: [Ch_FPU]),
 (Ch: [Ch_FPU]),
-(Ch: [Ch_FPU, Ch_RFLAGS]),
-(Ch: [Ch_FPU, Ch_RFLAGS]),
-(Ch: [Ch_FPU, Ch_RFLAGS]),
-(Ch: [Ch_FPU, Ch_RFLAGS]),
-(Ch: [Ch_FPU, Ch_RFLAGS]),
-(Ch: [Ch_FPU, Ch_RFLAGS]),
-(Ch: [Ch_FPU, Ch_RFLAGS]),
-(Ch: [Ch_FPU, Ch_RFLAGS]),
+(Ch: [Ch_FPU, Ch_RCarryFlag]),
+(Ch: [Ch_FPU, Ch_RCarryFlag, Ch_RZeroFlag]),
+(Ch: [Ch_FPU, Ch_RZeroFlag]),
+(Ch: [Ch_FPU, Ch_RCarryFlag]),
+(Ch: [Ch_FPU, Ch_RCarryFlag, Ch_RZeroFlag]),
+(Ch: [Ch_FPU, Ch_RZeroFlag]),
+(Ch: [Ch_FPU, Ch_RParityFlag]),
+(Ch: [Ch_FPU, Ch_RParityFlag]),
 (Ch: [Ch_FPU]),
 (Ch: [Ch_FPU]),
-(Ch: [Ch_WFLAGS]),
-(Ch: [Ch_FPU, Ch_WFLAGS]),
+(Ch: [Ch_WZeroFlag, Ch_WParityFlag, Ch_WCarryFlag, Ch_W0OverflowFlag, Ch_W0SignFlag, Ch_W0AuxiliaryFlag]),
+(Ch: [Ch_FPU, Ch_WZeroFlag, Ch_WParityFlag, Ch_WCarryFlag, Ch_W0OverflowFlag, Ch_W0SignFlag, Ch_W0AuxiliaryFlag]),
 (Ch: [Ch_FPU]),
 (Ch: [Ch_FPU]),
 (Ch: [Ch_FPU]),
 (Ch: [Ch_FPU]),
 (Ch: [Ch_FPU]),
 (Ch: [Ch_FPU]),
@@ -130,8 +130,8 @@
 (Ch: [Ch_ROp1, Ch_FPU]),
 (Ch: [Ch_ROp1, Ch_FPU]),
 (Ch: [Ch_FPU]),
 (Ch: [Ch_FPU]),
 (Ch: []),
 (Ch: []),
-(Ch: [Ch_WFLAGS]),
-(Ch: [Ch_FPU, Ch_WFLAGS]),
+(Ch: [Ch_WZeroFlag, Ch_WParityFlag, Ch_WCarryFlag, Ch_W0OverflowFlag, Ch_W0SignFlag, Ch_W0AuxiliaryFlag]),
+(Ch: [Ch_FPU, Ch_WZeroFlag, Ch_WParityFlag, Ch_WCarryFlag, Ch_W0OverflowFlag, Ch_W0SignFlag, Ch_W0AuxiliaryFlag]),
 (Ch: [Ch_FPU]),
 (Ch: [Ch_FPU]),
 (Ch: [Ch_FPU]),
 (Ch: [Ch_FPU]),
 (Ch: [Ch_FPU]),
 (Ch: [Ch_FPU]),
@@ -143,19 +143,19 @@
 (Ch: []),
 (Ch: []),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
-(Ch: [Ch_RWEAX, Ch_WEDX, Ch_WFlags]),
-(Ch: [Ch_RWEAX, Ch_WEDX, Ch_WFlags]),
+(Ch: [Ch_RWEAX, Ch_WEDX, Ch_WUCarryFlag, Ch_WUOverflowFlag, Ch_WUSignFlag, Ch_WUZeroFlag, Ch_WUAuxiliaryFlag, Ch_WUParityFlag]),
+(Ch: [Ch_RWEAX, Ch_WEDX, Ch_WCarryFlag, Ch_WOverflowFlag, Ch_WUSignFlag, Ch_WUZeroFlag, Ch_WUAuxiliaryFlag, Ch_WUParityFlag]),
 (Ch: [Ch_Wop2, Ch_Rop1]),
 (Ch: [Ch_Wop2, Ch_Rop1]),
-(Ch: [Ch_Mop1, Ch_WFlags]),
-(Ch: [Ch_WMemEDI, Ch_RWEDI, Ch_REDX]),
-(Ch: [Ch_WMemEDI, Ch_RWEDI, Ch_REDX]),
-(Ch: [Ch_WMemEDI, Ch_RWEDI, Ch_REDX]),
+(Ch: [Ch_Mop1, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WParityFlag]),
+(Ch: [Ch_WMemEDI, Ch_RWEDI, Ch_REDX, Ch_RDirFlag]),
+(Ch: [Ch_WMemEDI, Ch_RWEDI, Ch_REDX, Ch_RDirFlag]),
+(Ch: [Ch_WMemEDI, Ch_RWEDI, Ch_REDX, Ch_RDirFlag]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: []),
 (Ch: []),
 (Ch: []),
 (Ch: []),
-(Ch: [Ch_All]),
+(Ch: [Ch_All, Ch_ROverflowFlag]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
@@ -165,7 +165,7 @@
 (Ch: [Ch_RECX]),
 (Ch: [Ch_RECX]),
 (Ch: [Ch_ROp1]),
 (Ch: [Ch_ROp1]),
 (Ch: [Ch_WEAX, Ch_RFlags]),
 (Ch: [Ch_WEAX, Ch_RFlags]),
-(Ch: [Ch_Wop2]),
+(Ch: [Ch_Wop2, Ch_WZeroFlag]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_Wop2, Ch_Rop1]),
 (Ch: [Ch_Wop2, Ch_Rop1]),
 (Ch: [Ch_Wop2, Ch_Rop1]),
 (Ch: [Ch_Wop2, Ch_Rop1]),
@@ -185,11 +185,11 @@
 (Ch: [Ch_WEAX, Ch_RWESI, Ch_RDirFlag]),
 (Ch: [Ch_WEAX, Ch_RWESI, Ch_RDirFlag]),
 (Ch: [Ch_WEAX, Ch_RWESI, Ch_RDirFlag]),
 (Ch: [Ch_WEAX, Ch_RWESI, Ch_RDirFlag]),
 (Ch: [Ch_RWECX]),
 (Ch: [Ch_RWECX]),
-(Ch: [Ch_RWECX, Ch_RFlags]),
-(Ch: [Ch_RWECX, Ch_RFlags]),
-(Ch: [Ch_RWECX, Ch_RFlags]),
-(Ch: [Ch_RWECX, Ch_RFlags]),
-(Ch: [Ch_Wop2, Ch_WFlags]),
+(Ch: [Ch_RWECX, Ch_RZeroFlag]),
+(Ch: [Ch_RWECX, Ch_RZeroFlag]),
+(Ch: [Ch_RWECX, Ch_RZeroFlag]),
+(Ch: [Ch_RWECX, Ch_RZeroFlag]),
+(Ch: [Ch_Wop2, Ch_WZeroFlag]),
 (Ch: [Ch_Wop2, Ch_ROP1]),
 (Ch: [Ch_Wop2, Ch_ROP1]),
 (Ch: []),
 (Ch: []),
 (Ch: []),
 (Ch: []),
@@ -201,16 +201,16 @@
 (Ch: [Ch_All, Ch_RDirFlag]),
 (Ch: [Ch_All, Ch_RDirFlag]),
 (Ch: [Ch_Wop2, Ch_Rop1]),
 (Ch: [Ch_Wop2, Ch_Rop1]),
 (Ch: [Ch_Wop2, Ch_Rop1]),
 (Ch: [Ch_Wop2, Ch_Rop1]),
-(Ch: [Ch_RWEAX, Ch_WEDX, Ch_WFlags]),
+(Ch: [Ch_RWEAX, Ch_WEDX, Ch_WCarryFlag, Ch_WOverflowFlag, Ch_WUSignFlag, Ch_WUZeroFlag, Ch_WUAuxiliaryFlag, Ch_WUParityFlag]),
 (Ch: []),
 (Ch: []),
-(Ch: [Ch_Mop1]),
+(Ch: [Ch_Mop1, Ch_WCarryFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WParityFlag]),
 (Ch: []),
 (Ch: []),
 (Ch: [Ch_Mop1]),
 (Ch: [Ch_Mop1]),
-(Ch: [Ch_Mop2, Ch_Rop1, Ch_WFlags]),
+(Ch: [Ch_Mop2, Ch_Rop1, Ch_W0OverflowFlag, Ch_W0CarryFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WParityFlag, Ch_WUAuxiliaryFlag]),
 (Ch: [Ch_Rop1, Ch_Rop2]),
 (Ch: [Ch_Rop1, Ch_Rop2]),
-(Ch: [Ch_All]),
-(Ch: [Ch_All]),
-(Ch: [Ch_All]),
+(Ch: [Ch_All, Ch_RDirFlag]),
+(Ch: [Ch_All, Ch_RDirFlag]),
+(Ch: [Ch_All, Ch_RDirFlag]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
@@ -303,33 +303,33 @@
 (Ch: [Ch_RWESP, Ch_RFlags]),
 (Ch: [Ch_RWESP, Ch_RFlags]),
 (Ch: [Ch_RWESP, Ch_RFLAGS]),
 (Ch: [Ch_RWESP, Ch_RFLAGS]),
 (Ch: [Ch_Mop2, Ch_Rop1]),
 (Ch: [Ch_Mop2, Ch_Rop1]),
-(Ch: [Ch_Mop2, Ch_Rop1, Ch_RWFlags]),
-(Ch: [Ch_Mop2, Ch_Rop1, Ch_RWFlags]),
+(Ch: [Ch_Mop2, Ch_Rop1, Ch_RWCarryFlag, Ch_WOverflowFlag]),
+(Ch: [Ch_Mop2, Ch_Rop1, Ch_RWCarryFlag, Ch_WOverflowFlag]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_WEAX, Ch_WEDX]),
 (Ch: [Ch_WEAX, Ch_WEDX]),
 (Ch: [Ch_WEAX, Ch_WEDX]),
 (Ch: [Ch_WEAX, Ch_WEDX]),
 (Ch: [Ch_WEAX, Ch_WEDX]),
 (Ch: [Ch_WEAX, Ch_WEDX]),
 (Ch: [Ch_RWECX]),
 (Ch: [Ch_RWECX]),
-(Ch: [Ch_RWECX, Ch_RFlags]),
-(Ch: [Ch_RWECX, Ch_RFlags]),
-(Ch: [Ch_RWECX, Ch_RFLAGS]),
-(Ch: [Ch_RWECX, Ch_RFLAGS]),
+(Ch: [Ch_RWECX, Ch_RZeroFlag]),
+(Ch: [Ch_RWECX, Ch_RZeroFlag]),
+(Ch: [Ch_RWECX, Ch_RZeroFlag]),
+(Ch: [Ch_RWECX, Ch_RZeroFlag]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
-(Ch: [Ch_Mop2, Ch_Rop1, Ch_WFlags]),
-(Ch: [Ch_Mop2, Ch_Rop1, Ch_WFlags]),
+(Ch: [Ch_Mop2, Ch_Rop1, Ch_WCarryFlag, Ch_WOverflowFlag]),
+(Ch: [Ch_Mop2, Ch_Rop1, Ch_WCarryFlag, Ch_WOverflowFlag]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
-(Ch: [Ch_WFlags, Ch_REAX]),
-(Ch: [Ch_Mop2, Ch_Rop1, Ch_WFlags]),
+(Ch: [Ch_REAX, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WParityFlag, Ch_WCarryFlag]),
+(Ch: [Ch_Mop2, Ch_Rop1, Ch_WCarryFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WParityFlag, Ch_WUAuxiliaryFlag]),
 (Ch: [Ch_WEAX, Ch_RFLAGS]),
 (Ch: [Ch_WEAX, Ch_RFLAGS]),
-(Ch: [Ch_Mop2, Ch_Rop1, Ch_WFlags]),
-(Ch: [Ch_Mop2, Ch_Rop1, Ch_RWFlags, Ch_NoReadIfEqualRegs]),
-(Ch: [Ch_All, Ch_WFlags, Ch_RDirFlag]),
-(Ch: [Ch_All, Ch_WFlags, Ch_RDirFlag]),
-(Ch: [Ch_All, Ch_WFlags, Ch_RDirFlag]),
+(Ch: [Ch_Mop2, Ch_Rop1, Ch_WCarryFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WParityFlag, Ch_WUAuxiliaryFlag]),
+(Ch: [Ch_Mop2, Ch_Rop1, Ch_NoReadIfEqualRegs, Ch_RWCarryFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WParityFlag]),
+(Ch: [Ch_All, Ch_RDirFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WCarryFlag, Ch_WParityFlag]),
+(Ch: [Ch_All, Ch_RDirFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WCarryFlag, Ch_WParityFlag]),
+(Ch: [Ch_All, Ch_RDirFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WCarryFlag, Ch_WParityFlag]),
 (Ch: []),
 (Ch: []),
 (Ch: []),
 (Ch: []),
 (Ch: []),
 (Ch: []),
@@ -337,24 +337,24 @@
 (Ch: []),
 (Ch: []),
 (Ch: []),
 (Ch: []),
 (Ch: [Ch_Wop1]),
 (Ch: [Ch_Wop1]),
-(Ch: [Ch_Mop2, Ch_Rop1, Ch_WFlags]),
-(Ch: [Ch_MOp3, Ch_WFlags, Ch_Rop2]),
-(Ch: [Ch_Mop2, Ch_Rop1, Ch_WFlags]),
-(Ch: [Ch_MOp3, Ch_WFlags, Ch_Rop2]),
+(Ch: [Ch_Mop2, Ch_Rop1, Ch_WCarryFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WParityFlag, Ch_WUAuxiliaryFlag]),
+(Ch: [Ch_MOp3, Ch_Rop2, Ch_WCarryFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WParityFlag, Ch_WUAuxiliaryFlag]),
+(Ch: [Ch_Mop2, Ch_Rop1, Ch_WCarryFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WParityFlag, Ch_WUAuxiliaryFlag]),
+(Ch: [Ch_MOp3, Ch_Rop2, Ch_WCarryFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WParityFlag, Ch_WUAuxiliaryFlag]),
 (Ch: [Ch_Wop1]),
 (Ch: [Ch_Wop1]),
 (Ch: [Ch_Wop1]),
 (Ch: [Ch_Wop1]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_Wop1]),
 (Ch: [Ch_Wop1]),
-(Ch: [Ch_WFlags]),
-(Ch: [Ch_SDirFlag]),
-(Ch: [Ch_WFlags]),
+(Ch: [Ch_W1CarryFlag]),
+(Ch: [Ch_W1DirFlag]),
+(Ch: [Ch_W1IntFlag]),
 (Ch: [Ch_REAX, Ch_WMemEDI, Ch_RWEDI, Ch_RDirFlag]),
 (Ch: [Ch_REAX, Ch_WMemEDI, Ch_RWEDI, Ch_RDirFlag]),
 (Ch: [Ch_REAX, Ch_WMemEDI, Ch_RWEDI, Ch_RDirFlag]),
 (Ch: [Ch_REAX, Ch_WMemEDI, Ch_RWEDI, Ch_RDirFlag]),
 (Ch: [Ch_REAX, Ch_WMemEDI, Ch_RWEDI, Ch_RDirFlag]),
 (Ch: [Ch_REAX, Ch_WMemEDI, Ch_RWEDI, Ch_RDirFlag]),
 (Ch: [Ch_Wop1]),
 (Ch: [Ch_Wop1]),
-(Ch: [Ch_Mop2, Ch_Rop1, Ch_WFlags, Ch_NoReadIfEqualRegs]),
+(Ch: [Ch_Mop2, Ch_Rop1, Ch_NoReadIfEqualRegs, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WCarryFlag, Ch_WParityFlag]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
@@ -362,22 +362,22 @@
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
-(Ch: [Ch_WFlags, Ch_Rop1, Ch_Rop2]),
+(Ch: [Ch_Rop1, Ch_Rop2, Ch_W0OverflowFlag, Ch_W0CarryFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WParityFlag, Ch_WUAuxiliaryFlag]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
-(Ch: [Ch_WFlags]),
-(Ch: [Ch_WFlags]),
+(Ch: [Ch_WZeroFlag]),
+(Ch: [Ch_WZeroFlag]),
 (Ch: []),
 (Ch: []),
 (Ch: []),
 (Ch: []),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
-(Ch: [Ch_All]),
+(Ch: [Ch_All, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WCarryFlag, Ch_WParityFlag]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_RWop1, Ch_RWop2, Ch_NoReadIfEqualRegs]),
 (Ch: [Ch_RWop1, Ch_RWop2, Ch_NoReadIfEqualRegs]),
 (Ch: [Ch_WEAX, Ch_REBX]),
 (Ch: [Ch_WEAX, Ch_REBX]),
 (Ch: [Ch_WEAX, Ch_REBX]),
 (Ch: [Ch_WEAX, Ch_REBX]),
-(Ch: [Ch_Mop2, Ch_Rop1, Ch_WFlags, Ch_NoReadIfEqualRegs]),
+(Ch: [Ch_Mop2, Ch_Rop1, Ch_NoReadIfEqualRegs, Ch_W0OverflowFlag, Ch_W0CarryFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WParityFlag, Ch_WUAuxiliaryFlag]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
@@ -972,8 +972,8 @@
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_Mop2, Ch_Rop1]),
 (Ch: [Ch_Mop2, Ch_Rop1]),
-(Ch: [Ch_RWECX, Ch_RFlags]),
-(Ch: [Ch_RWECX, Ch_RFlags]),
+(Ch: [Ch_RWECX, Ch_RCarryFlag]),
+(Ch: [Ch_RWECX, Ch_RCarryFlag]),
 (Ch: [Ch_Mop1, Ch_RWEAX]),
 (Ch: [Ch_Mop1, Ch_RWEAX]),
 (Ch: [Ch_Mop1, Ch_RWEAX]),
 (Ch: [Ch_Mop1, Ch_RWEAX]),
 (Ch: [Ch_Mop2, Ch_Rop1]),
 (Ch: [Ch_Mop2, Ch_Rop1]),

+ 17 - 2
compiler/x86/aasmcpu.pas

@@ -212,8 +212,23 @@ interface
          this changed content afterwards (add/sub/..., but e.g. not rep
          this changed content afterwards (add/sub/..., but e.g. not rep
          or movsd)}
          or movsd)}
         Ch_MEAX, Ch_MECX, Ch_MEDX, Ch_MEBX, Ch_MESP, Ch_MEBP, Ch_MESI, Ch_MEDI,
         Ch_MEAX, Ch_MECX, Ch_MEDX, Ch_MEBX, Ch_MESP, Ch_MEBP, Ch_MESI, Ch_MEDI,
-        Ch_CDirFlag {clear direction flag}, Ch_SDirFlag {set dir flag},Ch_RDirFlag {read direction flag},
-        Ch_RFlags, Ch_WFlags, Ch_RWFlags, Ch_FPU,
+        {read individual flag bits from the flags register}
+        Ch_RCarryFlag,Ch_RParityFlag,Ch_RAuxiliaryFlag,Ch_RZeroFlag,Ch_RSignFlag,Ch_ROverflowFlag,
+        {write individual flag bits to the flags register}
+        Ch_WCarryFlag,Ch_WParityFlag,Ch_WAuxiliaryFlag,Ch_WZeroFlag,Ch_WSignFlag,Ch_WOverflowFlag,
+        {set individual flag bits to 0 in the flags register}
+        Ch_W0CarryFlag,Ch_W0ParityFlag,Ch_W0AuxiliaryFlag,Ch_W0ZeroFlag,Ch_W0SignFlag,Ch_W0OverflowFlag,
+        {set individual flag bits to 1 in the flags register}
+        Ch_W1CarryFlag,Ch_W1ParityFlag,Ch_W1AuxiliaryFlag,Ch_W1ZeroFlag,Ch_W1SignFlag,Ch_W1OverflowFlag,
+        {write an undefined value to individual flag bits in the flags register}
+        Ch_WUCarryFlag,Ch_WUParityFlag,Ch_WUAuxiliaryFlag,Ch_WUZeroFlag,Ch_WUSignFlag,Ch_WUOverflowFlag,
+        {read and write flag bits}
+        Ch_RWCarryFlag,Ch_RWParityFlag,Ch_RWAuxiliaryFlag,Ch_RWZeroFlag,Ch_RWSignFlag,Ch_RWOverflowFlag,
+        {more specialized flag bits (not considered part of NR_DEFAULTFLAGS by the compiler)}
+        Ch_RDirFlag,Ch_W0DirFlag,Ch_W1DirFlag,Ch_W0IntFlag,Ch_W1IntFlag,
+        {read/write/read+write the entire flags/eflags/rflags register}
+        Ch_RFlags, Ch_WFlags, Ch_RWFlags,
+        Ch_FPU,
         Ch_Rop1, Ch_Wop1, Ch_RWop1,Ch_Mop1,
         Ch_Rop1, Ch_Wop1, Ch_RWop1,Ch_Mop1,
         Ch_Rop2, Ch_Wop2, Ch_RWop2,Ch_Mop2,
         Ch_Rop2, Ch_Wop2, Ch_RWop2,Ch_Mop2,
         Ch_Rop3, Ch_WOp3, Ch_RWOp3,Ch_Mop3,
         Ch_Rop3, Ch_WOp3, Ch_RWOp3,Ch_Mop3,

+ 92 - 92
compiler/x86/x86ins.dat

@@ -16,25 +16,25 @@
 void                  void                            none
 void                  void                            none
 
 
 [AAA]
 [AAA]
-(Ch_MEAX, Ch_RWFlags)
+(Ch_MEAX, Ch_RWAuxiliaryFlag, Ch_WCarryFlag, Ch_WUOverflowFlag, Ch_WUSignFlag, Ch_WUZeroFlag, Ch_WUParityFlag)
 void                  \1\x37                          8086,NOX86_64
 void                  \1\x37                          8086,NOX86_64
 
 
 [AAD,aadX]
 [AAD,aadX]
-(Ch_MEAX, Ch_WFlags)
+(Ch_MEAX, Ch_WSignFlag, Ch_WZeroFlag, Ch_WParityFlag, Ch_WUOverflowFlag, Ch_WUAuxiliaryFlag, Ch_WUCarryFlag)
 void                  \2\xD5\x0A                      8086,NOX86_64
 void                  \2\xD5\x0A                      8086,NOX86_64
 imm                   \1\xD5\24                       8086,SB,NOX86_64
 imm                   \1\xD5\24                       8086,SB,NOX86_64
 
 
 [AAM,aamX]
 [AAM,aamX]
-(Ch_MEAX, Ch_WFlags)
+(Ch_MEAX, Ch_WSignFlag, Ch_WZeroFlag, Ch_WParityFlag, Ch_WUOverflowFlag, Ch_WUAuxiliaryFlag, Ch_WUCarryFlag)
 void                  \2\xD4\x0A                      8086,NOX86_64
 void                  \2\xD4\x0A                      8086,NOX86_64
 imm                   \1\xD4\24                       8086,SB,NOX86_64
 imm                   \1\xD4\24                       8086,SB,NOX86_64
 
 
 [AAS]
 [AAS]
-(Ch_MEAX, Ch_RWFlags)
+(Ch_MEAX, Ch_RWAuxiliaryFlag, Ch_WCarryFlag, Ch_WUOverflowFlag, Ch_WUSignFlag, Ch_WUZeroFlag, Ch_WUParityFlag)
 void                  \1\x3F                          8086,NOX86_64
 void                  \1\x3F                          8086,NOX86_64
 
 
 [ADC,adcX]
 [ADC,adcX]
-(Ch_Mop2, Ch_Rop1, Ch_RWFlags)
+(Ch_Mop2, Ch_Rop1, Ch_RWCarryFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WParityFlag)
 regmem,reg16|32|64    \320\1\x11\101                  8086,SM
 regmem,reg16|32|64    \320\1\x11\101                  8086,SM
 reg16|32|64,regmem    \320\1\x13\110                  8086,SM
 reg16|32|64,regmem    \320\1\x13\110                  8086,SM
 rm8,reg8              \1\x10\101                      8086
 rm8,reg8              \1\x10\101                      8086
@@ -50,7 +50,7 @@ reg_al,imm            \1\x14\21                       8086,SB
 rm8,imm               \1\x80\202\21                   8086,SB
 rm8,imm               \1\x80\202\21                   8086,SB
 
 
 [ADD,addX]
 [ADD,addX]
-(Ch_Mop2, Ch_Rop1, Ch_WFlags)
+(Ch_Mop2, Ch_Rop1, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WCarryFlag, Ch_WParityFlag)
 regmem,reg16|32|64    \320\1\x01\101                  8086,SM
 regmem,reg16|32|64    \320\1\x01\101                  8086,SM
 reg16|32|64,regmem    \320\1\x03\110                  8086,SM
 reg16|32|64,regmem    \320\1\x03\110                  8086,SM
 rm8,reg8              \1\x00\101                      8086
 rm8,reg8              \1\x00\101                      8086
@@ -66,7 +66,7 @@ reg_al,imm            \1\x04\21                       8086,SB
 rm8,imm               \1\x80\200\21                   8086,SB
 rm8,imm               \1\x80\200\21                   8086,SB
 
 
 [AND,andX]
 [AND,andX]
-(Ch_Mop2, Ch_Rop1, Ch_WFlags)
+(Ch_Mop2, Ch_Rop1, Ch_W0OverflowFlag, Ch_W0CarryFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WParityFlag, Ch_WUAuxiliaryFlag)
 regmem,reg16|32|64    \320\1\x21\101                  8086,SM
 regmem,reg16|32|64    \320\1\x21\101                  8086,SM
 reg16|32|64,regmem    \320\1\x23\110                  8086,SM
 reg16|32|64,regmem    \320\1\x23\110                  8086,SM
 rm8,reg8              \1\x20\101                      8086
 rm8,reg8              \1\x20\101                      8086
@@ -82,7 +82,7 @@ reg_al,imm            \1\x24\21                       8086,SB
 rm8,imm               \1\x80\204\21                   8086,SB
 rm8,imm               \1\x80\204\21                   8086,SB
 
 
 [ARPL,arplX]
 [ARPL,arplX]
-(Ch_WFlags)
+(Ch_WZeroFlag)
 reg16,reg16           \1\x63\101                      286,PROT,NOX86_64
 reg16,reg16           \1\x63\101                      286,PROT,NOX86_64
 mem,reg16             \1\x63\101                      286,PROT,SM,NOX86_64
 mem,reg16             \1\x63\101                      286,PROT,SM,NOX86_64
 
 
@@ -91,11 +91,11 @@ mem,reg16             \1\x63\101                      286,PROT,SM,NOX86_64
 reg16|32,mem          \320\1\x62\110                  186,NOX86_64
 reg16|32,mem          \320\1\x62\110                  186,NOX86_64
 
 
 [BSF,bsfX]
 [BSF,bsfX]
-(Ch_Wop2, Ch_WFlags, Ch_Rop1)
+(Ch_Wop2, Ch_Rop1, Ch_WZeroFlag, Ch_WUCarryFlag, Ch_WUOverflowFlag, Ch_WUSignFlag, Ch_WUAuxiliaryFlag, Ch_WUParityFlag)
 reg16|32|64,regmem    \320\2\x0F\xBC\110              386,SM
 reg16|32|64,regmem    \320\2\x0F\xBC\110              386,SM
 
 
 [BSR,bsrX]
 [BSR,bsrX]
-(Ch_Wop2, Ch_WFlags, Ch_Rop1)
+(Ch_Wop2, Ch_Rop1, Ch_WZeroFlag, Ch_WUCarryFlag, Ch_WUOverflowFlag, Ch_WUSignFlag, Ch_WUAuxiliaryFlag, Ch_WUParityFlag)
 reg16|32|64,regmem    \320\2\x0F\xBD\110              386,SM
 reg16|32|64,regmem    \320\2\x0F\xBD\110              386,SM
 
 
 [BSWAP,bswapX]
 [BSWAP,bswapX]
@@ -103,22 +103,22 @@ reg16|32|64,regmem    \320\2\x0F\xBD\110              386,SM
 reg32|64              \320\1\x0F\10\xC8               486
 reg32|64              \320\1\x0F\10\xC8               486
 
 
 [BT,btX]
 [BT,btX]
-(Ch_WFlags, Ch_Rop1, Ch_Rop2)
+(Ch_Rop1, Ch_Rop2, Ch_WCarryFlag, Ch_WUOverflowFlag, Ch_WUSignFlag, Ch_WUAuxiliaryFlag, Ch_WUParityFlag)
 regmem,reg16|32|64    \320\2\x0F\xA3\101              386,SM
 regmem,reg16|32|64    \320\2\x0F\xA3\101              386,SM
 rm16|32|64,imm        \320\2\x0F\xBA\204\25           386,SB
 rm16|32|64,imm        \320\2\x0F\xBA\204\25           386,SB
 
 
 [BTC,btcX]
 [BTC,btcX]
-(Ch_Mop2, Ch_Rop1, Ch_WFlags)
+(Ch_Mop2, Ch_Rop1, Ch_WCarryFlag, Ch_WUOverflowFlag, Ch_WUSignFlag, Ch_WUAuxiliaryFlag, Ch_WUParityFlag)
 regmem,reg16|32|64    \320\2\x0F\xBB\101              386,SM
 regmem,reg16|32|64    \320\2\x0F\xBB\101              386,SM
 rm16|32|64,imm        \320\2\x0F\xBA\207\25           386,SB
 rm16|32|64,imm        \320\2\x0F\xBA\207\25           386,SB
 
 
 [BTR,btrX]
 [BTR,btrX]
-(Ch_Mop2, Ch_Rop1, Ch_WFlags)
+(Ch_Mop2, Ch_Rop1, Ch_WCarryFlag, Ch_WUOverflowFlag, Ch_WUSignFlag, Ch_WUAuxiliaryFlag, Ch_WUParityFlag)
 regmem,reg16|32|64    \320\2\x0F\xB3\101              386,SM
 regmem,reg16|32|64    \320\2\x0F\xB3\101              386,SM
 rm16|32|64,imm        \320\2\x0F\xBA\206\25           386,SB
 rm16|32|64,imm        \320\2\x0F\xBA\206\25           386,SB
 
 
 [BTS,btsX]
 [BTS,btsX]
-(Ch_Mop2, Ch_Rop1, Ch_WFlags)
+(Ch_Mop2, Ch_Rop1, Ch_WCarryFlag, Ch_WUOverflowFlag, Ch_WUSignFlag, Ch_WUAuxiliaryFlag, Ch_WUParityFlag)
 regmem,reg16|32|64    \320\2\x0F\xAB\101              386,SM
 regmem,reg16|32|64    \320\2\x0F\xAB\101              386,SM
 rm16|32|64,imm        \320\2\x0F\xBA\205\25           386,SB
 rm16|32|64,imm        \320\2\x0F\xBA\205\25           386,SB
 
 
@@ -154,15 +154,15 @@ void                  \324\1\x98                      8086
 void                  \325\1\x99                      386
 void                  \325\1\x99                      386
 
 
 [CLC]
 [CLC]
-(Ch_WFlags)
+(Ch_W0CarryFlag)
 void                  \1\xF8                          8086
 void                  \1\xF8                          8086
 
 
 [CLD]
 [CLD]
-(Ch_CDirFlag)
+(Ch_W0DirFlag)
 void                  \1\xFC                          8086
 void                  \1\xFC                          8086
 
 
 [CLI]
 [CLI]
-(Ch_WFlags)
+(Ch_W0IntFlag)
 void                  \1\xFA                          8086
 void                  \1\xFA                          8086
 
 
 [CLTS]
 [CLTS]
@@ -170,11 +170,11 @@ void                  \1\xFA                          8086
 void                  \2\x0F\x06                      286,PRIV
 void                  \2\x0F\x06                      286,PRIV
 
 
 [CMC]
 [CMC]
-(Ch_RWFlags)
+(Ch_RWCarryFlag)
 void                  \1\xF5                          8086
 void                  \1\xF5                          8086
 
 
 [CMP,cmpX]
 [CMP,cmpX]
-(Ch_ROp1, Ch_ROp2, Ch_WFlags, Ch_NoReadIfEqualRegs)
+(Ch_ROp1, Ch_ROp2, Ch_NoReadIfEqualRegs, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WCarryFlag, Ch_WParityFlag)
 regmem,reg16|32|64    \320\1\x39\101                  8086,SM
 regmem,reg16|32|64    \320\1\x39\101                  8086,SM
 reg16|32|64,regmem    \320\1\x3B\110                  8086,SM
 reg16|32|64,regmem    \320\1\x3B\110                  8086,SM
 rm8,reg8              \1\x38\101                      8086
 rm8,reg8              \1\x38\101                      8086
@@ -193,30 +193,30 @@ mem,imm16             \324\1\x81\207\31               8086,SW
 mem,imm8              \1\x80\207\21                   8086,SB
 mem,imm8              \1\x80\207\21                   8086,SB
 
 
 [CMPSB]
 [CMPSB]
-(Ch_All, Ch_WFlags, Ch_RDirFlag)
+(Ch_All, Ch_RDirFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WCarryFlag, Ch_WParityFlag)
 void                  \332\1\xA6                      8086
 void                  \332\1\xA6                      8086
 
 
 [CMPSD,cmpsl]
 [CMPSD,cmpsl]
-(Ch_All, Ch_WFlags, Ch_RDirFlag)
+(Ch_All, Ch_RDirFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WCarryFlag, Ch_WParityFlag)
 void                  \332\325\1\xA7                  386
 void                  \332\325\1\xA7                  386
 xmmreg,xmmrm,imm      \334\2\x0F\xC2\110\26           WILLAMETTE,SSE2,SM2,SB,AR2
 xmmreg,xmmrm,imm      \334\2\x0F\xC2\110\26           WILLAMETTE,SSE2,SM2,SB,AR2
 
 
 [CMPSW]
 [CMPSW]
-(Ch_All, Ch_WFlags, Ch_RDirFlag)
+(Ch_All, Ch_RDirFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WCarryFlag, Ch_WParityFlag)
 void                  \332\324\1\xA7                  8086
 void                  \332\324\1\xA7                  8086
 
 
 [CMPXCHG,cmpxchgX]
 [CMPXCHG,cmpxchgX]
-(Ch_All)
+(Ch_All, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WCarryFlag, Ch_WParityFlag)
 regmem,reg16|32|64    \320\2\x0F\xB1\101              PENT,SM
 regmem,reg16|32|64    \320\2\x0F\xB1\101              PENT,SM
 rm8,reg8              \2\x0F\xB0\101                  PENT
 rm8,reg8              \2\x0F\xB0\101                  PENT
 
 
 [CMPXCHG486,cmpxchg486X]
 [CMPXCHG486,cmpxchg486X]
-(Ch_All)
+(Ch_All, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WCarryFlag, Ch_WParityFlag)
 regmem,reg16|32|64    \320\2\x0F\xA7\101              486,SM
 regmem,reg16|32|64    \320\2\x0F\xA7\101              486,SM
 rm8,reg8              \2\x0F\xA6\101                  486,UNDOC
 rm8,reg8              \2\x0F\xA6\101                  486,UNDOC
 
 
 [CMPXCHG8B,cmpxchg8b]
 [CMPXCHG8B,cmpxchg8b]
-(Ch_All)
+(Ch_All, Ch_WZeroFlag)
 mem                   \2\x0F\xC7\201                  PENT
 mem                   \2\x0F\xC7\201                  PENT
 
 
 [CPUID]
 [CPUID]
@@ -232,21 +232,21 @@ void                  \324\1\x99                      8086
 void                  \325\1\x98                      386
 void                  \325\1\x98                      386
 
 
 [DAA]
 [DAA]
-(Ch_MEAX)
+(Ch_MEAX, Ch_RWAuxiliaryFlag, Ch_RWCarryFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WParityFlag, Ch_WUOverflowFlag)
 void                  \1\x27                          8086,NOX86_64
 void                  \1\x27                          8086,NOX86_64
 
 
 [DAS]
 [DAS]
-(Ch_MEAX)
+(Ch_MEAX, Ch_RWAuxiliaryFlag, Ch_RWCarryFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WParityFlag, Ch_WUOverflowFlag)
 void                  \1\x2F                          8086,NOX86_64
 void                  \1\x2F                          8086,NOX86_64
 
 
 [DEC,decX]
 [DEC,decX]
-(Ch_Mop1, Ch_WFlags)
+(Ch_Mop1, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WParityFlag)
 reg16|32              \320\10\x48                     8086,NOX86_64
 reg16|32              \320\10\x48                     8086,NOX86_64
 rm16|32|64            \320\1\xFF\201                  8086
 rm16|32|64            \320\1\xFF\201                  8086
 rm8                   \1\xFE\201                      8086
 rm8                   \1\xFE\201                      8086
 
 
 [DIV,divX]
 [DIV,divX]
-(Ch_RWEAX, Ch_WEDX, Ch_WFlags)
+(Ch_RWEAX, Ch_WEDX, Ch_WUCarryFlag, Ch_WUOverflowFlag, Ch_WUSignFlag, Ch_WUZeroFlag, Ch_WUAuxiliaryFlag, Ch_WUParityFlag)
 rm16|32|64            \320\1\xF7\206                  8086
 rm16|32|64            \320\1\xF7\206                  8086
 rm8                   \1\xF6\206                      8086
 rm8                   \1\xF6\206                      8086
 
 
@@ -301,49 +301,49 @@ void                  \2\xD9\xE0                      8086,FPU
 void                  \3\x9B\xDB\xE2                  8086,FPU
 void                  \3\x9B\xDB\xE2                  8086,FPU
 
 
 [FCMOVB,fcmovbF]
 [FCMOVB,fcmovbF]
-(Ch_FPU, Ch_RFLAGS)
+(Ch_FPU, Ch_RCarryFlag)
 void                  \2\xDA\xC1                      P6,FPU
 void                  \2\xDA\xC1                      P6,FPU
 fpureg                \1\xDA\10\xC0                   P6,FPU
 fpureg                \1\xDA\10\xC0                   P6,FPU
 fpu0,fpureg           \1\xDA\11\xC0                   P6,FPU
 fpu0,fpureg           \1\xDA\11\xC0                   P6,FPU
 
 
 [FCMOVBE,fcmovbeF]
 [FCMOVBE,fcmovbeF]
-(Ch_FPU, Ch_RFLAGS)
+(Ch_FPU, Ch_RCarryFlag, Ch_RZeroFlag)
 void                  \2\xDA\xD1                      P6,FPU
 void                  \2\xDA\xD1                      P6,FPU
 fpureg                \1\xDA\10\xD0                   P6,FPU
 fpureg                \1\xDA\10\xD0                   P6,FPU
 fpu0,fpureg           \1\xDA\11\xD0                   P6,FPU
 fpu0,fpureg           \1\xDA\11\xD0                   P6,FPU
 
 
 [FCMOVE,fcmoveF]
 [FCMOVE,fcmoveF]
-(Ch_FPU, Ch_RFLAGS)
+(Ch_FPU, Ch_RZeroFlag)
 void                  \2\xDA\xC9                      P6,FPU
 void                  \2\xDA\xC9                      P6,FPU
 fpureg                \1\xDA\10\xC8                   P6,FPU
 fpureg                \1\xDA\10\xC8                   P6,FPU
 fpu0,fpureg           \1\xDA\11\xC8                   P6,FPU
 fpu0,fpureg           \1\xDA\11\xC8                   P6,FPU
 
 
 [FCMOVNB,fcmovnbF]
 [FCMOVNB,fcmovnbF]
-(Ch_FPU, Ch_RFLAGS)
+(Ch_FPU, Ch_RCarryFlag)
 void                  \2\xDB\xC1                      P6,FPU
 void                  \2\xDB\xC1                      P6,FPU
 fpureg                \1\xDB\10\xC0                   P6,FPU
 fpureg                \1\xDB\10\xC0                   P6,FPU
 fpu0,fpureg           \1\xDB\11\xC0                   P6,FPU
 fpu0,fpureg           \1\xDB\11\xC0                   P6,FPU
 
 
 [FCMOVNBE,fcmovnbeF]
 [FCMOVNBE,fcmovnbeF]
-(Ch_FPU, Ch_RFLAGS)
+(Ch_FPU, Ch_RCarryFlag, Ch_RZeroFlag)
 void                  \2\xDB\xD1                      P6,FPU
 void                  \2\xDB\xD1                      P6,FPU
 fpureg                \1\xDB\10\xD0                   P6,FPU
 fpureg                \1\xDB\10\xD0                   P6,FPU
 fpu0,fpureg           \1\xDB\11\xD0                   P6,FPU
 fpu0,fpureg           \1\xDB\11\xD0                   P6,FPU
 
 
 [FCMOVNE,fcmovneF]
 [FCMOVNE,fcmovneF]
-(Ch_FPU, Ch_RFLAGS)
+(Ch_FPU, Ch_RZeroFlag)
 void                  \2\xDB\xC9                      P6,FPU
 void                  \2\xDB\xC9                      P6,FPU
 fpureg                \1\xDB\10\xC8                   P6,FPU
 fpureg                \1\xDB\10\xC8                   P6,FPU
 fpu0,fpureg           \1\xDB\11\xC8                   P6,FPU
 fpu0,fpureg           \1\xDB\11\xC8                   P6,FPU
 
 
 [FCMOVNU,fcmovnuF]
 [FCMOVNU,fcmovnuF]
-(Ch_FPU, Ch_RFLAGS)
+(Ch_FPU, Ch_RParityFlag)
 void                  \2\xDB\xD9                      P6,FPU
 void                  \2\xDB\xD9                      P6,FPU
 fpureg                \1\xDB\10\xD8                   P6,FPU
 fpureg                \1\xDB\10\xD8                   P6,FPU
 fpu0,fpureg           \1\xDB\11\xD8                   P6,FPU
 fpu0,fpureg           \1\xDB\11\xD8                   P6,FPU
 
 
 [FCMOVU,fcmovuF]
 [FCMOVU,fcmovuF]
-(Ch_FPU, Ch_RFLAGS)
+(Ch_FPU, Ch_RParityFlag)
 void                  \2\xDA\xD9                      P6,FPU
 void                  \2\xDA\xD9                      P6,FPU
 fpureg                \1\xDA\10\xD8                   P6,FPU
 fpureg                \1\xDA\10\xD8                   P6,FPU
 fpu0,fpureg           \1\xDA\11\xD8                   P6,FPU
 fpu0,fpureg           \1\xDA\11\xD8                   P6,FPU
@@ -357,13 +357,13 @@ fpureg                \1\xD8\10\xD0                   8086,FPU
 fpu0,fpureg           \1\xD8\11\xD0                   8086,FPU
 fpu0,fpureg           \1\xD8\11\xD0                   8086,FPU
 
 
 [FCOMI,fcomiF]
 [FCOMI,fcomiF]
-(Ch_WFLAGS)
+(Ch_WZeroFlag, Ch_WParityFlag, Ch_WCarryFlag, Ch_W0OverflowFlag, Ch_W0SignFlag, Ch_W0AuxiliaryFlag)
 void                  \2\xDB\xF1                      P6,FPU
 void                  \2\xDB\xF1                      P6,FPU
 fpureg                \1\xDB\10\xF0                   P6,FPU
 fpureg                \1\xDB\10\xF0                   P6,FPU
 fpu0,fpureg           \1\xDB\11\xF0                   P6,FPU
 fpu0,fpureg           \1\xDB\11\xF0                   P6,FPU
 
 
 [FCOMIP,fcomipF]
 [FCOMIP,fcomipF]
-(Ch_FPU, Ch_WFLAGS)
+(Ch_FPU, Ch_WZeroFlag, Ch_WParityFlag, Ch_WCarryFlag, Ch_W0OverflowFlag, Ch_W0SignFlag, Ch_W0AuxiliaryFlag)
 void                  \2\xDF\xF1                      P6,FPU
 void                  \2\xDF\xF1                      P6,FPU
 fpureg                \1\xDF\10\xF0                   P6,FPU
 fpureg                \1\xDF\10\xF0                   P6,FPU
 fpu0,fpureg           \1\xDF\11\xF0                   P6,FPU
 fpu0,fpureg           \1\xDF\11\xF0                   P6,FPU
@@ -721,13 +721,13 @@ fpureg                \1\xDD\10\xE0                   386,FPU
 fpu0,fpureg           \1\xDD\11\xE0                   386,FPU
 fpu0,fpureg           \1\xDD\11\xE0                   386,FPU
 
 
 [FUCOMI,fucomiF]
 [FUCOMI,fucomiF]
-(Ch_WFLAGS)
+(Ch_WZeroFlag, Ch_WParityFlag, Ch_WCarryFlag, Ch_W0OverflowFlag, Ch_W0SignFlag, Ch_W0AuxiliaryFlag)
 void                  \2\xDB\xE9                      P6,FPU
 void                  \2\xDB\xE9                      P6,FPU
 fpureg                \1\xDB\10\xE8                   P6,FPU
 fpureg                \1\xDB\10\xE8                   P6,FPU
 fpu0,fpureg           \1\xDB\11\xE8                   P6,FPU
 fpu0,fpureg           \1\xDB\11\xE8                   P6,FPU
 
 
 [FUCOMIP,fucomipF]
 [FUCOMIP,fucomipF]
-(Ch_FPU, Ch_WFLAGS)
+(Ch_FPU, Ch_WZeroFlag, Ch_WParityFlag, Ch_WCarryFlag, Ch_W0OverflowFlag, Ch_W0SignFlag, Ch_W0AuxiliaryFlag)
 void                  \2\xDF\xE9                      P6,FPU
 void                  \2\xDF\xE9                      P6,FPU
 fpureg                \1\xDF\10\xE8                   P6,FPU
 fpureg                \1\xDF\10\xE8                   P6,FPU
 fpu0,fpureg           \1\xDF\11\xE8                   P6,FPU
 fpu0,fpureg           \1\xDF\11\xE8                   P6,FPU
@@ -782,12 +782,12 @@ regmem,reg16|32|64    \320\2\x0F\xA7\101              386,SM,UNDOC,ND
 void                  \1\xF1                          386,ND
 void                  \1\xF1                          386,ND
 
 
 [IDIV,idivX]
 [IDIV,idivX]
-(Ch_RWEAX, Ch_WEDX, Ch_WFlags)
+(Ch_RWEAX, Ch_WEDX, Ch_WUCarryFlag, Ch_WUOverflowFlag, Ch_WUSignFlag, Ch_WUZeroFlag, Ch_WUAuxiliaryFlag, Ch_WUParityFlag)
 rm16|32|64            \320\1\xF7\207                  8086
 rm16|32|64            \320\1\xF7\207                  8086
 rm8                   \1\xF6\207                      8086
 rm8                   \1\xF6\207                      8086
 
 
 [IMUL,imulX]
 [IMUL,imulX]
-(Ch_RWEAX, Ch_WEDX, Ch_WFlags)
+(Ch_RWEAX, Ch_WEDX, Ch_WCarryFlag, Ch_WOverflowFlag, Ch_WUSignFlag, Ch_WUZeroFlag, Ch_WUAuxiliaryFlag, Ch_WUParityFlag)
 reg16|32|64,regmem    \320\2\x0F\xAF\110              386,SM
 reg16|32|64,regmem    \320\2\x0F\xAF\110              386,SM
 rm16|32|64            \320\1\xF7\205                  8086
 rm16|32|64            \320\1\xF7\205                  8086
 reg32|64,regmem,imm8  \320\1\x6B\110\16               386,SM
 reg32|64,regmem,imm8  \320\1\x6B\110\16               386,SM
@@ -810,21 +810,21 @@ reg_al,reg_dx         \1\xEC                          8086
 reg_ax|32,reg_dx      \320\1\xED                      8086
 reg_ax|32,reg_dx      \320\1\xED                      8086
 
 
 [INC,incX]
 [INC,incX]
-(Ch_Mop1, Ch_WFlags)
+(Ch_Mop1, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WParityFlag)
 reg16|32              \320\10\x40                     8086,NOX86_64
 reg16|32              \320\10\x40                     8086,NOX86_64
 rm16|32|64            \320\1\xFF\200                  8086
 rm16|32|64            \320\1\xFF\200                  8086
 rm8                   \1\xFE\200                      8086
 rm8                   \1\xFE\200                      8086
 
 
 [INSB]
 [INSB]
-(Ch_WMemEDI, Ch_RWEDI, Ch_REDX)
+(Ch_WMemEDI, Ch_RWEDI, Ch_REDX, Ch_RDirFlag)
 void                  \1\x6C                          186
 void                  \1\x6C                          186
 
 
 [INSD,insl]
 [INSD,insl]
-(Ch_WMemEDI, Ch_RWEDI, Ch_REDX)
+(Ch_WMemEDI, Ch_RWEDI, Ch_REDX, Ch_RDirFlag)
 void                  \325\1\x6D                      386
 void                  \325\1\x6D                      386
 
 
 [INSW]
 [INSW]
-(Ch_WMemEDI, Ch_RWEDI, Ch_REDX)
+(Ch_WMemEDI, Ch_RWEDI, Ch_REDX, Ch_RDirFlag)
 void                  \324\1\x6D                      186
 void                  \324\1\x6D                      186
 
 
 [INT]
 [INT]
@@ -848,7 +848,7 @@ void                  \1\xCC                          8086,ND
 void                  \1\xCC                          8086
 void                  \1\xCC                          8086
 
 
 [INTO]
 [INTO]
-(Ch_All)
+(Ch_All, Ch_ROverflowFlag)
 void                  \1\xCE                          8086,NOX86_64
 void                  \1\xCE                          8086,NOX86_64
 
 
 [INVD]
 [INVD]
@@ -913,7 +913,7 @@ imm:imm32             \325\1\xEA\41\30                386,NOX86_64
 void                  \1\x9F                          8086
 void                  \1\x9F                          8086
 
 
 [LAR,larX]
 [LAR,larX]
-(Ch_Wop2)
+(Ch_Wop2, Ch_WZeroFlag)
 reg16|32|64,regmem    \320\2\x0F\x02\110              286,PROT,SM
 reg16|32|64,regmem    \320\2\x0F\x02\110              286,PROT,SM
 
 
 [LCALL,lcall]
 [LCALL,lcall]
@@ -1001,31 +1001,31 @@ imm,reg_cx            \310\1\xE2\50                   8086,NOX86_64
 imm,reg_ecx|64        \311\1\xE2\50                   386
 imm,reg_ecx|64        \311\1\xE2\50                   386
 
 
 [LOOPE]
 [LOOPE]
-(Ch_RWECX, Ch_RFlags)
+(Ch_RWECX, Ch_RZeroFlag)
 imm                   \312\1\xE1\50                   8086
 imm                   \312\1\xE1\50                   8086
 imm,reg_cx            \310\1\xE1\50                   8086,NOX86_64
 imm,reg_cx            \310\1\xE1\50                   8086,NOX86_64
 imm,reg_ecx|64        \311\1\xE1\50                   386
 imm,reg_ecx|64        \311\1\xE1\50                   386
 
 
 [LOOPNE]
 [LOOPNE]
-(Ch_RWECX, Ch_RFlags)
+(Ch_RWECX, Ch_RZeroFlag)
 imm                   \312\1\xE0\50                   8086
 imm                   \312\1\xE0\50                   8086
 imm,reg_cx            \310\1\xE0\50                   8086,NOX86_64
 imm,reg_cx            \310\1\xE0\50                   8086,NOX86_64
 imm,reg_ecx|64        \311\1\xE0\50                   386
 imm,reg_ecx|64        \311\1\xE0\50                   386
 
 
 [LOOPNZ]
 [LOOPNZ]
-(Ch_RWECX, Ch_RFlags)
+(Ch_RWECX, Ch_RZeroFlag)
 imm                   \312\1\xE0\50                   8086
 imm                   \312\1\xE0\50                   8086
 imm,reg_cx            \310\1\xE0\50                   8086,NOX86_64
 imm,reg_cx            \310\1\xE0\50                   8086,NOX86_64
 imm,reg_ecx|64        \311\1\xE0\50                   386
 imm,reg_ecx|64        \311\1\xE0\50                   386
 
 
 [LOOPZ]
 [LOOPZ]
-(Ch_RWECX, Ch_RFlags)
+(Ch_RWECX, Ch_RZeroFlag)
 imm                   \312\1\xE1\50                   8086
 imm                   \312\1\xE1\50                   8086
 imm,reg_cx            \310\1\xE1\50                   8086,NOX86_64
 imm,reg_cx            \310\1\xE1\50                   8086,NOX86_64
 imm,reg_ecx|64        \311\1\xE1\50                   386
 imm,reg_ecx|64        \311\1\xE1\50                   386
 
 
 [LSL,lslX]
 [LSL,lslX]
-(Ch_Wop2, Ch_WFlags)
+(Ch_Wop2, Ch_WZeroFlag)
 reg16|32|64,regmem    \320\2\x0F\x03\110              286,PROT,SM
 reg16|32|64,regmem    \320\2\x0F\x03\110              286,PROT,SM
 
 
 [LSS,lssX]
 [LSS,lssX]
@@ -1133,7 +1133,7 @@ reg32|64,rm16         \320\2\x0F\xB7\110              386
 reg16|32|64,rm8       \320\2\x0F\xB6\110              386
 reg16|32|64,rm8       \320\2\x0F\xB6\110              386
 
 
 [MUL,mulX]
 [MUL,mulX]
-(Ch_RWEAX, Ch_WEDX, Ch_WFlags)
+(Ch_RWEAX, Ch_WEDX, Ch_WCarryFlag, Ch_WOverflowFlag, Ch_WUSignFlag, Ch_WUZeroFlag, Ch_WUAuxiliaryFlag, Ch_WUParityFlag)
 rm16|32|64            \320\1\xF7\204                  8086
 rm16|32|64            \320\1\xF7\204                  8086
 rm8                   \1\xF6\204                      8086
 rm8                   \1\xF6\204                      8086
 
 
@@ -1144,7 +1144,7 @@ reg_eax,reg_ecx       \3\x0F\x01\xC9                  PRESCOTT,ND
 
 
 
 
 [NEG,negX]
 [NEG,negX]
-(Ch_Mop1)
+(Ch_Mop1, Ch_WCarryFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WParityFlag)
 rm16|32|64            \320\1\xF7\203                  8086
 rm16|32|64            \320\1\xF7\203                  8086
 rm8                   \1\xF6\203                      8086
 rm8                   \1\xF6\203                      8086
 
 
@@ -1158,7 +1158,7 @@ rm16|32|64            \320\1\xF7\202                  8086
 rm8                   \1\xF6\202                      8086
 rm8                   \1\xF6\202                      8086
 
 
 [OR,orX]
 [OR,orX]
-(Ch_Mop2, Ch_Rop1, Ch_WFlags)
+(Ch_Mop2, Ch_Rop1, Ch_W0OverflowFlag, Ch_W0CarryFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WParityFlag, Ch_WUAuxiliaryFlag)
 regmem,reg16|32|64    \320\1\x09\101                  8086,SM
 regmem,reg16|32|64    \320\1\x09\101                  8086,SM
 reg16|32|64,regmem    \320\1\x0B\110                  8086,SM
 reg16|32|64,regmem    \320\1\x0B\110                  8086,SM
 rm8,reg8              \1\x08\101                      8086
 rm8,reg8              \1\x08\101                      8086
@@ -1183,15 +1183,15 @@ reg_dx,reg_ax         \324\1\xEF                      8086
 reg_dx,reg_eax        \325\1\xEF                      386
 reg_dx,reg_eax        \325\1\xEF                      386
 
 
 [OUTSB]
 [OUTSB]
-(Ch_All)
+(Ch_All, Ch_RDirFlag)
 void                  \1\x6E                          186
 void                  \1\x6E                          186
 
 
 [OUTSD,outsl]
 [OUTSD,outsl]
-(Ch_All)
+(Ch_All, Ch_RDirFlag)
 void                  \325\1\x6F                      386
 void                  \325\1\x6F                      386
 
 
 [OUTSW]
 [OUTSW]
-(Ch_All)
+(Ch_All, Ch_RDirFlag)
 void                  \324\1\x6F                      186
 void                  \324\1\x6F                      186
 
 
 [PACKSSDW]
 [PACKSSDW]
@@ -1652,7 +1652,7 @@ mmxreg,mmxrm          \2\x0F\xEF\110                  PENT,MMX,SM
 xmmreg,xmmrm          \361\2\x0F\xEF\110              WILLAMETTE,SSE2,SM
 xmmreg,xmmrm          \361\2\x0F\xEF\110              WILLAMETTE,SSE2,SM
 
 
 [RCL,rclX]
 [RCL,rclX]
-(Ch_Mop2, Ch_Rop1, Ch_RWFlags)
+(Ch_Mop2, Ch_Rop1, Ch_RWCarryFlag, Ch_WOverflowFlag)
 rm16|32|64,unity      \320\1\xD1\202                  8086
 rm16|32|64,unity      \320\1\xD1\202                  8086
 rm16|32|64,reg_cl     \320\1\xD3\202                  8086
 rm16|32|64,reg_cl     \320\1\xD3\202                  8086
 rm16|32|64,imm        \320\1\xC1\202\25               186,SB
 rm16|32|64,imm        \320\1\xC1\202\25               186,SB
@@ -1661,7 +1661,7 @@ rm8,reg_cl            \1\xD2\202                      8086
 rm8,imm               \1\xC0\202\25                   186,SB
 rm8,imm               \1\xC0\202\25                   186,SB
 
 
 [RCR,rcrX]
 [RCR,rcrX]
-(Ch_Mop2, Ch_Rop1, Ch_RWFlags)
+(Ch_Mop2, Ch_Rop1, Ch_RWCarryFlag, Ch_WOverflowFlag)
 rm16|32|64,unity      \320\1\xD1\203                  8086
 rm16|32|64,unity      \320\1\xD1\203                  8086
 rm16|32|64,reg_cl     \320\1\xD3\203                  8086
 rm16|32|64,reg_cl     \320\1\xD3\203                  8086
 rm16|32|64,imm        \320\1\xC1\203\25               186,SB
 rm16|32|64,imm        \320\1\xC1\203\25               186,SB
@@ -1690,19 +1690,19 @@ void                  \2\x0F\x31                      PENT
 void                  \1\xF3                          8086,PRE
 void                  \1\xF3                          8086,PRE
 
 
 [REPE]
 [REPE]
-(Ch_RWECX, Ch_RFlags)
+(Ch_RWECX, Ch_RZeroFlag)
 void                  \1\xF3                          8086,PRE
 void                  \1\xF3                          8086,PRE
 
 
 [REPNE]
 [REPNE]
-(Ch_RWECX, Ch_RFlags)
+(Ch_RWECX, Ch_RZeroFlag)
 void                  \1\xF2                          8086,PRE
 void                  \1\xF2                          8086,PRE
 
 
 [REPNZ]
 [REPNZ]
-(Ch_RWECX, Ch_RFLAGS)
+(Ch_RWECX, Ch_RZeroFlag)
 void                  \1\xF2                          8086,PRE
 void                  \1\xF2                          8086,PRE
 
 
 [REPZ]
 [REPZ]
-(Ch_RWECX, Ch_RFLAGS)
+(Ch_RWECX, Ch_RZeroFlag)
 void                  \1\xF3                          8086,PRE
 void                  \1\xF3                          8086,PRE
 
 
 [RET]
 [RET]
@@ -1721,7 +1721,7 @@ void                  \1\xC3                          8086
 imm                   \1\xC2\30                       8086,SW
 imm                   \1\xC2\30                       8086,SW
 
 
 [ROL,rolX]
 [ROL,rolX]
-(Ch_Mop2, Ch_Rop1, Ch_WFlags)
+(Ch_Mop2, Ch_Rop1, Ch_WCarryFlag, Ch_WOverflowFlag)
 rm16|32|64,unity      \320\1\xD1\200                  8086
 rm16|32|64,unity      \320\1\xD1\200                  8086
 rm16|32|64,reg_cl     \320\1\xD3\200                  8086
 rm16|32|64,reg_cl     \320\1\xD3\200                  8086
 rm16|32|64,imm        \320\1\xC1\200\25               186,SB
 rm16|32|64,imm        \320\1\xC1\200\25               186,SB
@@ -1730,7 +1730,7 @@ rm8,reg_cl            \1\xD2\200                      8086
 rm8,imm               \1\xC0\200\25                   186,SB
 rm8,imm               \1\xC0\200\25                   186,SB
 
 
 [ROR,rorX]
 [ROR,rorX]
-(Ch_Mop2, Ch_Rop1, Ch_WFlags)
+(Ch_Mop2, Ch_Rop1, Ch_WCarryFlag, Ch_WOverflowFlag)
 rm16|32|64,unity      \320\1\xD1\201                  8086
 rm16|32|64,unity      \320\1\xD1\201                  8086
 rm16|32|64,reg_cl     \320\1\xD3\201                  8086
 rm16|32|64,reg_cl     \320\1\xD3\201                  8086
 rm16|32|64,imm        \320\1\xC1\201\25               186,SB
 rm16|32|64,imm        \320\1\xC1\201\25               186,SB
@@ -1752,11 +1752,11 @@ void                  \2\x0F\xAA                      PENT,SMM
 
 
 ; SAHF/LAHF are valid in x86_64 only if CPUID.80000001h:ECX.0=1
 ; SAHF/LAHF are valid in x86_64 only if CPUID.80000001h:ECX.0=1
 [SAHF]
 [SAHF]
-(Ch_WFlags, Ch_REAX)
+(Ch_REAX, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WParityFlag, Ch_WCarryFlag)
 void                  \1\x9E                          8086
 void                  \1\x9E                          8086
 
 
 [SAL,salX]
 [SAL,salX]
-(Ch_Mop2, Ch_Rop1, Ch_WFlags)
+(Ch_Mop2, Ch_Rop1, Ch_WCarryFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WParityFlag, Ch_WUAuxiliaryFlag)
 rm16|32|64,unity      \320\1\xD1\204                  8086,ND
 rm16|32|64,unity      \320\1\xD1\204                  8086,ND
 rm16|32|64,reg_cl     \320\1\xD3\204                  8086,ND
 rm16|32|64,reg_cl     \320\1\xD3\204                  8086,ND
 rm16|32|64,imm        \320\1\xC1\204\25               186,ND,SB
 rm16|32|64,imm        \320\1\xC1\204\25               186,ND,SB
@@ -1769,7 +1769,7 @@ rm8,imm               \1\xC0\204\25                   186,ND,SB
 void                  \1\xD6                          8086,UNDOC,NOX86_64
 void                  \1\xD6                          8086,UNDOC,NOX86_64
 
 
 [SAR,sarX]
 [SAR,sarX]
-(Ch_Mop2, Ch_Rop1, Ch_WFlags)
+(Ch_Mop2, Ch_Rop1, Ch_WCarryFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WParityFlag, Ch_WUAuxiliaryFlag)
 rm16|32|64,unity      \320\1\xD1\207                  8086
 rm16|32|64,unity      \320\1\xD1\207                  8086
 rm16|32|64,reg_cl     \320\1\xD3\207                  8086
 rm16|32|64,reg_cl     \320\1\xD3\207                  8086
 rm16|32|64,imm        \320\1\xC1\207\25               186,SB
 rm16|32|64,imm        \320\1\xC1\207\25               186,SB
@@ -1778,7 +1778,7 @@ rm8,reg_cl            \1\xD2\207                      8086
 rm8,imm               \1\xC0\207\25                   186,SB
 rm8,imm               \1\xC0\207\25                   186,SB
 
 
 [SBB,sbbX]
 [SBB,sbbX]
-(Ch_Mop2, Ch_Rop1, Ch_RWFlags, Ch_NoReadIfEqualRegs)
+(Ch_Mop2, Ch_Rop1, Ch_NoReadIfEqualRegs, Ch_RWCarryFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WParityFlag)
 regmem,reg16|32|64    \320\1\x19\101                  8086,SM
 regmem,reg16|32|64    \320\1\x19\101                  8086,SM
 reg16|32|64,regmem    \320\1\x1B\110                  8086,SM
 reg16|32|64,regmem    \320\1\x1B\110                  8086,SM
 rm16|32|64,imm8       \320\1\x83\203\15               8086
 rm16|32|64,imm8       \320\1\x83\203\15               8086
@@ -1794,19 +1794,19 @@ reg_al,imm            \1\x1C\21                       8086,SB
 rm8,imm               \1\x80\203\21                   8086,SB
 rm8,imm               \1\x80\203\21                   8086,SB
 
 
 [SCASB]
 [SCASB]
-(Ch_All, Ch_WFlags, Ch_RDirFlag)
+(Ch_All, Ch_RDirFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WCarryFlag, Ch_WParityFlag)
 void                  \332\1\xAE                      8086
 void                  \332\1\xAE                      8086
 
 
 [SCASD,scasl]
 [SCASD,scasl]
-(Ch_All, Ch_WFlags, Ch_RDirFlag)
+(Ch_All, Ch_RDirFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WCarryFlag, Ch_WParityFlag)
 void                  \332\325\1\xAF                  386
 void                  \332\325\1\xAF                  386
 
 
 [SCASQ]
 [SCASQ]
-(Ch_All, Ch_WFlags, Ch_RDirFlag)
+(Ch_All, Ch_RDirFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WCarryFlag, Ch_WParityFlag)
 void                  \332\326\1\xAF                  X86_64
 void                  \332\326\1\xAF                  X86_64
 
 
 [SCASW]
 [SCASW]
-(Ch_All, Ch_WFlags, Ch_RDirFlag)
+(Ch_All, Ch_RDirFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WCarryFlag, Ch_WParityFlag)
 void                  \332\324\1\xAF                  8086
 void                  \332\324\1\xAF                  8086
 
 
 [SEGCS,cs]
 [SEGCS,cs]
@@ -1838,7 +1838,7 @@ void                  \1\x36                          8086,PRE
 mem                   \2\x0F\x01\200                  286
 mem                   \2\x0F\x01\200                  286
 
 
 [SHL,shlX]
 [SHL,shlX]
-(Ch_Mop2, Ch_Rop1, Ch_WFlags)
+(Ch_Mop2, Ch_Rop1, Ch_WCarryFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WParityFlag, Ch_WUAuxiliaryFlag)
 rm16|32|64,unity      \320\1\xD1\204                  8086
 rm16|32|64,unity      \320\1\xD1\204                  8086
 rm16|32|64,reg_cl     \320\1\xD3\204                  8086
 rm16|32|64,reg_cl     \320\1\xD3\204                  8086
 rm16|32|64,imm        \320\1\xC1\204\25               186,SW
 rm16|32|64,imm        \320\1\xC1\204\25               186,SW
@@ -1847,12 +1847,12 @@ rm8,reg_cl            \1\xD2\204                      8086
 rm8,imm               \1\xC0\204\25                   186,SB
 rm8,imm               \1\xC0\204\25                   186,SB
 
 
 [SHLD,shldX]
 [SHLD,shldX]
-(Ch_MOp3, Ch_WFlags, Ch_Rop2)
+(Ch_MOp3, Ch_Rop2, Ch_WCarryFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WParityFlag, Ch_WUAuxiliaryFlag)
 rm16|32|64,reg16|32|64,imm    \321\2\x0F\xA4\101\26       386,SM2,SB,AR2
 rm16|32|64,reg16|32|64,imm    \321\2\x0F\xA4\101\26       386,SM2,SB,AR2
 rm16|32|64,reg16|32|64,reg_cl \321\2\x0F\xA5\101          386,SM
 rm16|32|64,reg16|32|64,reg_cl \321\2\x0F\xA5\101          386,SM
 
 
 [SHR,shrX]
 [SHR,shrX]
-(Ch_Mop2, Ch_Rop1, Ch_WFlags)
+(Ch_Mop2, Ch_Rop1, Ch_WCarryFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WParityFlag, Ch_WUAuxiliaryFlag)
 rm16|32|64,unity      \320\1\xD1\205                  8086
 rm16|32|64,unity      \320\1\xD1\205                  8086
 rm16|32|64,reg_cl     \320\1\xD3\205                  8086
 rm16|32|64,reg_cl     \320\1\xD3\205                  8086
 rm16|32|64,imm        \320\1\xC1\205\25               186,SW
 rm16|32|64,imm        \320\1\xC1\205\25               186,SW
@@ -1861,7 +1861,7 @@ rm8,reg_cl            \1\xD2\205                      8086
 rm8,imm               \1\xC0\205\25                   186,SB
 rm8,imm               \1\xC0\205\25                   186,SB
 
 
 [SHRD,shrdX]
 [SHRD,shrdX]
-(Ch_MOp3, Ch_WFlags, Ch_Rop2)
+(Ch_MOp3, Ch_Rop2, Ch_WCarryFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WParityFlag, Ch_WUAuxiliaryFlag)
 rm16|32|64,reg16|32|64,imm    \321\2\x0F\xAC\101\26       386,SM2,SB,AR2
 rm16|32|64,reg16|32|64,imm    \321\2\x0F\xAC\101\26       386,SM2,SB,AR2
 rm16|32|64,reg16|32|64,reg_cl \321\2\x0F\xAD\101          386,SM
 rm16|32|64,reg16|32|64,reg_cl \321\2\x0F\xAD\101          386,SM
 
 
@@ -1891,15 +1891,15 @@ void                  \2\x0F\x7E                      486,CYRIX,ND
 rm16|32|64            \320\2\x0F\x01\204              286
 rm16|32|64            \320\2\x0F\x01\204              286
 
 
 [STC]
 [STC]
-(Ch_WFlags)
+(Ch_W1CarryFlag)
 void                  \1\xF9                          8086
 void                  \1\xF9                          8086
 
 
 [STD]
 [STD]
-(Ch_SDirFlag)
+(Ch_W1DirFlag)
 void                  \1\xFD                          8086
 void                  \1\xFD                          8086
 
 
 [STI]
 [STI]
-(Ch_WFlags)
+(Ch_W1IntFlag)
 void                  \1\xFB                          8086
 void                  \1\xFB                          8086
 
 
 [STOSB]
 [STOSB]
@@ -1920,7 +1920,7 @@ mem                   \2\x0F\x00\201                  286,PROT
 reg16|32|64           \320\2\x0F\x00\201              286,PROT
 reg16|32|64           \320\2\x0F\x00\201              286,PROT
 
 
 [SUB,subX]
 [SUB,subX]
-(Ch_Mop2, Ch_Rop1, Ch_WFlags, Ch_NoReadIfEqualRegs)
+(Ch_Mop2, Ch_Rop1, Ch_NoReadIfEqualRegs, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WCarryFlag, Ch_WParityFlag)
 regmem,reg16|32|64    \320\1\x29\101                  8086,SM
 regmem,reg16|32|64    \320\1\x29\101                  8086,SM
 reg16|32|64,regmem    \320\1\x2B\110                  8086,SM
 reg16|32|64,regmem    \320\1\x2B\110                  8086,SM
 rm8,reg8              \1\x28\101                      8086
 rm8,reg8              \1\x28\101                      8086
@@ -1964,7 +1964,7 @@ void                  \2\x0F\x35                      P6,PRIV
 void                  \2\x0F\x07                      P6,PRIV,AMD
 void                  \2\x0F\x07                      P6,PRIV,AMD
 
 
 [TEST,testX]
 [TEST,testX]
-(Ch_WFlags, Ch_Rop1, Ch_Rop2)
+(Ch_Rop1, Ch_Rop2, Ch_W0OverflowFlag, Ch_W0CarryFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WParityFlag, Ch_WUAuxiliaryFlag)
 regmem,reg16|32|64    \320\1\x85\101                  8086,SM
 regmem,reg16|32|64    \320\1\x85\101                  8086,SM
 reg16|32|64,mem       \320\1\x85\110                  8086,SM
 reg16|32|64,mem       \320\1\x85\110                  8086,SM
 reg8,reg8             \1\x84\101                      8086
 reg8,reg8             \1\x84\101                      8086
@@ -1997,13 +1997,13 @@ rm8,reg8              \2\x0F\x10\101                  386,UNDOC
 reg8,rm8              \2\x0F\x12\110                  386,UNDOC
 reg8,rm8              \2\x0F\x12\110                  386,UNDOC
 
 
 [VERR,verrX]
 [VERR,verrX]
-(Ch_WFlags)
+(Ch_WZeroFlag)
 mem                   \2\x0F\x00\204                  286,PROT
 mem                   \2\x0F\x00\204                  286,PROT
 mem16                 \2\x0F\x00\204                  286,PROT
 mem16                 \2\x0F\x00\204                  286,PROT
 reg16                 \2\x0F\x00\204                  286,PROT
 reg16                 \2\x0F\x00\204                  286,PROT
 
 
 [VERW]
 [VERW]
-(Ch_WFlags)
+(Ch_WZeroFlag)
 mem                   \2\x0F\x00\205                  286,PROT
 mem                   \2\x0F\x00\205                  286,PROT
 mem16                 \2\x0F\x00\205                  286,PROT
 mem16                 \2\x0F\x00\205                  286,PROT
 reg16                 \2\x0F\x00\205                  286,PROT
 reg16                 \2\x0F\x00\205                  286,PROT
@@ -2025,7 +2025,7 @@ void                  \2\x0F\x37                      P6,CYRIX,SMM
 void                  \2\x0F\x30                      PENT,PRIV
 void                  \2\x0F\x30                      PENT,PRIV
 
 
 [XADD,xaddX]
 [XADD,xaddX]
-(Ch_All)
+(Ch_All, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WCarryFlag, Ch_WParityFlag)
 mem,reg16|32|64       \320\2\x0F\xC1\101              486,SM
 mem,reg16|32|64       \320\2\x0F\xC1\101              486,SM
 rm8,reg8              \2\x0F\xC0\101                  486
 rm8,reg8              \2\x0F\xC0\101                  486
 reg8,reg8             \2\x0F\xC0\101                  486
 reg8,reg8             \2\x0F\xC0\101                  486
@@ -2062,7 +2062,7 @@ void                  \1\xD7                          8086
 void                  \1\xD7                          8086
 void                  \1\xD7                          8086
 
 
 [XOR,xorX]
 [XOR,xorX]
-(Ch_Mop2, Ch_Rop1, Ch_WFlags, Ch_NoReadIfEqualRegs)
+(Ch_Mop2, Ch_Rop1, Ch_NoReadIfEqualRegs, Ch_W0OverflowFlag, Ch_W0CarryFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WParityFlag, Ch_WUAuxiliaryFlag)
 regmem,reg16|32|64    \320\1\x31\101                  8086,SM
 regmem,reg16|32|64    \320\1\x31\101                  8086,SM
 reg16|32|64,regmem    \320\1\x33\110                  8086,SM
 reg16|32|64,regmem    \320\1\x33\110                  8086,SM
 rm8,reg8              \1\x30\101                      8086
 rm8,reg8              \1\x30\101                      8086
@@ -3465,7 +3465,7 @@ void                   \326\1\xAB                                    X86_64
 void                   \326\1\xAD                                    X86_64
 void                   \326\1\xAD                                    X86_64
 
 
 [CMPSQ]
 [CMPSQ]
-(Ch_All, Ch_WFlags, Ch_RDirFlag)
+(Ch_All, Ch_RDirFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WCarryFlag, Ch_WParityFlag)
 void                   \326\1\xA7                                    X86_64
 void                   \326\1\xA7                                    X86_64
 
 
 ;*******************************************************************************
 ;*******************************************************************************
@@ -5065,11 +5065,11 @@ rm8,imm                               \2\x0F\x1E\200\25                   NEC,SB
 rm16,imm                              \2\x0F\x1F\200\25                   NEC,SW,IMM4,16BITONLY
 rm16,imm                              \2\x0F\x1F\200\25                   NEC,SW,IMM4,16BITONLY
 
 
 [REPC]
 [REPC]
-(Ch_RWECX, Ch_RFlags)
+(Ch_RWECX, Ch_RCarryFlag)
 void                                  \1\x65                              NEC,PRE,16BITONLY
 void                                  \1\x65                              NEC,PRE,16BITONLY
 
 
 [REPNC]
 [REPNC]
-(Ch_RWECX, Ch_RFlags)
+(Ch_RWECX, Ch_RCarryFlag)
 void                                  \1\x64                              NEC,PRE,16BITONLY
 void                                  \1\x64                              NEC,PRE,16BITONLY
 
 
 [ROL4]
 [ROL4]

+ 82 - 82
compiler/x86_64/x8664pro.inc

@@ -1,36 +1,36 @@
 { don't edit, this file is generated from x86ins.dat }
 { don't edit, this file is generated from x86ins.dat }
 (
 (
 (Ch: []),
 (Ch: []),
-(Ch: [Ch_Mop2, Ch_Rop1, Ch_RWFlags]),
-(Ch: [Ch_Mop2, Ch_Rop1, Ch_WFlags]),
-(Ch: [Ch_Mop2, Ch_Rop1, Ch_WFlags]),
-(Ch: [Ch_Wop2, Ch_WFlags, Ch_Rop1]),
-(Ch: [Ch_Wop2, Ch_WFlags, Ch_Rop1]),
+(Ch: [Ch_Mop2, Ch_Rop1, Ch_RWCarryFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WParityFlag]),
+(Ch: [Ch_Mop2, Ch_Rop1, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WCarryFlag, Ch_WParityFlag]),
+(Ch: [Ch_Mop2, Ch_Rop1, Ch_W0OverflowFlag, Ch_W0CarryFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WParityFlag, Ch_WUAuxiliaryFlag]),
+(Ch: [Ch_Wop2, Ch_Rop1, Ch_WZeroFlag, Ch_WUCarryFlag, Ch_WUOverflowFlag, Ch_WUSignFlag, Ch_WUAuxiliaryFlag, Ch_WUParityFlag]),
+(Ch: [Ch_Wop2, Ch_Rop1, Ch_WZeroFlag, Ch_WUCarryFlag, Ch_WUOverflowFlag, Ch_WUSignFlag, Ch_WUAuxiliaryFlag, Ch_WUParityFlag]),
 (Ch: [Ch_MOp1]),
 (Ch: [Ch_MOp1]),
-(Ch: [Ch_WFlags, Ch_Rop1, Ch_Rop2]),
-(Ch: [Ch_Mop2, Ch_Rop1, Ch_WFlags]),
-(Ch: [Ch_Mop2, Ch_Rop1, Ch_WFlags]),
-(Ch: [Ch_Mop2, Ch_Rop1, Ch_WFlags]),
+(Ch: [Ch_Rop1, Ch_Rop2, Ch_WCarryFlag, Ch_WUOverflowFlag, Ch_WUSignFlag, Ch_WUAuxiliaryFlag, Ch_WUParityFlag]),
+(Ch: [Ch_Mop2, Ch_Rop1, Ch_WCarryFlag, Ch_WUOverflowFlag, Ch_WUSignFlag, Ch_WUAuxiliaryFlag, Ch_WUParityFlag]),
+(Ch: [Ch_Mop2, Ch_Rop1, Ch_WCarryFlag, Ch_WUOverflowFlag, Ch_WUSignFlag, Ch_WUAuxiliaryFlag, Ch_WUParityFlag]),
+(Ch: [Ch_Mop2, Ch_Rop1, Ch_WCarryFlag, Ch_WUOverflowFlag, Ch_WUSignFlag, Ch_WUAuxiliaryFlag, Ch_WUParityFlag]),
 (Ch: [Ch_ROp1, Ch_All]),
 (Ch: [Ch_ROp1, Ch_All]),
 (Ch: [Ch_MEAX]),
 (Ch: [Ch_MEAX]),
 (Ch: [Ch_MEAX, Ch_WEDX]),
 (Ch: [Ch_MEAX, Ch_WEDX]),
-(Ch: [Ch_WFlags]),
-(Ch: [Ch_CDirFlag]),
-(Ch: [Ch_WFlags]),
+(Ch: [Ch_W0CarryFlag]),
+(Ch: [Ch_W0DirFlag]),
+(Ch: [Ch_W0IntFlag]),
 (Ch: []),
 (Ch: []),
-(Ch: [Ch_RWFlags]),
-(Ch: [Ch_ROp1, Ch_ROp2, Ch_WFlags, Ch_NoReadIfEqualRegs]),
-(Ch: [Ch_All, Ch_WFlags, Ch_RDirFlag]),
-(Ch: [Ch_All, Ch_WFlags, Ch_RDirFlag]),
-(Ch: [Ch_All, Ch_WFlags, Ch_RDirFlag]),
-(Ch: [Ch_All]),
-(Ch: [Ch_All]),
-(Ch: [Ch_All]),
+(Ch: [Ch_RWCarryFlag]),
+(Ch: [Ch_ROp1, Ch_ROp2, Ch_NoReadIfEqualRegs, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WCarryFlag, Ch_WParityFlag]),
+(Ch: [Ch_All, Ch_RDirFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WCarryFlag, Ch_WParityFlag]),
+(Ch: [Ch_All, Ch_RDirFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WCarryFlag, Ch_WParityFlag]),
+(Ch: [Ch_All, Ch_RDirFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WCarryFlag, Ch_WParityFlag]),
+(Ch: [Ch_All, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WCarryFlag, Ch_WParityFlag]),
+(Ch: [Ch_All, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WCarryFlag, Ch_WParityFlag]),
+(Ch: [Ch_All, Ch_WZeroFlag]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_MEAX, Ch_WEDX]),
 (Ch: [Ch_MEAX, Ch_WEDX]),
 (Ch: [Ch_MEAX]),
 (Ch: [Ch_MEAX]),
-(Ch: [Ch_Mop1, Ch_WFlags]),
-(Ch: [Ch_RWEAX, Ch_WEDX, Ch_WFlags]),
+(Ch: [Ch_Mop1, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WParityFlag]),
+(Ch: [Ch_RWEAX, Ch_WEDX, Ch_WUCarryFlag, Ch_WUOverflowFlag, Ch_WUSignFlag, Ch_WUZeroFlag, Ch_WUAuxiliaryFlag, Ch_WUParityFlag]),
 (Ch: [Ch_FPU]),
 (Ch: [Ch_FPU]),
 (Ch: [Ch_RWESP]),
 (Ch: [Ch_RWESP]),
 (Ch: [Ch_FPU]),
 (Ch: [Ch_FPU]),
@@ -41,17 +41,17 @@
 (Ch: [Ch_Wop1, Ch_FPU]),
 (Ch: [Ch_Wop1, Ch_FPU]),
 (Ch: [Ch_FPU]),
 (Ch: [Ch_FPU]),
 (Ch: [Ch_FPU]),
 (Ch: [Ch_FPU]),
-(Ch: [Ch_FPU, Ch_RFLAGS]),
-(Ch: [Ch_FPU, Ch_RFLAGS]),
-(Ch: [Ch_FPU, Ch_RFLAGS]),
-(Ch: [Ch_FPU, Ch_RFLAGS]),
-(Ch: [Ch_FPU, Ch_RFLAGS]),
-(Ch: [Ch_FPU, Ch_RFLAGS]),
-(Ch: [Ch_FPU, Ch_RFLAGS]),
-(Ch: [Ch_FPU, Ch_RFLAGS]),
+(Ch: [Ch_FPU, Ch_RCarryFlag]),
+(Ch: [Ch_FPU, Ch_RCarryFlag, Ch_RZeroFlag]),
+(Ch: [Ch_FPU, Ch_RZeroFlag]),
+(Ch: [Ch_FPU, Ch_RCarryFlag]),
+(Ch: [Ch_FPU, Ch_RCarryFlag, Ch_RZeroFlag]),
+(Ch: [Ch_FPU, Ch_RZeroFlag]),
+(Ch: [Ch_FPU, Ch_RParityFlag]),
+(Ch: [Ch_FPU, Ch_RParityFlag]),
 (Ch: [Ch_FPU]),
 (Ch: [Ch_FPU]),
-(Ch: [Ch_WFLAGS]),
-(Ch: [Ch_FPU, Ch_WFLAGS]),
+(Ch: [Ch_WZeroFlag, Ch_WParityFlag, Ch_WCarryFlag, Ch_W0OverflowFlag, Ch_W0SignFlag, Ch_W0AuxiliaryFlag]),
+(Ch: [Ch_FPU, Ch_WZeroFlag, Ch_WParityFlag, Ch_WCarryFlag, Ch_W0OverflowFlag, Ch_W0SignFlag, Ch_W0AuxiliaryFlag]),
 (Ch: [Ch_FPU]),
 (Ch: [Ch_FPU]),
 (Ch: [Ch_FPU]),
 (Ch: [Ch_FPU]),
 (Ch: [Ch_FPU]),
 (Ch: [Ch_FPU]),
@@ -122,8 +122,8 @@
 (Ch: [Ch_ROp1, Ch_FPU]),
 (Ch: [Ch_ROp1, Ch_FPU]),
 (Ch: [Ch_FPU]),
 (Ch: [Ch_FPU]),
 (Ch: []),
 (Ch: []),
-(Ch: [Ch_WFLAGS]),
-(Ch: [Ch_FPU, Ch_WFLAGS]),
+(Ch: [Ch_WZeroFlag, Ch_WParityFlag, Ch_WCarryFlag, Ch_W0OverflowFlag, Ch_W0SignFlag, Ch_W0AuxiliaryFlag]),
+(Ch: [Ch_FPU, Ch_WZeroFlag, Ch_WParityFlag, Ch_WCarryFlag, Ch_W0OverflowFlag, Ch_W0SignFlag, Ch_W0AuxiliaryFlag]),
 (Ch: [Ch_FPU]),
 (Ch: [Ch_FPU]),
 (Ch: [Ch_FPU]),
 (Ch: [Ch_FPU]),
 (Ch: [Ch_FPU]),
 (Ch: [Ch_FPU]),
@@ -135,13 +135,13 @@
 (Ch: []),
 (Ch: []),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
-(Ch: [Ch_RWEAX, Ch_WEDX, Ch_WFlags]),
-(Ch: [Ch_RWEAX, Ch_WEDX, Ch_WFlags]),
+(Ch: [Ch_RWEAX, Ch_WEDX, Ch_WUCarryFlag, Ch_WUOverflowFlag, Ch_WUSignFlag, Ch_WUZeroFlag, Ch_WUAuxiliaryFlag, Ch_WUParityFlag]),
+(Ch: [Ch_RWEAX, Ch_WEDX, Ch_WCarryFlag, Ch_WOverflowFlag, Ch_WUSignFlag, Ch_WUZeroFlag, Ch_WUAuxiliaryFlag, Ch_WUParityFlag]),
 (Ch: [Ch_Wop2, Ch_Rop1]),
 (Ch: [Ch_Wop2, Ch_Rop1]),
-(Ch: [Ch_Mop1, Ch_WFlags]),
-(Ch: [Ch_WMemEDI, Ch_RWEDI, Ch_REDX]),
-(Ch: [Ch_WMemEDI, Ch_RWEDI, Ch_REDX]),
-(Ch: [Ch_WMemEDI, Ch_RWEDI, Ch_REDX]),
+(Ch: [Ch_Mop1, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WParityFlag]),
+(Ch: [Ch_WMemEDI, Ch_RWEDI, Ch_REDX, Ch_RDirFlag]),
+(Ch: [Ch_WMemEDI, Ch_RWEDI, Ch_REDX, Ch_RDirFlag]),
+(Ch: [Ch_WMemEDI, Ch_RWEDI, Ch_REDX, Ch_RDirFlag]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
@@ -157,7 +157,7 @@
 (Ch: [Ch_RECX]),
 (Ch: [Ch_RECX]),
 (Ch: [Ch_ROp1]),
 (Ch: [Ch_ROp1]),
 (Ch: [Ch_WEAX, Ch_RFlags]),
 (Ch: [Ch_WEAX, Ch_RFlags]),
-(Ch: [Ch_Wop2]),
+(Ch: [Ch_Wop2, Ch_WZeroFlag]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_Wop2, Ch_Rop1]),
 (Ch: [Ch_Wop2, Ch_Rop1]),
 (Ch: [Ch_RWESP, Ch_WEBP]),
 (Ch: [Ch_RWESP, Ch_WEBP]),
@@ -175,11 +175,11 @@
 (Ch: [Ch_WEAX, Ch_RWESI, Ch_RDirFlag]),
 (Ch: [Ch_WEAX, Ch_RWESI, Ch_RDirFlag]),
 (Ch: [Ch_WEAX, Ch_RWESI, Ch_RDirFlag]),
 (Ch: [Ch_WEAX, Ch_RWESI, Ch_RDirFlag]),
 (Ch: [Ch_RWECX]),
 (Ch: [Ch_RWECX]),
-(Ch: [Ch_RWECX, Ch_RFlags]),
-(Ch: [Ch_RWECX, Ch_RFlags]),
-(Ch: [Ch_RWECX, Ch_RFlags]),
-(Ch: [Ch_RWECX, Ch_RFlags]),
-(Ch: [Ch_Wop2, Ch_WFlags]),
+(Ch: [Ch_RWECX, Ch_RZeroFlag]),
+(Ch: [Ch_RWECX, Ch_RZeroFlag]),
+(Ch: [Ch_RWECX, Ch_RZeroFlag]),
+(Ch: [Ch_RWECX, Ch_RZeroFlag]),
+(Ch: [Ch_Wop2, Ch_WZeroFlag]),
 (Ch: [Ch_Wop2, Ch_ROP1]),
 (Ch: [Ch_Wop2, Ch_ROP1]),
 (Ch: []),
 (Ch: []),
 (Ch: []),
 (Ch: []),
@@ -192,16 +192,16 @@
 (Ch: [Ch_All, Ch_RDirFlag]),
 (Ch: [Ch_All, Ch_RDirFlag]),
 (Ch: [Ch_Wop2, Ch_Rop1]),
 (Ch: [Ch_Wop2, Ch_Rop1]),
 (Ch: [Ch_Wop2, Ch_Rop1]),
 (Ch: [Ch_Wop2, Ch_Rop1]),
-(Ch: [Ch_RWEAX, Ch_WEDX, Ch_WFlags]),
+(Ch: [Ch_RWEAX, Ch_WEDX, Ch_WCarryFlag, Ch_WOverflowFlag, Ch_WUSignFlag, Ch_WUZeroFlag, Ch_WUAuxiliaryFlag, Ch_WUParityFlag]),
 (Ch: []),
 (Ch: []),
-(Ch: [Ch_Mop1]),
+(Ch: [Ch_Mop1, Ch_WCarryFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WParityFlag]),
 (Ch: []),
 (Ch: []),
 (Ch: [Ch_Mop1]),
 (Ch: [Ch_Mop1]),
-(Ch: [Ch_Mop2, Ch_Rop1, Ch_WFlags]),
+(Ch: [Ch_Mop2, Ch_Rop1, Ch_W0OverflowFlag, Ch_W0CarryFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WParityFlag, Ch_WUAuxiliaryFlag]),
 (Ch: [Ch_Rop1, Ch_Rop2]),
 (Ch: [Ch_Rop1, Ch_Rop2]),
-(Ch: [Ch_All]),
-(Ch: [Ch_All]),
-(Ch: [Ch_All]),
+(Ch: [Ch_All, Ch_RDirFlag]),
+(Ch: [Ch_All, Ch_RDirFlag]),
+(Ch: [Ch_All, Ch_RDirFlag]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
@@ -288,33 +288,33 @@
 (Ch: [Ch_RWESP, Ch_RFLAGS]),
 (Ch: [Ch_RWESP, Ch_RFLAGS]),
 (Ch: [Ch_RWESP, Ch_RFlags]),
 (Ch: [Ch_RWESP, Ch_RFlags]),
 (Ch: [Ch_Mop2, Ch_Rop1]),
 (Ch: [Ch_Mop2, Ch_Rop1]),
-(Ch: [Ch_Mop2, Ch_Rop1, Ch_RWFlags]),
-(Ch: [Ch_Mop2, Ch_Rop1, Ch_RWFlags]),
+(Ch: [Ch_Mop2, Ch_Rop1, Ch_RWCarryFlag, Ch_WOverflowFlag]),
+(Ch: [Ch_Mop2, Ch_Rop1, Ch_RWCarryFlag, Ch_WOverflowFlag]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_WEAX, Ch_WEDX]),
 (Ch: [Ch_WEAX, Ch_WEDX]),
 (Ch: [Ch_WEAX, Ch_WEDX]),
 (Ch: [Ch_WEAX, Ch_WEDX]),
 (Ch: [Ch_WEAX, Ch_WEDX]),
 (Ch: [Ch_WEAX, Ch_WEDX]),
 (Ch: [Ch_RWECX]),
 (Ch: [Ch_RWECX]),
-(Ch: [Ch_RWECX, Ch_RFlags]),
-(Ch: [Ch_RWECX, Ch_RFlags]),
-(Ch: [Ch_RWECX, Ch_RFLAGS]),
-(Ch: [Ch_RWECX, Ch_RFLAGS]),
+(Ch: [Ch_RWECX, Ch_RZeroFlag]),
+(Ch: [Ch_RWECX, Ch_RZeroFlag]),
+(Ch: [Ch_RWECX, Ch_RZeroFlag]),
+(Ch: [Ch_RWECX, Ch_RZeroFlag]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
-(Ch: [Ch_Mop2, Ch_Rop1, Ch_WFlags]),
-(Ch: [Ch_Mop2, Ch_Rop1, Ch_WFlags]),
+(Ch: [Ch_Mop2, Ch_Rop1, Ch_WCarryFlag, Ch_WOverflowFlag]),
+(Ch: [Ch_Mop2, Ch_Rop1, Ch_WCarryFlag, Ch_WOverflowFlag]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
-(Ch: [Ch_WFlags, Ch_REAX]),
-(Ch: [Ch_Mop2, Ch_Rop1, Ch_WFlags]),
-(Ch: [Ch_Mop2, Ch_Rop1, Ch_WFlags]),
-(Ch: [Ch_Mop2, Ch_Rop1, Ch_RWFlags, Ch_NoReadIfEqualRegs]),
-(Ch: [Ch_All, Ch_WFlags, Ch_RDirFlag]),
-(Ch: [Ch_All, Ch_WFlags, Ch_RDirFlag]),
-(Ch: [Ch_All, Ch_WFlags, Ch_RDirFlag]),
-(Ch: [Ch_All, Ch_WFlags, Ch_RDirFlag]),
+(Ch: [Ch_REAX, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WParityFlag, Ch_WCarryFlag]),
+(Ch: [Ch_Mop2, Ch_Rop1, Ch_WCarryFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WParityFlag, Ch_WUAuxiliaryFlag]),
+(Ch: [Ch_Mop2, Ch_Rop1, Ch_WCarryFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WParityFlag, Ch_WUAuxiliaryFlag]),
+(Ch: [Ch_Mop2, Ch_Rop1, Ch_NoReadIfEqualRegs, Ch_RWCarryFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WParityFlag]),
+(Ch: [Ch_All, Ch_RDirFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WCarryFlag, Ch_WParityFlag]),
+(Ch: [Ch_All, Ch_RDirFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WCarryFlag, Ch_WParityFlag]),
+(Ch: [Ch_All, Ch_RDirFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WCarryFlag, Ch_WParityFlag]),
+(Ch: [Ch_All, Ch_RDirFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WCarryFlag, Ch_WParityFlag]),
 (Ch: []),
 (Ch: []),
 (Ch: []),
 (Ch: []),
 (Ch: []),
 (Ch: []),
@@ -322,24 +322,24 @@
 (Ch: []),
 (Ch: []),
 (Ch: []),
 (Ch: []),
 (Ch: [Ch_Wop1]),
 (Ch: [Ch_Wop1]),
-(Ch: [Ch_Mop2, Ch_Rop1, Ch_WFlags]),
-(Ch: [Ch_MOp3, Ch_WFlags, Ch_Rop2]),
-(Ch: [Ch_Mop2, Ch_Rop1, Ch_WFlags]),
-(Ch: [Ch_MOp3, Ch_WFlags, Ch_Rop2]),
+(Ch: [Ch_Mop2, Ch_Rop1, Ch_WCarryFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WParityFlag, Ch_WUAuxiliaryFlag]),
+(Ch: [Ch_MOp3, Ch_Rop2, Ch_WCarryFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WParityFlag, Ch_WUAuxiliaryFlag]),
+(Ch: [Ch_Mop2, Ch_Rop1, Ch_WCarryFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WParityFlag, Ch_WUAuxiliaryFlag]),
+(Ch: [Ch_MOp3, Ch_Rop2, Ch_WCarryFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WParityFlag, Ch_WUAuxiliaryFlag]),
 (Ch: [Ch_Wop1]),
 (Ch: [Ch_Wop1]),
 (Ch: [Ch_Wop1]),
 (Ch: [Ch_Wop1]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_Wop1]),
 (Ch: [Ch_Wop1]),
-(Ch: [Ch_WFlags]),
-(Ch: [Ch_SDirFlag]),
-(Ch: [Ch_WFlags]),
+(Ch: [Ch_W1CarryFlag]),
+(Ch: [Ch_W1DirFlag]),
+(Ch: [Ch_W1IntFlag]),
 (Ch: [Ch_REAX, Ch_WMemEDI, Ch_RWEDI, Ch_RDirFlag]),
 (Ch: [Ch_REAX, Ch_WMemEDI, Ch_RWEDI, Ch_RDirFlag]),
 (Ch: [Ch_REAX, Ch_WMemEDI, Ch_RWEDI, Ch_RDirFlag]),
 (Ch: [Ch_REAX, Ch_WMemEDI, Ch_RWEDI, Ch_RDirFlag]),
 (Ch: [Ch_REAX, Ch_WMemEDI, Ch_RWEDI, Ch_RDirFlag]),
 (Ch: [Ch_REAX, Ch_WMemEDI, Ch_RWEDI, Ch_RDirFlag]),
 (Ch: [Ch_Wop1]),
 (Ch: [Ch_Wop1]),
-(Ch: [Ch_Mop2, Ch_Rop1, Ch_WFlags, Ch_NoReadIfEqualRegs]),
+(Ch: [Ch_Mop2, Ch_Rop1, Ch_NoReadIfEqualRegs, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WCarryFlag, Ch_WParityFlag]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
@@ -347,22 +347,22 @@
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
-(Ch: [Ch_WFlags, Ch_Rop1, Ch_Rop2]),
+(Ch: [Ch_Rop1, Ch_Rop2, Ch_W0OverflowFlag, Ch_W0CarryFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WParityFlag, Ch_WUAuxiliaryFlag]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
-(Ch: [Ch_WFlags]),
-(Ch: [Ch_WFlags]),
+(Ch: [Ch_WZeroFlag]),
+(Ch: [Ch_WZeroFlag]),
 (Ch: []),
 (Ch: []),
 (Ch: []),
 (Ch: []),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
-(Ch: [Ch_All]),
+(Ch: [Ch_All, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WCarryFlag, Ch_WParityFlag]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_RWop1, Ch_RWop2, Ch_NoReadIfEqualRegs]),
 (Ch: [Ch_RWop1, Ch_RWop2, Ch_NoReadIfEqualRegs]),
 (Ch: [Ch_WEAX, Ch_REBX]),
 (Ch: [Ch_WEAX, Ch_REBX]),
 (Ch: [Ch_WEAX, Ch_REBX]),
 (Ch: [Ch_WEAX, Ch_REBX]),
-(Ch: [Ch_Mop2, Ch_Rop1, Ch_WFlags, Ch_NoReadIfEqualRegs]),
+(Ch: [Ch_Mop2, Ch_Rop1, Ch_NoReadIfEqualRegs, Ch_W0OverflowFlag, Ch_W0CarryFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WParityFlag, Ch_WUAuxiliaryFlag]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
 (Ch: [Ch_All]),
@@ -665,7 +665,7 @@
 (Ch: [Ch_WEAX, Ch_WEDX]),
 (Ch: [Ch_WEAX, Ch_WEDX]),
 (Ch: [Ch_RRAX, Ch_WMemEDI, Ch_RWRDI, Ch_RDirFlag]),
 (Ch: [Ch_RRAX, Ch_WMemEDI, Ch_RWRDI, Ch_RDirFlag]),
 (Ch: [Ch_WRAX, Ch_RWRSI, Ch_RDirFlag]),
 (Ch: [Ch_WRAX, Ch_RWRSI, Ch_RDirFlag]),
-(Ch: [Ch_All, Ch_WFlags, Ch_RDirFlag]),
+(Ch: [Ch_All, Ch_RDirFlag, Ch_WOverflowFlag, Ch_WSignFlag, Ch_WZeroFlag, Ch_WAuxiliaryFlag, Ch_WCarryFlag, Ch_WParityFlag]),
 (Ch: [Ch_Wop3, Ch_Rop2, Ch_Rop1]),
 (Ch: [Ch_Wop3, Ch_Rop2, Ch_Rop1]),
 (Ch: [Ch_Wop3, Ch_Rop2, Ch_Rop1]),
 (Ch: [Ch_Wop3, Ch_Rop2, Ch_Rop1]),
 (Ch: [Ch_Wop3, Ch_Rop2, Ch_Rop1]),
 (Ch: [Ch_Wop3, Ch_Rop2, Ch_Rop1]),