summaryrefslogtreecommitdiff
path: root/fixes_3_2/tests/utils/avx/avxtestgenerator.pp
blob: d94f4ec37a68018edd42311713edf35c9e43c5a5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
{

  Copyright (C) <avx-testfile-generator> <Torsten Grundke>

  This source is free software; you can redistribute it and/or modify it under
  the terms of the GNU General Public License as published by the Free
  Software Foundation; either version 2 of the License, or (at your option)
  any later version.

  This code is distributed in the hope that it will be useful, but WITHOUT ANY
  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
  FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
  details.

  A copy of the GNU General Public License is available on the World Wide Web
  at <http://www.gnu.org/copyleft/gpl.html>. You can also obtain it by writing
  to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
  MA 02110-1301, USA.
}

{$mode objfpc}

program AVXTestGenerator;
uses
  sysutils,
  AVXOpCodes in 'AVXOpCodes.pas',
  AsmTestGenerator in 'AsmTestGenerator.pas',
  Options in 'Options.pas';

begin
  with TAVXTestGenerator.Create do
  try

    TAsmTestGenerator.CalcTestInstFile;

    with TOptions.Create do
    try
      LoadParams;

      if Help then
      begin
        writeln('avx-testfile-generator 0.1');
        writeln('author: torsten grundke');
        writeln('');
        writeln('make avx assembler-testfiles');
        writeln('');
        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('');
      end
      else
      begin
        case OutputFormat of
          'f': MakeTestFiles(tfFPC, x64, Path, Filemask);
          'F': MakeTestFiles(tfFasm, x64, Path, Filemask);
          'n': MakeTestFiles(tfNasm, x64, Path, Filemask);
          'I': MakeTestFiles(tfFPCInc, x64, Path, Filemask);
          'm': MakeTestFiles(tfFPCMRef, x64, Path, Filemask);
          'l': ListMemRefState;
        end;
      end;
    finally
      Free;
    end;
  finally
    Free;
  end;
end.