summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortg74 <tg74@3ad0048d-3df7-0310-abae-a5850022a9f2>2021-02-02 16:24:36 +0000
committertg74 <tg74@3ad0048d-3df7-0310-abae-a5850022a9f2>2021-02-02 16:24:36 +0000
commitcc277474e909e3626a72f09aa6918ecefd1388f4 (patch)
tree56d38eee50df26fc71969eb0670497901978551b
parent59d229d0d9f46f2e56c792ec344d02591e3615f0 (diff)
downloadfpc-cc277474e909e3626a72f09aa6918ecefd1388f4.tar.gz
avxtestgenerator: working on new testmethods avx512-memref-operands - 'compressed disp8*N'
git-svn-id: https://svn.freepascal.org/svn/fpc/branches/tg74@48500 3ad0048d-3df7-0310-abae-a5850022a9f2
-rw-r--r--avx512-0037785/tests/utils/avx/asmtestgenerator.pas24
-rw-r--r--avx512-0037785/tests/utils/avx/avxopcodes.pas5
2 files changed, 20 insertions, 9 deletions
diff --git a/avx512-0037785/tests/utils/avx/asmtestgenerator.pas b/avx512-0037785/tests/utils/avx/asmtestgenerator.pas
index 84fff5a2dd..37c48e060a 100644
--- a/avx512-0037785/tests/utils/avx/asmtestgenerator.pas
+++ b/avx512-0037785/tests/utils/avx/asmtestgenerator.pas
@@ -3581,6 +3581,7 @@ var
iAsmCounter: integer;
sSuffix: string;
+ sReg: string;
sl_Operand: String;
sl_Inst : String;
sRegCombi: String;
@@ -4900,15 +4901,20 @@ begin
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', ['vpcmpeqq', 'K2', OItem1.Values[il_Op1], 'XMM1']));
- result.Add(format('%20s%6s', [' push', 'EDX']));
- result.Add(format('%20s%6s,%s', [' mov', 'EDX', str(iAsmCounter)]));
- result.Add(format('%20s%6s', [' push', 'EDX']));
- result.Add(format('%20s%6s,%6s', [' kmovd', 'EDX', 'K2']));
- result.Add(format('%20s%6s,%6s', [' cmp', 'EDX', '$03']));
- result.Add(format('%20s%6s', [' pop', 'EDX']));
- result.Add(format('%20s%6s', [' jne', '@@CHECKRESULT']));
- result.Add(format('%20s%6s', [' pop', 'EDX']));
+ result.Add(format('%20s%6s,%6s, %s', ['vpcmpeqw', 'K2', OItem1.Values[il_Op1], 'XMM1']));
+
+ case Fx64 of
+ true: sReg := 'RAX';
+ else sReg := 'EAX';
+ end;
+
+ result.Add(format('%20s%6s', [' push', sReg]));
+ result.Add(format('%20s%6s,%s', [' mov', sReg, str(iAsmCounter)]));
+ result.Add(format('%20s%6s,%s', [' kmovd', 'K7', 'EAX']));
+ result.Add(format('%20s%6s', [' pop', sReg]));
+
+ result.Add(format('%20s%6s,%6s', ['kortestb', 'K1', 'K2']));
+ result.Add(format('%20s%6s', [' jnc', '@@CHECKRESULT']));
result.Add('');
end;
omXXB32,
diff --git a/avx512-0037785/tests/utils/avx/avxopcodes.pas b/avx512-0037785/tests/utils/avx/avxopcodes.pas
index fd2cca74bc..da4b76801a 100644
--- a/avx512-0037785/tests/utils/avx/avxopcodes.pas
+++ b/avx512-0037785/tests/utils/avx/avxopcodes.pas
@@ -3722,9 +3722,14 @@ begin
slHeader.Add(' push eax');
end;
+
for i := 1 to 10 do
slHeader.Add('NOP');
+ slFooter.Add(' xor eax, eax');
+ slFooter.Add(' @@CHECKRESULT: ');
+
+
if aX64 then slFooter.Add(' pop rax')
else slFooter.Add(' pop eax');