diff options
author | tg74 <tg74@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2021-02-24 16:29:26 +0000 |
---|---|---|
committer | tg74 <tg74@3ad0048d-3df7-0310-abae-a5850022a9f2> | 2021-02-24 16:29:26 +0000 |
commit | f63c66ddf75de9ad5b0f516d761267fc5336ab92 (patch) | |
tree | 7cb691e10cd66f6aee39c59260a5b6752524c2ef | |
parent | 0e86d26d52d3da324adb8bd85bdd33d9c44e76f6 (diff) | |
download | fpc-f63c66ddf75de9ad5b0f516d761267fc5336ab92.tar.gz |
working on new testmethods avx512-memref-operands - 'compressed disp8*N'
git-svn-id: https://svn.freepascal.org/svn/fpc/branches/tg74@48804 3ad0048d-3df7-0310-abae-a5850022a9f2
-rw-r--r-- | avx512-0037785/tests/utils/avx/asmtestgenerator.pas | 40 |
1 files changed, 34 insertions, 6 deletions
diff --git a/avx512-0037785/tests/utils/avx/asmtestgenerator.pas b/avx512-0037785/tests/utils/avx/asmtestgenerator.pas index cd06f4acef..9658f6defe 100644 --- a/avx512-0037785/tests/utils/avx/asmtestgenerator.pas +++ b/avx512-0037785/tests/utils/avx/asmtestgenerator.pas @@ -40,6 +40,7 @@ type omKXM, omKYM, omKZM, omKXB32, omKXB64, omKYB32, omKYB64, omKZB32, omKZB64, omKMI, omKB32I, omKB64I, + omMXI, omMYI, omMZI, omXXM, omXXB32, omXXB64, omXMI, omXB32I, omXB64I, omYYM, omYYB32, omYYB64, omYMI, omYB32I, omYB64I, omZZM, omZZB32, omZZB64, omZMI, omZB32I, omZB64I); @@ -4811,16 +4812,26 @@ begin (OItem2.OpTyp = otZMMReg) and (OItem3.OpTyp = otB64) then OpMode := omKZB64 - else if (OItem1.OpTyp = otKReg) and + 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 + 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 + else if (OItem1.OpTyp = otKReg) and + (OItem2.OpTyp = otB64) and (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 (OItem2.OpTyp = otXMMReg) and (OItem3.OpTyp in MEMTYPES) then OpMode := omXXM @@ -4842,7 +4853,7 @@ begin 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 @@ -4969,6 +4980,13 @@ begin 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', ''])); + + end; + //result.Add(format('%-20s%s', [aInst, sl_RegCombi])); result.Add(format('%-20s %6s', [sInstruction, sRegCombi])); @@ -5012,6 +5030,16 @@ begin 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, %6s, %s', ['vpcmpeqw', 'K2', 'XMM0', 'XMM1'])); + + result.Add(AsmCodeBlockCompare(iAsmCounter, cmKORTESTNC)); + end; omXB32I, omXB64I: begin sMREF := OItem2.Values[il_Op2]; |