summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortg74 <tg74@3ad0048d-3df7-0310-abae-a5850022a9f2>2021-02-15 16:03:49 +0000
committertg74 <tg74@3ad0048d-3df7-0310-abae-a5850022a9f2>2021-02-15 16:03:49 +0000
commit9214cb61d5082c73308f6fbdb9a79d8664152bdc (patch)
tree8e267d6e73cac2bedb9477c1115587f02444b4bf
parent58fd91e0ea941bda716ac47e618b32586c15edf9 (diff)
downloadfpc-9214cb61d5082c73308f6fbdb9a79d8664152bdc.tar.gz
avxtestgenerator: working on new tests for compressed disp8*N
git-svn-id: https://svn.freepascal.org/svn/fpc/branches/tg74@48683 3ad0048d-3df7-0310-abae-a5850022a9f2
-rw-r--r--avx512-0037785/tests/utils/avx/asmtestgenerator.pas25
1 files changed, 24 insertions, 1 deletions
diff --git a/avx512-0037785/tests/utils/avx/asmtestgenerator.pas b/avx512-0037785/tests/utils/avx/asmtestgenerator.pas
index e50d962112..cd06f4acef 100644
--- a/avx512-0037785/tests/utils/avx/asmtestgenerator.pas
+++ b/avx512-0037785/tests/utils/avx/asmtestgenerator.pas
@@ -39,6 +39,7 @@ type
TOpMode = (omUnknown,
omKXM, omKYM, omKZM,
omKXB32, omKXB64, omKYB32, omKYB64, omKZB32, omKZB64,
+ omKMI, omKB32I, omKB64I,
omXXM, omXXB32, omXXB64, omXMI, omXB32I, omXB64I,
omYYM, omYYB32, omYYB64, omYMI, omYB32I, omYB64I,
omZZM, omZZB32, omZZB64, omZMI, omZB32I, omZB64I);
@@ -4810,6 +4811,15 @@ begin
(OItem2.OpTyp = otZMMReg) and
(OItem3.OpTyp = otB64) then OpMode := omKZB64
+ else if (OItem1.OpTyp = otKReg) and
+ (OItem2.OpTyp in MEMTYPES) and
+ (OItem3.OpTyp = otIMM8) then OpMode := omKMI
+ else if (OItem1.OpTyp = otKReg) and
+ (OItem2.OpTyp = otB32) and
+ (OItem3.OpTyp = otIMM8) then OpMode := omKB32I
+ else if (OItem1.OpTyp = otKReg) and
+ (OItem2.OpTyp = otB64) and
+ (OItem3.OpTyp = otIMM8) then OpMode := omKB64I
else if (OItem1.OpTyp = otXMMReg) and
(OItem2.OpTyp = otXMMReg) and
@@ -4950,7 +4960,7 @@ begin
else sMRef := '';
end;
- if ParseBaseIndexReg(OItem3.Values[il_Op3], sBaseReg, sIndexReg) then
+ if ParseBaseIndexReg(sMRef, sBaseReg, sIndexReg) then
begin
result.Add(format('%20s %s', [' pop', sBaseReg]));
result.Add(format('%20s %s', [' push', sBaseReg]));
@@ -4988,7 +4998,20 @@ begin
result.Add(AsmCodeBlockCompare(iAsmCounter, cmXORTestNZ));
end;
+ omKMI: begin
+ result.Add(format('%20s%6s,%6s + $2000, %s', [aInst, 'K2', OItem2.Values[il_Op2], OItem3.Values[il_Op3] ]));
+ result.Add(format('%20s%6s,%6s, %s', ['kxorq', 'K2', OItem1.Values[il_Op1], 'K2']));
+ result.Add(AsmCodeBlockCompare(iAsmCounter, cmXORTestNZ));
+ end;
+ omKB32I,
+ omKB64I:
+ begin
+ result.Add(format('%20s%6s,%6s + $2000, %s', [aInst, 'K2', OItem2.Values[il_Op2], OItem3.Values[il_Op3] ]));
+ result.Add(format('%20s%6s,%6s, %s', ['kxorq', 'K2', OItem1.Values[il_Op1], 'K2']));
+
+ result.Add(AsmCodeBlockCompare(iAsmCounter, cmXORTestNZ));
+ end;
omXB32I,
omXB64I: begin
sMREF := OItem2.Values[il_Op2];