فهرست منبع

Test instruction set AVX102.

Margers 3 ماه پیش
والد
کامیت
a5fe90e392
2فایلهای تغییر یافته به همراه993 افزوده شده و 43 حذف شده
  1. 271 38
      tests/utils/avx/asmtestgenerator.pas
  2. 722 5
      tests/utils/avx/avxopcodes.pas

+ 271 - 38
tests/utils/avx/asmtestgenerator.pas

@@ -27,7 +27,7 @@ interface
 uses BaseList, Classes;
 
 type
-  TOpType = (otUnknown, otXMMReg, otXMMRM, otXMMRM16, otXMMRM8, otYMMReg, otYMMRM, otZMMReg, otZMMRM, otEAX, otRAX, otMem32,
+  TOpType = (otUnknown, otTMMReg, otXMMReg, otXMMRM, otXMMRM16, otXMMRM8, otYMMReg, otYMMRM, otZMMReg, otZMMRM, otEAX, otRAX, otMem32,
              otMem8, otMem16, otMem64, otMem128, otMem256, otMem512, otREG64, otREG32, otREG16, otREG8, otRM16, otRM32, otRM64, otIMM8,
              otXMEM32, otXMEM64, otYMEM32, otYMEM64, otZMEM32, otZMEM64,
              otB16, otB32, otB64, otKREG);
@@ -206,7 +206,7 @@ var
 type
 
 
-    op2strtable=array[tasmop] of string[16];
+    op2strtable=array[tasmop] of string[19];
 
     {Instruction flags }
     tinsflag = (
@@ -252,6 +252,7 @@ type
       IF_AVX,
       IF_AVX2,
       IF_AVX512,
+      IF_AVX102,      { AVX10.2 }
       IF_BMI1,
       IF_BMI2,
       { Intel ADX (Multi-Precision Add-Carry Instruction Extensions) }
@@ -265,9 +266,22 @@ type
       IF_PREFETCHWT1,
       IF_SHA,
       IF_SHA512,
-      IF_SM3NI, { instruction set SM3:  ShangMi 3 hash function }
-      IF_SM4NI, { instruction set SM4 }
+      IF_SM3NI,       { SM3  ShangMi 3 hash function }
+      IF_SM4NI,       { SM4 }
       IF_GFNI,
+      IF_AES,
+      IF_AESKLE,
+      IF_AESKLEWIDE,  { AESKLE WIDE_KL }
+      IF_MOVRS,
+      IF_MOVDIRI,
+      IF_RAOINT,      { RAO-INT }
+      IF_CMPCCXADD,
+      IF_UINTR,
+      IF_SERIALIZE,
+      IF_USERMSR,     { USER_MSR }
+      IF_AVXVNNI,     { AVX-VNNI }
+      IF_AMX,         { AMX-BF16, AMX-TILE, AMX-INT8, AMX-FP16, AMX-FP8, AMX-TF32, AMX-COMPLEX, AMX-MOVRS, AMX-TRANSPOSE, AMX-AVX512 }
+      IF_APX,         { APX_F }
 
       { mask for processor level }
       { please keep these in order and in sync with IF_PLEVEL }
@@ -362,7 +376,7 @@ const
       OT_VECTORBCST = $4000000000;  { BROADCAST-MEM-FLAG  AVX512}
       OT_VECTORSAE  = $8000000000;  { OPTIONAL SAE-FLAG  AVX512}
       OT_VECTORER   = $10000000000; { OPTIONAL ER-FLAG-FLAG  AVX512}
-
+      OT_VECTORSIB  = $20000000000; { SIB-MEM-FLAG  AMX}
 
       OT_BITSB16    = OT_BITS16 or OT_VECTORBCST;
       OT_BITSB32    = OT_BITS32 or OT_VECTORBCST;
@@ -386,7 +400,7 @@ const
       OT_SIGNED    = $00000100;  { the operand need to be signed -128-127 }
       OT_TO        = $00000200;  { reverse effect in FADD, FSUB &c  }
       OT_COLON     = $00000400;  { operand is followed by a colon  }
-      OT_MODIFIER_MASK = $00000F00;
+      OT_MODIFIER_MASK = $00000700;
 
       { Bits 12..15: type of operand }
       OT_REGISTER  = $00001000;
@@ -408,9 +422,10 @@ const
       otf_reg_xmm  = $04000000;
       otf_reg_ymm  = $08000000;
       otf_reg_zmm  = $10000000;
+      otf_reg_tmm  = $00000800;
 
 
-      otf_reg_extra_mask = $0F000000;
+      otf_reg_extra_mask = $1F000800;
       { Bits 16..19: subclasses, meaning depends on classes field }
       otf_sub0     = $00010000;
       otf_sub1     = $00020000;
@@ -419,7 +434,7 @@ const
       OT_REG_SMASK = otf_sub0 or otf_sub1 or otf_sub2 or otf_sub3;
 
       //OT_REG_EXTRA_MASK = $0F000000;
-      OT_REG_EXTRA_MASK = $1F000000;
+      OT_REG_EXTRA_MASK = $1F000800;
 
       OT_REG_TYPMASK = otf_reg_cdt or otf_reg_gpr or otf_reg_sreg or otf_reg_k or otf_reg_extra_mask;
       { register class 0: CRx, DRx and TRx }
@@ -522,6 +537,10 @@ const
       OT_KREG       = OT_REGNORM or otf_reg_k;
       OT_KREG_M     = OT_KREG or OT_VECTORMASK;
 
+      { register class 6: TMM (both reg and r/m) }
+      OT_TMMREG     = OT_REGNORM or otf_reg_tmm;
+      //OT_TMMRM      = OT_REGMEM or otf_reg_tmm;
+
       { Vector-Memory operands }
       OT_VMEM_ANY  = OT_XMEM32 or OT_XMEM64 or OT_YMEM32 or OT_YMEM64 or OT_ZMEM32 or OT_ZMEM64;
 
@@ -545,7 +564,7 @@ const
       OT_MEM512    = OT_MEMORY or OT_BITS512;
       OT_MEM512_M  = OT_MEMORY or OT_BITS512 or OT_VECTORMASK;
       OT_MEM80     = OT_MEMORY or OT_BITS80;
-
+      OT_SIBMEM    = OT_MEMORY or OT_VECTORSIB;
 
 
 
@@ -592,10 +611,18 @@ const
 
   function EvenOddPairReg (aReg:string):string;
   begin
-    if aReg='K1' then aReg:='K0'
-    else if aReg='K3' then aReg:='K2'
-    else if aReg='K5' then aReg:='K4'
-    else if aReg='K7' then aReg:='K6';
+    if aReg[1]='K' then
+    begin
+      if aReg='K1' then aReg:='K0'
+      else if aReg='K3' then aReg:='K2'
+      else if aReg='K5' then aReg:='K4'
+      else if aReg='K7' then aReg:='K6';
+    end else
+    if aReg[1]='T' then
+      if aReg='TMM1' then aReg:='TMM0'
+      else if aReg='TMM3' then aReg:='TMM2'
+      else if aReg='TMM5' then aReg:='TMM4'
+      else if aReg='TMM7' then aReg:='TMM6';
     EvenOddPairReg:=aReg;
   end;
 
@@ -635,7 +662,7 @@ const
     begin
       ch:=aReg[po-1];
       c2:=' ';c3:=' ';
-      if (ch in ['X','Y','Z']) and (length(aReg)>=po+2) then
+      if (ch in ['X','Y','Z','T']) and (length(aReg)>=po+2) then
       begin
         c2:=aReg[po+2];
         if c2 in ['0'..'9'] then
@@ -689,7 +716,7 @@ const
             if pr<>'{' then
               newStr:=newStr+'%';
           end;
-          if ch in ['D','X','Y','Z'] then
+          if ch in ['D','X','Y','Z','T'] then
           begin
             if n<length(aRegStr) then
             begin
@@ -852,7 +879,8 @@ const
           for i := 0 to insentry^.ops -1 do
           begin
             if (insentry^.optypes[i] and OT_REGISTER) = OT_REGISTER then
-             case insentry^.optypes[i] and (OT_XMMREG or OT_YMMREG or OT_ZMMREG or OT_KREG or OT_REG_EXTRA_MASK) of
+             case insentry^.optypes[i] and (OT_TMMREG or OT_XMMREG or OT_YMMREG or OT_ZMMREG or OT_KREG or OT_REG_EXTRA_MASK) of
+                OT_TMMREG,
                 OT_XMMREG,
                 OT_YMMREG,
                 OT_ZMMREG: ExistsSSEAVXReg := true;
@@ -1401,6 +1429,7 @@ var
   sl_Reg3 : string;
   sPtr : string;
   Distinct : boolean;
+  DistinctAll : boolean;
   MaskRegNeeded:boolean;
   noZSuffix : boolean;
   EvenPair: boolean;
@@ -1454,7 +1483,13 @@ begin
                        (UpperCase(aInst) = 'VCVTNEPS2BF16') or
                        (UpperCase(aInst) = 'VLDMXCSR') or
                        (UpperCase(aInst) = 'VSTMXCSR') or
-                       (UpperCase(aInst) = '') or
+                       (UpperCase(aInst) = 'VCVTTPD2UDQS') or
+                       (UpperCase(aInst) = 'VFPCLASSBF16') or
+                       (UpperCase(aInst) = 'VCVTTPD2DQS') or
+                       (UpperCase(aInst) = 'VCVTPH2HF8') or
+                       (UpperCase(aInst) = 'VCVTPH2BF8S') or
+                       (UpperCase(aInst) = 'VCVTPH2HF8S') or
+                       (UpperCase(aInst) = 'VCVTPH2BF8') or
                        (UpperCase(aInst) = '') or
                        (UpperCase(aInst) = '') or
                        (UpperCase(aInst) = '')
@@ -1482,7 +1517,17 @@ begin
                        (UpperCase(aInst) = 'VCVTUDQ2PH') or // no Z
                        (UpperCase(aInst) = 'VCVTNEPS2BF16') or
                        (UpperCase(aInst) = 'VLDMXCSR') or
-                       (UpperCase(aInst) = 'VSTMXCSR')
+                       (UpperCase(aInst) = 'VSTMXCSR') or
+                       (UpperCase(aInst) = 'VCVTTPD2UDQS') or
+                       (UpperCase(aInst) = 'VCVTTPD2DQS') or
+                       (UpperCase(aInst) = 'VCVTPH2HF8') or
+                       (UpperCase(aInst) = 'VCVTPH2BF8S') or
+                       (UpperCase(aInst) = 'VCVTPH2HF8S') or
+                       (UpperCase(aInst) = 'VCVTPH2BF8') or
+                       (UpperCase(aInst) = '') or
+                       (UpperCase(aInst) = '') or
+                       (UpperCase(aInst) = '') or
+                       (UpperCase(aInst) = '')
                        ;
 
 
@@ -1493,12 +1538,70 @@ begin
                        (UpperCase(aInst) = 'VFCMULCPH') OR
                        (UpperCase(aInst) = 'VFCMULCSH') OR
                        (UpperCase(aInst) = 'VFMULCPH') OR
-                       (UpperCase(aInst) = 'VFMULCSH')
-                       { (UpperCase(aInst) = '') OR }
+                       (UpperCase(aInst) = 'VFMULCSH') OR
+                       (UpperCase(aInst) = 'TCONJTCMMIMFP16PS') OR
+                       (UpperCase(aInst) = 'TTCMMIMFP16PS') OR
+                       (UpperCase(aInst) = 'TTCMMRLFP16PS') OR
+                       (UpperCase(aInst) = 'TTDPBF16PS') OR
+                       (UpperCase(aInst) = 'TTDPFP16PS') OR
+                       (UpperCase(aInst) = 'TTMMULTF32PS') OR
+                       (UpperCase(aInst) = 'TMMULTF32PS') OR
+                       (UpperCase(aInst) = 'TDPHF8PS') OR
+                       (UpperCase(aInst) = 'TDPHBF8PS') OR
+                       (UpperCase(aInst) = 'TDPBHF8PS') OR
+                       (UpperCase(aInst) = 'TDPBF8PS') OR
+                       (UpperCase(aInst) = 'TCMMRLFP16PS') OR
+                       (UpperCase(aInst) = 'TCMMIMFP16PS') OR
+                       (UpperCase(aInst) = 'TDPFP16PS') OR
+                       (UpperCase(aInst) = 'TDPBUUD') OR
+                       (UpperCase(aInst) = 'TDPBUSD') OR
+                       (UpperCase(aInst) = 'TDPBSUD') OR
+                       (UpperCase(aInst) = 'TDPBSSD') OR
+                       (UpperCase(aInst) = 'TDPBF16PS') OR
+                       (UpperCase(aInst) = '') OR
+                       (UpperCase(aInst) = '') OR
+                       (UpperCase(aInst) = '')
+                       ;
+
+          DistinctAll := (UpperCase(aInst) = 'TCONJTCMMIMFP16PS') OR
+                       (UpperCase(aInst) = 'TTCMMIMFP16PS') OR
+                       (UpperCase(aInst) = 'TTCMMRLFP16PS') OR
+                       (UpperCase(aInst) = 'TTDPBF16PS') OR
+                       (UpperCase(aInst) = 'TTDPFP16PS') OR
+                       (UpperCase(aInst) = 'TTMMULTF32PS') OR
+                       (UpperCase(aInst) = 'TMMULTF32PS') OR
+                       (UpperCase(aInst) = 'TDPHF8PS') OR
+                       (UpperCase(aInst) = 'TDPHBF8PS') OR
+                       (UpperCase(aInst) = 'TDPBHF8PS') OR
+                       (UpperCase(aInst) = 'TDPBF8PS') OR
+                       (UpperCase(aInst) = 'TCMMRLFP16PS') OR
+                       (UpperCase(aInst) = 'TCMMIMFP16PS') OR
+                       (UpperCase(aInst) = 'TDPFP16PS') OR
+                       (UpperCase(aInst) = 'TDPBUUD') OR
+                       (UpperCase(aInst) = 'TDPBUSD') OR
+                       (UpperCase(aInst) = 'TDPBSUD') OR
+                       (UpperCase(aInst) = 'TDPBSSD') OR
+                       (UpperCase(aInst) = 'TDPBF16PS') OR
+                       (UpperCase(aInst) = '') OR
+                       (UpperCase(aInst) = '')
                        ;
 
           EvenPair:= (UpperCase(aInst) = 'VP2INTERSECTD') OR { kreg even-odd pair}
-                      (UpperCase(aInst) = 'VP2INTERSECTQ')
+                      (UpperCase(aInst) = 'VP2INTERSECTQ') OR
+                      (UpperCase(aInst) = 'T2RPNTLVWZ1RST1') OR
+                      (UpperCase(aInst) = 'T2RPNTLVWZ1RS') OR
+                      (UpperCase(aInst) = 'T2RPNTLVWZ0RST1') OR
+                      (UpperCase(aInst) = 'T2RPNTLVWZ0RS') OR
+                      (UpperCase(aInst) = 'T2RPNTLVWZ1T1') OR
+                      (UpperCase(aInst) = 'T2RPNTLVWZ1') OR
+                      (UpperCase(aInst) = 'T2RPNTLVWZ0T1') OR
+                      (UpperCase(aInst) = 'T2RPNTLVWZ0') OR
+                      (UpperCase(aInst) = '') OR
+                      (UpperCase(aInst) = '') OR
+                      (UpperCase(aInst) = '') OR
+                      (UpperCase(aInst) = '') OR
+                      (UpperCase(aInst) = '') OR
+                      (UpperCase(aInst) = '')
                       ;
           GroupOf4:= (UpperCase(aInst) = 'V4FMADDPS') OR   { src reg group of 4 registers }
                      (UpperCase(aInst) = 'V4FMADDSS') OR
@@ -1513,6 +1616,7 @@ begin
 			   (Pos('VPSCATTER', Uppercase(aInst)) = 1) or
 			   (Pos('VSCATTER', Uppercase(aInst)) = 1);
 
+          DistinctAll:=DistinctAll or MaskRegNeeded;
           Distinct:=Distinct or MaskRegNeeded;
 
           for il_Op := 1 to 4 do
@@ -1540,7 +1644,26 @@ begin
 
             sl_Operand := PrepareOperandTyp(sl_Operand);
 
-            if (AnsiSameText(sl_Operand, 'XMMREG')) or
+            if (AnsiSameText(sl_Operand, 'TMMREG')) then
+            begin
+              Item.OpNumber := il_Op;
+              Item.OpTyp    := otXMMReg; { pretend as XMMREG }
+              Item.OpActive := true;
+
+              sSuffix := '';
+              sPrefix := '';
+
+              Item.Values.Add(sPrefix + 'TMM0' + sSuffix);
+              Item.Values.Add(sPrefix + 'TMM1' + sSuffix);
+              Item.Values.Add(sPrefix + 'TMM2' + sSuffix);
+              Item.Values.Add(sPrefix + 'TMM3' + sSuffix);
+              Item.Values.Add(sPrefix + 'TMM4' + sSuffix);
+              Item.Values.Add(sPrefix + 'TMM5' + sSuffix);
+              Item.Values.Add(sPrefix + 'TMM6' + sSuffix);
+              Item.Values.Add(sPrefix + 'TMM7' + sSuffix);
+
+            end
+            else if (AnsiSameText(sl_Operand, 'XMMREG')) or
                (AnsiSameText(sl_Operand, 'XMMREG_M')) or
                (AnsiSameText(sl_Operand, 'XMMREG_MZ')) or
                (AnsiSameText(sl_Operand, 'XMMREG_ER')) or
@@ -2224,7 +2347,8 @@ begin
             end
             else if (AnsiSameText(sl_Operand, 'MEM512')) or
                     (AnsiSameText(sl_Operand, 'MEM512_M')) or
-                    (AnsiSameText(sl_Operand, 'MEM512_MZ')) then
+                    (AnsiSameText(sl_Operand, 'MEM512_MZ')) or
+                    (AnsiSameText(sl_Operand, 'SIBMEM')) then
             begin
               Item.OpNumber := il_Op;
               Item.OpTyp    := otMEM512;
@@ -2353,6 +2477,14 @@ begin
 
               if FGas then Item.Values.Add('$0') else Item.Values.Add('0');
             end
+            else if AnsiSameText(sl_Operand, 'IMM32') then
+            begin
+              Item.OpNumber := il_Op;
+              Item.OpTyp    := otIMM8;
+              Item.OpActive := true;
+
+              if FGas then Item.Values.Add('$512') else Item.Values.Add('512');
+            end
             else if AnsiSameText(sl_Operand, 'XMEM32') or
                     AnsiSameText(sl_Operand, 'XMEM32_M') then
             begin
@@ -2856,7 +2988,7 @@ begin
                     if sl_RegCombi <> '' then
                     begin
                       if not Distinct or (Distinct and notEqualRegs (sl_Reg1,sl_Reg2,sl_Reg3) ) then
-                      if not MaskRegNeeded or (MaskRegNeeded and notEqualRegs (sl_Reg2,sl_Reg3,'') ) then
+                      if not DistinctAll or (DistinctAll and notEqualRegs (sl_Reg2,sl_Reg3,'') ) then
                       begin
                         if FGas then sl_RegCombi := ConvertToGasReg(sl_RegCombi);
                         if not FGas then
@@ -2923,7 +3055,7 @@ begin
                     begin
                       //result.Add(format('%-20s%s', [aInst, sl_RegCombi]));
                       if not Distinct or (Distinct and notEqualRegs (sl_Reg1,sl_Reg2,sl_Reg3) ) then
-                      if not MaskRegNeeded or (MaskRegNeeded and notEqualRegs (sl_Reg2,sl_Reg3,'') ) then
+                      if not DistinctAll or (DistinctAll and notEqualRegs (sl_Reg2,sl_Reg3,'') ) then
                       begin
                         if FGas then sl_RegCombi := ConvertToGasReg(sl_RegCombi);
                         if not FGas then
@@ -6093,6 +6225,7 @@ begin
   FReg64ZMMIndex := TStringList.Create;
   FRegKREG       := TStringList.Create;
 
+
   FReg8.Add('AL');
   FReg8.Add('BL');
   FReg8.Add('CL');
@@ -6580,15 +6713,18 @@ var
   sX8664: string;
   sAVX512: string;
   sOperands: string;
+  sImmSize : String;
 
   sLine: string;
 
 
   sl: TStringList;
+  bSSE: boolean;
   bVEX: boolean;
   bEVEX: boolean;
   b256 : boolean;
   b512 : boolean;
+  ignoreCount:integer;
 begin
   sl := TStringList.Create;
   try
@@ -6604,11 +6740,15 @@ begin
 
     for i := 0 to length(InsTab) - 1 do
     begin
+      bSSE := false;
       bVEX := false;
       bEVEX := false;
       b256 := false;
       b512 := false;
 
+      sImmSize:='IMM8,';
+      ignoreCount:=0;
+
       //TG TODO delete
       if instab[i].opcode = a_vtestps then
       begin
@@ -6617,9 +6757,16 @@ begin
 
       for j := 0 to length(InsTab[i].code) - 1 do
       begin
+        if ignoreCount>0 then
+        begin
+          dec(ignoreCount);
+          continue;
+        end;
         case ord(InsTab[i].code[j]) of
             0: break;
-            1,2,3: break;
+             1,2,3: ignoreCount:=ord(InsTab[i].code[j]);
+          &10..&13: ignoreCount:=1;
+          &40..&43: sImmSize:='IMM32,';
           232: bEVEX := true;
           233: b512 := true;
           242: bVEX := true;
@@ -6627,7 +6774,11 @@ begin
         end;
       end;
 
-      if bVEX or bEVEX then
+      if not bVEX and not bEVEX then
+        for j := 0 to InsTab[i].ops-1 do
+          if InsTab[i].optypes[j] = OT_XMMREG then bSSE:=true;
+
+      if bSSE or bVEX or bEVEX then
       begin
         sInst  :=  std_op2str[InsTab[i].opcode];
         sI386  := '1';
@@ -6668,6 +6819,9 @@ begin
                 OT_ZMMRM: sOperands := sOperands + 'ZMMRM,';
              OT_ZMMRM_MZ: sOperands := sOperands + 'ZMMRM_MZ,';
 
+               OT_TMMREG: sOperands := sOperands + 'TMMREG,';
+
+                 OT_MEM8: sOperands := sOperands + 'MEM8,';
                 OT_MEM16: sOperands := sOperands + 'MEM16,';
               OT_MEM16_M: sOperands := sOperands + 'MEM16_M,';
                 OT_MEM32: sOperands := sOperands + 'MEM32,';
@@ -6675,8 +6829,13 @@ begin
                 OT_MEM64: sOperands := sOperands + 'MEM64,';
               OT_MEM64_M: sOperands := sOperands + 'MEM64_M,';
                OT_MEM128: sOperands := sOperands + 'MEM128,';
+             OT_MEM128_M: sOperands := sOperands + 'MEM128_M,';
                OT_MEM256: sOperands := sOperands + 'MEM256,';
+             OT_MEM256_M: sOperands := sOperands + 'MEM256_M,';
                OT_MEM512: sOperands := sOperands + 'MEM512,';
+             OT_MEM512_M: sOperands := sOperands + 'MEM512_M,';
+               OT_SIBMEM: sOperands := sOperands + 'SIBMEM,';
+               OT_MEMORY: sOperands := sOperands + 'MEM128,'; {any memory}
 
                 OT_REG16: sOperands := sOperands + 'REG16,';
                 OT_REG32: sOperands := sOperands + 'REG32,';
@@ -6689,23 +6848,97 @@ begin
                           sOperands := sOperands + 'RM64,';
 
                OT_XMEM32: sOperands := sOperands + 'XMEM32,';
-               OT_XMEM64: sOperands := sOperands + 'XMEM64,';
-
                OT_YMEM32: sOperands := sOperands + 'YMEM32,';
+               OT_ZMEM32: sOperands := sOperands + 'ZMEM32,';
+             OT_XMEM32_M: sOperands := sOperands + 'XMEM32_M,';
+             OT_YMEM32_M: sOperands := sOperands + 'YMEM32_M,';
+             OT_ZMEM32_M: sOperands := sOperands + 'ZMEM32_M,';
+               OT_XMEM64: sOperands := sOperands + 'XMEM64,';
                OT_YMEM64: sOperands := sOperands + 'YMEM64,';
+               OT_ZMEM64: sOperands := sOperands + 'ZMEM64,';
+             OT_XMEM64_M: sOperands := sOperands + 'XMEM64_M,';
+             OT_YMEM64_M: sOperands := sOperands + 'YMEM64_M,';
+             OT_ZMEM64_M: sOperands := sOperands + 'ZMEM64_M,';
 
                  OT_IMM8: sOperands := sOperands + 'IMM8,';
+            OT_IMMEDIATE: sOperands := sOperands + sImmSize;
                  OT_NONE: sOperands := sOperands + ',';
+{
+
+                     16      32     64
+      IF_BCST2,                   '2B64,'
+      IF_BCST4,            '4B32,''4B64,'
+      IF_BCST8,    '8B16,' '8B32,''8B64,'
+      IF_BCST16,  '16B16,''16B32,'
+      IF_BCST32,  '32B16,'
 
-               OT_BMEM16: if b512 then sOperands := sOperands + '32B16,'
-                           else if b256 then sOperands := sOperands + '16B16,'
-                           else sOperands := sOperands + '8B16,';
-               OT_BMEM32: if b512 then sOperands := sOperands + '16B32,'
-                           else if b256 then sOperands := sOperands + '8B32,'
-                           else sOperands := sOperands + '4B32,';
-               OT_BMEM64: if b512 then sOperands := sOperands + '8B32,'
-                           else if b256 then sOperands := sOperands + '4B32,'
-                           else sOperands := sOperands + '2B64,';
+}
+               OT_BMEM16: begin
+                            if b512 then
+                            begin
+                              if IF_BCST32 in instab[i].flags then  sOperands := sOperands + '32B16,'
+                              else if IF_BCST16 in instab[i].flags then  sOperands := sOperands + '16B32,'
+                              else if IF_BCST8 in instab[i].flags then  sOperands := sOperands + '8B64,'
+                              else sOperands := sOperands + '32B16,'
+                            end
+                            else if b256 then
+                            begin
+                              if IF_BCST16 in instab[i].flags then  sOperands := sOperands + '16B16,'
+                              else if IF_BCST8 in instab[i].flags then  sOperands := sOperands + '8B32,'
+                              else if IF_BCST4 in instab[i].flags then  sOperands := sOperands + '4B64,'
+                              else sOperands := sOperands + '16B16,'
+                            end else
+                            begin
+                              if IF_BCST8 in instab[i].flags then  sOperands := sOperands + '8B16,'
+                              else if IF_BCST4 in instab[i].flags then  sOperands := sOperands + '4B32,'
+                              else if IF_BCST2 in instab[i].flags then  sOperands := sOperands + '2B64,'
+                              else sOperands := sOperands + '8B16,';
+                            end;
+                          end;
+               OT_BMEM32: begin
+                            if b512 then
+                            begin
+                              if IF_BCST32 in instab[i].flags then  sOperands := sOperands + '32B16,'
+                              else if IF_BCST16 in instab[i].flags then  sOperands := sOperands + '16B32,'
+                              else if IF_BCST8 in instab[i].flags then  sOperands := sOperands + '8B64,'
+                              else sOperands := sOperands + '16B32,'
+                            end
+                            else if b256 then
+                            begin
+                              if IF_BCST16 in instab[i].flags then  sOperands := sOperands + '16B16,'
+                              else if IF_BCST8 in instab[i].flags then  sOperands := sOperands + '8B32,'
+                              else if IF_BCST4 in instab[i].flags then  sOperands := sOperands + '4B64,'
+                              else sOperands := sOperands + '8B32,'
+                            end else
+                            begin
+                              if IF_BCST8 in instab[i].flags then  sOperands := sOperands + '8B16,'
+                              else if IF_BCST4 in instab[i].flags then  sOperands := sOperands + '4B32,'
+                              else if IF_BCST2 in instab[i].flags then  sOperands := sOperands + '2B64,'
+                              else sOperands := sOperands + '4B32,';
+                            end;
+                          end;
+               OT_BMEM64: begin
+                            if b512 then
+                            begin
+                              if IF_BCST32 in instab[i].flags then  sOperands := sOperands + '32B16,'
+                              else if IF_BCST16 in instab[i].flags then  sOperands := sOperands + '16B32,'
+                              else if IF_BCST8 in instab[i].flags then  sOperands := sOperands + '8B64,'
+                              else sOperands := sOperands + '8B64,'
+                            end
+                            else if b256 then
+                            begin
+                              if IF_BCST16 in instab[i].flags then  sOperands := sOperands + '16B16,'
+                              else if IF_BCST8 in instab[i].flags then  sOperands := sOperands + '8B32,'
+                              else if IF_BCST4 in instab[i].flags then  sOperands := sOperands + '4B64,'
+                              else sOperands := sOperands + '4B64,'
+                            end else
+                            begin
+                              if IF_BCST8 in instab[i].flags then  sOperands := sOperands + '8B16,'
+                              else if IF_BCST4 in instab[i].flags then  sOperands := sOperands + '4B32,'
+                              else if IF_BCST2 in instab[i].flags then  sOperands := sOperands + '2B64,'
+                              else sOperands := sOperands + '2B64,';
+                            end;
+                          end;
 
                  OT_KREG: sOperands := sOperands + 'KREG,';
                OT_KREG_M: sOperands := sOperands + 'KREG_M,';

+ 722 - 5
tests/utils/avx/avxopcodes.pas

@@ -65,7 +65,11 @@ begin
   inherited;
 end;
 
-{ $define TEST_FF} { place holder }
+{ $define TEST_FF}     { place holder }
+{ $define TEST_AMX}    {AMX-TILE,AMX-INT8,AMX-BF16,AMX-FP16,AMX-TRANSPOSE,AMX-FP8,AMX-MOVRS,AMX-COMPLEX,AMX-TF32,AMX-AVX512}
+{ $define TEST_URDMSR} {USER_MSR,UINTR,RAO-INT,MOVDIRI,AES}
+{ $define TEST_MOVRS}  {MOVRS,CMPCCXADD,AVX-VNNI-INT8 AVX10.2,AVX-VNNI-INT16 AVX10.2}
+{ $define TEST_AVX102} {AVX10.2}
 { $define TEST_4FMAPS} {4FMAPS,4VNNIW}
 { $define TEST_FP16}
 { $define TEST_BF16}
@@ -84,15 +88,728 @@ begin
 {$if defined(TEST_FF) or defined(NOT_AT_ALL)}
     { place holder }
 {$endif}
+{$if defined(TEST_AMX) or defined(TEST_ALL)}
+    { AMX opcodes }
+    FOpCodeList.Add('tdpbf16ps,0,1,0,TMMREG,TMMREG,TMMREG,');
+    FOpCodeList.Add('tdpfp16ps,0,1,0,TMMREG,TMMREG,TMMREG,');
+    FOpCodeList.Add('ldtilecfg,0,1,0,MEM128,,,');
+    FOpCodeList.Add('sttilecfg,0,1,0,MEM128,,,');
+    FOpCodeList.Add('tileloadd,0,1,0,TMMREG,SIBMEM,,');
+    FOpCodeList.Add('tileloaddt1,0,1,0,TMMREG,SIBMEM,,');
+    FOpCodeList.Add('tilerelease,0,1,0,,,,');
+    FOpCodeList.Add('tilestored,0,1,0,SIBMEM,TMMREG,,');
+    FOpCodeList.Add('tilezero,0,1,0,TMMREG,,,');
+    FOpCodeList.Add('tdpbssd,0,1,0,TMMREG,TMMREG,TMMREG,');
+    FOpCodeList.Add('tdpbsud,0,1,0,TMMREG,TMMREG,TMMREG,');
+    FOpCodeList.Add('tdpbusd,0,1,0,TMMREG,TMMREG,TMMREG,');
+    FOpCodeList.Add('tdpbuud,0,1,0,TMMREG,TMMREG,TMMREG,');
+    FOpCodeList.Add('t2rpntlvwz0,0,1,0,TMMREG,SIBMEM,,');
+    FOpCodeList.Add('t2rpntlvwz0t1,0,1,0,TMMREG,SIBMEM,,');
+    FOpCodeList.Add('t2rpntlvwz1,0,1,0,TMMREG,SIBMEM,,');
+    FOpCodeList.Add('t2rpntlvwz1t1,0,1,0,TMMREG,SIBMEM,,');
+    FOpCodeList.Add('t2rpntlvwz0rs,0,1,0,TMMREG,SIBMEM,,');
+    FOpCodeList.Add('t2rpntlvwz0rst1,0,1,0,TMMREG,SIBMEM,,');
+    FOpCodeList.Add('t2rpntlvwz1rs,0,1,0,TMMREG,SIBMEM,,');
+    FOpCodeList.Add('t2rpntlvwz1rst1,0,1,0,TMMREG,SIBMEM,,');
+    FOpCodeList.Add('tcmmimfp16ps,0,1,0,TMMREG,TMMREG,TMMREG,');
+    FOpCodeList.Add('tcmmrlfp16ps,0,1,0,TMMREG,TMMREG,TMMREG,');
+    FOpCodeList.Add('tconjtcmmimfp16ps,0,1,0,TMMREG,TMMREG,TMMREG,');
+    FOpCodeList.Add('tconjtfp16,0,1,0,TMMREG,TMMREG,,');
+    FOpCodeList.Add('tdpbf8ps,0,1,0,TMMREG,TMMREG,TMMREG,');
+    FOpCodeList.Add('tdpbhf8ps,0,1,0,TMMREG,TMMREG,TMMREG,');
+    FOpCodeList.Add('tdphbf8ps,0,1,0,TMMREG,TMMREG,TMMREG,');
+    FOpCodeList.Add('tdphf8ps,0,1,0,TMMREG,TMMREG,TMMREG,');
+    FOpCodeList.Add('tileloaddrs,0,1,0,TMMREG,SIBMEM,,');
+    FOpCodeList.Add('tileloaddrst1,0,1,0,TMMREG,SIBMEM,,');
+    FOpCodeList.Add('tmmultf32ps,0,1,0,TMMREG,TMMREG,TMMREG,');
+    FOpCodeList.Add('ttcmmimfp16ps,0,1,0,TMMREG,TMMREG,TMMREG,');
+    FOpCodeList.Add('ttcmmrlfp16ps,0,1,0,TMMREG,TMMREG,TMMREG,');
+    FOpCodeList.Add('ttdpbf16ps,0,1,0,TMMREG,TMMREG,TMMREG,');
+    FOpCodeList.Add('ttdpfp16ps,0,1,0,TMMREG,TMMREG,TMMREG,');
+    FOpCodeList.Add('ttmmultf32ps,0,1,0,TMMREG,TMMREG,TMMREG,');
+    FOpCodeList.Add('ttransposed,0,1,0,TMMREG,TMMREG,,');
+    FOpCodeList.Add('tcvtrowd2ps,0,1,1,ZMMREG,TMMREG,REG32,');
+    FOpCodeList.Add('tcvtrowd2ps,0,1,1,ZMMREG,TMMREG,IMM8,');
+    FOpCodeList.Add('tcvtrowps2bf16h,0,1,1,ZMMREG,TMMREG,REG32,');
+    FOpCodeList.Add('tcvtrowps2bf16h,0,1,1,ZMMREG,TMMREG,IMM8,');
+    FOpCodeList.Add('tcvtrowps2bf16l,0,1,1,ZMMREG,TMMREG,REG32,');
+    FOpCodeList.Add('tcvtrowps2bf16l,0,1,1,ZMMREG,TMMREG,IMM8,');
+    FOpCodeList.Add('tcvtrowps2phh,0,1,1,ZMMREG,TMMREG,REG32,');
+    FOpCodeList.Add('tcvtrowps2phh,0,1,1,ZMMREG,TMMREG,IMM8,');
+    FOpCodeList.Add('tcvtrowps2phl,0,1,1,ZMMREG,TMMREG,REG32,');
+    FOpCodeList.Add('tcvtrowps2phl,0,1,1,ZMMREG,TMMREG,IMM8,');
+    FOpCodeList.Add('tilemovrow,0,1,1,ZMMREG,TMMREG,REG32,');
+    FOpCodeList.Add('tilemovrow,0,1,1,ZMMREG,TMMREG,IMM8,');
+{$endif}
+{$if defined(TEST_URDMSR) or defined(TEST_ALL)}
+    { URDMSR opcodes }
+    FOpCodeList.Add('URDMSR,0,1,0,REG64,REG64,,');
+    FOpCodeList.Add('URDMSR,0,1,0,REG64,IMM32,,');
+    FOpCodeList.Add('UWRMSR,0,1,0,REG64,REG64,,');
+    FOpCodeList.Add('UWRMSR,0,1,0,IMM32,REG64,,');
+    { WRMSRNS,MSR_IMM opcodes }
+    FOpCodeList.Add('RDMSR,0,1,0,REG64,IMM32,,');
+    FOpCodeList.Add('WRMSRNS,0,1,0,,,,');
+    FOpCodeList.Add('WRMSRNS,0,1,0,IMM32,REG64,,');
+    { UINTR opcodes }
+    FOpCodeList.Add('CLUI,0,1,0,,,,');
+    FOpCodeList.Add('SENDUIPI,0,1,0,REG64,,,');
+    FOpCodeList.Add('STUI,0,1,0,,,,');
+    FOpCodeList.Add('TESTUI,0,1,0,,,,');
+    FOpCodeList.Add('UIRET,0,1,0,,,,');
+    { RAO-INT opcodes }
+    FOpCodeList.Add('AADD,1,1,0,MEM32,REG32,,');
+    FOpCodeList.Add('AADD,0,1,0,MEM64,REG64,,');
+    FOpCodeList.Add('AAND,1,1,0,MEM32,REG32,,');
+    FOpCodeList.Add('AAND,0,1,0,MEM64,REG64,,');
+    FOpCodeList.Add('AOR,1,1,0,MEM32,REG32,,');
+    FOpCodeList.Add('AOR,0,1,0,MEM64,REG64,,');
+    FOpCodeList.Add('AXOR,1,1,0,MEM32,REG32,,');
+    FOpCodeList.Add('AXOR,0,1,0,MEM64,REG64,,');
+    { MOVDIRI opcodes }
+    FOpCodeList.Add('MOVDIRI,1,1,0,MEM32,REG32,,');
+    FOpCodeList.Add('MOVDIRI,0,1,0,MEM64,REG64,,');
+    { AES opcodes }
+    FOpCodeList.Add('aesenc,1,1,0,XMMREG,XMMRM,,');
+    FOpCodeList.Add('aesenclast,1,1,0,XMMREG,XMMRM,,');
+    FOpCodeList.Add('aesdec,1,1,0,XMMREG,XMMRM,,');
+    FOpCodeList.Add('aesdeclast,1,1,0,XMMREG,XMMRM,,');
+    FOpCodeList.Add('aesimc,1,1,0,XMMREG,XMMRM,,');
+    FOpCodeList.Add('aeskeygenassist,1,1,0,XMMREG,XMMRM,IMM8,');
+    FOpCodeList.Add('AESDEC128KL,1,1,0,XMMREG,MEM128,,');
+    FOpCodeList.Add('AESDEC256KL,1,1,0,XMMREG,MEM512,,');
+    FOpCodeList.Add('AESENC128KL,1,1,0,XMMREG,MEM128,,');
+    FOpCodeList.Add('AESENC256KL,1,1,0,XMMREG,MEM512,,');
+    FOpCodeList.Add('AESDECWIDE128KL,1,1,0,MEM128,,,');
+    FOpCodeList.Add('AESDECWIDE256KL,1,1,0,MEM512,,,');
+    FOpCodeList.Add('AESENCWIDE128KL,1,1,0,MEM128,,,');
+    FOpCodeList.Add('AESENCWIDE256KL,1,1,0,MEM512,,,');
+    { misc opcodes }
+    FOpCodeList.Add('SERIALIZE,1,1,0,,,,');
+{$endif}
+{$if defined(TEST_MOVRS) or defined(TEST_ALL)}
+    { opcodes }
+    FOpCodeList.Add('PREFETCHRST2,1,1,0,MEM8,,,');
+    FOpCodeList.Add('vmovrsb,0,1,1,XMMREG_MZ,MEM128,,');
+    FOpCodeList.Add('vmovrsb,0,1,1,YMMREG_MZ,MEM256,,');
+    FOpCodeList.Add('vmovrsb,0,1,1,ZMMREG_MZ,MEM512,,');
+    FOpCodeList.Add('vmovrsd,0,1,1,XMMREG_MZ,MEM128,,');
+    FOpCodeList.Add('vmovrsd,0,1,1,YMMREG_MZ,MEM256,,');
+    FOpCodeList.Add('vmovrsd,0,1,1,ZMMREG_MZ,MEM512,,');
+    FOpCodeList.Add('vmovrsq,0,1,1,XMMREG_MZ,MEM128,,');
+    FOpCodeList.Add('vmovrsq,0,1,1,YMMREG_MZ,MEM256,,');
+    FOpCodeList.Add('vmovrsq,0,1,1,ZMMREG_MZ,MEM512,,');
+    FOpCodeList.Add('vmovrsw,0,1,1,XMMREG_MZ,MEM128,,');
+    FOpCodeList.Add('vmovrsw,0,1,1,YMMREG_MZ,MEM256,,');
+    FOpCodeList.Add('vmovrsw,0,1,1,ZMMREG_MZ,MEM512,,');
+    FOpCodeList.Add('cmpbexadd,0,1,0,MEM32,REG32,REG32,');
+    FOpCodeList.Add('cmpbexadd,0,1,0,MEM64,REG64,REG64,');
+    FOpCodeList.Add('cmpbxadd,0,1,0,MEM32,REG32,REG32,');
+    FOpCodeList.Add('cmpbxadd,0,1,0,MEM64,REG64,REG64,');
+    FOpCodeList.Add('cmplexadd,0,1,0,MEM32,REG32,REG32,');
+    FOpCodeList.Add('cmplexadd,0,1,0,MEM64,REG64,REG64,');
+    FOpCodeList.Add('cmplxadd,0,1,0,MEM32,REG32,REG32,');
+    FOpCodeList.Add('cmplxadd,0,1,0,MEM64,REG64,REG64,');
+    FOpCodeList.Add('cmpnbexadd,0,1,0,MEM32,REG32,REG32,');
+    FOpCodeList.Add('cmpnbexadd,0,1,0,MEM64,REG64,REG64,');
+    FOpCodeList.Add('cmpnbxadd,0,1,0,MEM32,REG32,REG32,');
+    FOpCodeList.Add('cmpnbxadd,0,1,0,MEM64,REG64,REG64,');
+    FOpCodeList.Add('cmpnlexadd,0,1,0,MEM32,REG32,REG32,');
+    FOpCodeList.Add('cmpnlexadd,0,1,0,MEM64,REG64,REG64,');
+    FOpCodeList.Add('cmpnlxadd,0,1,0,MEM32,REG32,REG32,');
+    FOpCodeList.Add('cmpnlxadd,0,1,0,MEM64,REG64,REG64,');
+    FOpCodeList.Add('cmpnoxadd,0,1,0,MEM32,REG32,REG32,');
+    FOpCodeList.Add('cmpnoxadd,0,1,0,MEM64,REG64,REG64,');
+    FOpCodeList.Add('cmpnpxadd,0,1,0,MEM32,REG32,REG32,');
+    FOpCodeList.Add('cmpnpxadd,0,1,0,MEM64,REG64,REG64,');
+    FOpCodeList.Add('cmpnsxadd,0,1,0,MEM32,REG32,REG32,');
+    FOpCodeList.Add('cmpnsxadd,0,1,0,MEM64,REG64,REG64,');
+    FOpCodeList.Add('cmpnzxadd,0,1,0,MEM32,REG32,REG32,');
+    FOpCodeList.Add('cmpnzxadd,0,1,0,MEM64,REG64,REG64,');
+    FOpCodeList.Add('cmpoxadd,0,1,0,MEM32,REG32,REG32,');
+    FOpCodeList.Add('cmpoxadd,0,1,0,MEM64,REG64,REG64,');
+    FOpCodeList.Add('cmppxadd,0,1,0,MEM32,REG32,REG32,');
+    FOpCodeList.Add('cmppxadd,0,1,0,MEM64,REG64,REG64,');
+    FOpCodeList.Add('cmpsxadd,0,1,0,MEM32,REG32,REG32,');
+    FOpCodeList.Add('cmpsxadd,0,1,0,MEM64,REG64,REG64,');
+    FOpCodeList.Add('cmpzxadd,0,1,0,MEM32,REG32,REG32,');
+    FOpCodeList.Add('cmpzxadd,0,1,0,MEM64,REG64,REG64,');
+    FOpCodeList.Add('vpdpbssd,1,1,1,XMMREG_MZ,XMMREG,XMMRM,');
+    FOpCodeList.Add('vpdpbssd,1,1,1,XMMREG_MZ,XMMREG,4B32,');
+    FOpCodeList.Add('vpdpbssd,1,1,1,YMMREG_MZ,YMMREG,YMMRM,');
+    FOpCodeList.Add('vpdpbssd,1,1,1,YMMREG_MZ,YMMREG,8B32,');
+    FOpCodeList.Add('vpdpbssd,1,1,1,ZMMREG_MZ,ZMMREG,ZMMRM,');
+    FOpCodeList.Add('vpdpbssd,1,1,1,ZMMREG_MZ,ZMMREG,16B32,');
+    FOpCodeList.Add('vpdpbssds,1,1,1,XMMREG_MZ,XMMREG,XMMRM,');
+    FOpCodeList.Add('vpdpbssds,1,1,1,XMMREG_MZ,XMMREG,4B32,');
+    FOpCodeList.Add('vpdpbssds,1,1,1,YMMREG_MZ,YMMREG,YMMRM,');
+    FOpCodeList.Add('vpdpbssds,1,1,1,YMMREG_MZ,YMMREG,8B32,');
+    FOpCodeList.Add('vpdpbssds,1,1,1,ZMMREG_MZ,ZMMREG,ZMMRM,');
+    FOpCodeList.Add('vpdpbssds,1,1,1,ZMMREG_MZ,ZMMREG,16B32,');
+    FOpCodeList.Add('vpdpbsud,1,1,1,XMMREG_MZ,XMMREG,XMMRM,');
+    FOpCodeList.Add('vpdpbsud,1,1,1,XMMREG_MZ,XMMREG,4B32,');
+    FOpCodeList.Add('vpdpbsud,1,1,1,YMMREG_MZ,YMMREG,YMMRM,');
+    FOpCodeList.Add('vpdpbsud,1,1,1,YMMREG_MZ,YMMREG,8B32,');
+    FOpCodeList.Add('vpdpbsud,1,1,1,ZMMREG_MZ,ZMMREG,ZMMRM,');
+    FOpCodeList.Add('vpdpbsud,1,1,1,ZMMREG_MZ,ZMMREG,16B32,');
+    FOpCodeList.Add('vpdpbsuds,1,1,1,XMMREG_MZ,XMMREG,XMMRM,');
+    FOpCodeList.Add('vpdpbsuds,1,1,1,XMMREG_MZ,XMMREG,4B32,');
+    FOpCodeList.Add('vpdpbsuds,1,1,1,YMMREG_MZ,YMMREG,YMMRM,');
+    FOpCodeList.Add('vpdpbsuds,1,1,1,YMMREG_MZ,YMMREG,8B32,');
+    FOpCodeList.Add('vpdpbsuds,1,1,1,ZMMREG_MZ,ZMMREG,ZMMRM,');
+    FOpCodeList.Add('vpdpbsuds,1,1,1,ZMMREG_MZ,ZMMREG,16B32,');
+    FOpCodeList.Add('vpdpbuud,1,1,1,XMMREG_MZ,XMMREG,XMMRM,');
+    FOpCodeList.Add('vpdpbuud,1,1,1,XMMREG_MZ,XMMREG,4B32,');
+    FOpCodeList.Add('vpdpbuud,1,1,1,YMMREG_MZ,YMMREG,YMMRM,');
+    FOpCodeList.Add('vpdpbuud,1,1,1,YMMREG_MZ,YMMREG,8B32,');
+    FOpCodeList.Add('vpdpbuud,1,1,1,ZMMREG_MZ,ZMMREG,ZMMRM,');
+    FOpCodeList.Add('vpdpbuud,1,1,1,ZMMREG_MZ,ZMMREG,16B32,');
+    FOpCodeList.Add('vpdpbuuds,1,1,1,XMMREG_MZ,XMMREG,XMMRM,');
+    FOpCodeList.Add('vpdpbuuds,1,1,1,XMMREG_MZ,XMMREG,4B32,');
+    FOpCodeList.Add('vpdpbuuds,1,1,1,YMMREG_MZ,YMMREG,YMMRM,');
+    FOpCodeList.Add('vpdpbuuds,1,1,1,YMMREG_MZ,YMMREG,8B32,');
+    FOpCodeList.Add('vpdpbuuds,1,1,1,ZMMREG_MZ,ZMMREG,ZMMRM,');
+    FOpCodeList.Add('vpdpbuuds,1,1,1,ZMMREG_MZ,ZMMREG,16B32,');
+    FOpCodeList.Add('vpdpwsud,1,1,1,XMMREG_MZ,XMMREG,XMMRM,');
+    FOpCodeList.Add('vpdpwsud,1,1,1,XMMREG_MZ,XMMREG,4B32,');
+    FOpCodeList.Add('vpdpwsud,1,1,1,YMMREG_MZ,YMMREG,YMMRM,');
+    FOpCodeList.Add('vpdpwsud,1,1,1,YMMREG_MZ,YMMREG,8B32,');
+    FOpCodeList.Add('vpdpwsud,1,1,1,ZMMREG_MZ,ZMMREG,ZMMRM,');
+    FOpCodeList.Add('vpdpwsud,1,1,1,ZMMREG_MZ,ZMMREG,16B32,');
+    FOpCodeList.Add('vpdpwsuds,1,1,1,XMMREG_MZ,XMMREG,XMMRM,');
+    FOpCodeList.Add('vpdpwsuds,1,1,1,XMMREG_MZ,XMMREG,4B32,');
+    FOpCodeList.Add('vpdpwsuds,1,1,1,YMMREG_MZ,YMMREG,YMMRM,');
+    FOpCodeList.Add('vpdpwsuds,1,1,1,YMMREG_MZ,YMMREG,8B32,');
+    FOpCodeList.Add('vpdpwsuds,1,1,1,ZMMREG_MZ,ZMMREG,ZMMRM,');
+    FOpCodeList.Add('vpdpwsuds,1,1,1,ZMMREG_MZ,ZMMREG,16B32,');
+    FOpCodeList.Add('vpdpwusd,1,1,1,XMMREG_MZ,XMMREG,XMMRM,');
+    FOpCodeList.Add('vpdpwusd,1,1,1,XMMREG_MZ,XMMREG,4B32,');
+    FOpCodeList.Add('vpdpwusd,1,1,1,YMMREG_MZ,YMMREG,YMMRM,');
+    FOpCodeList.Add('vpdpwusd,1,1,1,YMMREG_MZ,YMMREG,8B32,');
+    FOpCodeList.Add('vpdpwusd,1,1,1,ZMMREG_MZ,ZMMREG,ZMMRM,');
+    FOpCodeList.Add('vpdpwusd,1,1,1,ZMMREG_MZ,ZMMREG,16B32,');
+    FOpCodeList.Add('vpdpwusds,1,1,1,XMMREG_MZ,XMMREG,XMMRM,');
+    FOpCodeList.Add('vpdpwusds,1,1,1,XMMREG_MZ,XMMREG,4B32,');
+    FOpCodeList.Add('vpdpwusds,1,1,1,YMMREG_MZ,YMMREG,YMMRM,');
+    FOpCodeList.Add('vpdpwusds,1,1,1,YMMREG_MZ,YMMREG,8B32,');
+    FOpCodeList.Add('vpdpwusds,1,1,1,ZMMREG_MZ,ZMMREG,ZMMRM,');
+    FOpCodeList.Add('vpdpwusds,1,1,1,ZMMREG_MZ,ZMMREG,16B32,');
+    FOpCodeList.Add('vpdpwuud,1,1,1,XMMREG_MZ,XMMREG,XMMRM,');
+    FOpCodeList.Add('vpdpwuud,1,1,1,XMMREG_MZ,XMMREG,4B32,');
+    FOpCodeList.Add('vpdpwuud,1,1,1,YMMREG_MZ,YMMREG,YMMRM,');
+    FOpCodeList.Add('vpdpwuud,1,1,1,YMMREG_MZ,YMMREG,8B32,');
+    FOpCodeList.Add('vpdpwuud,1,1,1,ZMMREG_MZ,ZMMREG,ZMMRM,');
+    FOpCodeList.Add('vpdpwuud,1,1,1,ZMMREG_MZ,ZMMREG,16B32,');
+    FOpCodeList.Add('vpdpwuuds,1,1,1,XMMREG_MZ,XMMREG,XMMRM,');
+    FOpCodeList.Add('vpdpwuuds,1,1,1,XMMREG_MZ,XMMREG,4B32,');
+    FOpCodeList.Add('vpdpwuuds,1,1,1,YMMREG_MZ,YMMREG,YMMRM,');
+    FOpCodeList.Add('vpdpwuuds,1,1,1,YMMREG_MZ,YMMREG,8B32,');
+    FOpCodeList.Add('vpdpwuuds,1,1,1,ZMMREG_MZ,ZMMREG,ZMMRM,');
+    FOpCodeList.Add('vpdpwuuds,1,1,1,ZMMREG_MZ,ZMMREG,16B32,');
+
+    FOpCodeList.Add('vmpsadbw,1,1,1,XMMREG,XMMREG,XMMRM,IMM8');
+    FOpCodeList.Add('vmpsadbw,1,1,1,YMMREG,YMMREG,YMMRM,IMM8');
+    FOpCodeList.Add('vmpsadbw,1,1,1,XMMREG_MZ,XMMREG,XMMRM,IMM8');
+    FOpCodeList.Add('vmpsadbw,1,1,1,YMMREG_MZ,YMMREG,YMMRM,IMM8');
+    FOpCodeList.Add('vmpsadbw,1,1,1,ZMMREG_MZ,ZMMREG,ZMMRM,IMM8');
+{$endif}
+{$if defined(TEST_AVX102) or defined(TEST_ALL)}
+     { AVX10.2 }
+    FOpCodeList.Add('vmovd,1,1,1,XMMREG,XMMREG,,');
+    FOpCodeList.Add('vmovw,1,1,1,XMMREG,XMMREG,,');
+    FOpCodeList.Add('vaddbf16,1,1,1,XMMREG_MZ,XMMREG,XMMRM,');
+    FOpCodeList.Add('vaddbf16,1,1,1,XMMREG_MZ,XMMREG,8B16,');
+    FOpCodeList.Add('vaddbf16,1,1,1,YMMREG_MZ,YMMREG,YMMRM,');
+    FOpCodeList.Add('vaddbf16,1,1,1,YMMREG_MZ,YMMREG,16B16,');
+    FOpCodeList.Add('vaddbf16,1,1,1,ZMMREG_MZ,ZMMREG,ZMMRM,');
+    FOpCodeList.Add('vaddbf16,1,1,1,ZMMREG_MZ,ZMMREG,32B16,');
+      { no pseudo ops for vcmpbf16 in Gas }
+    FOpCodeList.Add('vcmpbf16,1,1,1,KREG_M,XMMREG,XMMRM,IMM8');
+    FOpCodeList.Add('vcmpbf16,1,1,1,KREG_M,XMMREG,8B16,IMM8');
+    FOpCodeList.Add('vcmpbf16,1,1,1,KREG_M,YMMREG,YMMRM,IMM8');
+    FOpCodeList.Add('vcmpbf16,1,1,1,KREG_M,YMMREG,16B16,IMM8');
+    FOpCodeList.Add('vcmpbf16,1,1,1,KREG_M,ZMMREG,ZMMRM,IMM8');
+    FOpCodeList.Add('vcmpbf16,1,1,1,KREG_M,ZMMREG,32B16,IMM8');
+    FOpCodeList.Add('vcomisbf16,1,1,1,XMMREG,XMMREG,,');
+    FOpCodeList.Add('vcomisbf16,1,1,1,XMMREG,MEM16,,');
+    FOpCodeList.Add('vdivbf16,1,1,1,XMMREG_MZ,XMMREG,XMMRM,');
+    FOpCodeList.Add('vdivbf16,1,1,1,XMMREG_MZ,XMMREG,8B16,');
+    FOpCodeList.Add('vdivbf16,1,1,1,YMMREG_MZ,YMMREG,YMMRM,');
+    FOpCodeList.Add('vdivbf16,1,1,1,YMMREG_MZ,YMMREG,16B16,');
+    FOpCodeList.Add('vdivbf16,1,1,1,ZMMREG_MZ,ZMMREG,ZMMRM,');
+    FOpCodeList.Add('vdivbf16,1,1,1,ZMMREG_MZ,ZMMREG,32B16,');
+    FOpCodeList.Add('vfmadd132bf16,1,1,1,XMMREG_MZ,XMMREG,XMMRM,');
+    FOpCodeList.Add('vfmadd132bf16,1,1,1,XMMREG_MZ,XMMREG,8B16,');
+    FOpCodeList.Add('vfmadd132bf16,1,1,1,YMMREG_MZ,YMMREG,YMMRM,');
+    FOpCodeList.Add('vfmadd132bf16,1,1,1,YMMREG_MZ,YMMREG,16B16,');
+    FOpCodeList.Add('vfmadd132bf16,1,1,1,ZMMREG_MZ,ZMMREG,ZMMRM,');
+    FOpCodeList.Add('vfmadd132bf16,1,1,1,ZMMREG_MZ,ZMMREG,32B16,');
+    FOpCodeList.Add('vfmadd213bf16,1,1,1,XMMREG_MZ,XMMREG,XMMRM,');
+    FOpCodeList.Add('vfmadd213bf16,1,1,1,XMMREG_MZ,XMMREG,8B16,');
+    FOpCodeList.Add('vfmadd213bf16,1,1,1,YMMREG_MZ,YMMREG,YMMRM,');
+    FOpCodeList.Add('vfmadd213bf16,1,1,1,YMMREG_MZ,YMMREG,16B16,');
+    FOpCodeList.Add('vfmadd213bf16,1,1,1,ZMMREG_MZ,ZMMREG,ZMMRM,');
+    FOpCodeList.Add('vfmadd213bf16,1,1,1,ZMMREG_MZ,ZMMREG,32B16,');
+    FOpCodeList.Add('vfmadd231bf16,1,1,1,XMMREG_MZ,XMMREG,XMMRM,');
+    FOpCodeList.Add('vfmadd231bf16,1,1,1,XMMREG_MZ,XMMREG,8B16,');
+    FOpCodeList.Add('vfmadd231bf16,1,1,1,YMMREG_MZ,YMMREG,YMMRM,');
+    FOpCodeList.Add('vfmadd231bf16,1,1,1,YMMREG_MZ,YMMREG,16B16,');
+    FOpCodeList.Add('vfmadd231bf16,1,1,1,ZMMREG_MZ,ZMMREG,ZMMRM,');
+    FOpCodeList.Add('vfmadd231bf16,1,1,1,ZMMREG_MZ,ZMMREG,32B16,');
+    FOpCodeList.Add('vfmsub132bf16,1,1,1,XMMREG_MZ,XMMREG,XMMRM,');
+    FOpCodeList.Add('vfmsub132bf16,1,1,1,XMMREG_MZ,XMMREG,8B16,');
+    FOpCodeList.Add('vfmsub132bf16,1,1,1,YMMREG_MZ,YMMREG,YMMRM,');
+    FOpCodeList.Add('vfmsub132bf16,1,1,1,YMMREG_MZ,YMMREG,16B16,');
+    FOpCodeList.Add('vfmsub132bf16,1,1,1,ZMMREG_MZ,ZMMREG,ZMMRM,');
+    FOpCodeList.Add('vfmsub132bf16,1,1,1,ZMMREG_MZ,ZMMREG,32B16,');
+    FOpCodeList.Add('vfmsub213bf16,1,1,1,XMMREG_MZ,XMMREG,XMMRM,');
+    FOpCodeList.Add('vfmsub213bf16,1,1,1,XMMREG_MZ,XMMREG,8B16,');
+    FOpCodeList.Add('vfmsub213bf16,1,1,1,YMMREG_MZ,YMMREG,YMMRM,');
+    FOpCodeList.Add('vfmsub213bf16,1,1,1,YMMREG_MZ,YMMREG,16B16,');
+    FOpCodeList.Add('vfmsub213bf16,1,1,1,ZMMREG_MZ,ZMMREG,ZMMRM,');
+    FOpCodeList.Add('vfmsub213bf16,1,1,1,ZMMREG_MZ,ZMMREG,32B16,');
+    FOpCodeList.Add('vfmsub231bf16,1,1,1,XMMREG_MZ,XMMREG,XMMRM,');
+    FOpCodeList.Add('vfmsub231bf16,1,1,1,XMMREG_MZ,XMMREG,8B16,');
+    FOpCodeList.Add('vfmsub231bf16,1,1,1,YMMREG_MZ,YMMREG,YMMRM,');
+    FOpCodeList.Add('vfmsub231bf16,1,1,1,YMMREG_MZ,YMMREG,16B16,');
+    FOpCodeList.Add('vfmsub231bf16,1,1,1,ZMMREG_MZ,ZMMREG,ZMMRM,');
+    FOpCodeList.Add('vfmsub231bf16,1,1,1,ZMMREG_MZ,ZMMREG,32B16,');
+    FOpCodeList.Add('vfnmadd132bf16,1,1,1,XMMREG_MZ,XMMREG,XMMRM,');
+    FOpCodeList.Add('vfnmadd132bf16,1,1,1,XMMREG_MZ,XMMREG,8B16,');
+    FOpCodeList.Add('vfnmadd132bf16,1,1,1,YMMREG_MZ,YMMREG,YMMRM,');
+    FOpCodeList.Add('vfnmadd132bf16,1,1,1,YMMREG_MZ,YMMREG,16B16,');
+    FOpCodeList.Add('vfnmadd132bf16,1,1,1,ZMMREG_MZ,ZMMREG,ZMMRM,');
+    FOpCodeList.Add('vfnmadd132bf16,1,1,1,ZMMREG_MZ,ZMMREG,32B16,');
+    FOpCodeList.Add('vfnmadd213bf16,1,1,1,XMMREG_MZ,XMMREG,XMMRM,');
+    FOpCodeList.Add('vfnmadd213bf16,1,1,1,XMMREG_MZ,XMMREG,8B16,');
+    FOpCodeList.Add('vfnmadd213bf16,1,1,1,YMMREG_MZ,YMMREG,YMMRM,');
+    FOpCodeList.Add('vfnmadd213bf16,1,1,1,YMMREG_MZ,YMMREG,16B16,');
+    FOpCodeList.Add('vfnmadd213bf16,1,1,1,ZMMREG_MZ,ZMMREG,ZMMRM,');
+    FOpCodeList.Add('vfnmadd213bf16,1,1,1,ZMMREG_MZ,ZMMREG,32B16,');
+    FOpCodeList.Add('vfnmadd231bf16,1,1,1,XMMREG_MZ,XMMREG,XMMRM,');
+    FOpCodeList.Add('vfnmadd231bf16,1,1,1,XMMREG_MZ,XMMREG,8B16,');
+    FOpCodeList.Add('vfnmadd231bf16,1,1,1,YMMREG_MZ,YMMREG,YMMRM,');
+    FOpCodeList.Add('vfnmadd231bf16,1,1,1,YMMREG_MZ,YMMREG,16B16,');
+    FOpCodeList.Add('vfnmadd231bf16,1,1,1,ZMMREG_MZ,ZMMREG,ZMMRM,');
+    FOpCodeList.Add('vfnmadd231bf16,1,1,1,ZMMREG_MZ,ZMMREG,32B16,');
+    FOpCodeList.Add('vfnmsub132bf16,1,1,1,XMMREG_MZ,XMMREG,XMMRM,');
+    FOpCodeList.Add('vfnmsub132bf16,1,1,1,XMMREG_MZ,XMMREG,8B16,');
+    FOpCodeList.Add('vfnmsub132bf16,1,1,1,YMMREG_MZ,YMMREG,YMMRM,');
+    FOpCodeList.Add('vfnmsub132bf16,1,1,1,YMMREG_MZ,YMMREG,16B16,');
+    FOpCodeList.Add('vfnmsub132bf16,1,1,1,ZMMREG_MZ,ZMMREG,ZMMRM,');
+    FOpCodeList.Add('vfnmsub132bf16,1,1,1,ZMMREG_MZ,ZMMREG,32B16,');
+    FOpCodeList.Add('vfnmsub213bf16,1,1,1,XMMREG_MZ,XMMREG,XMMRM,');
+    FOpCodeList.Add('vfnmsub213bf16,1,1,1,XMMREG_MZ,XMMREG,8B16,');
+    FOpCodeList.Add('vfnmsub213bf16,1,1,1,YMMREG_MZ,YMMREG,YMMRM,');
+    FOpCodeList.Add('vfnmsub213bf16,1,1,1,YMMREG_MZ,YMMREG,16B16,');
+    FOpCodeList.Add('vfnmsub213bf16,1,1,1,ZMMREG_MZ,ZMMREG,ZMMRM,');
+    FOpCodeList.Add('vfnmsub213bf16,1,1,1,ZMMREG_MZ,ZMMREG,32B16,');
+    FOpCodeList.Add('vfnmsub231bf16,1,1,1,XMMREG_MZ,XMMREG,XMMRM,');
+    FOpCodeList.Add('vfnmsub231bf16,1,1,1,XMMREG_MZ,XMMREG,8B16,');
+    FOpCodeList.Add('vfnmsub231bf16,1,1,1,YMMREG_MZ,YMMREG,YMMRM,');
+    FOpCodeList.Add('vfnmsub231bf16,1,1,1,YMMREG_MZ,YMMREG,16B16,');
+    FOpCodeList.Add('vfnmsub231bf16,1,1,1,ZMMREG_MZ,ZMMREG,ZMMRM,');
+    FOpCodeList.Add('vfnmsub231bf16,1,1,1,ZMMREG_MZ,ZMMREG,32B16,');
+    FOpCodeList.Add('vfpclassbf16,1,1,1,KREG_M,XMMRM,IMM8,');
+    FOpCodeList.Add('vfpclassbf16,1,1,1,KREG_M,8B16,IMM8,');
+    FOpCodeList.Add('vfpclassbf16,1,1,1,KREG_M,YMMRM,IMM8,');
+    FOpCodeList.Add('vfpclassbf16,1,1,1,KREG_M,16B16,IMM8,');
+    FOpCodeList.Add('vfpclassbf16,1,1,1,KREG_M,ZMMRM,IMM8,');
+    FOpCodeList.Add('vfpclassbf16,1,1,1,KREG_M,32B16,IMM8,');
+    FOpCodeList.Add('vgetexpbf16,1,1,1,XMMREG_MZ,XMMRM,,');
+    FOpCodeList.Add('vgetexpbf16,1,1,1,XMMREG_MZ,8B16,,');
+    FOpCodeList.Add('vgetexpbf16,1,1,1,YMMREG_MZ,YMMRM,,');
+    FOpCodeList.Add('vgetexpbf16,1,1,1,YMMREG_MZ,16B16,,');
+    FOpCodeList.Add('vgetexpbf16,1,1,1,ZMMREG_MZ,ZMMRM,,');
+    FOpCodeList.Add('vgetexpbf16,1,1,1,ZMMREG_MZ,32B16,,');
+    FOpCodeList.Add('vgetmantbf16,1,1,1,XMMREG_MZ,XMMRM,IMM8,');
+    FOpCodeList.Add('vgetmantbf16,1,1,1,XMMREG_MZ,8B16,IMM8,');
+    FOpCodeList.Add('vgetmantbf16,1,1,1,YMMREG_MZ,YMMRM,IMM8,');
+    FOpCodeList.Add('vgetmantbf16,1,1,1,YMMREG_MZ,16B16,IMM8,');
+    FOpCodeList.Add('vgetmantbf16,1,1,1,ZMMREG_MZ,ZMMRM,IMM8,');
+    FOpCodeList.Add('vgetmantbf16,1,1,1,ZMMREG_MZ,32B16,IMM8,');
+    FOpCodeList.Add('vmaxbf16,1,1,1,XMMREG_MZ,XMMREG,XMMRM,');
+    FOpCodeList.Add('vmaxbf16,1,1,1,XMMREG_MZ,XMMREG,8B16,');
+    FOpCodeList.Add('vmaxbf16,1,1,1,YMMREG_MZ,YMMREG,YMMRM,');
+    FOpCodeList.Add('vmaxbf16,1,1,1,YMMREG_MZ,YMMREG,16B16,');
+    FOpCodeList.Add('vmaxbf16,1,1,1,ZMMREG_MZ,ZMMREG,ZMMRM,');
+    FOpCodeList.Add('vmaxbf16,1,1,1,ZMMREG_MZ,ZMMREG,32B16,');
+    FOpCodeList.Add('vminbf16,1,1,1,XMMREG_MZ,XMMREG,XMMRM,');
+    FOpCodeList.Add('vminbf16,1,1,1,XMMREG_MZ,XMMREG,8B16,');
+    FOpCodeList.Add('vminbf16,1,1,1,YMMREG_MZ,YMMREG,YMMRM,');
+    FOpCodeList.Add('vminbf16,1,1,1,YMMREG_MZ,YMMREG,16B16,');
+    FOpCodeList.Add('vminbf16,1,1,1,ZMMREG_MZ,ZMMREG,ZMMRM,');
+    FOpCodeList.Add('vminbf16,1,1,1,ZMMREG_MZ,ZMMREG,32B16,');
+    FOpCodeList.Add('vmulbf16,1,1,1,XMMREG_MZ,XMMREG,XMMRM,');
+    FOpCodeList.Add('vmulbf16,1,1,1,XMMREG_MZ,XMMREG,8B16,');
+    FOpCodeList.Add('vmulbf16,1,1,1,YMMREG_MZ,YMMREG,YMMRM,');
+    FOpCodeList.Add('vmulbf16,1,1,1,YMMREG_MZ,YMMREG,16B16,');
+    FOpCodeList.Add('vmulbf16,1,1,1,ZMMREG_MZ,ZMMREG,ZMMRM,');
+    FOpCodeList.Add('vmulbf16,1,1,1,ZMMREG_MZ,ZMMREG,32B16,');
+    FOpCodeList.Add('vrcpbf16,1,1,1,XMMREG_MZ,XMMRM,,');
+    FOpCodeList.Add('vrcpbf16,1,1,1,XMMREG_MZ,8B16,,');
+    FOpCodeList.Add('vrcpbf16,1,1,1,YMMREG_MZ,YMMRM,,');
+    FOpCodeList.Add('vrcpbf16,1,1,1,YMMREG_MZ,16B16,,');
+    FOpCodeList.Add('vrcpbf16,1,1,1,ZMMREG_MZ,ZMMRM,,');
+    FOpCodeList.Add('vrcpbf16,1,1,1,ZMMREG_MZ,32B16,,');
+    FOpCodeList.Add('vreducebf16,1,1,1,XMMREG_MZ,XMMRM,IMM8,');
+    FOpCodeList.Add('vreducebf16,1,1,1,XMMREG_MZ,8B16,IMM8,');
+    FOpCodeList.Add('vreducebf16,1,1,1,YMMREG_MZ,YMMRM,IMM8,');
+    FOpCodeList.Add('vreducebf16,1,1,1,YMMREG_MZ,16B16,IMM8,');
+    FOpCodeList.Add('vreducebf16,1,1,1,ZMMREG_MZ,ZMMRM,IMM8,');
+    FOpCodeList.Add('vreducebf16,1,1,1,ZMMREG_MZ,32B16,IMM8,');
+    FOpCodeList.Add('vrndscalebf16,1,1,1,XMMREG_MZ,XMMRM,IMM8,');
+    FOpCodeList.Add('vrndscalebf16,1,1,1,XMMREG_MZ,8B16,IMM8,');
+    FOpCodeList.Add('vrndscalebf16,1,1,1,YMMREG_MZ,YMMRM,IMM8,');
+    FOpCodeList.Add('vrndscalebf16,1,1,1,YMMREG_MZ,16B16,IMM8,');
+    FOpCodeList.Add('vrndscalebf16,1,1,1,ZMMREG_MZ,ZMMRM,IMM8,');
+    FOpCodeList.Add('vrndscalebf16,1,1,1,ZMMREG_MZ,32B16,IMM8,');
+    FOpCodeList.Add('vrsqrtbf16,1,1,1,XMMREG_MZ,XMMRM,,');
+    FOpCodeList.Add('vrsqrtbf16,1,1,1,XMMREG_MZ,8B16,,');
+    FOpCodeList.Add('vrsqrtbf16,1,1,1,YMMREG_MZ,YMMRM,,');
+    FOpCodeList.Add('vrsqrtbf16,1,1,1,YMMREG_MZ,16B16,,');
+    FOpCodeList.Add('vrsqrtbf16,1,1,1,ZMMREG_MZ,ZMMRM,,');
+    FOpCodeList.Add('vrsqrtbf16,1,1,1,ZMMREG_MZ,32B16,,');
+    FOpCodeList.Add('vscalefbf16,1,1,1,XMMREG_MZ,XMMREG,XMMRM,');
+    FOpCodeList.Add('vscalefbf16,1,1,1,XMMREG_MZ,XMMREG,8B16,');
+    FOpCodeList.Add('vscalefbf16,1,1,1,YMMREG_MZ,YMMREG,YMMRM,');
+    FOpCodeList.Add('vscalefbf16,1,1,1,YMMREG_MZ,YMMREG,16B16,');
+    FOpCodeList.Add('vscalefbf16,1,1,1,ZMMREG_MZ,ZMMREG,ZMMRM,');
+    FOpCodeList.Add('vscalefbf16,1,1,1,ZMMREG_MZ,ZMMREG,32B16,');
+    FOpCodeList.Add('vsqrtbf16,1,1,1,XMMREG_MZ,XMMRM,,');
+    FOpCodeList.Add('vsqrtbf16,1,1,1,XMMREG_MZ,8B16,,');
+    FOpCodeList.Add('vsqrtbf16,1,1,1,YMMREG_MZ,YMMRM,,');
+    FOpCodeList.Add('vsqrtbf16,1,1,1,YMMREG_MZ,16B16,,');
+    FOpCodeList.Add('vsqrtbf16,1,1,1,ZMMREG_MZ,ZMMRM,,');
+    FOpCodeList.Add('vsqrtbf16,1,1,1,ZMMREG_MZ,32B16,,');
+    FOpCodeList.Add('vsubbf16,1,1,1,XMMREG_MZ,XMMREG,XMMRM,');
+    FOpCodeList.Add('vsubbf16,1,1,1,XMMREG_MZ,XMMREG,8B16,');
+    FOpCodeList.Add('vsubbf16,1,1,1,YMMREG_MZ,YMMREG,YMMRM,');
+    FOpCodeList.Add('vsubbf16,1,1,1,YMMREG_MZ,YMMREG,16B16,');
+    FOpCodeList.Add('vsubbf16,1,1,1,ZMMREG_MZ,ZMMREG,ZMMRM,');
+    FOpCodeList.Add('vsubbf16,1,1,1,ZMMREG_MZ,ZMMREG,32B16,');
+    FOpCodeList.Add('vcomxsd,1,1,1,XMMREG,XMMREG_SAE,,');
+    FOpCodeList.Add('vcomxsd,1,1,1,XMMREG,MEM64,,');
+    FOpCodeList.Add('vcomxsh,1,1,1,XMMREG,XMMREG_SAE,,');
+    FOpCodeList.Add('vcomxsh,1,1,1,XMMREG,MEM16,,');
+    FOpCodeList.Add('vcomxss,1,1,1,XMMREG,XMMREG_SAE,,');
+    FOpCodeList.Add('vcomxss,1,1,1,XMMREG,MEM32,,');
+    FOpCodeList.Add('vucomxsd,1,1,1,XMMREG,XMMREG_SAE,,');
+    FOpCodeList.Add('vucomxsd,1,1,1,XMMREG,MEM64,,');
+    FOpCodeList.Add('vucomxsh,1,1,1,XMMREG,XMMREG_SAE,,');
+    FOpCodeList.Add('vucomxsh,1,1,1,XMMREG,MEM16,,');
+    FOpCodeList.Add('vucomxss,1,1,1,XMMREG,XMMREG_SAE,,');
+    FOpCodeList.Add('vucomxss,1,1,1,XMMREG,MEM32,,');
+    FOpCodeList.Add('vcvt2ph2bf8,1,1,1,XMMREG_MZ,XMMREG,XMMRM,');
+    FOpCodeList.Add('vcvt2ph2bf8,1,1,1,XMMREG_MZ,XMMREG,8B16,');
+    FOpCodeList.Add('vcvt2ph2bf8,1,1,1,YMMREG_MZ,YMMREG,YMMRM,');
+    FOpCodeList.Add('vcvt2ph2bf8,1,1,1,YMMREG_MZ,YMMREG,16B16,');
+    FOpCodeList.Add('vcvt2ph2bf8,1,1,1,ZMMREG_MZ,ZMMREG,ZMMRM,');
+    FOpCodeList.Add('vcvt2ph2bf8,1,1,1,ZMMREG_MZ,ZMMREG,32B16,');
+    FOpCodeList.Add('vcvt2ph2bf8s,1,1,1,XMMREG_MZ,XMMREG,XMMRM,');
+    FOpCodeList.Add('vcvt2ph2bf8s,1,1,1,XMMREG_MZ,XMMREG,8B16,');
+    FOpCodeList.Add('vcvt2ph2bf8s,1,1,1,YMMREG_MZ,YMMREG,YMMRM,');
+    FOpCodeList.Add('vcvt2ph2bf8s,1,1,1,YMMREG_MZ,YMMREG,16B16,');
+    FOpCodeList.Add('vcvt2ph2bf8s,1,1,1,ZMMREG_MZ,ZMMREG,ZMMRM,');
+    FOpCodeList.Add('vcvt2ph2bf8s,1,1,1,ZMMREG_MZ,ZMMREG,32B16,');
+    FOpCodeList.Add('vcvt2ph2hf8,1,1,1,XMMREG_MZ,XMMREG,XMMRM,');
+    FOpCodeList.Add('vcvt2ph2hf8,1,1,1,XMMREG_MZ,XMMREG,8B16,');
+    FOpCodeList.Add('vcvt2ph2hf8,1,1,1,YMMREG_MZ,YMMREG,YMMRM,');
+    FOpCodeList.Add('vcvt2ph2hf8,1,1,1,YMMREG_MZ,YMMREG,16B16,');
+    FOpCodeList.Add('vcvt2ph2hf8,1,1,1,ZMMREG_MZ,ZMMREG,ZMMRM,');
+    FOpCodeList.Add('vcvt2ph2hf8,1,1,1,ZMMREG_MZ,ZMMREG,32B16,');
+    FOpCodeList.Add('vcvt2ph2hf8s,1,1,1,XMMREG_MZ,XMMREG,XMMRM,');
+    FOpCodeList.Add('vcvt2ph2hf8s,1,1,1,XMMREG_MZ,XMMREG,8B16,');
+    FOpCodeList.Add('vcvt2ph2hf8s,1,1,1,YMMREG_MZ,YMMREG,YMMRM,');
+    FOpCodeList.Add('vcvt2ph2hf8s,1,1,1,YMMREG_MZ,YMMREG,16B16,');
+    FOpCodeList.Add('vcvt2ph2hf8s,1,1,1,ZMMREG_MZ,ZMMREG,ZMMRM,');
+    FOpCodeList.Add('vcvt2ph2hf8s,1,1,1,ZMMREG_MZ,ZMMREG,32B16,');
+    FOpCodeList.Add('vcvtph2bf8,1,1,1,XMMREG_MZ,XMMRM,,');
+    FOpCodeList.Add('vcvtph2bf8,1,1,1,XMMREG_MZ,8B16,,');
+    FOpCodeList.Add('vcvtph2bf8,1,1,1,XMMREG_MZ,YMMRM,,');
+    FOpCodeList.Add('vcvtph2bf8,1,1,1,XMMREG_MZ,16B16,,');
+    FOpCodeList.Add('vcvtph2bf8,1,1,1,YMMREG_MZ,ZMMRM,,');
+    FOpCodeList.Add('vcvtph2bf8,1,1,1,YMMREG_MZ,32B16,,');
+    FOpCodeList.Add('vcvtph2bf8s,1,1,1,XMMREG_MZ,XMMRM,,');
+    FOpCodeList.Add('vcvtph2bf8s,1,1,1,XMMREG_MZ,8B16,,');
+    FOpCodeList.Add('vcvtph2bf8s,1,1,1,XMMREG_MZ,YMMRM,,');
+    FOpCodeList.Add('vcvtph2bf8s,1,1,1,XMMREG_MZ,16B16,,');
+    FOpCodeList.Add('vcvtph2bf8s,1,1,1,YMMREG_MZ,ZMMRM,,');
+    FOpCodeList.Add('vcvtph2bf8s,1,1,1,YMMREG_MZ,32B16,,');
+    FOpCodeList.Add('vcvtph2hf8,1,1,1,XMMREG_MZ,XMMRM,,');
+    FOpCodeList.Add('vcvtph2hf8,1,1,1,XMMREG_MZ,8B16,,');
+    FOpCodeList.Add('vcvtph2hf8,1,1,1,XMMREG_MZ,YMMRM,,');
+    FOpCodeList.Add('vcvtph2hf8,1,1,1,XMMREG_MZ,16B16,,');
+    FOpCodeList.Add('vcvtph2hf8,1,1,1,YMMREG_MZ,ZMMRM,,');
+    FOpCodeList.Add('vcvtph2hf8,1,1,1,YMMREG_MZ,32B16,,');
+    FOpCodeList.Add('vcvtph2hf8s,1,1,1,XMMREG_MZ,XMMRM,,');
+    FOpCodeList.Add('vcvtph2hf8s,1,1,1,XMMREG_MZ,8B16,,');
+    FOpCodeList.Add('vcvtph2hf8s,1,1,1,XMMREG_MZ,YMMRM,,');
+    FOpCodeList.Add('vcvtph2hf8s,1,1,1,XMMREG_MZ,16B16,,');
+    FOpCodeList.Add('vcvtph2hf8s,1,1,1,YMMREG_MZ,ZMMRM,,');
+    FOpCodeList.Add('vcvtph2hf8s,1,1,1,YMMREG_MZ,32B16,,');
+    FOpCodeList.Add('vcvt2ps2phx,1,1,1,XMMREG_MZ,XMMREG,XMMRM,');
+    FOpCodeList.Add('vcvt2ps2phx,1,1,1,XMMREG_MZ,XMMREG,4B32,');
+    FOpCodeList.Add('vcvt2ps2phx,1,1,1,YMMREG_MZ,YMMREG,YMMREG_ER,');
+    FOpCodeList.Add('vcvt2ps2phx,1,1,1,YMMREG_MZ,YMMREG,MEM256,');
+    FOpCodeList.Add('vcvt2ps2phx,1,1,1,YMMREG_MZ,YMMREG,8B32,');
+    FOpCodeList.Add('vcvt2ps2phx,1,1,1,ZMMREG_MZ,ZMMREG,ZMMREG_ER,');
+    FOpCodeList.Add('vcvt2ps2phx,1,1,1,ZMMREG_MZ,ZMMREG,MEM512,');
+    FOpCodeList.Add('vcvt2ps2phx,1,1,1,ZMMREG_MZ,ZMMREG,16B32,');
+    FOpCodeList.Add('vcvtbiasph2bf8,1,1,1,XMMREG_MZ,XMMREG,XMMRM,');
+    FOpCodeList.Add('vcvtbiasph2bf8,1,1,1,XMMREG_MZ,XMMREG,8B16,');
+    FOpCodeList.Add('vcvtbiasph2bf8,1,1,1,XMMREG_MZ,YMMREG,YMMRM,');
+    FOpCodeList.Add('vcvtbiasph2bf8,1,1,1,XMMREG_MZ,YMMREG,16B16,');
+    FOpCodeList.Add('vcvtbiasph2bf8,1,1,1,YMMREG_MZ,ZMMREG,ZMMRM,');
+    FOpCodeList.Add('vcvtbiasph2bf8,1,1,1,YMMREG_MZ,ZMMREG,32B16,');
+    FOpCodeList.Add('vcvtbiasph2bf8s,1,1,1,XMMREG_MZ,XMMREG,XMMRM,');
+    FOpCodeList.Add('vcvtbiasph2bf8s,1,1,1,XMMREG_MZ,XMMREG,8B16,');
+    FOpCodeList.Add('vcvtbiasph2bf8s,1,1,1,XMMREG_MZ,YMMREG,YMMRM,');
+    FOpCodeList.Add('vcvtbiasph2bf8s,1,1,1,XMMREG_MZ,YMMREG,16B16,');
+    FOpCodeList.Add('vcvtbiasph2bf8s,1,1,1,YMMREG_MZ,ZMMREG,ZMMRM,');
+    FOpCodeList.Add('vcvtbiasph2bf8s,1,1,1,YMMREG_MZ,ZMMREG,32B16,');
+    FOpCodeList.Add('vcvtbiasph2hf8,1,1,1,XMMREG_MZ,XMMREG,XMMRM,');
+    FOpCodeList.Add('vcvtbiasph2hf8,1,1,1,XMMREG_MZ,XMMREG,8B16,');
+    FOpCodeList.Add('vcvtbiasph2hf8,1,1,1,XMMREG_MZ,YMMREG,YMMRM,');
+    FOpCodeList.Add('vcvtbiasph2hf8,1,1,1,XMMREG_MZ,YMMREG,16B16,');
+    FOpCodeList.Add('vcvtbiasph2hf8,1,1,1,YMMREG_MZ,ZMMREG,ZMMRM,');
+    FOpCodeList.Add('vcvtbiasph2hf8,1,1,1,YMMREG_MZ,ZMMREG,32B16,');
+    FOpCodeList.Add('vcvtbiasph2hf8s,1,1,1,XMMREG_MZ,XMMREG,XMMRM,');
+    FOpCodeList.Add('vcvtbiasph2hf8s,1,1,1,XMMREG_MZ,XMMREG,8B16,');
+    FOpCodeList.Add('vcvtbiasph2hf8s,1,1,1,XMMREG_MZ,YMMREG,YMMRM,');
+    FOpCodeList.Add('vcvtbiasph2hf8s,1,1,1,XMMREG_MZ,YMMREG,16B16,');
+    FOpCodeList.Add('vcvtbiasph2hf8s,1,1,1,YMMREG_MZ,ZMMREG,ZMMRM,');
+    FOpCodeList.Add('vcvtbiasph2hf8s,1,1,1,YMMREG_MZ,ZMMREG,32B16,');
+    FOpCodeList.Add('vcvthf82ph,1,1,1,XMMREG_MZ,XMMREG,,');
+    FOpCodeList.Add('vcvthf82ph,1,1,1,XMMREG_MZ,MEM64,,');
+    FOpCodeList.Add('vcvthf82ph,1,1,1,YMMREG_MZ,XMMRM,,');
+    FOpCodeList.Add('vcvthf82ph,1,1,1,ZMMREG_MZ,YMMRM,,');
+    FOpCodeList.Add('vcvtbf162ibs,1,1,1,XMMREG_MZ,XMMRM,,');
+    FOpCodeList.Add('vcvtbf162ibs,1,1,1,XMMREG_MZ,8B16,,');
+    FOpCodeList.Add('vcvtbf162ibs,1,1,1,YMMREG_MZ,YMMRM,,');
+    FOpCodeList.Add('vcvtbf162ibs,1,1,1,YMMREG_MZ,16B16,,');
+    FOpCodeList.Add('vcvtbf162ibs,1,1,1,ZMMREG_MZ,ZMMRM,,');
+    FOpCodeList.Add('vcvtbf162ibs,1,1,1,ZMMREG_MZ,32B16,,');
+    FOpCodeList.Add('vcvtbf162iubs,1,1,1,XMMREG_MZ,XMMRM,,');
+    FOpCodeList.Add('vcvtbf162iubs,1,1,1,XMMREG_MZ,8B16,,');
+    FOpCodeList.Add('vcvtbf162iubs,1,1,1,YMMREG_MZ,YMMRM,,');
+    FOpCodeList.Add('vcvtbf162iubs,1,1,1,YMMREG_MZ,16B16,,');
+    FOpCodeList.Add('vcvtbf162iubs,1,1,1,ZMMREG_MZ,ZMMRM,,');
+    FOpCodeList.Add('vcvtbf162iubs,1,1,1,ZMMREG_MZ,32B16,,');
+    FOpCodeList.Add('vcvttbf162ibs,1,1,1,XMMREG_MZ,XMMRM,,');
+    FOpCodeList.Add('vcvttbf162ibs,1,1,1,XMMREG_MZ,8B16,,');
+    FOpCodeList.Add('vcvttbf162ibs,1,1,1,YMMREG_MZ,YMMRM,,');
+    FOpCodeList.Add('vcvttbf162ibs,1,1,1,YMMREG_MZ,16B16,,');
+    FOpCodeList.Add('vcvttbf162ibs,1,1,1,ZMMREG_MZ,ZMMRM,,');
+    FOpCodeList.Add('vcvttbf162ibs,1,1,1,ZMMREG_MZ,32B16,,');
+    FOpCodeList.Add('vcvttbf162iubs,1,1,1,XMMREG_MZ,XMMRM,,');
+    FOpCodeList.Add('vcvttbf162iubs,1,1,1,XMMREG_MZ,8B16,,');
+    FOpCodeList.Add('vcvttbf162iubs,1,1,1,YMMREG_MZ,YMMRM,,');
+    FOpCodeList.Add('vcvttbf162iubs,1,1,1,YMMREG_MZ,16B16,,');
+    FOpCodeList.Add('vcvttbf162iubs,1,1,1,ZMMREG_MZ,ZMMRM,,');
+    FOpCodeList.Add('vcvttbf162iubs,1,1,1,ZMMREG_MZ,32B16,,');
+    FOpCodeList.Add('vcvttpd2dqs,1,1,1,XMMREG_MZ,XMMRM,,');
+    FOpCodeList.Add('vcvttpd2dqs,1,1,1,XMMREG_MZ,2B64,,');
+    FOpCodeList.Add('vcvttpd2dqs,1,1,1,XMMREG_MZ,YMMREG_SAE,,');
+    FOpCodeList.Add('vcvttpd2dqs,1,1,1,XMMREG_MZ,MEM256,,');
+    FOpCodeList.Add('vcvttpd2dqs,1,1,1,XMMREG_MZ,4B32,,');
+    FOpCodeList.Add('vcvttpd2dqs,1,1,1,YMMREG_MZ,ZMMREG_SAE,,');
+    FOpCodeList.Add('vcvttpd2dqs,1,1,1,YMMREG_MZ,MEM512,,');
+    FOpCodeList.Add('vcvttpd2dqs,1,1,1,YMMREG_MZ,8B32,,');
+    FOpCodeList.Add('vcvttpd2qqs,1,1,1,XMMREG_MZ,XMMRM,,');
+    FOpCodeList.Add('vcvttpd2qqs,1,1,1,XMMREG_MZ,2B64,,');
+    FOpCodeList.Add('vcvttpd2qqs,1,1,1,YMMREG_MZ,YMMREG_SAE,,');
+    FOpCodeList.Add('vcvttpd2qqs,1,1,1,YMMREG_MZ,MEM256,,');
+    FOpCodeList.Add('vcvttpd2qqs,1,1,1,YMMREG_MZ,4B32,,');
+    FOpCodeList.Add('vcvttpd2qqs,1,1,1,ZMMREG_MZ,ZMMREG_SAE,,');
+    FOpCodeList.Add('vcvttpd2qqs,1,1,1,ZMMREG_MZ,MEM512,,');
+    FOpCodeList.Add('vcvttpd2qqs,1,1,1,ZMMREG_MZ,8B32,,');
+    FOpCodeList.Add('vcvttpd2udqs,1,1,1,XMMREG_MZ,XMMRM,,');
+    FOpCodeList.Add('vcvttpd2udqs,1,1,1,XMMREG_MZ,2B64,,');
+    FOpCodeList.Add('vcvttpd2udqs,1,1,1,XMMREG_MZ,YMMREG_SAE,,');
+    FOpCodeList.Add('vcvttpd2udqs,1,1,1,XMMREG_MZ,MEM256,,');
+    FOpCodeList.Add('vcvttpd2udqs,1,1,1,XMMREG_MZ,4B32,,');
+    FOpCodeList.Add('vcvttpd2udqs,1,1,1,YMMREG_MZ,ZMMREG_SAE,,');
+    FOpCodeList.Add('vcvttpd2udqs,1,1,1,YMMREG_MZ,MEM512,,');
+    FOpCodeList.Add('vcvttpd2udqs,1,1,1,YMMREG_MZ,8B32,,');
+    FOpCodeList.Add('vcvttpd2uqqs,1,1,1,XMMREG_MZ,XMMRM,,');
+    FOpCodeList.Add('vcvttpd2uqqs,1,1,1,XMMREG_MZ,2B64,,');
+    FOpCodeList.Add('vcvttpd2uqqs,1,1,1,YMMREG_MZ,YMMREG_SAE,,');
+    FOpCodeList.Add('vcvttpd2uqqs,1,1,1,YMMREG_MZ,MEM256,,');
+    FOpCodeList.Add('vcvttpd2uqqs,1,1,1,YMMREG_MZ,4B32,,');
+    FOpCodeList.Add('vcvttpd2uqqs,1,1,1,ZMMREG_MZ,ZMMREG_SAE,,');
+    FOpCodeList.Add('vcvttpd2uqqs,1,1,1,ZMMREG_MZ,MEM512,,');
+    FOpCodeList.Add('vcvttpd2uqqs,1,1,1,ZMMREG_MZ,8B32,,');
+    FOpCodeList.Add('vcvtph2ibs,1,1,1,XMMREG_MZ,XMMRM,,');
+    FOpCodeList.Add('vcvtph2ibs,1,1,1,XMMREG_MZ,8B16,,');
+    FOpCodeList.Add('vcvtph2ibs,1,1,1,YMMREG_MZ,YMMREG_ER,,');
+    FOpCodeList.Add('vcvtph2ibs,1,1,1,YMMREG_MZ,MEM256,,');
+    FOpCodeList.Add('vcvtph2ibs,1,1,1,YMMREG_MZ,16B16,,');
+    FOpCodeList.Add('vcvtph2ibs,1,1,1,ZMMREG_MZ,ZMMREG_ER,,');
+    FOpCodeList.Add('vcvtph2ibs,1,1,1,ZMMREG_MZ,MEM512,,');
+    FOpCodeList.Add('vcvtph2ibs,1,1,1,ZMMREG_MZ,32B16,,');
+    FOpCodeList.Add('vcvtph2iubs,1,1,1,XMMREG_MZ,XMMRM,,');
+    FOpCodeList.Add('vcvtph2iubs,1,1,1,XMMREG_MZ,8B16,,');
+    FOpCodeList.Add('vcvtph2iubs,1,1,1,YMMREG_MZ,YMMREG_ER,,');
+    FOpCodeList.Add('vcvtph2iubs,1,1,1,YMMREG_MZ,MEM256,,');
+    FOpCodeList.Add('vcvtph2iubs,1,1,1,YMMREG_MZ,16B16,,');
+    FOpCodeList.Add('vcvtph2iubs,1,1,1,ZMMREG_MZ,ZMMREG_ER,,');
+    FOpCodeList.Add('vcvtph2iubs,1,1,1,ZMMREG_MZ,MEM512,,');
+    FOpCodeList.Add('vcvtph2iubs,1,1,1,ZMMREG_MZ,32B16,,');
+    FOpCodeList.Add('vcvttph2ibs,1,1,1,XMMREG_MZ,XMMRM,,');
+    FOpCodeList.Add('vcvttph2ibs,1,1,1,XMMREG_MZ,8B16,,');
+    FOpCodeList.Add('vcvttph2ibs,1,1,1,YMMREG_MZ,YMMREG_SAE,,');
+    FOpCodeList.Add('vcvttph2ibs,1,1,1,YMMREG_MZ,MEM256,,');
+    FOpCodeList.Add('vcvttph2ibs,1,1,1,YMMREG_MZ,16B16,,');
+    FOpCodeList.Add('vcvttph2ibs,1,1,1,ZMMREG_MZ,ZMMREG_SAE,,');
+    FOpCodeList.Add('vcvttph2ibs,1,1,1,ZMMREG_MZ,MEM512,,');
+    FOpCodeList.Add('vcvttph2ibs,1,1,1,ZMMREG_MZ,32B16,,');
+    FOpCodeList.Add('vcvttph2iubs,1,1,1,XMMREG_MZ,XMMRM,,');
+    FOpCodeList.Add('vcvttph2iubs,1,1,1,XMMREG_MZ,8B16,,');
+    FOpCodeList.Add('vcvttph2iubs,1,1,1,YMMREG_MZ,YMMREG_SAE,,');
+    FOpCodeList.Add('vcvttph2iubs,1,1,1,YMMREG_MZ,MEM256,,');
+    FOpCodeList.Add('vcvttph2iubs,1,1,1,YMMREG_MZ,16B16,,');
+    FOpCodeList.Add('vcvttph2iubs,1,1,1,ZMMREG_MZ,ZMMREG_SAE,,');
+    FOpCodeList.Add('vcvttph2iubs,1,1,1,ZMMREG_MZ,MEM512,,');
+    FOpCodeList.Add('vcvttph2iubs,1,1,1,ZMMREG_MZ,32B16,,');
+    FOpCodeList.Add('vcvttps2dqs,1,1,1,XMMREG_MZ,XMMRM,,');
+    FOpCodeList.Add('vcvttps2dqs,1,1,1,XMMREG_MZ,4B32,,');
+    FOpCodeList.Add('vcvttps2dqs,1,1,1,YMMREG_MZ,YMMREG_SAE,,');
+    FOpCodeList.Add('vcvttps2dqs,1,1,1,YMMREG_MZ,MEM256,,');
+    FOpCodeList.Add('vcvttps2dqs,1,1,1,YMMREG_MZ,8B32,,');
+    FOpCodeList.Add('vcvttps2dqs,1,1,1,ZMMREG_MZ,ZMMREG_SAE,,');
+    FOpCodeList.Add('vcvttps2dqs,1,1,1,ZMMREG_MZ,MEM512,,');
+    FOpCodeList.Add('vcvttps2dqs,1,1,1,ZMMREG_MZ,16B32,,');
+    FOpCodeList.Add('vcvtps2ibs,1,1,1,XMMREG_MZ,XMMRM,,');
+    FOpCodeList.Add('vcvtps2ibs,1,1,1,XMMREG_MZ,4B32,,');
+    FOpCodeList.Add('vcvtps2ibs,1,1,1,YMMREG_MZ,YMMREG_ER,,');
+    FOpCodeList.Add('vcvtps2ibs,1,1,1,YMMREG_MZ,MEM256,,');
+    FOpCodeList.Add('vcvtps2ibs,1,1,1,YMMREG_MZ,8B32,,');
+    FOpCodeList.Add('vcvtps2ibs,1,1,1,ZMMREG_MZ,ZMMREG_ER,,');
+    FOpCodeList.Add('vcvtps2ibs,1,1,1,ZMMREG_MZ,MEM512,,');
+    FOpCodeList.Add('vcvtps2ibs,1,1,1,ZMMREG_MZ,16B32,,');
+    FOpCodeList.Add('vcvtps2iubs,1,1,1,XMMREG_MZ,XMMRM,,');
+    FOpCodeList.Add('vcvtps2iubs,1,1,1,XMMREG_MZ,4B32,,');
+    FOpCodeList.Add('vcvtps2iubs,1,1,1,YMMREG_MZ,YMMREG_ER,,');
+    FOpCodeList.Add('vcvtps2iubs,1,1,1,YMMREG_MZ,MEM256,,');
+    FOpCodeList.Add('vcvtps2iubs,1,1,1,YMMREG_MZ,8B32,,');
+    FOpCodeList.Add('vcvtps2iubs,1,1,1,ZMMREG_MZ,ZMMREG_ER,,');
+    FOpCodeList.Add('vcvtps2iubs,1,1,1,ZMMREG_MZ,MEM512,,');
+    FOpCodeList.Add('vcvtps2iubs,1,1,1,ZMMREG_MZ,16B32,,');
+    FOpCodeList.Add('vcvttps2ibs,1,1,1,XMMREG_MZ,XMMRM,,');
+    FOpCodeList.Add('vcvttps2ibs,1,1,1,XMMREG_MZ,4B32,,');
+    FOpCodeList.Add('vcvttps2ibs,1,1,1,YMMREG_MZ,YMMREG_SAE,,');
+    FOpCodeList.Add('vcvttps2ibs,1,1,1,YMMREG_MZ,MEM256,,');
+    FOpCodeList.Add('vcvttps2ibs,1,1,1,YMMREG_MZ,8B32,,');
+    FOpCodeList.Add('vcvttps2ibs,1,1,1,ZMMREG_MZ,ZMMREG_SAE,,');
+    FOpCodeList.Add('vcvttps2ibs,1,1,1,ZMMREG_MZ,MEM512,,');
+    FOpCodeList.Add('vcvttps2ibs,1,1,1,ZMMREG_MZ,16B32,,');
+    FOpCodeList.Add('vcvttps2iubs,1,1,1,XMMREG_MZ,XMMRM,,');
+    FOpCodeList.Add('vcvttps2iubs,1,1,1,XMMREG_MZ,4B32,,');
+    FOpCodeList.Add('vcvttps2iubs,1,1,1,YMMREG_MZ,YMMREG_SAE,,');
+    FOpCodeList.Add('vcvttps2iubs,1,1,1,YMMREG_MZ,MEM256,,');
+    FOpCodeList.Add('vcvttps2iubs,1,1,1,YMMREG_MZ,8B32,,');
+    FOpCodeList.Add('vcvttps2iubs,1,1,1,ZMMREG_MZ,ZMMREG_SAE,,');
+    FOpCodeList.Add('vcvttps2iubs,1,1,1,ZMMREG_MZ,MEM512,,');
+    FOpCodeList.Add('vcvttps2iubs,1,1,1,ZMMREG_MZ,16B32,,');
+    FOpCodeList.Add('vcvttps2qqs,1,1,1,XMMREG_MZ,XMMREG,,');
+    FOpCodeList.Add('vcvttps2qqs,1,1,1,XMMREG_MZ,MEM64,,');
+    FOpCodeList.Add('vcvttps2qqs,1,1,1,XMMREG_MZ,2B64,,');
+    FOpCodeList.Add('vcvttps2qqs,1,1,1,YMMREG_MZ,XMMREG_SAE,,');
+    FOpCodeList.Add('vcvttps2qqs,1,1,1,YMMREG_MZ,MEM128,,');
+    FOpCodeList.Add('vcvttps2qqs,1,1,1,YMMREG_MZ,4B64,,');
+    FOpCodeList.Add('vcvttps2qqs,1,1,1,ZMMREG_MZ,YMMREG_SAE,,');
+    FOpCodeList.Add('vcvttps2qqs,1,1,1,ZMMREG_MZ,MEM256,,');
+    FOpCodeList.Add('vcvttps2qqs,1,1,1,ZMMREG_MZ,8B64,,');
+    FOpCodeList.Add('vcvttps2udqs,1,1,1,XMMREG_MZ,XMMRM,,');
+    FOpCodeList.Add('vcvttps2udqs,1,1,1,XMMREG_MZ,4B32,,');
+    FOpCodeList.Add('vcvttps2udqs,1,1,1,YMMREG_MZ,YMMREG_SAE,,');
+    FOpCodeList.Add('vcvttps2udqs,1,1,1,YMMREG_MZ,MEM256,,');
+    FOpCodeList.Add('vcvttps2udqs,1,1,1,YMMREG_MZ,8B32,,');
+    FOpCodeList.Add('vcvttps2udqs,1,1,1,ZMMREG_MZ,ZMMREG_SAE,,');
+    FOpCodeList.Add('vcvttps2udqs,1,1,1,ZMMREG_MZ,MEM512,,');
+    FOpCodeList.Add('vcvttps2udqs,1,1,1,ZMMREG_MZ,16B32,,');
+
+    FOpCodeList.Add('vcvttps2uqqs,1,1,1,XMMREG_MZ,XMMREG,,');
+    FOpCodeList.Add('vcvttps2uqqs,1,1,1,XMMREG_MZ,MEM64,,');
+    FOpCodeList.Add('vcvttps2uqqs,1,1,1,XMMREG_MZ,2B64,,');
+    FOpCodeList.Add('vcvttps2uqqs,1,1,1,YMMREG_MZ,XMMREG_SAE,,');
+    FOpCodeList.Add('vcvttps2uqqs,1,1,1,YMMREG_MZ,MEM128,,');
+    FOpCodeList.Add('vcvttps2uqqs,1,1,1,YMMREG_MZ,4B64,,');
+    FOpCodeList.Add('vcvttps2uqqs,1,1,1,ZMMREG_MZ,YMMREG_SAE,,');
+    FOpCodeList.Add('vcvttps2uqqs,1,1,1,ZMMREG_MZ,MEM256,,');
+    FOpCodeList.Add('vcvttps2uqqs,1,1,1,ZMMREG_MZ,8B64,,');
+
+    FOpCodeList.Add('vcvttsd2sis,1,1,1,REG32,XMMREG_SAE,,');
+    FOpCodeList.Add('vcvttsd2sis,1,1,1,REG32,MEM64,,');
+    FOpCodeList.Add('vcvttsd2sis,0,1,1,REG64,XMMREG_SAE,,');
+    FOpCodeList.Add('vcvttsd2sis,0,1,1,REG64,MEM64,,');
+    FOpCodeList.Add('vcvttsd2usis,1,1,1,REG32,XMMREG_SAE,,');
+    FOpCodeList.Add('vcvttsd2usis,1,1,1,REG32,MEM64,,');
+    FOpCodeList.Add('vcvttsd2usis,0,1,1,REG64,XMMREG_SAE,,');
+    FOpCodeList.Add('vcvttsd2usis,0,1,1,REG64,MEM64,,');
+    FOpCodeList.Add('vcvttss2sis,1,1,1,REG32,XMMREG_SAE,,');
+    FOpCodeList.Add('vcvttss2sis,1,1,1,REG32,MEM32,,');
+    FOpCodeList.Add('vcvttss2sis,0,1,1,REG64,XMMREG_SAE,,');
+    FOpCodeList.Add('vcvttss2sis,0,1,1,REG64,MEM32,,');
+    FOpCodeList.Add('vcvttss2usis,1,1,1,REG32,XMMREG_SAE,,');
+    FOpCodeList.Add('vcvttss2usis,1,1,1,REG32,MEM32,,');
+    FOpCodeList.Add('vcvttss2usis,0,1,1,REG64,XMMREG_SAE,,');
+    FOpCodeList.Add('vcvttss2usis,0,1,1,REG64,MEM32,,');
+    FOpCodeList.Add('vminmaxbf16,1,1,1,XMMREG_MZ,XMMREG,XMMRM,IMM8');
+    FOpCodeList.Add('vminmaxbf16,1,1,1,XMMREG_MZ,XMMREG,8B16,IMM8');
+    FOpCodeList.Add('vminmaxbf16,1,1,1,YMMREG_MZ,YMMREG,YMMREG_SAE,IMM8');
+    FOpCodeList.Add('vminmaxbf16,1,1,1,YMMREG_MZ,YMMREG,MEM256,IMM8');
+    FOpCodeList.Add('vminmaxbf16,1,1,1,YMMREG_MZ,YMMREG,16B16,IMM8');
+    FOpCodeList.Add('vminmaxbf16,1,1,1,ZMMREG_MZ,ZMMREG,ZMMREG_SAE,IMM8');
+    FOpCodeList.Add('vminmaxbf16,1,1,1,ZMMREG_MZ,ZMMREG,MEM512,IMM8');
+    FOpCodeList.Add('vminmaxbf16,1,1,1,ZMMREG_MZ,ZMMREG,32B16,IMM8');
+    FOpCodeList.Add('vminmaxpd,1,1,1,XMMREG_MZ,XMMREG,XMMRM,IMM8');
+    FOpCodeList.Add('vminmaxpd,1,1,1,XMMREG_MZ,XMMREG,2B64,IMM8');
+    FOpCodeList.Add('vminmaxpd,1,1,1,YMMREG_MZ,YMMREG,YMMREG_SAE,IMM8');
+    FOpCodeList.Add('vminmaxpd,1,1,1,YMMREG_MZ,YMMREG,MEM256,IMM8');
+    FOpCodeList.Add('vminmaxpd,1,1,1,YMMREG_MZ,YMMREG,4B32,IMM8');
+    FOpCodeList.Add('vminmaxpd,1,1,1,ZMMREG_MZ,ZMMREG,ZMMREG_SAE,IMM8');
+    FOpCodeList.Add('vminmaxpd,1,1,1,ZMMREG_MZ,ZMMREG,MEM512,IMM8');
+    FOpCodeList.Add('vminmaxpd,1,1,1,ZMMREG_MZ,ZMMREG,8B32,IMM8');
+    FOpCodeList.Add('vminmaxph,1,1,1,XMMREG_MZ,XMMREG,XMMRM,IMM8');
+    FOpCodeList.Add('vminmaxph,1,1,1,XMMREG_MZ,XMMREG,8B16,IMM8');
+    FOpCodeList.Add('vminmaxph,1,1,1,YMMREG_MZ,YMMREG,YMMREG_SAE,IMM8');
+    FOpCodeList.Add('vminmaxph,1,1,1,YMMREG_MZ,YMMREG,MEM256,IMM8');
+    FOpCodeList.Add('vminmaxph,1,1,1,YMMREG_MZ,YMMREG,16B16,IMM8');
+    FOpCodeList.Add('vminmaxph,1,1,1,ZMMREG_MZ,ZMMREG,ZMMREG_SAE,IMM8');
+    FOpCodeList.Add('vminmaxph,1,1,1,ZMMREG_MZ,ZMMREG,MEM512,IMM8');
+    FOpCodeList.Add('vminmaxph,1,1,1,ZMMREG_MZ,ZMMREG,32B16,IMM8');
+    FOpCodeList.Add('vminmaxps,1,1,1,XMMREG_MZ,XMMREG,XMMRM,IMM8');
+    FOpCodeList.Add('vminmaxps,1,1,1,XMMREG_MZ,XMMREG,4B32,IMM8');
+    FOpCodeList.Add('vminmaxps,1,1,1,YMMREG_MZ,YMMREG,YMMREG_SAE,IMM8');
+    FOpCodeList.Add('vminmaxps,1,1,1,YMMREG_MZ,YMMREG,MEM256,IMM8');
+    FOpCodeList.Add('vminmaxps,1,1,1,YMMREG_MZ,YMMREG,8B32,IMM8');
+    FOpCodeList.Add('vminmaxps,1,1,1,ZMMREG_MZ,ZMMREG,ZMMREG_SAE,IMM8');
+    FOpCodeList.Add('vminmaxps,1,1,1,ZMMREG_MZ,ZMMREG,MEM512,IMM8');
+    FOpCodeList.Add('vminmaxps,1,1,1,ZMMREG_MZ,ZMMREG,16B32,IMM8');
+    FOpCodeList.Add('vminmaxsd,1,1,1,XMMREG_MZ,XMMREG,XMMREG_SAE,IMM8');
+    FOpCodeList.Add('vminmaxsd,1,1,1,XMMREG_MZ,XMMREG,MEM64,IMM8');
+    FOpCodeList.Add('vminmaxsh,1,1,1,XMMREG_MZ,XMMREG,XMMREG_SAE,IMM8');
+    FOpCodeList.Add('vminmaxsh,1,1,1,XMMREG_MZ,XMMREG,MEM16,IMM8');
+    FOpCodeList.Add('vminmaxss,1,1,1,XMMREG_MZ,XMMREG,XMMREG_SAE,IMM8');
+    FOpCodeList.Add('vminmaxss,1,1,1,XMMREG_MZ,XMMREG,MEM32,IMM8');
+    FOpCodeList.Add('vdpphps,1,1,1,XMMREG_MZ,XMMREG,XMMRM,');
+    FOpCodeList.Add('vdpphps,1,1,1,XMMREG_MZ,XMMREG,4B32,');
+    FOpCodeList.Add('vdpphps,1,1,1,YMMREG_MZ,YMMREG,YMMRM,');
+    FOpCodeList.Add('vdpphps,1,1,1,YMMREG_MZ,YMMREG,8B32,');
+    FOpCodeList.Add('vdpphps,1,1,1,ZMMREG_MZ,ZMMREG,ZMMRM,');
+    FOpCodeList.Add('vdpphps,1,1,1,ZMMREG_MZ,ZMMREG,16B32,');
+{$endif}
 {$if defined(TEST_4FMAPS) or defined(TEST_ALL)}
     { 4FMAPS opcodes }
-    FOpCodeList.Add('V4FMADDPS,1,1,1,ZMMREG_MZ,ZMMREG,MEM512,');
+    FOpCodeList.Add('V4FMADDPS,1,1,1,ZMMREG_MZ,ZMMREG,MEM128,');
     FOpCodeList.Add('V4FMADDSS,1,1,1,XMMREG_MZ,XMMREG,MEM128,');
-    FOpCodeList.Add('V4FNMADDPS,1,1,1,ZMMREG_MZ,ZMMREG,MEM512,');
+    FOpCodeList.Add('V4FNMADDPS,1,1,1,ZMMREG_MZ,ZMMREG,MEM128,');
     FOpCodeList.Add('V4FNMADDSS,1,1,1,XMMREG_MZ,XMMREG,MEM128,');
     { 4VNNIW opcodes }
-    FOpCodeList.Add('VP4DPWSSD,1,1,1,ZMMREG_MZ,ZMMREG,MEM512,');
-    FOpCodeList.Add('VP4DPWSSDS,1,1,1,ZMMREG_MZ,ZMMREG,MEM512,');
+    FOpCodeList.Add('VP4DPWSSD,1,1,1,ZMMREG_MZ,ZMMREG,MEM128,');
+    FOpCodeList.Add('VP4DPWSSDS,1,1,1,ZMMREG_MZ,ZMMREG,MEM128,');
 {$endif}
 {$if defined(TEST_FP16) or defined(TEST_ALL)}
     { FP16 opcodes }