Welcome to mirror list, hosted at ThFree Co, Russian Federation.

asmjit_test_perf.cpp « test - github.com/asmjit/asmjit.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
blob: 2ade96cb718aec2f3d13a6b7145dad4d12ea1808 (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
// This file is part of AsmJit project <https://asmjit.com>
//
// See asmjit.h or LICENSE.md for license and copyright information
// SPDX-License-Identifier: Zlib

#include <asmjit/core.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

#include "cmdline.h"

using namespace asmjit;

#if !defined(ASMJIT_NO_X86)
void benchmarkX86Emitters(uint32_t numIterations, bool testX86, bool testX64) noexcept;
#endif

int main(int argc, char* argv[]) {
  CmdLine cmdLine(argc, argv);
  uint32_t numIterations = 20000;

  printf("AsmJit Performance Suite v%u.%u.%u:\n\n",
    unsigned((ASMJIT_LIBRARY_VERSION >> 16)       ),
    unsigned((ASMJIT_LIBRARY_VERSION >>  8) & 0xFF),
    unsigned((ASMJIT_LIBRARY_VERSION      ) & 0xFF));

  printf("Usage:\n");
  printf("  --help        Show usage only\n");
  printf("  --quick       Decrease the number of iterations to make tests quicker\n");
  printf("  --arch=<ARCH> Select architecture to run ('all' by default)\n");
  printf("\n");

  if (cmdLine.hasArg("--help"))
    return 0;

  if (cmdLine.hasArg("--quick"))
    numIterations = 1000;

  const char* arch = cmdLine.valueOf("--arch", "all");

#if !defined(ASMJIT_NO_X86)
  bool testX86 = strcmp(arch, "all") == 0 || strcmp(arch, "x86") == 0;
  bool testX64 = strcmp(arch, "all") == 0 || strcmp(arch, "x64") == 0;

  if (testX86 || testX64)
    benchmarkX86Emitters(numIterations, testX86, testX64);
#endif

  return 0;
}