Browse Source

* merged avx2 branch, developed by Torsten Grundke

git-svn-id: trunk@27200 -
florian 11 years ago
parent
commit
aa107b914c

+ 2 - 2
compiler/globtype.pas

@@ -289,10 +289,10 @@ interface
        twpoptimizerswitches = set of twpoptimizerswitch;
 
     type
-       { Used by ARM / AVR / MIPSEL to differentiate between specific microcontrollers }
+       { Used by ARM / AVR to differentiate between specific microcontrollers }
        tcontrollerdatatype = record
           controllertypestr, controllerunitstr: string[20];
-          flashbase, flashsize, srambase, sramsize, eeprombase, eepromsize, bootbase, bootsize: dword;
+          flashbase, flashsize, srambase, sramsize, eeprombase, eepromsize: dword;
        end;
 
        ttargetswitchinfo = record

+ 20 - 0
compiler/i386/i386att.inc

@@ -951,6 +951,26 @@
 'sarx',
 'shlx',
 'shrx',
+'vbroadcasti128',
+'vextracti128',
+'vinserti128',
+'vpblendd',
+'vpbroadcastb',
+'vpbroadcastd',
+'vpbroadcastq',
+'vpbroadcastw',
+'vperm2i128',
+'vpermd',
+'vpermpd',
+'vpermps',
+'vpermq',
+'vpmaskmovd',
+'vpmaskmovq',
+'vpsllvd',
+'vpsllvq',
+'vpsravd',
+'vpsrlvd',
+'vpsrlvq',
 'add4s',
 'brkem',
 'clr1',

+ 20 - 0
compiler/i386/i386atts.inc

@@ -964,5 +964,25 @@ attsufNONE,
 attsufNONE,
 attsufNONE,
 attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
 attsufNONE
 );

+ 20 - 0
compiler/i386/i386int.inc

@@ -951,6 +951,26 @@
 'sarx',
 'shlx',
 'shrx',
+'vbroadcasti128',
+'vextracti128',
+'vinserti128',
+'vpblendd',
+'vpbroadcastb',
+'vpbroadcastd',
+'vpbroadcastq',
+'vpbroadcastw',
+'vperm2i128',
+'vpermd',
+'vpermpd',
+'vpermps',
+'vpermq',
+'vpmaskmovd',
+'vpmaskmovq',
+'vpsllvd',
+'vpsllvq',
+'vpsravd',
+'vpsrlvd',
+'vpsrlvq',
 'add4s',
 'brkem',
 'clr1',

+ 1 - 1
compiler/i386/i386nop.inc

@@ -1,2 +1,2 @@
 { don't edit, this file is generated from x86ins.dat }
-1658;
+1828;

+ 20 - 0
compiler/i386/i386op.inc

@@ -951,6 +951,26 @@ A_RORX,
 A_SARX,
 A_SHLX,
 A_SHRX,
+A_VBROADCASTI128,
+A_VEXTRACTI128,
+A_VINSERTI128,
+A_VPBLENDD,
+A_VPBROADCASTB,
+A_VPBROADCASTD,
+A_VPBROADCASTQ,
+A_VPBROADCASTW,
+A_VPERM2I128,
+A_VPERMD,
+A_VPERMPD,
+A_VPERMPS,
+A_VPERMQ,
+A_VPMASKMOVD,
+A_VPMASKMOVQ,
+A_VPSLLVD,
+A_VPSLLVQ,
+A_VPSRAVD,
+A_VPSRLVD,
+A_VPSRLVQ,
 A_ADD4S,
 A_BRKEM,
 A_CLR1,

+ 20 - 0
compiler/i386/i386prop.inc

@@ -953,6 +953,26 @@
 (Ch: (Ch_Rop1, Ch_Rop2, Ch_Wop3)),
 (Ch: (Ch_All, Ch_None, Ch_None)),
 (Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
 (Ch: (Ch_Mop2, Ch_Rop1, Ch_None)),
 (Ch: (Ch_All, Ch_None, Ch_None)),
 (Ch: (Ch_All, Ch_None, Ch_None)),

File diff suppressed because it is too large
+ 526 - 1
compiler/i386/i386tab.inc


+ 20 - 0
compiler/i8086/i8086att.inc

@@ -951,6 +951,26 @@
 'sarx',
 'shlx',
 'shrx',
+'vbroadcasti128',
+'vextracti128',
+'vinserti128',
+'vpblendd',
+'vpbroadcastb',
+'vpbroadcastd',
+'vpbroadcastq',
+'vpbroadcastw',
+'vperm2i128',
+'vpermd',
+'vpermpd',
+'vpermps',
+'vpermq',
+'vpmaskmovd',
+'vpmaskmovq',
+'vpsllvd',
+'vpsllvq',
+'vpsravd',
+'vpsrlvd',
+'vpsrlvq',
 'add4s',
 'brkem',
 'clr1',

+ 20 - 0
compiler/i8086/i8086atts.inc

@@ -964,5 +964,25 @@ attsufNONE,
 attsufNONE,
 attsufNONE,
 attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
 attsufNONE
 );

+ 20 - 0
compiler/i8086/i8086int.inc

@@ -951,6 +951,26 @@
 'sarx',
 'shlx',
 'shrx',
+'vbroadcasti128',
+'vextracti128',
+'vinserti128',
+'vpblendd',
+'vpbroadcastb',
+'vpbroadcastd',
+'vpbroadcastq',
+'vpbroadcastw',
+'vperm2i128',
+'vpermd',
+'vpermpd',
+'vpermps',
+'vpermq',
+'vpmaskmovd',
+'vpmaskmovq',
+'vpsllvd',
+'vpsllvq',
+'vpsravd',
+'vpsrlvd',
+'vpsrlvq',
 'add4s',
 'brkem',
 'clr1',

+ 1 - 1
compiler/i8086/i8086nop.inc

@@ -1,2 +1,2 @@
 { don't edit, this file is generated from x86ins.dat }
-1686;
+1856;

+ 20 - 0
compiler/i8086/i8086op.inc

@@ -951,6 +951,26 @@ A_RORX,
 A_SARX,
 A_SHLX,
 A_SHRX,
+A_VBROADCASTI128,
+A_VEXTRACTI128,
+A_VINSERTI128,
+A_VPBLENDD,
+A_VPBROADCASTB,
+A_VPBROADCASTD,
+A_VPBROADCASTQ,
+A_VPBROADCASTW,
+A_VPERM2I128,
+A_VPERMD,
+A_VPERMPD,
+A_VPERMPS,
+A_VPERMQ,
+A_VPMASKMOVD,
+A_VPMASKMOVQ,
+A_VPSLLVD,
+A_VPSLLVQ,
+A_VPSRAVD,
+A_VPSRLVD,
+A_VPSRLVQ,
 A_ADD4S,
 A_BRKEM,
 A_CLR1,

+ 20 - 0
compiler/i8086/i8086prop.inc

@@ -953,6 +953,26 @@
 (Ch: (Ch_Rop1, Ch_Rop2, Ch_Wop3)),
 (Ch: (Ch_All, Ch_None, Ch_None)),
 (Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
 (Ch: (Ch_Mop2, Ch_Rop1, Ch_None)),
 (Ch: (Ch_All, Ch_None, Ch_None)),
 (Ch: (Ch_All, Ch_None, Ch_None)),

File diff suppressed because it is too large
+ 526 - 1
compiler/i8086/i8086tab.inc


+ 9 - 2
compiler/x86/aasmcpu.pas

@@ -227,7 +227,7 @@ interface
       TMemRefSizeInfo = (msiUnkown, msiUnsupported, msiNoSize,
                          msiMultiple, msiMultiple8, msiMultiple16, msiMultiple32,
                          msiMultiple64, msiMultiple128, msiMultiple256,
-                         msiMemRegSize, msiMemRegx64y128, msiMemRegx64y256,
+                         msiMemRegSize, msiMemRegx16y32, msiMemRegx32y64, msiMemRegx64y128, msiMemRegx64y256,
                          msiMem8, msiMem16, msiMem32, msiMem64, msiMem128, msiMem256);
 
       TConstSizeInfo  = (csiUnkown, csiMultiple, csiNoSize, csiMem8, csiMem16, csiMem32, csiMem64);
@@ -427,6 +427,7 @@ implementation
        IF_SSE41  = $00200000;
        IF_SSE42  = $00200000;
        IF_AVX    = $00200000;
+       IF_AVX2   = $00200000;
        IF_BMI1   = $00200000;
        IF_BMI2   = $00200000;
        IF_16BITONLY = $00200000;
@@ -3247,7 +3248,7 @@ implementation
             actConstSize     := 0;
             actConstCount    := 0;
 
-            if asmop = a_movups then
+            if asmop = a_vpmovzxbq then
             begin
               RegXMMSizeMask := RegXMMSizeMask;
             end;
@@ -3397,6 +3398,12 @@ implementation
              (InsTabMemRefSizeInfoCache^[AsmOp].ExistsSSEAVX)then
           begin
             case RegXMMSizeMask of
+              OT_BITS16: case RegYMMSizeMask of
+                           OT_BITS32: InsTabMemRefSizeInfoCache^[AsmOp].MemRefSize := msiMemRegx16y32;
+                        end;
+               OT_BITS32: case RegYMMSizeMask of
+                            OT_BITS64: InsTabMemRefSizeInfoCache^[AsmOp].MemRefSize := msiMemRegx32y64;
+                         end;
                OT_BITS64: case RegYMMSizeMask of
                             OT_BITS128: InsTabMemRefSizeInfoCache^[AsmOp].MemRefSize := msiMemRegx64y128;
                             OT_BITS256: InsTabMemRefSizeInfoCache^[AsmOp].MemRefSize := msiMemRegx64y256;

+ 46 - 1
compiler/x86/rax86.pas

@@ -591,6 +591,51 @@ begin
                                  end;
                                end;
                              end;
+                    msiMemRegx16y32:
+                      begin
+                        for j := 1 to ops do
+                        begin
+                          if operands[j].Opr.Typ = OPR_REGISTER then
+                          begin
+                            case getsubreg(operands[j].opr.reg) of
+                              R_SUBMMX: begin
+                                          tx86operand(operands[i]).opsize := S_L;
+                                          tx86operand(operands[i]).size   := OS_M16;
+                                          break;
+                                        end;
+                              R_SUBMMY: begin
+                                          tx86operand(operands[i]).opsize := S_Q;
+                                          tx86operand(operands[i]).size   := OS_M32;
+                                          break;
+                                        end;
+                                   else Message(asmr_e_unable_to_determine_reference_size);
+                            end;
+                          end;
+                        end;
+                      end;
+
+                    msiMemRegx32y64:
+                      begin
+                        for j := 1 to ops do
+                        begin
+                          if operands[j].Opr.Typ = OPR_REGISTER then
+                          begin
+                            case getsubreg(operands[j].opr.reg) of
+                              R_SUBMMX: begin
+                                          tx86operand(operands[i]).opsize := S_L;
+                                          tx86operand(operands[i]).size   := OS_M32;
+                                          break;
+                                        end;
+                              R_SUBMMY: begin
+                                          tx86operand(operands[i]).opsize := S_Q;
+                                          tx86operand(operands[i]).size   := OS_M64;
+                                          break;
+                                        end;
+                                   else Message(asmr_e_unable_to_determine_reference_size);
+                            end;
+                          end;
+                        end;
+                      end;
                    msiMemRegx64y128:
                              begin
                                for j := 1 to ops do
@@ -1139,7 +1184,7 @@ begin
                case operands[i].size of
                    OS_8,OS_S8 :
                      asize:=OT_BITS8;
-                   OS_16,OS_S16 :
+                   OS_16,OS_S16, OS_M16:
                      asize:=OT_BITS16;
                    OS_32,OS_S32,OS_F32,OS_M32 :
                      asize:=OT_BITS32;

+ 242 - 1
compiler/x86/x86ins.dat

@@ -3552,11 +3552,14 @@ ymmreg,mem128                        \361\362\364\371\1\x1A\110           AVX,SA
 [VBROADCASTSD]
 (Ch_All, Ch_None, Ch_None)
 ymmreg,mem64                         \361\362\364\371\1\x19\110           AVX,SANDYBRIDGE
+ymmreg,xmmreg                        \361\362\364\371\1\x19\110           AVX2
 
 [VBROADCASTSS]
 (Ch_All, Ch_None, Ch_None)
 ymmreg,mem32                         \361\362\364\371\1\x18\110           AVX,SANDYBRIDGE
 xmmreg,mem32                         \361\362\371\1\x18\110               AVX,SANDYBRIDGE
+ymmreg,xmmreg                        \361\362\364\371\1\x18\110           AVX2
+xmmreg,xmmreg                        \361\362\371\1\x18\110               AVX2
 
 [VCMPPD]
 (Ch_All, Ch_None, Ch_None)
@@ -3592,7 +3595,7 @@ xmmreg,xmmreg                        \362\370\1\x2F\110                   AVX,SA
 (Ch_All, Ch_None, Ch_None)
 xmmreg,mem64                         \333\362\370\1\xE6\110               AVX,SANDYBRIDGE
 xmmreg,xmmreg                        \333\362\370\1\xE6\110               AVX,SANDYBRIDGE
-ymmreg,ymmreg                        \333\362\364\370\1\xE6\110           AVX,SANDYBRIDGE
+ymmreg,xmmreg                        \333\362\364\370\1\xE6\110           AVX,SANDYBRIDGE
 ymmreg,mem128                        \333\362\364\370\1\xE6\110           AVX,SANDYBRIDGE
 
 [VCVTDQ2PS]
@@ -3901,6 +3904,7 @@ mem256,ymmreg                        \361\362\364\370\1\xE7\101           AVX,SA
 [VMOVNTDQA]
 (Ch_Wop2, Ch_Rop1, Ch_None)
 xmmreg,mem128                        \361\362\371\1\x2A\110               AVX,SANDYBRIDGE
+ymmreg,mem256                        \361\362\364\371\1\x2A\110           AVX2
 
 [VMOVNTPD]
 (Ch_Wop2, Ch_Rop1, Ch_None)
@@ -3960,6 +3964,7 @@ ymmrm,ymmreg                         \362\364\370\1\x11\101               AVX,SA
 [VMPSADBW]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,xmmreg,xmmrm,imm8             \361\362\372\1\x42\75\120\27         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm,imm8             \361\362\364\372\1\x42\75\120\27     AVX2
 
 [VMULPD]
 (Ch_Wop3, Ch_Rop2, Ch_Rop1)
@@ -3993,90 +3998,112 @@ ymmreg,ymmreg,ymmrm                  \362\364\370\1\x56\75\120            AVX,SA
 [VPABSB]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,xmmrm                         \361\362\371\1\x1C\110               AVX,SANDYBRIDGE
+ymmreg,ymmrm                         \361\362\364\371\1\x1C\110           AVX2
 
 [VPABSD]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,xmmrm                         \361\362\371\1\x1E\110               AVX,SANDYBRIDGE
+ymmreg,ymmrm                         \361\362\364\371\1\x1E\110           AVX2
 
 [VPABSW]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,xmmrm                         \361\362\371\1\x1D\110               AVX,SANDYBRIDGE
+ymmreg,ymmrm                         \361\362\364\371\1\x1D\110           AVX2
 
 [VPACKSSDW]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,xmmreg,xmmrm                  \361\362\370\1\x6B\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\370\1\x6B\75\120        AVX2
 
 [VPACKSSWB]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,xmmreg,xmmrm                  \361\362\370\1\x63\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\370\1\x63\75\120        AVX2
 
 [VPACKUSDW]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,xmmreg,xmmrm                  \361\362\371\1\x2B\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\371\1\x2B\75\120        AVX2
 
 [VPACKUSWB]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,xmmreg,xmmrm                  \361\362\370\1\x67\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\370\1\x67\75\120        AVX2
 
 [VPADDB]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,xmmreg,xmmrm                  \361\362\370\1\xFC\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\370\1\xFC\75\120        AVX2
 
 [VPADDD]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,xmmreg,xmmrm                  \361\362\370\1\xFE\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\370\1\xFE\75\120        AVX2
 
 [VPADDQ]
 (Ch_Rop1, Ch_Rop2, Ch_Wop3)
 xmmreg,xmmreg,xmmrm                  \361\362\370\1\xD4\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\370\1\xD4\75\120        AVX2
 
 [VPADDSB]
 (Ch_Rop1, Ch_Rop2, Ch_Wop3)
 xmmreg,xmmreg,xmmrm                  \361\362\370\1\xEC\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\370\1\xEC\75\120        AVX2
 
 [VPADDSW]
 (Ch_Rop1, Ch_Rop2, Ch_Wop3)
 xmmreg,xmmreg,xmmrm                  \361\362\370\1\xED\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\370\1\xED\75\120        AVX2
 
 [VPADDUSB]
 (Ch_Rop1, Ch_Rop2, Ch_Wop3)
 xmmreg,xmmreg,xmmrm                  \361\362\370\1\xDC\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\370\1\xDC\75\120        AVX2
 
 [VPADDUSW]
 (Ch_Rop1, Ch_Rop2, Ch_Wop3)
 xmmreg,xmmreg,xmmrm                  \361\362\370\1\xDD\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\370\1\xDD\75\120        AVX2
 
 [VPADDW]
 (Ch_Rop1, Ch_Rop2, Ch_Wop3)
 xmmreg,xmmreg,xmmrm                  \361\362\370\1\xFD\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\370\1\xFD\75\120        AVX2
 
 [VPALIGNR]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,xmmreg,xmmrm,imm8             \361\362\372\1\x0F\75\120\27         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm,imm8             \361\362\364\372\1\x0F\75\120\27     AVX2
 
 [VPAND]
 (Ch_Rop1, Ch_Rop2, Ch_Wop3)
 xmmreg,xmmreg,xmmrm                  \361\362\370\1\xDB\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\370\1\xDB\75\120        AVX2
 
 [VPANDN]
 (Ch_Rop1, Ch_Rop2, Ch_Wop3)
 xmmreg,xmmreg,xmmrm                  \361\362\370\1\xDF\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\370\1\xDF\75\120        AVX2
 
 [VPAVGB]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,xmmreg,xmmrm                  \361\362\370\1\xE0\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\370\1\xE0\75\120        AVX2
 
 [VPAVGW]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,xmmreg,xmmrm                  \361\362\370\1\xE3\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\370\1\xE3\75\120        AVX2
 
 [VPBLENDVB]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,xmmreg,xmmrm,xmmreg           \361\362\372\1\x4C\75\120\367        AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm,ymmreg           \361\362\364\372\1\x4C\75\120\367    AVX2
 
 [VPBLENDW]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,xmmreg,xmmrm,imm8             \361\362\372\1\x0E\75\120\27         AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm,imm8             \361\362\364\372\1\x0E\75\120\27     AVX2
 
 [VPCLMULQDQ]
 (Ch_All, Ch_None, Ch_None)
@@ -4085,18 +4112,22 @@ xmmreg,xmmreg,xmmrm,imm8             \361\362\372\1\x44\75\120\27         AVX,SA
 [VPCMPEQB]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,xmmreg,xmmrm                  \361\362\370\1\x74\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\370\1\x74\75\120        AVX2
 
 [VPCMPEQD]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,xmmreg,xmmrm                  \361\362\370\1\x76\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\370\1\x76\75\120        AVX2
 
 [VPCMPEQQ]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,xmmreg,xmmrm                  \361\362\371\1\x29\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\371\1\x29\75\120        AVX2
 
 [VPCMPEQW]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,xmmreg,xmmrm                  \361\362\370\1\x75\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\370\1\x75\75\120        AVX2
 
 [VPCMPESTRI]
 (Ch_All, Ch_None, Ch_None)
@@ -4109,18 +4140,22 @@ xmmreg,xmmrm,imm8                    \361\362\372\1\x60\110\26            AVX,SA
 [VPCMPGTB]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,xmmreg,xmmrm                  \361\362\370\1\x64\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\370\1\x64\75\120        AVX2
 
 [VPCMPGTD]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,xmmreg,xmmrm                  \361\362\370\1\x66\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\370\1\x66\75\120        AVX2
 
 [VPCMPGTQ]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,xmmreg,xmmrm                  \361\362\371\1\x37\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\371\1\x37\75\120        AVX2
 
 [VPCMPGTW]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,xmmreg,xmmrm                  \361\362\370\1\x65\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\370\1\x65\75\120        AVX2
 
 [VPCMPISTRI]
 (Ch_All, Ch_None, Ch_None)
@@ -4174,14 +4209,17 @@ mem16,xmmreg,imm8                    \361\362\372\1\x15\101\26            AVX,SA
 [VPHADDD]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,xmmreg,xmmrm                  \361\362\371\1\x02\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\371\1\x02\75\120        AVX2
 
 [VPHADDSW]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,xmmreg,xmmrm                  \361\362\371\1\x03\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\371\1\x03\75\120        AVX2
 
 [VPHADDW]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,xmmreg,xmmrm                  \361\362\371\1\x01\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\371\1\x01\75\120        AVX2
 
 [VPHMINPOSUW]
 (Ch_All, Ch_None, Ch_None)
@@ -4190,14 +4228,17 @@ xmmreg,xmmrm                         \361\362\371\1\x41\110               AVX,SA
 [VPHSUBD]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,xmmreg,xmmrm                  \361\362\371\1\x06\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\371\1\x06\75\120        AVX2
 
 [VPHSUBSW]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,xmmreg,xmmrm                  \361\362\371\1\x07\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\371\1\x07\75\120        AVX2
 
 [VPHSUBW]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,xmmreg,xmmrm                  \361\362\371\1\x05\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\371\1\x05\75\120        AVX2
 
 [VPINSRB]
 (Ch_All, Ch_None, Ch_None)
@@ -4220,267 +4261,347 @@ xmmreg,xmmreg,mem16,imm8             \361\362\370\1\xC4\75\120\27         AVX,SA
 [VPMADDUBSW]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,xmmreg,xmmrm                  \361\362\371\1\x04\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\371\1\x04\75\120        AVX2
 
 [VPMADDWD]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,xmmreg,xmmrm                  \361\362\370\1\xF5\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\370\1\xF5\75\120        AVX2
 
 [VPMAXSB]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,xmmreg,xmmrm                  \361\362\371\1\x3C\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\371\1\x3C\75\120        AVX2
 
 [VPMAXSD]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,xmmreg,xmmrm                  \361\362\371\1\x3D\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\371\1\x3D\75\120        AVX2
 
 [VPMAXSW]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,xmmreg,xmmrm                  \361\362\370\1\xEE\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\370\1\xEE\75\120        AVX2
 
 [VPMAXUB]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,xmmreg,xmmrm                  \361\362\370\1\xDE\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\370\1\xDE\75\120        AVX2
 
 [VPMAXUD]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,xmmreg,xmmrm                  \361\362\371\1\x3F\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\371\1\x3F\75\120        AVX2
 
 [VPMAXUW]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,xmmreg,xmmrm                  \361\362\371\1\x3E\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\371\1\x3E\75\120        AVX2
 
 [VPMINSB]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,xmmreg,xmmrm                  \361\362\371\1\x38\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\371\1\x38\75\120        AVX2
 
 [VPMINSD]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,xmmreg,xmmrm                  \361\362\371\1\x39\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\371\1\x39\75\120        AVX2
 
 [VPMINSW]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,xmmreg,xmmrm                  \361\362\370\1\xEA\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\370\1\xEA\75\120        AVX2
 
 [VPMINUB]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,xmmreg,xmmrm                  \361\362\370\1\xDA\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\370\1\xDA\75\120        AVX2
 
 [VPMINUD]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,xmmreg,xmmrm                  \361\362\371\1\x3B\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\371\1\x3B\75\120        AVX2
 
 [VPMINUW]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,xmmreg,xmmrm                  \361\362\371\1\x3A\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\371\1\x3A\75\120        AVX2
 
 [VPMOVMSKB]
 (Ch_All, Ch_None, Ch_None)
 reg64,xmmreg                         \361\362\370\1\xD7\110               AVX,SANDYBRIDGE
 reg32,xmmreg                         \361\362\370\1\xD7\110               AVX,SANDYBRIDGE
+reg32,ymmreg                         \361\362\364\370\1\xD7\110           AVX2
+reg64,ymmreg                         \361\362\364\370\1\xD7\110           AVX2
 
 [VPMOVSXBD]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,mem32                         \361\362\371\1\x21\110               AVX,SANDYBRIDGE
 xmmreg,xmmreg                        \361\362\371\1\x21\110               AVX,SANDYBRIDGE
+ymmreg,xmmreg                        \361\362\364\371\1\x21\110           AVX2
+ymmreg,mem64                         \361\362\364\371\1\x21\110           AVX2
 
 [VPMOVSXBQ]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,mem16                         \361\362\371\1\x22\110               AVX,SANDYBRIDGE
 xmmreg,xmmreg                        \361\362\371\1\x22\110               AVX,SANDYBRIDGE
+ymmreg,mem32                         \361\362\364\371\1\x22\110           AVX2
+ymmreg,xmmreg                        \361\362\364\371\1\x22\110           AVX2
 
 [VPMOVSXBW]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,mem64                         \361\362\371\1\x20\110               AVX,SANDYBRIDGE
 xmmreg,xmmreg                        \361\362\371\1\x20\110               AVX,SANDYBRIDGE
+ymmreg,xmmrm                         \361\362\364\371\1\x20\110           AVX2
 
 [VPMOVSXDQ]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,mem64                         \361\362\371\1\x25\110               AVX,SANDYBRIDGE
 xmmreg,xmmreg                        \361\362\371\1\x25\110               AVX,SANDYBRIDGE
+ymmreg,xmmrm                         \361\362\364\371\1\x25\110           AVX2
 
 [VPMOVSXWD]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,mem64                         \361\362\371\1\x23\110               AVX,SANDYBRIDGE
 xmmreg,xmmreg                        \361\362\371\1\x23\110               AVX,SANDYBRIDGE
+ymmreg,xmmrm                         \361\362\364\371\1\x23\110           AVX2
 
 [VPMOVSXWQ]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,mem32                         \361\362\371\1\x24\110               AVX,SANDYBRIDGE
 xmmreg,xmmreg                        \361\362\371\1\x24\110               AVX,SANDYBRIDGE
+ymmreg,mem64                         \361\362\364\371\1\x24\110           AVX2
+ymmreg,xmmreg                        \361\362\364\371\1\x24\110           AVX2
 
 [VPMOVZXBD]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,mem32                         \361\362\371\1\x31\110               AVX,SANDYBRIDGE
 xmmreg,xmmreg                        \361\362\371\1\x31\110               AVX,SANDYBRIDGE
+ymmreg,mem64                         \361\362\364\371\1\x31\110           AVX2
+ymmreg,xmmreg                        \361\362\364\371\1\x31\110           AVX2
 
 [VPMOVZXBQ]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,mem16                         \361\362\371\1\x32\110               AVX,SANDYBRIDGE
 xmmreg,xmmreg                        \361\362\371\1\x32\110               AVX,SANDYBRIDGE
+ymmreg,mem32                         \361\362\364\371\1\x32\110           AVX2
+ymmreg,xmmreg                        \361\362\364\371\1\x32\110           AVX2
 
 [VPMOVZXBW]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,mem64                         \361\362\371\1\x30\110               AVX,SANDYBRIDGE
 xmmreg,xmmreg                        \361\362\371\1\x30\110               AVX,SANDYBRIDGE
+ymmreg,xmmrm                         \361\362\364\371\1\x30\110           AVX2
 
 [VPMOVZXDQ]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,mem64                         \361\362\371\1\x35\110               AVX,SANDYBRIDGE
 xmmreg,xmmreg                        \361\362\371\1\x35\110               AVX,SANDYBRIDGE
+ymmreg,xmmrm                         \361\362\364\371\1\x35\110           AVX2
 
 [VPMOVZXWD]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,mem64                         \361\362\371\1\x33\110               AVX,SANDYBRIDGE
 xmmreg,xmmreg                        \361\362\371\1\x33\110               AVX,SANDYBRIDGE
+ymmreg,xmmrm                         \361\362\364\371\1\x33\110           AVX2
 
 [VPMOVZXWQ]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,mem32                         \361\362\371\1\x34\110               AVX,SANDYBRIDGE
 xmmreg,xmmreg                        \361\362\371\1\x34\110               AVX,SANDYBRIDGE
+ymmreg,mem64                         \361\362\364\371\1\x34\110           AVX2
+ymmreg,xmmreg                        \361\362\364\371\1\x34\110           AVX2
+
 
 [VPMULDQ]
 (Ch_Rop1, Ch_Rop2, Ch_Wop3)
 xmmreg,xmmreg,xmmrm                  \361\362\371\1\x28\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\371\1\x28\75\120        AVX2
 
 [VPMULHRSW]
 (Ch_Rop1, Ch_Rop2, Ch_Wop3)
 xmmreg,xmmreg,xmmrm                  \361\362\371\1\x0B\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\371\1\x0B\75\120        AVX2
 
 [VPMULHUW]
 (Ch_Rop1, Ch_Rop2, Ch_Wop3)
 xmmreg,xmmreg,xmmrm                  \361\362\370\1\xE4\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\370\1\xE4\75\120        AVX2
 
 [VPMULHW]
 (Ch_Rop1, Ch_Rop2, Ch_Wop3)
 xmmreg,xmmreg,xmmrm                  \361\362\370\1\xE5\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\370\1\xE5\75\120        AVX2
 
 [VPMULLD]
 (Ch_Rop1, Ch_Rop2, Ch_Wop3)
 xmmreg,xmmreg,xmmrm                  \361\362\371\1\x40\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\371\1\x40\75\120        AVX2
 
 [VPMULLW]
 (Ch_Rop1, Ch_Rop2, Ch_Wop3)
 xmmreg,xmmreg,xmmrm                  \361\362\370\1\xD5\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\370\1\xD5\75\120        AVX2
 
 [VPMULUDQ]
 (Ch_Rop1, Ch_Rop2, Ch_Wop3)
 xmmreg,xmmreg,xmmrm                  \361\362\370\1\xF4\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\370\1\xF4\75\120        AVX2
 
 [VPOR]
 (Ch_Rop1, Ch_Rop2, Ch_Wop3)
 xmmreg,xmmreg,xmmrm                  \361\362\370\1\xEB\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\370\1\xEB\75\120        AVX2
 
 [VPSADBW]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,xmmreg,xmmrm                  \361\362\370\1\xF6\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\370\1\xF6\75\120        AVX2
 
 [VPSHUFB]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,xmmreg,xmmrm                  \361\362\371\1\x00\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\371\1\x00\75\120        AVX2
 
 [VPSHUFD]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,xmmrm,imm8                    \361\362\370\1\x70\110\26            AVX,SANDYBRIDGE
+ymmreg,ymmrm,imm8                    \361\362\364\370\1\x70\110\26        AVX2
 
 [VPSHUFHW]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,xmmrm,imm8                    \333\362\370\1\x70\110\26            AVX,SANDYBRIDGE
+ymmreg,ymmrm,imm8                    \333\362\364\370\1\x70\110\26        AVX2
 
 [VPSHUFLW]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,xmmrm,imm8                    \334\362\370\1\x70\110\26            AVX,SANDYBRIDGE
+ymmreg,ymmrm,imm8                    \334\362\364\370\1\x70\110\26        AVX2
 
 [VPSIGNB]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,xmmreg,xmmrm                  \361\362\371\1\x08\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\371\1\x08\75\120        AVX2
 
 [VPSIGND]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,xmmreg,xmmrm                  \361\362\371\1\x0A\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\371\1\x0A\75\120        AVX2
 
 [VPSIGNW]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,xmmreg,xmmrm                  \361\362\371\1\x09\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\371\1\x09\75\120        AVX2
 
 [VPSLLD]
 (Ch_Rop1, Ch_Rop2, Ch_Wop3)
 xmmreg,xmmreg,imm8                   \361\362\370\1\x72\74\216\26         AVX,SANDYBRIDGE
 xmmreg,xmmreg,xmmrm                  \361\362\370\1\xF2\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,imm8                   \361\362\364\370\1\x72\74\216\26     AVX2
+ymmreg,ymmreg,xmmrm                  \361\362\364\370\1\xF2\75\120        AVX2
 
 [VPSLLDQ]
 (Ch_Rop1, Ch_Rop2, Ch_Wop3)
 xmmreg,xmmreg,imm8                   \361\362\370\1\x73\74\217\26         AVX,SANDYBRIDGE
+ymmreg,ymmreg,imm8                   \361\362\364\370\1\x73\74\217\26     AVX2
+
 
 [VPSLLQ]
 (Ch_Rop1, Ch_Rop2, Ch_Wop3)
 xmmreg,xmmreg,xmmrm                  \361\362\370\1\xF3\75\120            AVX,SANDYBRIDGE
 xmmreg,xmmreg,imm8                   \361\362\370\1\x73\74\216\26         AVX,SANDYBRIDGE
+ymmreg,ymmreg,xmmrm                  \361\362\364\370\1\xF3\75\120        AVX2
+ymmreg,ymmreg,imm8                   \361\362\364\370\1\x73\74\216\26     AVX2
 
 [VPSLLW]
 (Ch_Rop1, Ch_Rop2, Ch_Wop3)
 xmmreg,xmmreg,imm8                   \361\362\370\1\x71\74\216\26         AVX,SANDYBRIDGE
 xmmreg,xmmreg,xmmrm                  \361\362\370\1\xF1\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,imm8                   \361\362\364\370\1\x71\74\216\26     AVX2
+ymmreg,ymmreg,xmmrm                  \361\362\364\370\1\xF1\75\120        AVX2
+
 
 [VPSRAD]
 (Ch_Rop1, Ch_Rop2, Ch_Wop3)
 xmmreg,xmmreg,imm8                   \361\362\370\1\x72\74\214\26         AVX,SANDYBRIDGE
 xmmreg,xmmreg,xmmrm                  \361\362\370\1\xE2\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,imm8                   \361\362\364\370\1\x72\74\214\26     AVX2
+ymmreg,ymmreg,xmmrm                  \361\362\364\370\1\xE2\75\120        AVX2
 
 [VPSRAW]
 (Ch_Rop1, Ch_Rop2, Ch_Wop3)
 xmmreg,xmmreg,imm8                   \361\362\370\1\x71\74\214\26         AVX,SANDYBRIDGE
 xmmreg,xmmreg,xmmrm                  \361\362\370\1\xE1\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,imm8                   \361\362\364\370\1\x71\74\214\26     AVX2
+ymmreg,ymmreg,xmmrm                  \361\362\364\370\1\xE1\75\120        AVX2
 
 [VPSRLD]
 (Ch_Rop1, Ch_Rop2, Ch_Wop3)
 xmmreg,xmmreg,imm8                   \361\362\370\1\x72\74\212\26         AVX,SANDYBRIDGE
 xmmreg,xmmreg,xmmrm                  \361\362\370\1\xD2\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,imm8                   \361\362\364\370\1\x72\74\212\26     AVX2
+ymmreg,ymmreg,xmmrm                  \361\362\364\370\1\xD2\75\120        AVX2
+
 
 [VPSRLDQ]
 (Ch_Rop1, Ch_Rop2, Ch_Wop3)
 xmmreg,xmmreg,imm8                   \361\362\370\1\x73\74\213\26         AVX,SANDYBRIDGE
+ymmreg,ymmreg,imm8                   \361\362\364\370\1\x73\74\213\26     AVX2
 
 [VPSRLQ]
 (Ch_Rop1, Ch_Rop2, Ch_Wop3)
 xmmreg,xmmreg,imm8                   \361\362\370\1\x73\74\212\26         AVX,SANDYBRIDGE
 xmmreg,xmmreg,xmmrm                  \361\362\370\1\xD3\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,imm8                   \361\362\364\370\1\x73\74\212\26     AVX2
+ymmreg,ymmreg,xmmrm                  \361\362\364\370\1\xD3\75\120        AVX2
 
 [VPSRLW]
 (Ch_Rop1, Ch_Rop2, Ch_Wop3)
 xmmreg,xmmreg,imm8                   \361\362\370\1\x71\74\212\26         AVX,SANDYBRIDGE
 xmmreg,xmmreg,xmmrm                  \361\362\370\1\xD1\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,imm8                   \361\362\364\370\1\x71\74\212\26     AVX2
+ymmreg,ymmreg,xmmrm                  \361\362\364\370\1\xD1\75\120        AVX2
 
 [VPSUBB]
 (Ch_Rop1, Ch_Rop2, Ch_Wop3)
 xmmreg,xmmreg,xmmrm                  \361\362\370\1\xF8\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\370\1\xF8\75\120        AVX2
 
 [VPSUBD]
 (Ch_Rop1, Ch_Rop2, Ch_Wop3)
 xmmreg,xmmreg,xmmrm                  \361\362\370\1\xFA\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\370\1\xFA\75\120        AVX2
 
 [VPSUBQ]
 (Ch_Rop1, Ch_Rop2, Ch_Wop3)
 xmmreg,xmmreg,xmmrm                  \361\362\370\1\xFB\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\370\1\xFB\75\120        AVX2
 
 [VPSUBSB]
 (Ch_Rop1, Ch_Rop2, Ch_Wop3)
 xmmreg,xmmreg,xmmrm                  \361\362\370\1\xE8\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\370\1\xE8\75\120        AVX2
 
 [VPSUBSW]
 (Ch_Rop1, Ch_Rop2, Ch_Wop3)
 xmmreg,xmmreg,xmmrm                  \361\362\370\1\xE9\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\370\1\xE9\75\120        AVX2
 
 [VPSUBUSB]
 (Ch_Rop1, Ch_Rop2, Ch_Wop3)
 xmmreg,xmmreg,xmmrm                  \361\362\370\1\xD8\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\370\1\xD8\75\120        AVX2
 
 [VPSUBUSW]
 (Ch_Rop1, Ch_Rop2, Ch_Wop3)
 xmmreg,xmmreg,xmmrm                  \361\362\370\1\xD9\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\370\1\xD9\75\120        AVX2
 
 [VPSUBW]
 (Ch_Rop1, Ch_Rop2, Ch_Wop3)
 xmmreg,xmmreg,xmmrm                  \361\362\370\1\xF9\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\370\1\xF9\75\120        AVX2
 
 [VPTEST]
 (Ch_All, Ch_None, Ch_None)
@@ -4490,38 +4611,47 @@ xmmreg,xmmrm                         \361\362\371\1\x17\110               AVX,SA
 [VPUNPCKHBW]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,xmmreg,xmmrm                  \361\362\370\1\x68\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\370\1\x68\75\120        AVX2
 
 [VPUNPCKHDQ]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,xmmreg,xmmrm                  \361\362\370\1\x6A\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\370\1\x6A\75\120        AVX2
 
 [VPUNPCKHQDQ]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,xmmreg,xmmrm                  \361\362\370\1\x6D\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\370\1\x6D\75\120        AVX2
 
 [VPUNPCKHWD]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,xmmreg,xmmrm                  \361\362\370\1\x69\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\370\1\x69\75\120        AVX2
 
 [VPUNPCKLBW]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,xmmreg,xmmrm                  \361\362\370\1\x60\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\370\1\x60\75\120        AVX2
 
 [VPUNPCKLDQ]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,xmmreg,xmmrm                  \361\362\370\1\x62\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\370\1\x62\75\120        AVX2
 
 [VPUNPCKLQDQ]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,xmmreg,xmmrm                  \361\362\370\1\x6C\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\370\1\x6C\75\120        AVX2
 
 [VPUNPCKLWD]
 (Ch_All, Ch_None, Ch_None)
 xmmreg,xmmreg,xmmrm                  \361\362\370\1\x61\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\370\1\x61\75\120        AVX2
 
 [VPXOR]
 (Ch_Rop1, Ch_Rop2, Ch_Wop3)
 xmmreg,xmmreg,xmmrm                  \361\362\370\1\xEF\75\120            AVX,SANDYBRIDGE
+ymmreg,ymmreg,ymmrm                  \361\362\364\370\1\xEF\75\120        AVX2
 
 [VRCPPS]
 (Ch_All, Ch_None, Ch_None)
@@ -4717,6 +4847,117 @@ reg64,rm64,reg64                      \361\362\363\371\1\xf7\76\110       BMI2,X
 reg32,rm32,reg32                      \334\362\371\1\xf7\76\110           BMI2
 reg64,rm64,reg64                      \334\362\363\371\1\xf7\76\110       BMI2,X86_64
 
+
+;*******************************************************************************
+;********** AVX2 ***************************************************************
+;*******************************************************************************
+
+[VBROADCASTI128]
+(Ch_All, Ch_None, Ch_None)
+ymmreg,mem128                        \361\362\364\371\1\x5A\110           AVX2
+
+[VEXTRACTI128]
+(Ch_All, Ch_None, Ch_None)
+xmmrm,ymmreg,imm8                    \361\362\364\372\1\x39\101\26        AVX2
+
+[VINSERTI128]
+(Ch_All, Ch_None, Ch_None)
+ymmreg,ymmreg,xmmrm,imm8             \361\362\364\372\1\x38\75\120\27     AVX2
+
+[VPBLENDD]
+(Ch_All, Ch_None, Ch_None)
+ymmreg,ymmreg,ymmrm,imm8             \361\362\364\372\1\x02\75\120\27     AVX2
+xmmreg,xmmreg,xmmrm,imm8             \361\362\372\1\x02\75\120\27         AVX2
+
+[VPBROADCASTB]
+(Ch_All, Ch_None, Ch_None)
+xmmreg,xmmreg                        \361\362\371\1\x78\110               AVX2
+ymmreg,xmmreg                        \361\362\364\371\1\x78\110           AVX2
+xmmreg,mem8                          \361\362\371\1\x78\110               AVX2
+ymmreg,mem8                          \361\362\364\371\1\x78\110           AVX2
+
+[VPBROADCASTD]
+(Ch_All, Ch_None, Ch_None)
+ymmreg,xmmreg                        \361\362\364\371\1\x58\110           AVX2
+xmmreg,mem32                         \361\362\371\1\x58\110               AVX2
+xmmreg,xmmreg                        \361\362\371\1\x58\110               AVX2
+ymmreg,mem32                         \361\362\364\371\1\x58\110           AVX2
+
+[VPBROADCASTQ]
+(Ch_All, Ch_None, Ch_None)
+ymmreg,mem64                         \361\362\364\371\1\x59\110           AVX2
+xmmreg,mem64                         \361\362\371\1\x59\110               AVX2
+xmmreg,xmmreg                        \361\362\371\1\x59\110               AVX2
+ymmreg,xmmreg                        \361\362\364\371\1\x59\110           AVX2
+
+[VPBROADCASTW]
+(Ch_All, Ch_None, Ch_None)
+xmmreg,mem16                         \361\362\371\1\x79\110               AVX2
+xmmreg,xmmreg                        \361\362\371\1\x79\110               AVX2
+ymmreg,mem16                         \361\362\364\371\1\x79\110           AVX2
+ymmreg,xmmreg                        \361\362\364\371\1\x79\110           AVX2
+
+[VPERM2I128]
+(Ch_All, Ch_None, Ch_None)
+ymmreg,ymmreg,ymmrm,imm8             \361\362\364\372\1\x46\75\120\27     AVX2
+
+[VPERMD]
+(Ch_All, Ch_None, Ch_None)
+ymmreg,ymmreg,ymmrm                  \361\362\364\371\1\x36\75\120        AVX2
+
+[VPERMPD]
+(Ch_All, Ch_None, Ch_None)
+ymmreg,ymmrm,imm8                    \361\362\363\364\372\1\x01\110\26    AVX2
+
+[VPERMPS]
+(Ch_All, Ch_None, Ch_None)
+ymmreg,ymmreg,ymmrm                  \361\362\364\371\1\x16\75\120        AVX2
+
+[VPERMQ]
+(Ch_All, Ch_None, Ch_None)
+ymmreg,ymmrm,imm8                    \361\362\363\364\372\1\x00\110\26    AVX2
+
+[VPMASKMOVD]
+(Ch_All, Ch_None, Ch_None)
+xmmreg,xmmreg,mem128                 \361\362\371\1\x8C\75\120            AVX2
+mem128,xmmreg,xmmreg                 \361\362\371\1\x8E\75\102            AVX2
+ymmreg,ymmreg,mem256                 \361\362\364\371\1\x8C\75\120        AVX2
+mem256,ymmreg,ymmreg                 \361\362\364\371\1\x8E\75\102        AVX2
+
+[VPMASKMOVQ]
+(Ch_All, Ch_None, Ch_None)
+xmmreg,xmmreg,mem128                 \361\362\363\371\1\x8C\75\120        AVX2
+mem128,xmmreg,xmmreg                 \361\362\363\371\1\x8E\75\102        AVX2
+mem256,ymmreg,ymmreg                 \361\362\363\364\371\1\x8E\75\102    AVX2
+ymmreg,ymmreg,mem256                 \361\362\363\364\371\1\x8C\75\120    AVX2
+
+[VPSLLVD]
+(Ch_All, Ch_None, Ch_None)
+ymmreg,ymmreg,ymmrm                  \361\362\364\371\1\x47\75\120        AVX2
+xmmreg,xmmreg,xmmrm                  \361\362\371\1\x47\75\120            AVX2
+
+[VPSLLVQ]
+(Ch_All, Ch_None, Ch_None)
+xmmreg,xmmreg,xmmrm                  \361\362\363\371\1\x47\75\120        AVX2
+ymmreg,ymmreg,ymmrm                  \361\362\363\364\371\1\x47\75\120    AVX2
+
+[VPSRAVD]
+(Ch_All, Ch_None, Ch_None)
+ymmreg,ymmreg,ymmrm                  \361\362\364\371\1\x46\75\120        AVX2
+xmmreg,xmmreg,xmmrm                  \361\362\371\1\x46\75\120            AVX2
+
+[VPSRLVD]
+(Ch_All, Ch_None, Ch_None)
+ymmreg,ymmreg,ymmrm                  \361\362\364\371\1\x45\75\120        AVX2
+xmmreg,xmmreg,xmmrm                  \361\362\371\1\x45\75\120            AVX2
+
+[VPSRLVQ]
+(Ch_All, Ch_None, Ch_None)
+ymmreg,ymmreg,ymmrm                  \361\362\363\364\371\1\x45\75\120    AVX2
+xmmreg,xmmreg,xmmrm                  \361\362\363\371\1\x45\75\120        AVX2
+
+
+
 ;*******************************************************************************
 ;********** NEC V20/V30 ********************************************************
 ;*******************************************************************************

+ 20 - 0
compiler/x86_64/x8664ats.inc

@@ -964,5 +964,25 @@ attsufNONE,
 attsufNONE,
 attsufNONE,
 attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
+attsufNONE,
 attsufNONE
 );

+ 20 - 0
compiler/x86_64/x8664att.inc

@@ -951,6 +951,26 @@
 'sarx',
 'shlx',
 'shrx',
+'vbroadcasti128',
+'vextracti128',
+'vinserti128',
+'vpblendd',
+'vpbroadcastb',
+'vpbroadcastd',
+'vpbroadcastq',
+'vpbroadcastw',
+'vperm2i128',
+'vpermd',
+'vpermpd',
+'vpermps',
+'vpermq',
+'vpmaskmovd',
+'vpmaskmovq',
+'vpsllvd',
+'vpsllvq',
+'vpsravd',
+'vpsrlvd',
+'vpsrlvq',
 'add4s',
 'brkem',
 'clr1',

+ 20 - 0
compiler/x86_64/x8664int.inc

@@ -951,6 +951,26 @@
 'sarx',
 'shlx',
 'shrx',
+'vbroadcasti128',
+'vextracti128',
+'vinserti128',
+'vpblendd',
+'vpbroadcastb',
+'vpbroadcastd',
+'vpbroadcastq',
+'vpbroadcastw',
+'vperm2i128',
+'vpermd',
+'vpermpd',
+'vpermps',
+'vpermq',
+'vpmaskmovd',
+'vpmaskmovq',
+'vpsllvd',
+'vpsllvq',
+'vpsravd',
+'vpsrlvd',
+'vpsrlvq',
 'add4s',
 'brkem',
 'clr1',

+ 1 - 1
compiler/x86_64/x8664nop.inc

@@ -1,2 +1,2 @@
 { don't edit, this file is generated from x86ins.dat }
-1679;
+1849;

+ 20 - 0
compiler/x86_64/x8664op.inc

@@ -951,6 +951,26 @@ A_RORX,
 A_SARX,
 A_SHLX,
 A_SHRX,
+A_VBROADCASTI128,
+A_VEXTRACTI128,
+A_VINSERTI128,
+A_VPBLENDD,
+A_VPBROADCASTB,
+A_VPBROADCASTD,
+A_VPBROADCASTQ,
+A_VPBROADCASTW,
+A_VPERM2I128,
+A_VPERMD,
+A_VPERMPD,
+A_VPERMPS,
+A_VPERMQ,
+A_VPMASKMOVD,
+A_VPMASKMOVQ,
+A_VPSLLVD,
+A_VPSLLVQ,
+A_VPSRAVD,
+A_VPSRLVD,
+A_VPSRLVQ,
 A_ADD4S,
 A_BRKEM,
 A_CLR1,

+ 20 - 0
compiler/x86_64/x8664pro.inc

@@ -953,6 +953,26 @@
 (Ch: (Ch_Rop1, Ch_Rop2, Ch_Wop3)),
 (Ch: (Ch_All, Ch_None, Ch_None)),
 (Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
+(Ch: (Ch_All, Ch_None, Ch_None)),
 (Ch: (Ch_Mop2, Ch_Rop1, Ch_None)),
 (Ch: (Ch_All, Ch_None, Ch_None)),
 (Ch: (Ch_All, Ch_None, Ch_None)),

File diff suppressed because it is too large
+ 526 - 1
compiler/x86_64/x8664tab.inc


+ 173 - 2
tests/utils/avx/avxopcodes.pas

@@ -103,8 +103,7 @@ begin
   FOpCodeList.Add('VCOMISS,1,1,XMMREG,XMMREG,,');
   FOpCodeList.Add('VCVTDQ2PD,1,1,XMMREG,MEM64,,');
   FOpCodeList.Add('VCVTDQ2PD,1,1,XMMREG,XMMREG,,');
-  FOpCodeList.Add('VCVTDQ2PD,1,1,YMMREG,YMMREG,,');
-  FOpCodeList.Add('VCVTDQ2PD,1,1,YMMREG,MEM128,,');
+  FOpCodeList.Add('VCVTDQ2PD,1,1,YMMREG,XMMRM,,');
   FOpCodeList.Add('VCVTDQ2PS,1,1,XMMREG,XMMRM,,');
   FOpCodeList.Add('VCVTDQ2PS,1,1,YMMREG,YMMRM,,');
   FOpCodeList.Add('VCVTPD2DQ,1,1,XMMREG,XMMRM,,');
@@ -277,38 +276,68 @@ begin
   FOpCodeList.Add('VORPS,1,1,XMMREG,XMMREG,XMMRM,');
   FOpCodeList.Add('VORPS,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPABSB,1,1,XMMREG,XMMRM,,');
+  FOpCodeList.Add('VPABSB,1,1,YMMREG,YMMRM,,');
   FOpCodeList.Add('VPABSD,1,1,XMMREG,XMMRM,,');
+  FOpCodeList.Add('VPABSD,1,1,YMMREG,YMMRM,,');
   FOpCodeList.Add('VPABSW,1,1,XMMREG,XMMRM,,');
+  FOpCodeList.Add('VPABSW,1,1,YMMREG,YMMRM,,');
   FOpCodeList.Add('VPACKSSDW,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPACKSSDW,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPACKSSWB,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPACKSSWB,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPACKUSDW,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPACKUSDW,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPACKUSWB,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPACKUSWB,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPADDB,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPADDB,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPADDD,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPADDD,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPADDQ,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPADDQ,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPADDSB,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPADDSB,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPADDSW,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPADDSW,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPADDUSB,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPADDUSB,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPADDUSW,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPADDUSW,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPADDW,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPADDW,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPALIGNR,1,1,XMMREG,XMMREG,XMMRM,IMM8');
+  FOpCodeList.Add('VPALIGNR,1,1,YMMREG,YMMREG,YMMRM,IMM8');
   FOpCodeList.Add('VPAND,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPAND,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPANDN,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPANDN,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPAVGB,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPAVGB,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPAVGW,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPAVGW,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPBLENDVB,1,1,XMMREG,XMMREG,XMMRM,XMMREG');
+  FOpCodeList.Add('VPBLENDVB,1,1,YMMREG,YMMREG,YMMRM,YMMREG');
   FOpCodeList.Add('VPBLENDW,1,1,XMMREG,XMMREG,XMMRM,IMM8');
+  FOpCodeList.Add('VPBLENDW,1,1,YMMREG,YMMREG,YMMRM,IMM8');
   FOpCodeList.Add('VPCLMULQDQ,1,1,XMMREG,XMMREG,XMMRM,IMM8');
   FOpCodeList.Add('VPCMPEQB,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPCMPEQB,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPCMPEQD,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPCMPEQD,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPCMPEQQ,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPCMPEQQ,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPCMPEQW,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPCMPEQW,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPCMPESTRI,1,1,XMMREG,XMMRM,IMM8,');
   FOpCodeList.Add('VPCMPESTRM,1,1,XMMREG,XMMRM,IMM8,');
   FOpCodeList.Add('VPCMPGTB,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPCMPGTB,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPCMPGTD,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPCMPGTD,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPCMPGTQ,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPCMPGTQ,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPCMPGTW,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPCMPGTW,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPCMPISTRI,1,1,XMMREG,XMMRM,IMM8,');
   FOpCodeList.Add('VPCMPISTRM,1,1,XMMREG,XMMRM,IMM8,');
   FOpCodeList.Add('VPERM2F128,1,1,YMMREG,YMMREG,YMMRM,IMM8');
@@ -331,12 +360,18 @@ begin
   FOpCodeList.Add('VPEXTRW,1,1,MEM16,XMMREG,IMM8,');
   FOpCodeList.Add('VPEXTRW,1,1,REG32,XMMREG,IMM8,');
   FOpCodeList.Add('VPHADDD,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPHADDD,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPHADDSW,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPHADDSW,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPHADDW,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPHADDW,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPHMINPOSUW,1,1,XMMREG,XMMRM,,');
   FOpCodeList.Add('VPHSUBD,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPHSUBD,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPHSUBSW,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPHSUBSW,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPHSUBW,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPHSUBW,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPINSRB,1,1,XMMREG,XMMREG,REG32,IMM8');
   FOpCodeList.Add('VPINSRB,1,1,XMMREG,XMMREG,MEM8,IMM8');
   FOpCodeList.Add('VPINSRD,1,1,XMMREG,XMMREG,RM32,IMM8');
@@ -344,98 +379,185 @@ begin
   FOpCodeList.Add('VPINSRW,1,1,XMMREG,XMMREG,REG32,IMM8');
   FOpCodeList.Add('VPINSRW,1,1,XMMREG,XMMREG,MEM16,IMM8');
   FOpCodeList.Add('VPMADDUBSW,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPMADDUBSW,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPMADDWD,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPMADDWD,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPMAXSB,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPMAXSB,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPMAXSD,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPMAXSD,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPMAXSW,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPMAXSW,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPMAXUB,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPMAXUB,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPMAXUD,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPMAXUD,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPMAXUW,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPMAXUW,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPMINSB,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPMINSB,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPMINSD,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPMINSD,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPMINSW,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPMINSW,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPMINUB,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPMINUB,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPMINUD,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPMINUD,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPMINUW,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPMINUW,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPMOVMSKB,1,1,REG64,XMMREG,,');
+  FOpCodeList.Add('VPMOVMSKB,1,1,REG64,YMMREG,,');
   FOpCodeList.Add('VPMOVMSKB,1,1,REG32,XMMREG,,');
+  FOpCodeList.Add('VPMOVMSKB,1,1,REG32,YMMREG,,');
   FOpCodeList.Add('VPMOVSXBD,1,1,XMMREG,MEM32,,');
+  FOpCodeList.Add('VPMOVSXBD,1,1,YMMREG,MEM64,,');
   FOpCodeList.Add('VPMOVSXBD,1,1,XMMREG,XMMREG,,');
+  FOpCodeList.Add('VPMOVSXBD,1,1,YMMREG,XMMREG,,');
   FOpCodeList.Add('VPMOVSXBQ,1,1,XMMREG,MEM16,,');
+  FOpCodeList.Add('VPMOVSXBQ,1,1,YMMREG,MEM32,,');
   FOpCodeList.Add('VPMOVSXBQ,1,1,XMMREG,XMMREG,,');
+  FOpCodeList.Add('VPMOVSXBQ,1,1,YMMREG,XMMREG,,');
   FOpCodeList.Add('VPMOVSXBW,1,1,XMMREG,MEM64,,');
   FOpCodeList.Add('VPMOVSXBW,1,1,XMMREG,XMMREG,,');
+  FOpCodeList.Add('VPMOVSXBW,1,1,YMMREG,XMMRM,,');
   FOpCodeList.Add('VPMOVSXDQ,1,1,XMMREG,MEM64,,');
   FOpCodeList.Add('VPMOVSXDQ,1,1,XMMREG,XMMREG,,');
+  FOpCodeList.Add('VPMOVSXDQ,1,1,YMMREG,XMMRM,,');
   FOpCodeList.Add('VPMOVSXWD,1,1,XMMREG,MEM64,,');
   FOpCodeList.Add('VPMOVSXWD,1,1,XMMREG,XMMREG,,');
+  FOpCodeList.Add('VPMOVSXWD,1,1,XMMREG,XMMRM,,');
   FOpCodeList.Add('VPMOVSXWQ,1,1,XMMREG,MEM32,,');
+  FOpCodeList.Add('VPMOVSXWQ,1,1,YMMREG,MEM64,,');
   FOpCodeList.Add('VPMOVSXWQ,1,1,XMMREG,XMMREG,,');
+  FOpCodeList.Add('VPMOVSXWQ,1,1,YMMREG,XMMREG,,');
   FOpCodeList.Add('VPMOVZXBD,1,1,XMMREG,MEM32,,');
+  FOpCodeList.Add('VPMOVZXBD,1,1,YMMREG,MEM64,,');
   FOpCodeList.Add('VPMOVZXBD,1,1,XMMREG,XMMREG,,');
+  FOpCodeList.Add('VPMOVZXBD,1,1,YMMREG,XMMREG,,');
   FOpCodeList.Add('VPMOVZXBQ,1,1,XMMREG,MEM16,,');
+  FOpCodeList.Add('VPMOVZXBQ,1,1,YMMREG,MEM32,,');
   FOpCodeList.Add('VPMOVZXBQ,1,1,XMMREG,XMMREG,,');
+  FOpCodeList.Add('VPMOVZXBQ,1,1,YMMREG,XMMREG,,');
   FOpCodeList.Add('VPMOVZXBW,1,1,XMMREG,MEM64,,');
   FOpCodeList.Add('VPMOVZXBW,1,1,XMMREG,XMMREG,,');
+  FOpCodeList.Add('VPMOVZXBW,1,1,YMMREG,XMMRM,,');
   FOpCodeList.Add('VPMOVZXDQ,1,1,XMMREG,MEM64,,');
   FOpCodeList.Add('VPMOVZXDQ,1,1,XMMREG,XMMREG,,');
+  FOpCodeList.Add('VPMOVZXDQ,1,1,YMMREG,XMMRM,,');
   FOpCodeList.Add('VPMOVZXWD,1,1,XMMREG,MEM64,,');
   FOpCodeList.Add('VPMOVZXWD,1,1,XMMREG,XMMREG,,');
+  FOpCodeList.Add('VPMOVZXWD,1,1,YMMREG,XMMRM,,');
   FOpCodeList.Add('VPMOVZXWQ,1,1,XMMREG,MEM32,,');
+  FOpCodeList.Add('VPMOVZXWQ,1,1,YMMREG,MEM64,,');
   FOpCodeList.Add('VPMOVZXWQ,1,1,XMMREG,XMMREG,,');
+  FOpCodeList.Add('VPMOVZXWQ,1,1,YMMREG,XMMREG,,');
   FOpCodeList.Add('VPMULDQ,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPMULDQ,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPMULHRSW,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPMULHRSW,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPMULHUW,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPMULHUW,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPMULHW,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPMULHW,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPMULLD,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPMULLD,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPMULLW,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPMULLW,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPMULUDQ,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPMULUDQ,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPOR,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPOR,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPSADBW,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPSADBW,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPSHUFB,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPSHUFB,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPSHUFD,1,1,XMMREG,XMMRM,IMM8,');
+  FOpCodeList.Add('VPSHUFD,1,1,YMMREG,YMMRM,IMM8,');
   FOpCodeList.Add('VPSHUFHW,1,1,XMMREG,XMMRM,IMM8,');
+  FOpCodeList.Add('VPSHUFHW,1,1,YMMREG,YMMRM,IMM8,');
   FOpCodeList.Add('VPSHUFLW,1,1,XMMREG,XMMRM,IMM8,');
+  FOpCodeList.Add('VPSHUFLW,1,1,YMMREG,YMMRM,IMM8,');
   FOpCodeList.Add('VPSIGNB,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPSIGNB,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPSIGND,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPSIGND,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPSIGNW,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPSIGNW,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPSLLD,1,1,XMMREG,XMMREG,IMM8,');
+  FOpCodeList.Add('VPSLLD,1,1,YMMREG,YMMREG,IMM8,');
   FOpCodeList.Add('VPSLLD,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPSLLD,1,1,YMMREG,YMMREG,XMMRM,');
   FOpCodeList.Add('VPSLLDQ,1,1,XMMREG,XMMREG,IMM8,');
+  FOpCodeList.Add('VPSLLDQ,1,1,YMMREG,YMMREG,IMM8,');
   FOpCodeList.Add('VPSLLQ,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPSLLQ,1,1,YMMREG,YMMREG,XMMRM,');
   FOpCodeList.Add('VPSLLQ,1,1,XMMREG,XMMREG,IMM8,');
+  FOpCodeList.Add('VPSLLQ,1,1,YMMREG,YMMREG,IMM8,');
   FOpCodeList.Add('VPSLLW,1,1,XMMREG,XMMREG,IMM8,');
+  FOpCodeList.Add('VPSLLW,1,1,YMMREG,YMMREG,IMM8,');
   FOpCodeList.Add('VPSLLW,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPSLLW,1,1,YMMREG,YMMREG,XMMRM,');
   FOpCodeList.Add('VPSRAD,1,1,XMMREG,XMMREG,IMM8,');
+  FOpCodeList.Add('VPSRAD,1,1,YMMREG,YMMREG,IMM8,');
   FOpCodeList.Add('VPSRAD,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPSRAD,1,1,YMMREG,YMMREG,XMMRM,');
   FOpCodeList.Add('VPSRAW,1,1,XMMREG,XMMREG,IMM8,');
+  FOpCodeList.Add('VPSRAW,1,1,YMMREG,YMMREG,IMM8,');
   FOpCodeList.Add('VPSRAW,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPSRAW,1,1,YMMREG,YMMREG,XMMRM,');
   FOpCodeList.Add('VPSRLD,1,1,XMMREG,XMMREG,IMM8,');
+  FOpCodeList.Add('VPSRLD,1,1,YMMREG,YMMREG,IMM8,');
   FOpCodeList.Add('VPSRLD,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPSRLD,1,1,YMMREG,YMMREG,XMMRM,');
   FOpCodeList.Add('VPSRLDQ,1,1,XMMREG,XMMREG,IMM8,');
+  FOpCodeList.Add('VPSRLDQ,1,1,YMMREG,YMMREG,IMM8,');
   FOpCodeList.Add('VPSRLQ,1,1,XMMREG,XMMREG,IMM8,');
+  FOpCodeList.Add('VPSRLQ,1,1,YMMREG,YMMREG,IMM8,');
   FOpCodeList.Add('VPSRLQ,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPSRLQ,1,1,YMMREG,YMMREG,XMMRM,');
   FOpCodeList.Add('VPSRLW,1,1,XMMREG,XMMREG,IMM8,');
+  FOpCodeList.Add('VPSRLW,1,1,YMMREG,YMMREG,IMM8,');
   FOpCodeList.Add('VPSRLW,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPSRLW,1,1,YMMREG,YMMREG,XMMRM,');
   FOpCodeList.Add('VPSUBB,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPSUBB,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPSUBD,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPSUBD,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPSUBQ,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPSUBQ,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPSUBSB,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPSUBSB,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPSUBSW,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPSUBSW,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPSUBUSB,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPSUBUSB,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPSUBUSW,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPSUBUSW,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPSUBW,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPSUBW,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPTEST,1,1,YMMREG,YMMRM,,');
+  FOpCodeList.Add('VPTEST,1,1,YMMREG,YMMRM,,');
+  FOpCodeList.Add('VPTEST,1,1,XMMREG,XMMRM,,');
   FOpCodeList.Add('VPTEST,1,1,XMMREG,XMMRM,,');
   FOpCodeList.Add('VPUNPCKHBW,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPUNPCKHBW,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPUNPCKHDQ,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPUNPCKHDQ,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPUNPCKHQDQ,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPUNPCKHQDQ,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPUNPCKHWD,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPUNPCKHWD,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPUNPCKLBW,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPUNPCKLBW,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPUNPCKLDQ,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPUNPCKLDQ,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPUNPCKLQDQ,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPUNPCKLQDQ,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPUNPCKLWD,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPUNPCKLWD,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VPXOR,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPXOR,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VRCPPS,1,1,XMMREG,XMMRM,,');
   FOpCodeList.Add('VRCPPS,1,1,YMMREG,YMMRM,,');
   FOpCodeList.Add('VRCPSS,1,1,XMMREG,XMMREG,MEM32,');
@@ -495,6 +617,52 @@ begin
   FOpCodeList.Add('VXORPS,1,1,YMMREG,YMMREG,YMMRM,');
   FOpCodeList.Add('VZEROALL,1,1,,,,');
   FOpCodeList.Add('VZEROUPPER,1,1,,,,');
+
+
+  FOpCodeList.Add('VBROADCASTI128,1,1,YMMREG,MEM128,,');
+  FOpCodeList.Add('VEXTRACTI128,1,1,XMMRM,YMMREG,IMM8,');
+  FOpCodeList.Add('VINSERTI128,1,1,YMMREG,YMMREG,XMMRM,IMM8');
+  FOpCodeList.Add('VPBLENDD,1,1,YMMREG,YMMREG,YMMRM,IMM8');
+  FOpCodeList.Add('VPBLENDD,1,1,XMMREG,XMMREG,XMMRM,IMM8');
+  FOpCodeList.Add('VPBROADCASTB,1,1,XMMREG,XMMREG,,');
+  FOpCodeList.Add('VPBROADCASTB,1,1,YMMREG,XMMREG,,');
+  FOpCodeList.Add('VPBROADCASTB,1,1,XMMREG,MEM8,,');
+  FOpCodeList.Add('VPBROADCASTB,1,1,YMMREG,MEM8,,');
+  FOpCodeList.Add('VPBROADCASTD,1,1,YMMREG,XMMREG,,');
+  FOpCodeList.Add('VPBROADCASTD,1,1,XMMREG,MEM32,,');
+  FOpCodeList.Add('VPBROADCASTD,1,1,XMMREG,XMMREG,,');
+  FOpCodeList.Add('VPBROADCASTD,1,1,YMMREG,MEM32,,');
+  FOpCodeList.Add('VPBROADCASTQ,1,1,YMMREG,MEM64,,');
+  FOpCodeList.Add('VPBROADCASTQ,1,1,XMMREG,MEM64,,');
+  FOpCodeList.Add('VPBROADCASTQ,1,1,XMMREG,XMMREG,,');
+  FOpCodeList.Add('VPBROADCASTQ,1,1,YMMREG,XMMREG,,');
+  FOpCodeList.Add('VPBROADCASTW,1,1,XMMREG,MEM16,,');
+  FOpCodeList.Add('VPBROADCASTW,1,1,XMMREG,XMMREG,,');
+  FOpCodeList.Add('VPBROADCASTW,1,1,YMMREG,MEM16,,');
+  FOpCodeList.Add('VPBROADCASTW,1,1,YMMREG,XMMREG,,');
+  FOpCodeList.Add('VPERM2I128,1,1,YMMREG,YMMREG,YMMRM,IMM8');
+  FOpCodeList.Add('VPERMD,1,1,YMMREG,YMMREG,YMMRM,');
+  FOpCodeList.Add('VPERMPD,1,1,YMMREG,YMMRM,IMM8,');
+  FOpCodeList.Add('VPERMPS,1,1,YMMREG,YMMREG,YMMRM,');
+  FOpCodeList.Add('VPERMQ,1,1,YMMREG,YMMRM,IMM8,');
+  FOpCodeList.Add('VPMASKMOVD,1,1,XMMREG,XMMREG,MEM128,');
+  FOpCodeList.Add('VPMASKMOVD,1,1,MEM128,XMMREG,XMMREG,');
+  FOpCodeList.Add('VPMASKMOVD,1,1,YMMREG,YMMREG,MEM256,');
+  FOpCodeList.Add('VPMASKMOVD,1,1,MEM256,YMMREG,YMMREG,');
+  FOpCodeList.Add('VPMASKMOVQ,1,1,XMMREG,XMMREG,MEM128,');
+  FOpCodeList.Add('VPMASKMOVQ,1,1,MEM128,XMMREG,XMMREG,');
+  FOpCodeList.Add('VPMASKMOVQ,1,1,YMMREG,YMMREG,MEM256,');
+  FOpCodeList.Add('VPMASKMOVQ,1,1,MEM256,YMMREG,YMMREG,');
+  FOpCodeList.Add('VPSLLVD,1,1,YMMREG,YMMREG,YMMRM,');
+  FOpCodeList.Add('VPSLLVD,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPSLLVQ,1,1,YMMREG,YMMREG,YMMRM,');
+  FOpCodeList.Add('VPSLLVQ,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPSRAVD,1,1,YMMREG,YMMREG,YMMRM,');
+  FOpCodeList.Add('VPSRAVD,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPSRLVD,1,1,YMMREG,YMMREG,YMMRM,');
+  FOpCodeList.Add('VPSRLVD,1,1,XMMREG,XMMREG,XMMRM,');
+  FOpCodeList.Add('VPSRLVQ,1,1,YMMREG,YMMREG,YMMRM,');
+  FOpCodeList.Add('VPSRLVQ,1,1,XMMREG,XMMREG,XMMRM,');
 end;
 
 function TAVXTestGenerator.InternalMakeTestFiles(aX64: boolean; aDestPath, aFileExt: String;
@@ -626,6 +794,9 @@ begin
 
                   FileExt := '.asm';
 
+                  if aX64 then slHeader.Add('[BITS 64]')
+                   else slHeader.Add('[BITS 32]');
+
                   for i := 1 to 10 do
                    slHeader.Add('NOP');
 

+ 26 - 7
tests/utils/avx/filecomparer.pas

@@ -40,7 +40,7 @@ begin
   begin
     aMsg := format('file "%s" not found', [aFileName1]);
   end
-  else if not(FileExists(aFileName1)) then
+  else if not(FileExists(aFileName2)) then
   begin
     aMsg := format('file "%s" not found', [aFileName2]);
   end
@@ -55,7 +55,11 @@ begin
         MStream2.Position := 0;
 
         if MStream1.Size < 1 then aMsg := format('file "%s": start or endmarker not found', [aFilename1])
-        else if MStream2.Size < 1 then aMsg := format('file "%s": start or endmarker not found', [aFilename2])
+        else if MStream2.Size < 1 then
+        begin
+          aMsg := format('file "%s": start or endmarker not found', [aFilename2]);
+          aMsg := aMsg + #13#10 + format('Size: %d', [MStream2.Size]);
+        end
         else
         begin
           if MStream1.Size <> MStream2.Size then aMsg := format('diff: file: "%s"  size: %d - file: "%s"  size: %d',
@@ -173,9 +177,9 @@ var
 
       NopCount := 0;
 
-      while MStream.Position < MStream.Size do
+      while aStream.Position < aStream.Size do
       begin
-        MStream.Read(ch, 1);
+        aStream.Read(ch, 1);
         if ch = 144 then
         begin
           inc(NopCount);
@@ -184,13 +188,25 @@ var
         begin
           if NopCount >= 10 then
           begin
-            if not(aEndPos) then result := MStream.Position
-             else result := MStream.Position - NopCount - 1;
+            if not(aEndPos) then result := aStream.Position
+             else result := aStream.Position - NopCount - 1;
+
             break;
           end
           else NopCount := 0;
         end;
       end;
+
+      if NopCount >= 10 then
+      begin
+        if (result < 0) and
+           (aStream.Position = aStream.Size) then
+        begin
+          if not(aEndPos) then result := aStream.Position
+           else result := aStream.Position - NopCount;
+        end;
+      end
+
     end;
   end;
 
@@ -209,7 +225,10 @@ begin
         if MStream.Size > StartPos + 16384 then
         begin
           EndPos := FindPos(MStream, MStream.Size - 16384, true);
-          if EndPos < 0 then EndPos := FindPos(MStream, StartPos, true);
+          if EndPos < 0 then
+          begin
+            EndPos := FindPos(MStream, StartPos, true);
+          end;
         end
         else EndPos := FindPos(MStream, StartPos, true);
       end;

Some files were not shown because too many files changed in this diff