diff options
| author | 2026-04-09 00:42:29 +0700 | |
|---|---|---|
| committer | 2026-04-09 03:42:29 +1000 | |
| commit | 73d8882b86e45d83e8b6188965ef488ef8662d15 (patch) | |
| tree | 6224c575bd2632860d543768a02354a861bbed0e /3rdparty/asmjit/asmjit-testing/bench/asmjit_bench_codegen.cpp | |
| parent | bf3f8ec10e264dfbecabd7ceccb8d652756a2594 (diff) | |
3rdparty/asmjit: Sync with upstream version 1.21. (#15205)
From asmjit/asmjit@0bd5787b54b575ed94bf32ac452153b34385c514
Diffstat (limited to '3rdparty/asmjit/asmjit-testing/bench/asmjit_bench_codegen.cpp')
| -rw-r--r-- | 3rdparty/asmjit/asmjit-testing/bench/asmjit_bench_codegen.cpp | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/3rdparty/asmjit/asmjit-testing/bench/asmjit_bench_codegen.cpp b/3rdparty/asmjit/asmjit-testing/bench/asmjit_bench_codegen.cpp new file mode 100644 index 00000000000..89e71a30848 --- /dev/null +++ b/3rdparty/asmjit/asmjit-testing/bench/asmjit_bench_codegen.cpp @@ -0,0 +1,83 @@ +// This file is part of AsmJit project <https://asmjit.com> +// +// See <asmjit/core.h> or LICENSE.md for license and copyright information +// SPDX-License-Identifier: Zlib + +#include <asmjit/core.h> + +#include <asmjit-testing/commons/asmjitutils.h> +#include <asmjit-testing/commons/cmdline.h> + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +using namespace asmjit; + +static void print_app_info() noexcept { + printf("AsmJit Benchmark CodeGen v%u.%u.%u [Arch=%s] [Mode=%s]\n\n", + unsigned((ASMJIT_LIBRARY_VERSION >> 16) ), + unsigned((ASMJIT_LIBRARY_VERSION >> 8) & 0xFF), + unsigned((ASMJIT_LIBRARY_VERSION ) & 0xFF), + asmjit_arch_as_string(Arch::kHost), + asmjit_build_type() + ); +} + +#if !defined(ASMJIT_NO_X86) +void benchmark_x86_emitters(uint32_t num_iterations, bool test_x86, bool test_x64) noexcept; +#endif + +#if !defined(ASMJIT_NO_AARCH64) +void benchmark_aarch64_emitters(uint32_t num_iterations); +#endif + +int main(int argc, char* argv[]) { + CmdLine cmd_line(argc, argv); + uint32_t num_iterations = 100000; + + print_app_info(); + + 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(s) to run ('all' by default)\n"); + printf("\n"); + + printf("Architectures:\n"); +#if !defined(ASMJIT_NO_X86) + printf(" --arch=x86 32-bit X86 architecture (X86)\n"); + printf(" --arch=x64 64-bit X86 architecture (X86_64)\n"); +#endif +#if !defined(ASMJIT_NO_AARCH64) + printf(" --arch=aarch64 64-bit ARM architecture (AArch64)\n"); +#endif + printf("\n"); + + if (cmd_line.has_arg("--help")) + return 0; + + if (cmd_line.has_arg("--quick")) + num_iterations = 1000; + + const char* arch = cmd_line.value_of("--arch", "all"); + +#if !defined(ASMJIT_NO_X86) + bool test_x86 = strcmp(arch, "all") == 0 || strcmp(arch, "x86") == 0; + bool test_x64 = strcmp(arch, "all") == 0 || strcmp(arch, "x64") == 0; + + if (test_x86 || test_x64) { + benchmark_x86_emitters(num_iterations, test_x86, test_x64); + } +#endif + +#if !defined(ASMJIT_NO_AARCH64) + bool test_aarch64 = strcmp(arch, "all") == 0 || strcmp(arch, "aarch64") == 0; + + if (test_aarch64) { + benchmark_aarch64_emitters(num_iterations); + } +#endif + + return 0; +} |
