Browse Source

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

git-svn-id: branches/tg74/avx512-0037785@47864 -
tg74 4 years ago
parent
commit
6d1553984e

+ 83 - 64
tests/utils/avx/avxopcodes.pas

@@ -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 := '';
-
-      for i := 0 to aOpCodeList.Count - 1 do
-      //for i := 0 to 0 do
-      begin
-        sl.Clear;
-        sl.CommaText := aOpCodeList[i];
+      slFilemask := TStringList.Create;
+      try
+        slFilemask.CommaText := ansilowercase(aFilemask);
 
 
-        while sl.Count < 8 do sl.Add('');
+        LastOpCode := '';
 
 
-        NewOpCode := ansilowercase(sl[0]);
-        if NewOpCode <> '' then
+        for i := 0 to aOpCodeList.Count - 1 do
         begin
         begin
-          if (not(aX64) and (sl[1] = '1')) or // i386
-             (aX64 and (sl[2] = '1')) then    // x86_64
+          sl.Clear;
+          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))]);
-
-            slLocalHeader := TStringList.Create;
-            try
-              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
-                if aMREF then
+            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
+               (aX64 and (sl[2] = '1')) then    // x86_64
+            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))]);
+
+              slLocalHeader := TStringList.Create;
+              try
+                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 := '';
- 	          TAsmTestGenerator.CalcTestDataMREF(aX64, aAVX512 and (sl[3] = '1'), aSAE, sl[0], sl[4], sl[5], sl[6], sl[7], slAsm);
-		  sDestFile := 'MREF_' + sDestFile;
+                  if aMREF then
+	          begin
+                    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
-		   sLocalVarDataTyp := 'byte';
+		    if trim(sLocalVarDataTyp) = '' then
+		     sLocalVarDataTyp := 'byte';
 
 
-                  slLocalHeader.Text :=  StringReplace(aHeaderList.Text, '$$$LOCALVARDATATYP$$$', sLocalVarDataTyp, [rfReplaceAll]);
-	        end
-   	        else TAsmTestGenerator.CalcTestData(aX64, aAVX512 and (sl[3] = '1'), aSAE, sl[0], sl[4], sl[5], sl[6], sl[7], slAsm);
-	      end;
+                    slLocalHeader.Text :=  StringReplace(aHeaderList.Text, '$$$LOCALVARDATATYP$$$', sLocalVarDataTyp, [rfReplaceAll]);
+	          end
+   	          else TAsmTestGenerator.CalcTestData(aX64, aAVX512 and (sl[3] = '1'), aSAE, sl[0], sl[4], sl[5], sl[6], sl[7], slAsm);
+	        end;
 
 
-              SaveFile(slAsm, sDestFile, aDestPath, aFileExt, slLocalHeader, aFooterList);
-              writeln(format('%s%s%s', [aDestPath, sDestFile, aFileExt]));
+                SaveFile(slAsm, sDestFile, aDestPath, aFileExt, slLocalHeader, aFooterList);
+                writeln(format('%s%s%s', [aDestPath, sDestFile, aFileExt]));
 
 
-            finally
-              FreeAndNil(slLocalHeader);
-            end;
+              finally
+                FreeAndNil(slLocalHeader);
+              end;
 
 
-            slAsm.Clear;
+              slAsm.Clear;
+            end;
           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);

+ 10 - 2
tests/utils/avx/avxtestgenerator.lpi

@@ -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>

+ 6 - 5
tests/utils/avx/avxtestgenerator.pp

@@ -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(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;
           'l': ListMemRefState;
         end;
         end;
       end;
       end;

+ 4 - 0
tests/utils/avx/options.pas

@@ -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);