summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortg74 <tg74@3ad0048d-3df7-0310-abae-a5850022a9f2>2021-01-25 16:01:01 +0000
committertg74 <tg74@3ad0048d-3df7-0310-abae-a5850022a9f2>2021-01-25 16:01:01 +0000
commitc65c5cc8724658ae94a756af5b19aa9c475604f5 (patch)
treeb23abe646f04e9cd06ef0fdda94c892c9cba36a9
parenta273e52413a47e2c4d604f0a3f0fa8456cafae17 (diff)
downloadfpc-c65c5cc8724658ae94a756af5b19aa9c475604f5.tar.gz
avxtestgenerator: working on new testmethods avx512-memref-operands - 'compressed disp8*N'
git-svn-id: https://svn.freepascal.org/svn/fpc/branches/tg74@48419 3ad0048d-3df7-0310-abae-a5850022a9f2
-rw-r--r--avx512-0037785/tests/utils/avx/asmtestgenerator.pas334
-rw-r--r--avx512-0037785/tests/utils/avx/avxtestgenerator.lpi4
2 files changed, 298 insertions, 40 deletions
diff --git a/avx512-0037785/tests/utils/avx/asmtestgenerator.pas b/avx512-0037785/tests/utils/avx/asmtestgenerator.pas
index 32d3b419bc..12f5fd9c40 100644
--- a/avx512-0037785/tests/utils/avx/asmtestgenerator.pas
+++ b/avx512-0037785/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;
diff --git a/avx512-0037785/tests/utils/avx/avxtestgenerator.lpi b/avx512-0037785/tests/utils/avx/avxtestgenerator.lpi
index e1fc55dd9c..e0fadcd6ce 100644
--- a/avx512-0037785/tests/utils/avx/avxtestgenerator.lpi
+++ b/avx512-0037785/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>