mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-08-18 05:49:23 +02:00
avxtestgenerator: add new commandline param '-m', create only these testfile(s)
git-svn-id: branches/tg74/avx512-0037785@47864 -
This commit is contained in:
parent
17cf72ff2d
commit
6d1553984e
@ -18,13 +18,13 @@ type
|
|||||||
protected
|
protected
|
||||||
procedure Init;
|
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
|
public
|
||||||
constructor Create;
|
constructor Create;
|
||||||
destructor Destroy; override;
|
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;
|
procedure ListMemRefState;
|
||||||
// function MakeTestFilesMREF(aTyp: TTestFileTyp; aX64, aAVX512, aSAE: boolean; aDestPath: String): boolean;
|
// 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('vpextrd,1,1,1,RM32,XMMREG,IMM8,');
|
||||||
FOpCodeList.Add('vpextrq,1,1,1,RM64,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,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,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,XMMREG,XMMREG,XMMRM,');
|
||||||
FOpCodeList.Add('vphaddd,1,1,0,YMMREG,YMMREG,YMMRM,');
|
FOpCodeList.Add('vphaddd,1,1,0,YMMREG,YMMREG,YMMRM,');
|
||||||
FOpCodeList.Add('vphaddsw,1,1,0,XMMREG,XMMREG,XMMRM,');
|
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('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,MEM8,,');
|
||||||
FOpCodeList.Add('vpbroadcastb,1,1,1,XMMREG_MZ,XMMREG,,');
|
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,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,XMMREG_MZ,REG16,,');
|
||||||
FOpCodeList.Add('vpbroadcastb,1,1,1,YMMREG_MZ,MEM8,,');
|
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,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,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,YMMREG_MZ,REG16,,');
|
||||||
FOpCodeList.Add('vpbroadcastb,1,1,1,ZMMREG_MZ,MEM8,,');
|
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,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,REG16,,');
|
||||||
FOpCodeList.Add('vpbroadcastb,1,1,1,ZMMREG_MZ,XMMREG,,');
|
FOpCodeList.Add('vpbroadcastb,1,1,1,ZMMREG_MZ,XMMREG,,');
|
||||||
FOpCodeList.Add('vpbroadcastd,1,1,1,XMMREG_MZ,MEM32,,');
|
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('vpbroadcastq,1,1,1,ZMMREG_MZ,XMMREG,,');
|
||||||
FOpCodeList.Add('vpbroadcastw,1,1,1,XMMREG_MZ,MEM16,');
|
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,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,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,MEM16,');
|
||||||
FOpCodeList.Add('vpbroadcastw,1,1,1,YMMREG_MZ,XMMREG,,');
|
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,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,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,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('vpbroadcastw,1,1,1,ZMMREG_MZ,XMMREG,,');
|
||||||
FOpCodeList.Add('vperm2i128,1,1,0,YMMREG,YMMREG,YMMRM,IMM8');
|
FOpCodeList.Add('vperm2i128,1,1,0,YMMREG,YMMREG,YMMRM,IMM8');
|
||||||
FOpCodeList.Add('vpermd,1,1,1,YMMREG_MZ,YMMREG,YMMRM,');
|
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,1,XMMREG_M,XMEM64,,');
|
||||||
FOpCodeList.Add('vgatherqpd,1,1,0,YMMREG,YMEM64,YMMREG,');
|
FOpCodeList.Add('vgatherqpd,1,1,0,YMMREG,YMEM64,YMMREG,');
|
||||||
FOpCodeList.Add('vgatherqpd,1,1,1,YMMREG_M,YMEM64,,');
|
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,XMEM32,XMMREG,');
|
||||||
FOpCodeList.Add('vgatherqps,1,1,0,XMMREG,YMEM32,XMMREG,');
|
FOpCodeList.Add('vgatherqps,1,1,0,XMMREG,YMEM32,XMMREG,');
|
||||||
FOpCodeList.Add('vgatherqps,1,1,1,XMMREG_M,XMEM32,,');
|
FOpCodeList.Add('vgatherqps,1,1,1,XMMREG_M,XMEM32,,');
|
||||||
@ -3257,18 +3257,20 @@ begin
|
|||||||
FOpCodeList.Add('VPSHUFBITQMB,1,1,1,kreg_m,zmmreg,zmmrm,');
|
FOpCodeList.Add('VPSHUFBITQMB,1,1,1,kreg_m,zmmreg,zmmrm,');
|
||||||
end;
|
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;
|
aOpCodeList, aHeaderList, aFooterList: TStringList): boolean;
|
||||||
var
|
var
|
||||||
i: integer;
|
i,j: integer;
|
||||||
sData: string;
|
sData: string;
|
||||||
sDestFile: string;
|
sDestFile: string;
|
||||||
sLocalVarDataTyp: string;
|
sLocalVarDataTyp: string;
|
||||||
sl: TStringList;
|
sl: TStringList;
|
||||||
slAsm: TStringList;
|
slAsm: TStringList;
|
||||||
slLocalHeader: TStringList;
|
slLocalHeader: TStringList;
|
||||||
|
slFilemask: TStringList;
|
||||||
LastOpCode: String;
|
LastOpCode: String;
|
||||||
NewOpCode: String;
|
NewOpCode: String;
|
||||||
|
FoundNewOpcode: boolean;
|
||||||
|
|
||||||
function SaveFile(aAsmList: TStringList; aOpcode, aDestPath, aFileExt: String; aHeaderList, aFooterList: TStringList): boolean;
|
function SaveFile(aAsmList: TStringList; aOpcode, aDestPath, aFileExt: String; aHeaderList, aFooterList: TStringList): boolean;
|
||||||
begin
|
begin
|
||||||
@ -3292,61 +3294,78 @@ begin
|
|||||||
try
|
try
|
||||||
slAsm := TStringList.Create;
|
slAsm := TStringList.Create;
|
||||||
try
|
try
|
||||||
LastOpCode := '';
|
slFilemask := TStringList.Create;
|
||||||
|
try
|
||||||
|
slFilemask.CommaText := ansilowercase(aFilemask);
|
||||||
|
|
||||||
for i := 0 to aOpCodeList.Count - 1 do
|
LastOpCode := '';
|
||||||
//for i := 0 to 0 do
|
|
||||||
begin
|
|
||||||
sl.Clear;
|
|
||||||
sl.CommaText := aOpCodeList[i];
|
|
||||||
|
|
||||||
while sl.Count < 8 do sl.Add('');
|
for i := 0 to aOpCodeList.Count - 1 do
|
||||||
|
|
||||||
NewOpCode := ansilowercase(sl[0]);
|
|
||||||
if NewOpCode <> '' then
|
|
||||||
begin
|
begin
|
||||||
if (not(aX64) and (sl[1] = '1')) or // i386
|
sl.Clear;
|
||||||
(aX64 and (sl[2] = '1')) then // x86_64
|
sl.CommaText := aOpCodeList[i];
|
||||||
|
|
||||||
|
while sl.Count < 8 do sl.Add('');
|
||||||
|
|
||||||
|
NewOpCode := ansilowercase(sl[0]);
|
||||||
|
|
||||||
|
FoundNewOpcode := false;
|
||||||
|
for j := 0 to slFilemask.Count - 1 do
|
||||||
begin
|
begin
|
||||||
sDestFile := format('%s_%d%s', [NewOpcode, i, trim(copy(sl[4],1,1) + copy(sl[5],1,1) + copy(sl[6],1,1) + copy(sl[7],1,1))]);
|
if Pos(slFilemask[j], NewOpCode) = 1 then
|
||||||
|
FoundNewOpcode := true;
|
||||||
|
end;
|
||||||
|
|
||||||
slLocalHeader := TStringList.Create;
|
if not(FoundNewOpcode) and (slFilemask.Count > 0) then
|
||||||
try
|
NewOpcode := '';
|
||||||
slLocalHeader.Text := aHeaderList.text;
|
|
||||||
|
|
||||||
if (sl[4] = '') and
|
if NewOpCode <> '' then
|
||||||
(sl[5] = '') and
|
begin
|
||||||
(sl[6] = '') and
|
if (not(aX64) and (sl[1] = '1')) or // i386
|
||||||
(sl[7] = '') then
|
(aX64 and (sl[2] = '1')) then // x86_64
|
||||||
begin // Opcode with no Params, e.g. VZEROALL
|
begin
|
||||||
slAsm.Add(' ' + sl[0]);
|
sDestFile := format('%s_%d%s', [NewOpcode, i, trim(copy(sl[4],1,1) + copy(sl[5],1,1) + copy(sl[6],1,1) + copy(sl[7],1,1))]);
|
||||||
end
|
|
||||||
else
|
slLocalHeader := TStringList.Create;
|
||||||
begin
|
try
|
||||||
if aMREF then
|
slLocalHeader.Text := aHeaderList.text;
|
||||||
|
|
||||||
|
if (sl[4] = '') and
|
||||||
|
(sl[5] = '') and
|
||||||
|
(sl[6] = '') and
|
||||||
|
(sl[7] = '') then
|
||||||
|
begin // Opcode with no Params, e.g. VZEROALL
|
||||||
|
slAsm.Add(' ' + sl[0]);
|
||||||
|
end
|
||||||
|
else
|
||||||
begin
|
begin
|
||||||
sLocalVarDataTyp := '';
|
if aMREF then
|
||||||
TAsmTestGenerator.CalcTestDataMREF(aX64, aAVX512 and (sl[3] = '1'), aSAE, sl[0], sl[4], sl[5], sl[6], sl[7], slAsm);
|
begin
|
||||||
sDestFile := 'MREF_' + sDestFile;
|
sLocalVarDataTyp := '';
|
||||||
|
TAsmTestGenerator.CalcTestDataMREF(aX64, aAVX512 and (sl[3] = '1'), aSAE, sl[0], sl[4], sl[5], sl[6], sl[7], slAsm);
|
||||||
|
sDestFile := 'MREF_' + sDestFile;
|
||||||
|
|
||||||
if trim(sLocalVarDataTyp) = '' then
|
if trim(sLocalVarDataTyp) = '' then
|
||||||
sLocalVarDataTyp := 'byte';
|
sLocalVarDataTyp := 'byte';
|
||||||
|
|
||||||
slLocalHeader.Text := StringReplace(aHeaderList.Text, '$$$LOCALVARDATATYP$$$', sLocalVarDataTyp, [rfReplaceAll]);
|
slLocalHeader.Text := StringReplace(aHeaderList.Text, '$$$LOCALVARDATATYP$$$', sLocalVarDataTyp, [rfReplaceAll]);
|
||||||
end
|
end
|
||||||
else TAsmTestGenerator.CalcTestData(aX64, aAVX512 and (sl[3] = '1'), aSAE, sl[0], sl[4], sl[5], sl[6], sl[7], slAsm);
|
else TAsmTestGenerator.CalcTestData(aX64, aAVX512 and (sl[3] = '1'), aSAE, sl[0], sl[4], sl[5], sl[6], sl[7], slAsm);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
SaveFile(slAsm, sDestFile, aDestPath, aFileExt, slLocalHeader, aFooterList);
|
SaveFile(slAsm, sDestFile, aDestPath, aFileExt, slLocalHeader, aFooterList);
|
||||||
writeln(format('%s%s%s', [aDestPath, sDestFile, aFileExt]));
|
writeln(format('%s%s%s', [aDestPath, sDestFile, aFileExt]));
|
||||||
|
|
||||||
finally
|
finally
|
||||||
FreeAndNil(slLocalHeader);
|
FreeAndNil(slLocalHeader);
|
||||||
|
end;
|
||||||
|
|
||||||
|
slAsm.Clear;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
slAsm.Clear;
|
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
finally
|
||||||
|
FreeAndNil(slFilemask);
|
||||||
end;
|
end;
|
||||||
finally
|
finally
|
||||||
FreeAndNil(slAsm);
|
FreeAndNil(slAsm);
|
||||||
@ -3357,7 +3376,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
function TAVXTestGenerator.MakeTestFiles(aTyp: TTestFileTyp; aX64, aAVX512, aSAE: boolean;
|
function TAVXTestGenerator.MakeTestFiles(aTyp: TTestFileTyp; aX64, aAVX512, aSAE: boolean;
|
||||||
aDestPath: String): boolean;
|
aDestPath, aFilemask: String): boolean;
|
||||||
var
|
var
|
||||||
slHeader: TStringList;
|
slHeader: TStringList;
|
||||||
slFooter: TStringList;
|
slFooter: TStringList;
|
||||||
@ -3578,7 +3597,7 @@ begin
|
|||||||
end;
|
end;
|
||||||
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
|
finally
|
||||||
FreeAndNil(slFooter);
|
FreeAndNil(slFooter);
|
||||||
|
@ -22,13 +22,13 @@
|
|||||||
</PublishOptions>
|
</PublishOptions>
|
||||||
<RunParams>
|
<RunParams>
|
||||||
<local>
|
<local>
|
||||||
<CommandLineParams Value="-l"/>
|
<CommandLineParams Value="-px8664 -ffpc -o\home\torsten\tmp\fpc\fpc -z -mvgatherqpd"/>
|
||||||
</local>
|
</local>
|
||||||
<FormatVersion Value="2"/>
|
<FormatVersion Value="2"/>
|
||||||
<Modes Count="1">
|
<Modes Count="1">
|
||||||
<Mode0 Name="default">
|
<Mode0 Name="default">
|
||||||
<local>
|
<local>
|
||||||
<CommandLineParams Value="-l"/>
|
<CommandLineParams Value="-px8664 -ffpc -o\home\torsten\tmp\fpc\fpc -z -mvgatherqpd"/>
|
||||||
</local>
|
</local>
|
||||||
</Mode0>
|
</Mode0>
|
||||||
</Modes>
|
</Modes>
|
||||||
@ -60,7 +60,15 @@
|
|||||||
<Filename Value="avxtestgenerator"/>
|
<Filename Value="avxtestgenerator"/>
|
||||||
</Target>
|
</Target>
|
||||||
<SearchPaths>
|
<SearchPaths>
|
||||||
|
<IncludeFiles Value="$(ProjOutDir)"/>
|
||||||
<UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/>
|
<UnitOutputDirectory Value="lib\$(TargetCPU)-$(TargetOS)"/>
|
||||||
</SearchPaths>
|
</SearchPaths>
|
||||||
</CompilerOptions>
|
</CompilerOptions>
|
||||||
|
<Debugging>
|
||||||
|
<Exceptions Count="1">
|
||||||
|
<Item1>
|
||||||
|
<Name Value="Unknown"/>
|
||||||
|
</Item1>
|
||||||
|
</Exceptions>
|
||||||
|
</Debugging>
|
||||||
</CONFIG>
|
</CONFIG>
|
||||||
|
@ -44,6 +44,7 @@ begin
|
|||||||
writeln('-h help');
|
writeln('-h help');
|
||||||
writeln('-f [fpc,fpcmref,nasm,fasm,fpcinc] outputformat');
|
writeln('-f [fpc,fpcmref,nasm,fasm,fpcinc] outputformat');
|
||||||
writeln('-l list opcode-memrefsize-states');
|
writeln('-l list opcode-memrefsize-states');
|
||||||
|
writeln('-m create only these testfile(s) (e.g. -mvgather,vpgather)');
|
||||||
writeln('-o destination path');
|
writeln('-o destination path');
|
||||||
writeln('-p [x8664] codegenerator for x86_64 platform');
|
writeln('-p [x8664] codegenerator for x86_64 platform');
|
||||||
writeln('-z avx512');
|
writeln('-z avx512');
|
||||||
@ -56,11 +57,11 @@ begin
|
|||||||
//exit;
|
//exit;
|
||||||
|
|
||||||
case OutputFormat of
|
case OutputFormat of
|
||||||
'f': MakeTestFiles(tfFPC, x64, AVX512, false, Path);
|
'f': MakeTestFiles(tfFPC, x64, AVX512, false, Path, Filemask);
|
||||||
'F': MakeTestFiles(tfFasm, x64, AVX512, false, Path);
|
'F': MakeTestFiles(tfFasm, x64, AVX512, false, Path, Filemask);
|
||||||
'n': MakeTestFiles(tfNasm, x64, AVX512, false, Path);
|
'n': MakeTestFiles(tfNasm, x64, AVX512, false, Path, Filemask);
|
||||||
'I': MakeTestFiles(tfFPCInc, x64, AVX512, false, Path);
|
'I': MakeTestFiles(tfFPCInc, x64, AVX512, false, Path, Filemask);
|
||||||
'm': MakeTestFiles(tfFPCMRef, x64, AVX512, false, Path);
|
'm': MakeTestFiles(tfFPCMRef, x64, AVX512, false, Path, Filemask);
|
||||||
'l': ListMemRefState;
|
'l': ListMemRefState;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
@ -36,6 +36,7 @@ type
|
|||||||
FOutputFormat: Char;
|
FOutputFormat: Char;
|
||||||
FPath: string;
|
FPath: string;
|
||||||
FMemRef: boolean;
|
FMemRef: boolean;
|
||||||
|
FFilemask: string;
|
||||||
public
|
public
|
||||||
constructor Create;
|
constructor Create;
|
||||||
|
|
||||||
@ -47,6 +48,7 @@ type
|
|||||||
property AVX512: boolean read FAVX512 write FAVX512;
|
property AVX512: boolean read FAVX512 write FAVX512;
|
||||||
property Path: string read FPath write FPath;
|
property Path: string read FPath write FPath;
|
||||||
property MemRef: boolean read FMemref write FMemRef;
|
property MemRef: boolean read FMemref write FMemRef;
|
||||||
|
property Filemask: string read FFilemask write FFilemask;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
@ -63,6 +65,7 @@ begin
|
|||||||
FOutputFormat := '?';
|
FOutputFormat := '?';
|
||||||
FPath := '';
|
FPath := '';
|
||||||
FMemRef := false;
|
FMemRef := false;
|
||||||
|
FFilemask := '';
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TOptions.LoadParams;
|
procedure TOptions.LoadParams;
|
||||||
@ -103,6 +106,7 @@ begin
|
|||||||
else IsInvalidParam := true;
|
else IsInvalidParam := true;
|
||||||
'l': FOutputFormat := 'l';
|
'l': FOutputFormat := 'l';
|
||||||
'z': FAVX512 := true;
|
'z': FAVX512 := true;
|
||||||
|
'm': FFilemask := sValue;
|
||||||
'o': if sValue <> '' then
|
'o': if sValue <> '' then
|
||||||
begin
|
begin
|
||||||
FPath := IncludeTrailingBackslash(sValue);
|
FPath := IncludeTrailingBackslash(sValue);
|
||||||
|
Loading…
Reference in New Issue
Block a user