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

git-svn-id: branches/tg74/avx512-0037785@48804 -
This commit is contained in:
tg74 2021-02-24 16:29:26 +00:00 committed by Michaël Van Canneyt
parent 2f36069dae
commit 1893babd06

View File

@ -40,6 +40,7 @@ type
omKXM, omKYM, omKZM, omKXM, omKYM, omKZM,
omKXB32, omKXB64, omKYB32, omKYB64, omKZB32, omKZB64, omKXB32, omKXB64, omKYB32, omKYB64, omKZB32, omKZB64,
omKMI, omKB32I, omKB64I, omKMI, omKB32I, omKB64I,
omMXI, omMYI, omMZI,
omXXM, omXXB32, omXXB64, omXMI, omXB32I, omXB64I, omXXM, omXXB32, omXXB64, omXMI, omXB32I, omXB64I,
omYYM, omYYB32, omYYB64, omYMI, omYB32I, omYB64I, omYYM, omYYB32, omYYB64, omYMI, omYB32I, omYB64I,
omZZM, omZZB32, omZZB64, omZMI, omZB32I, omZB64I); omZZM, omZZB32, omZZB64, omZMI, omZB32I, omZB64I);
@ -4811,16 +4812,26 @@ begin
(OItem2.OpTyp = otZMMReg) and (OItem2.OpTyp = otZMMReg) and
(OItem3.OpTyp = otB64) then OpMode := omKZB64 (OItem3.OpTyp = otB64) then OpMode := omKZB64
else if (OItem1.OpTyp = otKReg) and else if (OItem1.OpTyp = otKReg) and
(OItem2.OpTyp in MEMTYPES) and (OItem2.OpTyp in MEMTYPES) and
(OItem3.OpTyp = otIMM8) then OpMode := omKMI (OItem3.OpTyp = otIMM8) then OpMode := omKMI
else if (OItem1.OpTyp = otKReg) and else if (OItem1.OpTyp = otKReg) and
(OItem2.OpTyp = otB32) and (OItem2.OpTyp = otB32) and
(OItem3.OpTyp = otIMM8) then OpMode := omKB32I (OItem3.OpTyp = otIMM8) then OpMode := omKB32I
else if (OItem1.OpTyp = otKReg) and else if (OItem1.OpTyp = otKReg) and
(OItem2.OpTyp = otB64) and (OItem2.OpTyp = otB64) and
(OItem3.OpTyp = otIMM8) then OpMode := omKB64I (OItem3.OpTyp = otIMM8) then OpMode := omKB64I
else if (OItem1.OpTyp in MEMTYPES) and
(OItem2.OpTyp = otXMMReg) and
(OItem3.OpTyp = otIMM8) then OpMode := omMXI
else if (OItem1.OpTyp in MEMTYPES) and
(OItem2.OpTyp = otYMMReg) and
(OItem3.OpTyp = otIMM8) then OpMode := omMYI
else if (OItem1.OpTyp in MEMTYPES) and
(OItem2.OpTyp = otZMMReg) and
(OItem3.OpTyp = otIMM8) then OpMode := omMZI
else if (OItem1.OpTyp = otXMMReg) and else if (OItem1.OpTyp = otXMMReg) and
(OItem2.OpTyp = otXMMReg) and (OItem2.OpTyp = otXMMReg) and
(OItem3.OpTyp in MEMTYPES) then OpMode := omXXM (OItem3.OpTyp in MEMTYPES) then OpMode := omXXM
@ -4842,7 +4853,7 @@ begin
else if (OItem1.OpTyp = otYMMReg) and else if (OItem1.OpTyp = otYMMReg) and
(OItem2.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 else if (OItem1.OpTyp = otYMMReg) and
(OItem2.OpTyp = otYMMReg) and (OItem2.OpTyp = otYMMReg) and
(OItem3.OpTyp = otB32) then OpMode := omYYB32 (OItem3.OpTyp = otB32) then OpMode := omYYB32
@ -4969,6 +4980,13 @@ begin
result.Add(format('%20s%6s, %s', [' xor', sIndexReg, sIndexReg])); result.Add(format('%20s%6s, %s', [' xor', sIndexReg, sIndexReg]));
end; end;
if OpMode in [omMXI, omMYI, omMZI] then
begin
result.Add(format('%-20s %6s', ['push', '']));
result.Add(format('%-20s %6s', ['pop', '']));
end;
//result.Add(format('%-20s%s', [aInst, sl_RegCombi])); //result.Add(format('%-20s%s', [aInst, sl_RegCombi]));
result.Add(format('%-20s %6s', [sInstruction, sRegCombi])); result.Add(format('%-20s %6s', [sInstruction, sRegCombi]));
@ -5012,6 +5030,16 @@ begin
result.Add(AsmCodeBlockCompare(iAsmCounter, cmXORTestNZ)); result.Add(AsmCodeBlockCompare(iAsmCounter, cmXORTestNZ));
end; end;
omMXI: begin
result.Add(format('%20s%6s + $2000, %6s, %s', [aInst, OItem1.Values[il_Op1], OItem2.Values[il_Op2], OItem3.Values[il_Op3] ]));
result.Add(format('%20s%6s, %s', ['vmovdqu', 'xmm0', OItem1.Values[il_Op1]]));
result.Add(format('%20s%6s, $s + $2000', ['vmovdqu', 'xmm1', OItem1.Values[il_Op1]]));
result.Add(format('%20s%6s, %6s, %s', ['vpcmpeqw', 'K2', 'XMM0', 'XMM1']));
result.Add(AsmCodeBlockCompare(iAsmCounter, cmKORTESTNC));
end;
omXB32I, omXB32I,
omXB64I: begin omXB64I: begin
sMREF := OItem2.Values[il_Op2]; sMREF := OItem2.Values[il_Op2];