Browse Source

avxtestgenerator: working on new testmethods avx512-memref-operands - 'compressed disp8*N'

git-svn-id: branches/tg74/avx512-0037785@48419 -
tg74 4 years ago
parent
commit
334becf76b
2 changed files with 298 additions and 40 deletions
  1. 296 38
      tests/utils/avx/asmtestgenerator.pas
  2. 2 2
      tests/utils/avx/avxtestgenerator.lpi

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

@@ -34,7 +34,11 @@ type
 
   TOpMemType = Set of TOpType;
 
-  TOpMode = (omUnknown, omXXM, omYYM, omZZM);
+  TOpMode = (omUnknown,
+             omKXM, omKYM, omKZM,
+             omXXM, omXXB32, omXXB64, omXMI, omXB32I, omXB64I,
+             omYYM, omYYB32, omYYB64, omYMI, omYB32I, omYB64I,
+             omZZM, omZZB32, omZZB64, omZMI, omZB32I, omZB64I);
 
   TOperandListItem = class(TObject)
   private
@@ -170,7 +174,8 @@ const
 
   MEMTYPES: TOpMemType = [otXMMRM, otXMMRM16, otXMMRM8, otYMMRM, otZMMRM,
                           otMem8, otMem16, otMem32, otMem64, otMem128, otMem256, otMem512,
-                          otRM32, otRM64, otB32, otB64];
+                          otRM32, otRM64];
+  BMEMTYPES: TOpMemType = [otB32, otB64];
 
 var
   InsTabCache : PInsTabCache;
@@ -3591,6 +3596,8 @@ var
   sl_RegCombi2: string;
   sl_RegCombi3: string;
   sInstruction: string;
+  sMREF: string;
+  sLogMsg: string;
   MaskRegNeeded:boolean;
   slRegCombi: TStringList;
   OpMode: TOpMode;
@@ -3686,6 +3693,46 @@ var
     end;
   end;
 
+  function MapOperand(aOpTyp: TOpType): String;
+  begin
+    case aOpTyp of
+        otXMMReg: result := 'X';
+        otYMMReg: result := 'Y';
+        otZMMReg: result := 'Z';
+           otEAX,
+           otRAX,
+         otREG64,
+         otREG32,
+         otREG16,
+          otREG8: result := 'R';
+          otRM32,
+          otRM64,
+         otXMMRM,
+        otXMMRM8,
+       otXMMRM16,
+         otYMMRM,
+         otZMMRM,
+         otMem32,
+          otMem8,
+         otMem16,
+         otMem64,
+        otMem128,
+        otMem256,
+        otMem512: result := 'M';
+          otIMM8: result := 'I';
+        otXMEM32: result := 'X32';
+        otXMEM64: result := 'X64';
+        otYMEM32: result := 'Y32';
+        otYMEM64: result := 'Y64';
+        otZMEM32: result := 'Z32';
+        otZMEM64: result := 'Z64';
+           otB32: result := 'B32';
+           otB64: result := 'B64';
+          otKREG: result := 'K';
+             else result := '';
+    end;
+  end;
+
 begin
   result := TStringList.Create;
 
@@ -4682,20 +4729,103 @@ begin
             OpMode := omUnknown;
 
             case il_Operands of
-                3: if (OItem1.OpTyp = otXMMReg) and
+                3: if (OItem1.OpTyp = otKReg) and
                       (OItem2.OpTyp = otXMMReg) and
-                      (OItem3.OpTyp in MEMTYPES) then OpMode := omXXM
+                      (OItem3.OpTyp in MEMTYPES) then OpMode := omKXM
+                    else if (OItem1.OpTyp = otKReg) and
+                            (OItem2.OpTyp = otYMMReg) and
+                            (OItem3.OpTyp in MEMTYPES) then OpMode := omKYM
+                    else if (OItem1.OpTyp = otKReg) and
+                            (OItem2.OpTyp = otZMMReg) and
+                            (OItem3.OpTyp in MEMTYPES) then OpMode := omKZM
+
+                    else if (OItem1.OpTyp = otXMMReg) and
+                           (OItem2.OpTyp = otXMMReg) and
+                           (OItem3.OpTyp in MEMTYPES) then OpMode := omXXM
+                    else if (OItem1.OpTyp = otXMMReg) and
+                            (OItem2.OpTyp = otXMMReg) and
+                            (OItem3.OpTyp = otB32) then OpMode := omXXB32
+                    else if (OItem1.OpTyp = otXMMReg) and
+                            (OItem2.OpTyp = otXMMReg) and
+                            (OItem3.OpTyp = otB64) then OpMode := omXXB64
+                    else if (OItem1.OpTyp = otXMMReg) and
+                            (OItem2.OpTyp = otB32) and
+                            (OItem3.OpTyp = otIMM8) then OpMode := omXB32I
+                    else if (OItem1.OpTyp = otXMMReg) and
+                            (OItem2.OpTyp = otB64) and
+                            (OItem3.OpTyp = otIMM8) then OpMode := omXB64I
+                    else if (OItem1.OpTyp = otXMMReg) and
+                            (OItem2.OpTyp in MEMTYPES) and
+                            (OItem3.OpTyp = otIMM8) then OpMode := omXMI
 
                     else if (OItem1.OpTyp = otYMMReg) and
                             (OItem2.OpTyp = otYMMReg) and
-                            (OItem3.OpTyp in MEMTYPES) then OpMode := omYYM
+                            (OItem3.OpTyp in MEMTYPES) then OpMode  := omYYM
+                    else if (OItem1.OpTyp = otYMMReg) and
+                            (OItem2.OpTyp = otYMMReg) and
+                            (OItem3.OpTyp = otB32) then OpMode := omYYB32
+                    else if (OItem1.OpTyp = otYMMReg) and
+                            (OItem2.OpTyp = otYMMReg) and
+                            (OItem3.OpTyp = otB64) then OpMode := omYYB64
+                    else if (OItem1.OpTyp = otYMMReg) and
+                            (OItem2.OpTyp = otB32) and
+                            (OItem3.OpTyp = otIMM8) then OpMode := omYB32I
+                    else if (OItem1.OpTyp = otYMMReg) and
+                            (OItem2.OpTyp = otB64) and
+                            (OItem3.OpTyp = otIMM8) then OpMode := omYB64I
+                    else if (OItem1.OpTyp = otYMMReg) and
+                            (OItem2.OpTyp in MEMTYPES) and
+                            (OItem3.OpTyp = otIMM8) then OpMode := omYMI
 
                     else if (OItem1.OpTyp = otZMMReg) and
                             (OItem2.OpTyp = otZMMReg) and
-                            (OItem3.OpTyp in MEMTYPES) then OpMode := omZZM
+                            (OItem3.OpTyp in MEMTYPES) then OpMode  := omZZM
+                    else if (OItem1.OpTyp = otZMMReg) and
+                            (OItem2.OpTyp = otZMMReg) and
+                            (OItem3.OpTyp = otB32) then OpMode := omZZB32
+                    else if (OItem1.OpTyp = otZMMReg) and
+                            (OItem2.OpTyp = otZMMReg) and
+                            (OItem3.OpTyp = otB64) then OpMode := omZZB64
+                            else if (OItem1.OpTyp = otZMMReg) and
+                                    (OItem2.OpTyp = otB32) and
+                                    (OItem3.OpTyp = otIMM8) then OpMode := omZB32I
+                            else if (OItem1.OpTyp = otZMMReg) and
+                                    (OItem2.OpTyp = otB64) and
+                                    (OItem3.OpTyp = otIMM8) then OpMode := omZB64I
+                    else if (OItem1.OpTyp = otZMMReg) and
+                            (OItem2.OpTyp in MEMTYPES) and
+                            (OItem3.OpTyp = otIMM8) then OpMode := omZMI
+
+
                     else
                     begin
-
+                      sLogMsg := '';
+                      sLogMsg := MapOperand(OItem1.Optyp) + MapOperand(OItem2.Optyp) + MapOperand(OItem3.Optyp);
+                      if sLogMsg <> '' then
+                      begin
+                       if (sLogMsg <> 'RMI') and
+                          (sLogMsg <> 'RRM') and
+                          (sLogMsg <> 'RMR') and
+                          (sLogMsg <> 'KKK') and
+                          (sLogMsg <> 'KKI') and
+                          (sLogMsg <> 'XXX') and
+                          (sLogMsg <> 'YYY') and
+                          (sLogMsg <> 'ZZZ') and
+                          (sLogMsg <> 'XXI') and
+                          (sLogMsg <> 'YYI') and
+                          (sLogMsg <> 'ZZI') and
+                          (sLogMsg <> 'XYI') and
+                          (sLogMsg <> 'YZI') and
+                          (sLogMsg <> 'XZI') and
+                          (sLogMsg <> 'RXI') and
+                          (sLogMsg <> 'RYI') and
+                          (sLogMsg <> 'RZI') and
+
+
+                          (sLogMsg <> 'XXR') then
+
+                       writeln('offen: ' + sLogMsg);
+                      end;
                     end;
               else;
             end;
@@ -4740,40 +4870,168 @@ begin
                     if sRegCombi <> '' then
                     begin
                       //result.Add(format('%-20s%s', [aInst, sl_RegCombi]));
-                      result.Add(format('%-20s%s', [sInstruction, sRegCombi]));
+                      result.Add(format('%-20s %6s', [sInstruction, sRegCombi]));
 
                       case OpMode of
-                        omXXM: begin
-                                 result.Add(sInstruction + 'XMM1, XMM1, ' + OItem3.Values[il_Op3] + ' + $00');
-                                 result.Add('          vpcmpeqb k2, ' + OItem1.Values[il_Op1] + ', xmm1');
-                                 result.Add('          kandq    k1, k1, k2');
-                                 result.Add('');
-                               end;
-                        omYYM: begin
-                                 result.Add(sInstruction + 'XMM1, XMM1, ' + OItem3.Values[il_Op3] + ' + $00');
-                                 result.Add(sInstruction + 'XMM2, XMM2, ' + OItem3.Values[il_Op3] + ' + $10');
-
-                                 result.Add('    vinserti32x4 ymm1, ymm1, xmm2, 01');
-                                 result.Add('    vpcmpeqb       k2, ' + OItem1.Values[il_Op1] + ', ymm1');
-                                 result.Add('    kandq          k1, k1, k2');
-                                 result.Add('');
-                               end;
-                        omZZM: begin
-                                 result.Add(sInstruction + 'XMM1, XMM1, ' + OItem3.Values[il_Op3] + ' + $00');
-                                 result.Add(sInstruction + 'XMM2, XMM2, ' + OItem3.Values[il_Op3] + ' + $10');
-                                 result.Add(sInstruction + 'XMM3, XMM3, ' + OItem3.Values[il_Op3] + ' + $20');
-                                 result.Add(sInstruction + 'XMM4, XMM4, ' + OItem3.Values[il_Op3] + ' + $30');
-
-                                 result.Add('    vinserti32x4 zmm1, zmm1, xmm2, 01');
-                                 result.Add('    vinserti32x4 zmm1, zmm1, xmm3, 02');
-                                 result.Add('    vinserti32x4 zmm1, zmm1, xmm4, 03');
-
-                                 result.Add('    vpcmpeqb       k2, ' + OItem1.Values[il_Op1] + ', zmm1');
-                                 result.Add('    kandq          k1, k1, k2');
-                                 result.Add('');
-
-                               end;
+                          omKXM: begin
+                                   result.Add(format('%20s%6s,%6s, %s + $00', [aInst, OItem1.Values[il_Op1], 'XMM1', OItem3.Values[il_Op3] ]));
+                                   //result.Add(format('%20s%6s,%6s, %s',       ['vpcmpeqb', 'K2', OItem1.Values[il_Op1], 'XMM1']));
+                                   //result.Add(format('%20s%6s,%6s, %s',       ['kandq', 'K1', 'K1', 'K2']));
+                                   result.Add('');
+                                 end;
+                        omXB32I,
+                        omXB64I: begin
+                                   sMREF := OItem2.Values[il_Op2];
+                                   if Pos('{1to4}', sMREF) > 0 then sMREF := StringReplace(sMREF, '{1to4}', '{1to2}', [])
+                                    else if Pos('{1to8}', sMREF) > 0 then sMREF := StringReplace(sMREF, '{1to8}', '{1to4}', [])
+                                    else if Pos('{1to16}', sMREF) > 0 then sMREF := StringReplace(sMREF, '{1to16}', '{1to8}', []);
+
+                                   result.Add(format('%20s%6s,%6s, %s + $00', [aInst, 'XMM1', sMREF, OItem3.Values[il_Op3]]));
+                                   result.Add(format('%20s%6s,%6s, %s',       ['vpcmpeqb', 'K2', OItem1.Values[il_Op1], 'XMM1']));
+                                   result.Add(format('%20s%6s,%6s, %s',       ['kandq', 'K1', 'K1', 'K2']));
+                                   result.Add('');
+                                 end;
+                          omXXM: begin
+                                   result.Add(format('%20s%6s,%6s, %s + $00', [aInst, 'XMM1', 'XMM1', OItem3.Values[il_Op3] ]));
+                                   result.Add(format('%20s%6s,%6s, %s',       ['vpcmpeqb', 'K2', OItem1.Values[il_Op1], 'XMM1']));
+                                   result.Add(format('%20s%6s,%6s, %s',       ['kandq', 'K1', 'K1', 'K2']));
+                                   result.Add('');
+                                 end;
+                        omXXB32,
+                        omXXB64: begin
+                                   sMREF := OItem3.Values[il_Op3];
+                                   if Pos('{1to4}', sMREF) > 0 then sMREF := StringReplace(sMREF, '{1to4}', '{1to2}', [])
+                                    else if Pos('{1to8}', sMREF) > 0 then sMREF := StringReplace(sMREF, '{1to8}', '{1to4}', [])
+                                    else if Pos('{1to16}', sMREF) > 0 then sMREF := StringReplace(sMREF, '{1to16}', '{1to8}', []);
+
+                                   result.Add(format('%20s%6s,%6s, %s + $00', [aInst, 'XMM1', 'XMM1', sMREF]));
+                                   result.Add(format('%20s%6s,%6s, %s',       ['vpcmpeqb', 'K2', OItem1.Values[il_Op1], 'XMM1']));
+                                   result.Add(format('%20s%6s,%6s, %s',       ['kandq', 'K1', 'K1', 'K2']));
+                                   result.Add('');
+                                 end;
+                          omXMI: begin
+                                   result.Add(format('%20s%6s,%6s + $00, %s', [aInst, 'XMM1', OItem2.Values[il_Op2], OItem3.Values[il_Op3]]));
+                                   result.Add(format('%20s%6s,%6s, %s',       ['vpcmpeqb', 'K2', OItem1.Values[il_Op1], 'XMM1']));
+                                   result.Add(format('%20s%6s,%6s, %s',       ['kandq', 'K1', 'K1', 'K2']));
+                                   result.Add('');
+                                 end;
 
+                          omYB32I,
+                          omYB64I: begin
+                                     sMREF := OItem2.Values[il_Op2];
+                                     if Pos('{1to4}', sMREF) > 0 then sMREF := StringReplace(sMREF, '{1to4}', '{1to2}', [])
+                                      else if Pos('{1to8}', sMREF) > 0 then sMREF := StringReplace(sMREF, '{1to8}', '{1to4}', [])
+                                      else if Pos('{1to16}', sMREF) > 0 then sMREF := StringReplace(sMREF, '{1to16}', '{1to8}', []);
+
+                                     result.Add(format('%20s%6s,%6s + $00, %s', [aInst, 'XMM1', sMREF, OItem3.Values[il_Op3]]));
+                                     result.Add(format('%20s%6s,%6s + $10, %s', [aInst, 'XMM2', sMREF, OItem3.Values[il_Op3]]));
+
+                                     result.Add(format('%20s%6s,%6s, %s, 01',   ['vinserti32x4', 'YMM1', 'YMM1', 'XMM2']));
+                                     result.Add(format('%20s%6s,%6s, %s',       ['vpcmpeqb', 'K2', OItem1.Values[il_Op1], 'YMM1']));
+                                     result.Add(format('%20s%6s,%6s, %s',       ['kandq', 'K1', 'K1', 'K2']));
+                                     result.Add('');
+                                   end;
+
+                          omYYM: begin
+                                   result.Add(format('%20s%6s,%6s, %s + $00', [aInst, 'XMM1', 'XMM1', OItem3.Values[il_Op3]]));
+                                   result.Add(format('%20s%6s,%6s, %s + $10', [aInst, 'XMM2', 'XMM2', OItem3.Values[il_Op3]]));
+
+                                   result.Add(format('%20s%6s,%6s, %s, 01',   ['vinserti32x4', 'YMM1', 'YMM1', 'XMM2']));
+                                   result.Add(format('%20s%6s,%6s, %s',       ['vpcmpeqb', 'K2', OItem1.Values[il_Op1], 'YMM1']));
+                                   result.Add(format('%20s%6s,%6s, %s',       ['kandq', 'K1', 'K1', 'K2']));
+                                   result.Add('');
+                                 end;
+                        omYYB32,
+                        omYYB64: begin
+                                   sMREF := OItem3.Values[il_Op3];
+                                   if Pos('{1to4}', sMREF) > 0 then sMREF := StringReplace(sMREF, '{1to4}', '{1to2}', [])
+                                    else if Pos('{1to8}', sMREF) > 0 then sMREF := StringReplace(sMREF, '{1to8}', '{1to4}', [])
+                                    else if Pos('{1to16}', sMREF) > 0 then sMREF := StringReplace(sMREF, '{1to16}', '{1to8}', []);
+
+                                   result.Add(format('%20s%6s,%6s, %s + $00', [aInst, 'XMM1', 'XMM1', sMREF]));
+                                   result.Add(format('%20s%6s,%6s, %s + $10', [aInst, 'XMM2', 'XMM2', sMREF]));
+
+                                   result.Add(format('%20s%6s,%6s, %s, 01',   ['vinserti32x4', 'YMM1', 'YMM1', 'XMM2']));
+                                   result.Add(format('%20s%6s,%6s, %s',       ['vpcmpeqb', 'K2', OItem1.Values[il_Op1], 'YMM1']));
+                                   result.Add(format('%20s%6s,%6s, %s',       ['kandq', 'K1', 'K1', 'K2']));
+                                   result.Add('');
+                                 end;
+                          omYMI: begin
+                                   result.Add(format('%20s%6s,%6s + $00, %s', [aInst, 'XMM1', OItem2.Values[il_Op2], OItem3.Values[il_Op3]]));
+                                   result.Add(format('%20s%6s,%6s + $10, %s', [aInst, 'XMM2', OItem2.Values[il_Op2], OItem3.Values[il_Op3]]));
+
+                                   result.Add(format('%20s%6s,%6s, %s, 01',   ['vinserti32x4', 'YMM1', 'YMM1', 'XMM2']));
+                                   result.Add(format('%20s%6s,%6s, %s',       ['vpcmpeqb', 'K2', OItem1.Values[il_Op1], 'YMM1']));
+                                   result.Add(format('%20s%6s,%6s, %s',       ['kandq', 'K1', 'K1', 'K2']));
+                                   result.Add('');
+                                 end;
+                          omZB32I,
+                          omZB64I:
+                                  begin
+                                    sMREF := OItem2.Values[il_Op2];
+                                     if Pos('{1to8}', sMREF) > 0 then sMREF := StringReplace(sMREF, '{1to8}', '{1to2}', [])
+                                      else if Pos('{1to16}', sMREF) > 0 then sMREF := StringReplace(sMREF, '{1to16}', '{1to4}', []);
+
+                                     result.Add(format('%20s%6s,%6s + $00, %s', [aInst, 'XMM1', sMREF, OItem3.Values[il_Op3]]));
+                                     result.Add(format('%20s%6s,%6s + $10, %s', [aInst, 'XMM2', sMREF, OItem3.Values[il_Op3]]));
+                                     result.Add(format('%20s%6s,%6s + $20, %s', [aInst, 'XMM3', sMREF, OItem3.Values[il_Op3]]));
+
+                                     result.Add(format('%20s%6s,%6s, %s, 01',   ['vinserti32x4', 'ZMM1', 'ZMM1', 'XMM2']));
+                                     result.Add(format('%20s%6s,%6s, %s, 02',   ['vinserti32x4', 'ZMM1', 'ZMM1', 'XMM3']));
+                                     result.Add(format('%20s%6s,%6s, %s, 03',   ['vinserti32x4', 'ZMM1', 'ZMM1', 'XMM4']));
+
+                                     result.Add(format('%20s%6s,%6s, %s',       ['vpcmpeqb', 'K2', OItem1.Values[il_Op1], 'ZMM1']));
+                                     result.Add(format('%20s%6s,%6s, %s',       ['kandq', 'K1', 'K1', 'K2']));
+                                     result.Add('');
+                                   end;
+
+                          omZZM: begin
+                                   result.Add(format('%20s%6s,%6s, %s + $00', [aInst, 'XMM1', 'XMM1', OItem3.Values[il_Op3]]));
+                                   result.Add(format('%20s%6s,%6s, %s + $10', [aInst, 'XMM2', 'XMM2', OItem3.Values[il_Op3]]));
+                                   result.Add(format('%20s%6s,%6s, %s + $20', [aInst, 'XMM3', 'XMM3', OItem3.Values[il_Op3]]));
+                                   result.Add(format('%20s%6s,%6s, %s + $30', [aInst, 'XMM4', 'XMM4', OItem3.Values[il_Op3]]));
+
+                                   result.Add(format('%20s%6s,%6s, %s, 01',   ['vinserti32x4', 'ZMM1', 'ZMM1', 'XMM2']));
+                                   result.Add(format('%20s%6s,%6s, %s, 02',   ['vinserti32x4', 'ZMM1', 'ZMM1', 'XMM3']));
+                                   result.Add(format('%20s%6s,%6s, %s, 03',   ['vinserti32x4', 'ZMM1', 'ZMM1', 'XMM4']));
+
+                                   result.Add(format('%20s%6s,%6s, %s',       ['vpcmpeqb', 'K2', OItem1.Values[il_Op1], 'ZMM1']));
+                                   result.Add(format('%20s%6s,%6s, %s',       ['kandq', 'K1', 'K1', 'K2']));
+                                   result.Add('');
+                                 end;
+                        omZZB32,
+                        omZZB64: begin
+                                   sMREF := OItem3.Values[il_Op3];
+                                   if Pos('{1to8}', sMREF) > 0 then sMREF := StringReplace(sMREF, '{1to8}', '{1to2}', [])
+                                    else if Pos('{1to16}', sMREF) > 0 then sMREF := StringReplace(sMREF, '{1to16}', '{1to4}', []);
+
+                                   result.Add(format('%20s%6s,%6s, %s + $00', [aInst, 'XMM1', 'XMM1', sMREF]));
+                                   result.Add(format('%20s%6s,%6s, %s + $10', [aInst, 'XMM2', 'XMM2', sMREF]));
+                                   result.Add(format('%20s%6s,%6s, %s + $20', [aInst, 'XMM3', 'XMM3', sMREF]));
+                                   result.Add(format('%20s%6s,%6s, %s + $30', [aInst, 'XMM4', 'XMM4', sMREF]));
+
+                                   result.Add(format('%20s%6s,%6s, %s, 01',   ['vinserti32x4', 'ZMM1', 'ZMM1', 'XMM2']));
+                                   result.Add(format('%20s%6s,%6s, %s, 02',   ['vinserti32x4', 'ZMM1', 'ZMM1', 'XMM3']));
+                                   result.Add(format('%20s%6s,%6s, %s, 03',   ['vinserti32x4', 'ZMM1', 'ZMM1', 'XMM4']));
+
+                                   result.Add(format('%20s%6s,%6s, %s',       ['vpcmpeqb', 'K2', OItem1.Values[il_Op1], 'ZMM1']));
+                                   result.Add(format('%20s%6s,%6s, %s',       ['kandq', 'K1', 'K1', 'K2']));
+                                   result.Add('');
+                                 end;
+                          omZMI: begin
+                                   result.Add(format('%20s%6s,%6s + $00, %s', [aInst, 'XMM1', OItem2.Values[il_Op2], OItem3.Values[il_Op3]]));
+                                   result.Add(format('%20s%6s,%6s + $10, %s', [aInst, 'XMM2', OItem2.Values[il_Op2], OItem3.Values[il_Op3]]));
+                                   result.Add(format('%20s%6s,%6s + $20, %s', [aInst, 'XMM3', OItem2.Values[il_Op2], OItem3.Values[il_Op3]]));
+                                   result.Add(format('%20s%6s,%6s + $30, %s', [aInst, 'XMM4', OItem2.Values[il_Op2], OItem3.Values[il_Op3]]));
+
+                                   result.Add(format('%20s%6s,%6s, %s, 01',   ['vinserti32x4', 'ZMM1', 'ZMM1', 'XMM2']));
+                                   result.Add(format('%20s%6s,%6s, %s, 02',   ['vinserti32x4', 'ZMM1', 'ZMM1', 'XMM3']));
+                                   result.Add(format('%20s%6s,%6s, %s, 03',   ['vinserti32x4', 'ZMM1', 'ZMM1', 'XMM4']));
+
+                                   result.Add(format('%20s%6s,%6s, %s',       ['vpcmpeqb', 'K2', OItem1.Values[il_Op1], 'ZMM1']));
+                                   result.Add(format('%20s%6s,%6s, %s',       ['kandq', 'K1', 'K1', 'K2']));
+                                   result.Add('');
+                                 end;
 
                       end;
 

+ 2 - 2
tests/utils/avx/avxtestgenerator.lpi

@@ -22,13 +22,13 @@
     </PublishOptions>
     <RunParams>
       <local>
-        <CommandLineParams Value="-px8664 -ffpccd8 -o\home\torsten\tmp\fpc\fpc -z -mvaddpd"/>
+        <CommandLineParams Value="-px8664 -ffpc -o\home\torsten\tmp\fpc\fpc -z -mvgatherqpd"/>
       </local>
       <FormatVersion Value="2"/>
       <Modes Count="1">
         <Mode0 Name="default">
           <local>
-            <CommandLineParams Value="-px8664 -ffpccd8 -o\home\torsten\tmp\fpc\fpc -z -mvaddpd"/>
+            <CommandLineParams Value="-px8664 -ffpc -o\home\torsten\tmp\fpc\fpc -z -mvgatherqpd"/>
           </local>
         </Mode0>
       </Modes>