diff options
author | tg74 <tg74@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2021-02-25 05:30:42 +0000 |
---|---|---|
committer | tg74 <tg74@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2021-02-25 05:30:42 +0000 |
commit | c3dd955625063832dbe3a626fbd4e818a6a0e6de (patch) | |
tree | cca4e299a291f02900ed7acc3b0ace1f3ec092b4 | |
parent | f63c66ddf75de9ad5b0f516d761267fc5336ab92 (diff) | |
download | fpc-c3dd955625063832dbe3a626fbd4e818a6a0e6de.tar.gz |
avxtestgenerator: working on new tests for compressed disp8*N
git-svn-id: https://svn.freepascal.org/svn/fpc/branches/tg74@48807 3ad0048d-3df7-0310-abae-a5850022a9f2
-rw-r--r-- | avx512-0037785/tests/utils/avx/asmtestgenerator.pas | 105 |
1 files changed, 67 insertions, 38 deletions
diff --git a/avx512-0037785/tests/utils/avx/asmtestgenerator.pas b/avx512-0037785/tests/utils/avx/asmtestgenerator.pas index 9658f6defe..4e223be760 100644 --- a/avx512-0037785/tests/utils/avx/asmtestgenerator.pas +++ b/avx512-0037785/tests/utils/avx/asmtestgenerator.pas @@ -3766,7 +3766,7 @@ var case aComparemode of cmKORTESTNC: begin - Add(format('%20s%6s, %s', ['kortestb', 'K1', 'K2'])); + Add(format('%20s%6s, %s', ['ktestb', 'K2', 'K1'])); Add(format('%20s %6s', [' jnc', '@@CHECKRESULT'])); end; cmXORTestNZ: begin @@ -4978,15 +4978,44 @@ begin if trim(sIndexReg) <> '' then result.Add(format('%20s%6s, %s', [' xor', sIndexReg, sIndexReg])); - end; - if OpMode in [omMXI, omMYI, omMZI] then - begin - result.Add(format('%-20s %6s', ['push', ''])); - result.Add(format('%-20s %6s', ['pop', ''])); + if OpMode in [omMXI, omMYI, omMZI] then + begin + case Fx64 of + true: begin + result.Add(format('%20s %6s', ['push', 'RDI'])); + result.Add(format('%20s %6s', ['push', 'RCX'])); + result.Add(format('%20s %6s', ['push', 'RAX'])); + + result.Add(format('%20s %6s', ['push', sBaseReg])); + result.Add(format('%20s %6s', ['pop', 'RDI'])); + result.Add(format('%20s %6s', ['mov', 'RCX, sizeof(DataBlock)'])); + result.Add(format('%20s %6s, %s', ['xor', 'RAX', 'RAX'])); + result.Add(format('%20s ', ['rep stosb'])); + result.Add(format('%20s %6s', ['pop', 'RAX'])); + result.Add(format('%20s %6s', ['pop', 'RCX'])); + result.Add(format('%20s %6s', ['pop', 'RDI'])); + end; + else begin + result.Add(format('%20s %6s', ['push', 'EDI'])); + result.Add(format('%20s %6s', ['push', 'ECX'])); + result.Add(format('%20s %6s', ['push', 'EAX'])); + + result.Add(format('%20s %6s', ['push', sBaseReg])); + result.Add(format('%20s %6s', ['pop', 'EDI'])); + result.Add(format('%20s %6s', ['mov', 'ECX, sizeof(DataBlock)'])); + result.Add(format('%20s %6s, %s', ['xor', 'EAX', 'EAX'])); + result.Add(format('%20s ', ['rep stosb'])); + result.Add(format('%20s %6s', ['pop', 'EAX'])); + result.Add(format('%20s %6s', ['pop', 'ECX'])); + result.Add(format('%20s %6s', ['pop', 'EDI'])); + end; + end; + end; end; + //result.Add(format('%-20s%s', [aInst, sl_RegCombi])); result.Add(format('%-20s %6s', [sInstruction, sRegCombi])); @@ -4995,8 +5024,8 @@ begin omKXM, omKYM, omKZM: begin - result.Add(format('%20s%6s,%6s, %s + $2000', [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(format('%20s %6s,%6s, %s + $2000', [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; @@ -5011,32 +5040,32 @@ begin // 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 + $2000', [aInst, 'K2', OItem2.Values[il_Op2], sMREF])); - result.Add(format('%20s%6s,%6s, %s', ['kxorq', 'K2', OItem1.Values[il_Op1], 'K2'])); + result.Add(format('%20s %6s,%6s, %s + $2000', [aInst, 'K2', OItem2.Values[il_Op2], sMREF])); + result.Add(format('%20s %6s,%6s, %s', ['kxorq', 'K2', OItem1.Values[il_Op1], 'K2'])); 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(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(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; 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 + $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(format('%20s %6s, %6s, %s', ['vpcmpeqw', 'K2', 'XMM0', 'XMM1'])); result.Add(AsmCodeBlockCompare(iAsmCounter, cmKORTESTNC)); end; @@ -5054,8 +5083,8 @@ begin end; omXXM: begin - result.Add(format('%20s%6s,%6s, %s + $2000', [aInst, 'XMM1', 'XMM1', OItem3.Values[il_Op3] ])); - result.Add(format('%20s%6s,%6s, %s', ['vpcmpeqw', 'K2', OItem1.Values[il_Op1], 'XMM1'])); + result.Add(format('%20s %6s,%6s, %s + $2000', [aInst, 'XMM1', 'XMM1', OItem3.Values[il_Op3] ])); + result.Add(format('%20s %6s,%6s, %s', ['vpcmpeqw', 'K2', OItem1.Values[il_Op1], 'XMM1'])); result.Add(AsmCodeBlockCompare(iAsmCounter, cmKORTESTNC)); end; @@ -5066,14 +5095,14 @@ begin // 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 + $2000', [aInst, 'XMM1', 'XMM1', sMREF])); - result.Add(format('%20s%6s,%6s, %s', ['vpcmpeqw', 'K2', OItem1.Values[il_Op1], 'XMM1'])); + result.Add(format('%20s %6s,%6s, %s + $2000', [aInst, 'XMM1', 'XMM1', sMREF])); + result.Add(format('%20s %6s,%6s, %s', ['vpcmpeqw', 'K2', OItem1.Values[il_Op1], 'XMM1'])); result.Add(AsmCodeBlockCompare(iAsmCounter, cmKORTESTNC)); end; omXMI: begin - result.Add(format('%20s%6s,%6s + $2000, %s', [aInst, 'XMM1', OItem2.Values[il_Op2], OItem3.Values[il_Op3]])); - result.Add(format('%20s%6s,%6s, %s', ['vpcmpeqw', 'K2', OItem1.Values[il_Op1], 'XMM1'])); + result.Add(format('%20s %6s,%6s + $2000, %s', [aInst, 'XMM1', OItem2.Values[il_Op2], OItem3.Values[il_Op3]])); + result.Add(format('%20s %6s,%6s, %s', ['vpcmpeqw', 'K2', OItem1.Values[il_Op1], 'XMM1'])); result.Add(AsmCodeBlockCompare(iAsmCounter, cmKORTESTNC)); end; @@ -5108,8 +5137,8 @@ begin //result.Add(format('%20s%6s,%6s, %s', ['kandq', 'K1', 'K1', 'K2'])); //result.Add(''); - result.Add(format('%20s%6s,%6s, %s + $2000', [aInst, 'YMM1', 'YMM1', OItem3.Values[il_Op3] ])); - result.Add(format('%20s%6s,%6s, %s', ['vpcmpeqd', 'K2', OItem1.Values[il_Op1], 'YMM1'])); + result.Add(format('%20s %6s,%6s, %s + $2000', [aInst, 'YMM1', 'YMM1', OItem3.Values[il_Op3] ])); + result.Add(format('%20s %6s,%6s, %s', ['vpcmpeqd', 'K2', OItem1.Values[il_Op1], 'YMM1'])); result.Add(AsmCodeBlockCompare(iAsmCounter, cmKORTESTNC)); end; @@ -5127,8 +5156,8 @@ begin //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(''); - result.Add(format('%20s%6s,%6s, %s + $2000', [aInst, 'YMM1', 'YMM1', sMREF])); - result.Add(format('%20s%6s,%6s, %s', ['vpcmpeqd', 'K2', OItem1.Values[il_Op1], 'YMM1'])); + result.Add(format('%20s %6s,%6s, %s + $2000', [aInst, 'YMM1', 'YMM1', sMREF])); + result.Add(format('%20s %6s,%6s, %s', ['vpcmpeqd', 'K2', OItem1.Values[il_Op1], 'YMM1'])); result.Add(AsmCodeBlockCompare(iAsmCounter, cmKORTESTNC)); @@ -5141,8 +5170,8 @@ begin //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(''); - result.Add(format('%20s%6s,%6s + $2000, %s', [aInst, 'YMM1', OItem2.Values[il_Op2], OItem3.Values[il_Op3]])); - result.Add(format('%20s%6s,%6s, %s', ['vpcmpeqd', 'K2', OItem1.Values[il_Op1], 'YMM1'])); + result.Add(format('%20s %6s,%6s + $2000, %s', [aInst, 'YMM1', OItem2.Values[il_Op2], OItem3.Values[il_Op3]])); + result.Add(format('%20s %6s,%6s, %s', ['vpcmpeqd', 'K2', OItem1.Values[il_Op1], 'YMM1'])); result.Add(AsmCodeBlockCompare(iAsmCounter, cmKORTESTNC)); end; @@ -5165,8 +5194,8 @@ begin //result.Add(format('%20s%6s,%6s, %s', ['kandq', 'K1', 'K1', 'K2'])); //result.Add(''); - result.Add(format('%20s%6s,%6s + $2000, %s', [aInst, 'ZMM1', sMREF, OItem3.Values[il_Op3]])); - result.Add(format('%20s%6s,%6s, %s', ['vpcmpeqq', 'K2', OItem1.Values[il_Op1], 'ZMM1'])); + result.Add(format('%20s %6s,%6s + $2000, %s', [aInst, 'ZMM1', sMREF, OItem3.Values[il_Op3]])); + result.Add(format('%20s %6s,%6s, %s', ['vpcmpeqq', 'K2', OItem1.Values[il_Op1], 'ZMM1'])); result.Add(AsmCodeBlockCompare(iAsmCounter, cmKORTESTNC)); @@ -5186,8 +5215,8 @@ begin //result.Add(format('%20s%6s,%6s, %s', ['kandq', 'K1', 'K1', 'K2'])); //result.Add(''); - result.Add(format('%20s%6s,%6s, %s + $2000', [aInst, 'ZMM1', 'ZMM1', OItem3.Values[il_Op3] ])); - result.Add(format('%20s%6s,%6s, %s', ['vpcmpeqq', 'K2', OItem1.Values[il_Op1], 'ZMM1'])); + result.Add(format('%20s %6s,%6s, %s + $2000', [aInst, 'ZMM1', 'ZMM1', OItem3.Values[il_Op3] ])); + result.Add(format('%20s %6s,%6s, %s', ['vpcmpeqq', 'K2', OItem1.Values[il_Op1], 'ZMM1'])); result.Add(AsmCodeBlockCompare(iAsmCounter, cmKORTESTNC)); end; @@ -5210,8 +5239,8 @@ begin //result.Add(format('%20s%6s,%6s, %s', ['kandq', 'K1', 'K1', 'K2'])); //result.Add(''); - result.Add(format('%20s%6s,%6s, %s + $2000', [aInst, 'ZMM1', 'ZMM1', sMREF])); - result.Add(format('%20s%6s,%6s, %s', ['vpcmpeqq', 'K2', OItem1.Values[il_Op1], 'ZMM1'])); + result.Add(format('%20s %6s,%6s, %s + $2000', [aInst, 'ZMM1', 'ZMM1', sMREF])); + result.Add(format('%20s %6s,%6s, %s', ['vpcmpeqq', 'K2', OItem1.Values[il_Op1], 'ZMM1'])); result.Add(AsmCodeBlockCompare(iAsmCounter, cmKORTESTNC)); @@ -5229,8 +5258,8 @@ begin //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(''); - result.Add(format('%20s%6s,%6s + $2000, %s', [aInst, 'ZMM1', OItem2.Values[il_Op2], OItem3.Values[il_Op3]])); - result.Add(format('%20s%6s,%6s, %s', ['vpcmpeqq', 'K2', OItem1.Values[il_Op1], 'ZMM1'])); + result.Add(format('%20s %6s,%6s + $2000, %s', [aInst, 'ZMM1', OItem2.Values[il_Op2], OItem3.Values[il_Op3]])); + result.Add(format('%20s %6s,%6s, %s', ['vpcmpeqq', 'K2', OItem1.Values[il_Op1], 'ZMM1'])); result.Add(AsmCodeBlockCompare(iAsmCounter, cmKORTESTNC)); end; |