mirror of
https://github.com/asmjit/asmjit.git
synced 2025-12-18 04:54:36 +03:00
[abi] AsmJit v1.17 - cumulative & breaking changes
* Reworked register operands - all vector registers are now
platform::Vec deriving from UniVec (universal vector operand),
additionally, there is no platform::Reg, instead asmjit::Reg
provides all necessary features to make it a base register for
each target architecture
* Reworked casting between registers - now architecture agnostic
names are preferred - use Gp32 instead of Gpd or GpW, Gp64
instead of Gpq and GpX, etc...
* Reworked vector registers and their names - architecture
agnostic naming is now preferred Vec32, Vec64, Vec128, etc...
* Reworked naming conventions used across AsmJit - for clarity
Identifiers are now prefixed with the type, like sectionId(),
labelId(), etc...
* Reworked how Zone and ZoneAllocator are used across AsmJit,
prefering Zone in most cases and ZoneAllocator only for
containers - this change alone achieves around 5% better
performance of Builder and Compiler
* Reworked LabelEntry - decreased the size of the base entry
to 16 bytes for anonymous and unnamed labels. Avoided an
indirection when using labelEntries() - LabelEntry is now
a value and not a pointer
* Renamed LabelLink to Fixup
* Added a new header <asmjit/host.h> which would include
<asmjit/core.h> + target tools for the host architecture,
if enabled and supported
* Added new AArch64 instructions (BTI, CSSC, CHKFEAT)
* Added a mvn_ alternative of mvn instruction (fix for Windows
ARM64 SDK)
* Added more AArch64 CPU features to CpuInfo
* Added better support for Apple CPU detection (Apple M3, M4)
* Added a new benchmarking tool asmjit_bench_overhead, which
benchmarks the overhead of CodeHolder::init()/reset() and
creating/attaching emitters to it. Thanks to the benchmark the
most common code-paths were optimized
* Added a new benchmarking tool asmjit_bench_regalloc, which
aims to benchmark the cost and complexity of register allocation.
* Renamed asmjit_test_perf to asmjit_bench_codegen to make it
clear what is a test and what is a benchmark
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
// This file is part of AsmJit project <https://asmjit.com>
|
||||
//
|
||||
// See asmjit.h or LICENSE.md for license and copyright information
|
||||
// See <asmjit/core.h> or LICENSE.md for license and copyright information
|
||||
// SPDX-License-Identifier: Zlib
|
||||
|
||||
#ifndef ASMJITUTILS_H_INCLUDED
|
||||
@@ -10,6 +10,16 @@
|
||||
|
||||
namespace {
|
||||
|
||||
[[maybe_unused]]
|
||||
static const char* asmjitBuildType() noexcept {
|
||||
#if defined(ASMJIT_BUILD_DEBUG)
|
||||
static const char build_type[] = "Debug";
|
||||
#else
|
||||
static const char build_type[] = "Release";
|
||||
#endif
|
||||
return build_type;
|
||||
}
|
||||
|
||||
[[maybe_unused]]
|
||||
static const char* asmjitArchAsString(asmjit::Arch arch) noexcept {
|
||||
switch (arch) {
|
||||
@@ -95,12 +105,6 @@ static void printCpuInfo() noexcept {
|
||||
static void printBuildOptions() {
|
||||
auto stringifyBuildDefinition = [](bool b) { return b ? "defined" : "(not defined)"; };
|
||||
|
||||
#if defined(ASMJIT_BUILD_DEBUG)
|
||||
const char build_type[] = "Debug";
|
||||
#else
|
||||
const char build_type[] = "Release";
|
||||
#endif
|
||||
|
||||
#if defined(ASMJIT_NO_X86)
|
||||
constexpr bool no_x86 = true;
|
||||
#else
|
||||
@@ -180,12 +184,18 @@ static void printBuildOptions() {
|
||||
#endif
|
||||
|
||||
printf("Build Options:\n");
|
||||
printf(" Build Type : %s\n", build_type);
|
||||
printf(" BUILD_TYPE : %s\n", asmjitBuildType());
|
||||
printf(" ASMJIT_NO_DEPRECATED : %s\n", stringifyBuildDefinition(no_deprecated));
|
||||
printf(" ASMJIT_NO_ABI_NAMESPACE: %s\n", stringifyBuildDefinition(no_abi_namespace));
|
||||
printf("\n");
|
||||
|
||||
printf("Build Backends:\n");
|
||||
printf(" ASMJIT_NO_X86 : %s\n", stringifyBuildDefinition(no_x86));
|
||||
printf(" ASMJIT_NO_AARCH64 : %s\n", stringifyBuildDefinition(no_aarch64));
|
||||
printf(" ASMJIT_NO_FOREIGN : %s\n", stringifyBuildDefinition(no_foreign));
|
||||
printf(" ASMJIT_NO_DEPRECATED : %s\n", stringifyBuildDefinition(no_deprecated));
|
||||
printf(" ASMJIT_NO_ABI_NAMESPACE: %s\n", stringifyBuildDefinition(no_abi_namespace));
|
||||
printf("\n");
|
||||
|
||||
printf("Build Features:\n");
|
||||
printf(" ASMJIT_NO_SHM_OPEN : %s\n", stringifyBuildDefinition(no_shm_open));
|
||||
printf(" ASMJIT_NO_JIT : %s\n", stringifyBuildDefinition(no_jit));
|
||||
printf(" ASMJIT_NO_TEXT : %s\n", stringifyBuildDefinition(no_text));
|
||||
|
||||
Reference in New Issue
Block a user