mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-03 10:10:36 +02:00
avxtestgenerator: working on new tests for compressed disp8*N
git-svn-id: branches/tg74/avx512-0037785@48505 -
This commit is contained in:
parent
cf1fa4cf7f
commit
d13d625090
@ -94,6 +94,7 @@ type
|
||||
|
||||
procedure MemRegBaseIndexCombi(const aPrefix, aSuffix: String; aSLBaseReg, aSLIndexReg, aRList: TStringList);
|
||||
procedure VectorMemRegBaseIndexCombi(const aPrefix, aSuffix: String; aSLBaseReg, aSLIndexReg, aRList: TStringList);
|
||||
function ParseBaseIndexReg(const aOp: string; var aBaseReg, aIndexReg: string): boolean;
|
||||
|
||||
function InternalCalcTestData(const aInst, aOp1, aOp2, aOp3, aOp4: String): TStringList;
|
||||
function InternalCalcTestDataMREF(const aInst, aOp1, aOp2, aOp3, aOp4: String): TStringList;
|
||||
@ -3589,6 +3590,9 @@ var
|
||||
sRegCombi2: String;
|
||||
sRegCombi3: String;
|
||||
sRegCombi4: String;
|
||||
sBaseReg : String;
|
||||
sIndexReg : String;
|
||||
|
||||
sl_Prefix: String;
|
||||
UsePrefix: boolean;
|
||||
il_Operands: integer;
|
||||
@ -4900,6 +4904,11 @@ begin
|
||||
result.Add('');
|
||||
end;
|
||||
omXXM: begin
|
||||
if ParseBaseIndexReg(OItem3.Values[il_Op3], sBaseReg, sIndexReg) then
|
||||
begin
|
||||
|
||||
end;
|
||||
|
||||
result.Add(format('%20s%6s,%6s, %s + $00', [aInst, 'XMM1', 'XMM1', OItem3.Values[il_Op3] ]));
|
||||
result.Add(format('%20s%6s,%6s, %s', ['vpcmpeqw', 'K2', OItem1.Values[il_Op1], 'XMM1']));
|
||||
|
||||
@ -5459,6 +5468,54 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
function TAsmTestGenerator.ParseBaseIndexReg(const aOp: string; var aBaseReg,
|
||||
aIndexReg: string): boolean;
|
||||
var
|
||||
iStartPos: integer;
|
||||
iEndPos: integer;
|
||||
iPos: integer;
|
||||
sOp: string;
|
||||
sBaseReg: string;
|
||||
sIndexReg: string;
|
||||
begin
|
||||
result := false;
|
||||
|
||||
iStartPos := Pos('[', aOp);
|
||||
iEndPos := Pos(']', aOp);
|
||||
|
||||
if (iStartPos > 0) and
|
||||
(iEndPos > 0) and
|
||||
(iStartPos < iEndPos) then
|
||||
begin
|
||||
sOp := trim(copy(aOp, iStartPos + 1, iEndPos - iStartPos - 1));
|
||||
|
||||
with TStringList.Create do
|
||||
try
|
||||
CommaText := StringReplace(sOp, '+', ',', [rfReplaceAll]);
|
||||
|
||||
while Count < 2 do Add('');
|
||||
|
||||
sBaseReg := trim(Strings[0]);
|
||||
|
||||
if (FReg32Base.IndexOf(sBasereg) >= 0) or
|
||||
(FReg64Base.IndexOf(sBasereg) >= 0) or
|
||||
(FReg6432Base.IndexOf(sBasereg) >= 0) then
|
||||
aBaseReg := sBaseReg;
|
||||
|
||||
sIndexReg := trim(Strings[1]);
|
||||
|
||||
if (FReg32Index.IndexOf(sIndexReg) >= 0) or
|
||||
(FReg64Index.IndexOf(sIndexReg) >= 0) or
|
||||
(FReg6432Index.IndexOf(sIndexReg) >= 0) then
|
||||
aIndexReg := sIndex;
|
||||
|
||||
result := trim(aBasereg) <> '';
|
||||
finally
|
||||
Free;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
class procedure TAsmTestGenerator.CalcTestData(aX64, aAVX512, aSAE: boolean; const aInst, aOp1, aOp2, aOp3,
|
||||
aOp4: String; aSL: TStringList);
|
||||
var
|
||||
|
Loading…
Reference in New Issue
Block a user