avxtestgenerator: add new commandline param '-m', create only these testfile(s)

git-svn-id: branches/tg74/avx512-0037785@47864 -
This commit is contained in:
tg74 2020-12-28 04:56:47 +00:00 committed by Michaël Van Canneyt
parent 17cf72ff2d
commit 6d1553984e
4 changed files with 101 additions and 69 deletions

View File

@ -18,13 +18,13 @@ type
protected
procedure Init;
function InternalMakeTestFiles(aMRef, aX64, aAVX512, aSAE: boolean; aDestPath, aFileExt: String; aOpCodeList, aHeaderList, aFooterList: TStringList): boolean;
function InternalMakeTestFiles(aMRef, aX64, aAVX512, aSAE: boolean; aDestPath, aFilemask, aFileExt: String; aOpCodeList, aHeaderList, aFooterList: TStringList): boolean;
public
constructor Create;
destructor Destroy; override;
function MakeTestFiles(aTyp: TTestFileTyp; aX64, aAVX512, aSAE: boolean; aDestPath: String): boolean;
function MakeTestFiles(aTyp: TTestFileTyp; aX64, aAVX512, aSAE: boolean; aDestPath, aFilemask: String): boolean;
procedure ListMemRefState;
// function MakeTestFilesMREF(aTyp: TTestFileTyp; aX64, aAVX512, aSAE: boolean; aDestPath: String): boolean;
@ -924,9 +924,9 @@ begin
FOpCodeList.Add('vpextrd,1,1,1,RM32,XMMREG,IMM8,');
FOpCodeList.Add('vpextrq,1,1,1,RM64,XMMREG,IMM8,');
FOpCodeList.Add('vpextrw,1,1,1,MEM16,XMMREG,IMM8,');
FOpCodeList.Add('vpextrw,1,1,1,REG16,XMMREG,IMM8,');
//FOpCodeList.Add('vpextrw,1,1,1,REG16,XMMREG,IMM8,');
FOpCodeList.Add('vpextrw,1,1,1,REG32,XMMREG,IMM8,');
FOpCodeList.Add('vpextrw,1,1,1,REG64,XMMREG,IMM8,');
//FOpCodeList.Add('vpextrw,1,1,1,REG64,XMMREG,IMM8,');
FOpCodeList.Add('vphaddd,1,1,0,XMMREG,XMMREG,XMMRM,');
FOpCodeList.Add('vphaddd,1,1,0,YMMREG,YMMREG,YMMRM,');
FOpCodeList.Add('vphaddsw,1,1,0,XMMREG,XMMREG,XMMRM,');
@ -1401,20 +1401,20 @@ begin
FOpCodeList.Add('vpblendd,1,1,0,XMMREG,XMMREG,XMMRM,IMM8');
FOpCodeList.Add('vpbroadcastb,1,1,1,XMMREG_MZ,MEM8,,');
FOpCodeList.Add('vpbroadcastb,1,1,1,XMMREG_MZ,XMMREG,,');
FOpCodeList.Add('vpbroadcastb,1,1,1,XMMREG_MZ,REG8,,');
//FOpCodeList.Add('vpbroadcastb,1,1,1,XMMREG_MZ,REG8,,');
FOpCodeList.Add('vpbroadcastb,1,1,1,XMMREG_MZ,REG32,,');
FOpCodeList.Add('vpbroadcastb,1,1,1,XMMREG_MZ,REG64,,');
//FOpCodeList.Add('vpbroadcastb,1,1,1,XMMREG_MZ,REG64,,');
//FOpCodeList.Add('vpbroadcastb,1,1,1,XMMREG_MZ,REG16,,');
FOpCodeList.Add('vpbroadcastb,1,1,1,YMMREG_MZ,MEM8,,');
FOpCodeList.Add('vpbroadcastb,1,1,1,YMMREG_MZ,XMMREG,,');
FOpCodeList.Add('vpbroadcastb,1,1,1,YMMREG_MZ,REG8,,');
//FOpCodeList.Add('vpbroadcastb,1,1,1,YMMREG_MZ,REG8,,');
FOpCodeList.Add('vpbroadcastb,1,1,1,YMMREG_MZ,REG32,,');
FOpCodeList.Add('vpbroadcastb,1,1,1,YMMREG_MZ,REG64,,');
//FOpCodeList.Add('vpbroadcastb,1,1,1,YMMREG_MZ,REG64,,');
//FOpCodeList.Add('vpbroadcastb,1,1,1,YMMREG_MZ,REG16,,');
FOpCodeList.Add('vpbroadcastb,1,1,1,ZMMREG_MZ,MEM8,,');
FOpCodeList.Add('vpbroadcastb,1,1,1,ZMMREG_MZ,REG8,,');
//FOpCodeList.Add('vpbroadcastb,1,1,1,ZMMREG_MZ,REG8,,');
FOpCodeList.Add('vpbroadcastb,1,1,1,ZMMREG_MZ,REG32,,');
FOpCodeList.Add('vpbroadcastb,1,1,1,ZMMREG_MZ,REG64,,');
//FOpCodeList.Add('vpbroadcastb,1,1,1,ZMMREG_MZ,REG64,,');
//FOpCodeList.Add('vpbroadcastb,1,1,1,ZMMREG_MZ,REG16,,');
FOpCodeList.Add('vpbroadcastb,1,1,1,ZMMREG_MZ,XMMREG,,');
FOpCodeList.Add('vpbroadcastd,1,1,1,XMMREG_MZ,MEM32,,');
@ -1437,18 +1437,18 @@ begin
FOpCodeList.Add('vpbroadcastq,1,1,1,ZMMREG_MZ,XMMREG,,');
FOpCodeList.Add('vpbroadcastw,1,1,1,XMMREG_MZ,MEM16,');
FOpCodeList.Add('vpbroadcastw,1,1,1,XMMREG_MZ,XMMREG,,');
FOpCodeList.Add('vpbroadcastw,1,1,1,XMMREG_MZ,REG16,');
//FOpCodeList.Add('vpbroadcastw,1,1,1,XMMREG_MZ,REG16,');
FOpCodeList.Add('vpbroadcastw,1,1,1,XMMREG_MZ,REG32,,');
FOpCodeList.Add('vpbroadcastw,1,1,1,XMMREG_MZ,REG64,,');
//FOpCodeList.Add('vpbroadcastw,1,1,1,XMMREG_MZ,REG64,,');
FOpCodeList.Add('vpbroadcastw,1,1,1,YMMREG_MZ,MEM16,');
FOpCodeList.Add('vpbroadcastw,1,1,1,YMMREG_MZ,XMMREG,,');
FOpCodeList.Add('vpbroadcastw,1,1,1,YMMREG_MZ,REG16,');
//FOpCodeList.Add('vpbroadcastw,1,1,1,YMMREG_MZ,REG16,');
FOpCodeList.Add('vpbroadcastw,1,1,1,YMMREG_MZ,REG32,,');
FOpCodeList.Add('vpbroadcastw,1,1,1,YMMREG_MZ,REG64,,');
//FOpCodeList.Add('vpbroadcastw,1,1,1,YMMREG_MZ,REG64,,');
FOpCodeList.Add('vpbroadcastw,1,1,1,ZMMREG_MZ,MEM16,');
FOpCodeList.Add('vpbroadcastw,1,1,1,ZMMREG_MZ,REG16,');
//FOpCodeList.Add('vpbroadcastw,1,1,1,ZMMREG_MZ,REG16,');
FOpCodeList.Add('vpbroadcastw,1,1,1,ZMMREG_MZ,REG32,,');
FOpCodeList.Add('vpbroadcastw,1,1,1,ZMMREG_MZ,REG64,,');
//FOpCodeList.Add('vpbroadcastw,1,1,1,ZMMREG_MZ,REG64,,');
FOpCodeList.Add('vpbroadcastw,1,1,1,ZMMREG_MZ,XMMREG,,');
FOpCodeList.Add('vperm2i128,1,1,0,YMMREG,YMMREG,YMMRM,IMM8');
FOpCodeList.Add('vpermd,1,1,1,YMMREG_MZ,YMMREG,YMMRM,');
@ -1530,7 +1530,7 @@ begin
FOpCodeList.Add('vgatherqpd,1,1,1,XMMREG_M,XMEM64,,');
FOpCodeList.Add('vgatherqpd,1,1,0,YMMREG,YMEM64,YMMREG,');
FOpCodeList.Add('vgatherqpd,1,1,1,YMMREG_M,YMEM64,,');
FOpCodeList.Add('vgatherqpd,1,1,1,ZMMREG_M,ZMEM32,,');
FOpCodeList.Add('vgatherqpd,1,1,1,ZMMREG_M,ZMEM64,,');
FOpCodeList.Add('vgatherqps,1,1,0,XMMREG,XMEM32,XMMREG,');
FOpCodeList.Add('vgatherqps,1,1,0,XMMREG,YMEM32,XMMREG,');
FOpCodeList.Add('vgatherqps,1,1,1,XMMREG_M,XMEM32,,');
@ -3257,18 +3257,20 @@ begin
FOpCodeList.Add('VPSHUFBITQMB,1,1,1,kreg_m,zmmreg,zmmrm,');
end;
function TAVXTestGenerator.InternalMakeTestFiles(aMRef, aX64, aAVX512, aSAE: boolean; aDestPath, aFileExt: String;
function TAVXTestGenerator.InternalMakeTestFiles(aMRef, aX64, aAVX512, aSAE: boolean; aDestPath, aFilemask, aFileExt: String;
aOpCodeList, aHeaderList, aFooterList: TStringList): boolean;
var
i: integer;
i,j: integer;
sData: string;
sDestFile: string;
sLocalVarDataTyp: string;
sl: TStringList;
slAsm: TStringList;
slLocalHeader: TStringList;
slFilemask: TStringList;
LastOpCode: String;
NewOpCode: String;
FoundNewOpcode: boolean;
function SaveFile(aAsmList: TStringList; aOpcode, aDestPath, aFileExt: String; aHeaderList, aFooterList: TStringList): boolean;
begin
@ -3292,10 +3294,13 @@ begin
try
slAsm := TStringList.Create;
try
slFilemask := TStringList.Create;
try
slFilemask.CommaText := ansilowercase(aFilemask);
LastOpCode := '';
for i := 0 to aOpCodeList.Count - 1 do
//for i := 0 to 0 do
begin
sl.Clear;
sl.CommaText := aOpCodeList[i];
@ -3303,6 +3308,17 @@ begin
while sl.Count < 8 do sl.Add('');
NewOpCode := ansilowercase(sl[0]);
FoundNewOpcode := false;
for j := 0 to slFilemask.Count - 1 do
begin
if Pos(slFilemask[j], NewOpCode) = 1 then
FoundNewOpcode := true;
end;
if not(FoundNewOpcode) and (slFilemask.Count > 0) then
NewOpcode := '';
if NewOpCode <> '' then
begin
if (not(aX64) and (sl[1] = '1')) or // i386
@ -3348,6 +3364,9 @@ begin
end;
end;
end;
finally
FreeAndNil(slFilemask);
end;
finally
FreeAndNil(slAsm);
end;
@ -3357,7 +3376,7 @@ begin
end;
function TAVXTestGenerator.MakeTestFiles(aTyp: TTestFileTyp; aX64, aAVX512, aSAE: boolean;
aDestPath: String): boolean;
aDestPath, aFilemask: String): boolean;
var
slHeader: TStringList;
slFooter: TStringList;
@ -3578,7 +3597,7 @@ begin
end;
end;
InternalMakeTestFiles(aTyp = tfFPCMRef, aX64, aAVX512, aSAE, aDestPath, Fileext, FOpCodeList, slHeader, slFooter);
InternalMakeTestFiles(aTyp = tfFPCMRef, aX64, aAVX512, aSAE, aDestPath, aFilemask, Fileext, FOpCodeList, slHeader, slFooter);
finally
FreeAndNil(slFooter);

View File

@ -22,13 +22,13 @@
</PublishOptions>
<RunParams>
<local>
<CommandLineParams Value="-l"/>
<CommandLineParams Value="-px8664 -ffpc -o\home\torsten\tmp\fpc\fpc -z -mvgatherqpd"/>
</local>
<FormatVersion Value="2"/>
<Modes Count="1">
<Mode0 Name="default">
<local>
<CommandLineParams Value="-l"/>
<CommandLineParams Value="-px8664 -ffpc -o\home\torsten\tmp\fpc\fpc -z -mvgatherqpd"/>
</local>
</Mode0>
</Modes>
@ -60,7 +60,15 @@
<Filename Value="avxtestgenerator"/>
</Target>
<SearchPaths>
<IncludeFiles Value="$(ProjOutDir)"/>
<UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/>
</SearchPaths>
</CompilerOptions>
<Debugging>
<Exceptions Count="1">
<Item1>
<Name Value="Unknown"/>
</Item1>
</Exceptions>
</Debugging>
</CONFIG>

View File

@ -44,6 +44,7 @@ begin
writeln('-h help');
writeln('-f [fpc,fpcmref,nasm,fasm,fpcinc] outputformat');
writeln('-l list opcode-memrefsize-states');
writeln('-m create only these testfile(s) (e.g. -mvgather,vpgather)');
writeln('-o destination path');
writeln('-p [x8664] codegenerator for x86_64 platform');
writeln('-z avx512');
@ -56,11 +57,11 @@ begin
//exit;
case OutputFormat of
'f': MakeTestFiles(tfFPC, x64, AVX512, false, Path);
'F': MakeTestFiles(tfFasm, x64, AVX512, false, Path);
'n': MakeTestFiles(tfNasm, x64, AVX512, false, Path);
'I': MakeTestFiles(tfFPCInc, x64, AVX512, false, Path);
'm': MakeTestFiles(tfFPCMRef, x64, AVX512, false, Path);
'f': MakeTestFiles(tfFPC, x64, AVX512, false, Path, Filemask);
'F': MakeTestFiles(tfFasm, x64, AVX512, false, Path, Filemask);
'n': MakeTestFiles(tfNasm, x64, AVX512, false, Path, Filemask);
'I': MakeTestFiles(tfFPCInc, x64, AVX512, false, Path, Filemask);
'm': MakeTestFiles(tfFPCMRef, x64, AVX512, false, Path, Filemask);
'l': ListMemRefState;
end;
end;

View File

@ -36,6 +36,7 @@ type
FOutputFormat: Char;
FPath: string;
FMemRef: boolean;
FFilemask: string;
public
constructor Create;
@ -47,6 +48,7 @@ type
property AVX512: boolean read FAVX512 write FAVX512;
property Path: string read FPath write FPath;
property MemRef: boolean read FMemref write FMemRef;
property Filemask: string read FFilemask write FFilemask;
end;
implementation
@ -63,6 +65,7 @@ begin
FOutputFormat := '?';
FPath := '';
FMemRef := false;
FFilemask := '';
end;
procedure TOptions.LoadParams;
@ -103,6 +106,7 @@ begin
else IsInvalidParam := true;
'l': FOutputFormat := 'l';
'z': FAVX512 := true;
'm': FFilemask := sValue;
'o': if sValue <> '' then
begin
FPath := IncludeTrailingBackslash(sValue);