diff options
Diffstat (limited to 'erts/emulator/asmjit/core.h')
-rw-r--r-- | erts/emulator/asmjit/core.h | 56 |
1 files changed, 29 insertions, 27 deletions
diff --git a/erts/emulator/asmjit/core.h b/erts/emulator/asmjit/core.h index 4406ed89f3..e586734e49 100644 --- a/erts/emulator/asmjit/core.h +++ b/erts/emulator/asmjit/core.h @@ -105,40 +105,37 @@ namespace asmjit { //! //! - Tested: //! -//! - **Clang** - Tested by GitHub Actions - Clang 3.9+ (with C++11 enabled) is officially supported (older Clang -//! versions having C++11 support are probably fine, but are not regularly tested). +//! - **Clang** - Tested by GitHub Actions - Clang 10+ is officially supported and tested by CI, older Clang versions +//! having C++11 should work, but are not tested anymore due to upgraded CI images. //! -//! - **GNU** - Tested by GitHub Actions - GCC 4.8+ (with C++11 enabled) is officially supported. +//! - **GNU** - Tested by GitHub Actions - GCC 7+ is officially supported, older GCC versions from 4.8+ having C++11 +//! enabled should also work, but are not tested anymore due to upgraded CI images. //! -//! - **MINGW** - Should work, but it's not tested in our CI environment. +//! - **MINGW** - Reported to work, but not tested in our CI environment (help welcome). //! -//! - **MSVC** - Tested by GitHub Actions - VS2017+ is officially supported, VS2015 is reported to work. -//! -//! - Untested: -//! -//! - **Intel** - No maintainers and no CI environment to regularly test this compiler. -//! -//! - **Other** C++ compilers would require basic support in -//! [core/api-config.h](https://github.com/asmjit/asmjit/tree/master/src/asmjit/core/api-config.h). +//! - **MSVC** - Tested by GitHub Actions - VS2019+ is officially supported, VS2015 and VS2017 is reported to work, +//! but not tested by CI anymore. //! //! ### Supported Operating Systems and Platforms //! //! - Tested: //! -//! - **Linux** - Tested by GitHub Actions (any distribution is generally supported). +//! - **BSD** - FreeBSD, NetBSD, and OpenBSD tested by GitHub Actions (only recent images are tested by CI). BSD +//! runners only test BSD images with clang compiler. //! -//! - **Mac OS** - Tested by GitHub Actions (any version is supported). +//! - **Linux** - Tested by GitHub Actions (only recent Ubuntu images are tested by CI, in general any distribution +//! should be supported as AsmJit has no dependencies). +//! +//! - **Mac OS** - Tested by GitHub Actions. //! //! - **Windows** - Tested by GitHub Actions - (Windows 7+ is officially supported). //! //! - **Emscripten** - Works if compiled with \ref ASMJIT_NO_JIT. AsmJit cannot generate WASM code, but can be -//! used to generate X86/X64 code within a browser, for example. +//! used to generate X86/X64/AArch64 code within a browser, for example. //! //! - Untested: //! -//! - **BSDs** - No maintainers, no CI environment to regularly test BSDs, but they should work out of box. -//! -//! - **Haiku** - Not regularly tested, but reported to work. +//! - **Haiku** - Reported to work, not tested by CI. //! //! - **Other** operating systems would require some testing and support in the following files: //! - [core/api-config.h](https://github.com/asmjit/asmjit/tree/master/src/asmjit/core/api-config.h) @@ -149,7 +146,7 @@ namespace asmjit { //! //! - **X86** and **X86_64** - Both 32-bit and 64-bit backends tested on CI. //! - **AArch64** - AArch64 backend is currently only partially tested (there is no native AArch64 runner to test -//! AsmJit Builder/Compiler) +//! AsmJit Builder/Compiler). //! //! ### Static Builds and Embedding //! @@ -454,7 +451,8 @@ namespace asmjit { //! JitRuntime rt; // Runtime specialized for JIT code execution. //! //! CodeHolder code; // Holds code and relocation information. -//! code.init(rt.environment()); // Initialize code to match the JIT environment. +//! code.init(rt.environment(), // Initialize code to match the JIT environment. +//! rt.cpuFeatures()); //! //! x86::Assembler a(&code); // Create and attach x86::Assembler to code. //! a.mov(x86::eax, 1); // Move one to eax register. @@ -599,9 +597,10 @@ namespace asmjit { //! int main() { //! // Create a custom environment that matches the current host environment. //! Environment env = Environment::host(); +//! CpuFeatures cpuFeatures = CpuInfo::host().features(); //! //! CodeHolder code; // Create a CodeHolder. -//! code.init(env); // Initialize CodeHolder with environment. +//! code.init(env, cpuFeatures); // Initialize CodeHolder with environment. //! //! x86::Assembler a(&code); // Create and attach x86::Assembler to `code`. //! @@ -722,10 +721,11 @@ namespace asmjit { //! //! void initializeCodeHolder(CodeHolder& code) { //! Environment env = Environment::host(); +//! CpuFeatures cpuFeatures = CpuInfo::host().features(); //! uint64_t baseAddress = uint64_t(0x1234); //! //! // initialize CodeHolder with environment and custom base address. -//! code.init(env, baseAddress); +//! code.init(env, cpuFeatures, baseAddress); //! } //! ``` //! @@ -1346,7 +1346,8 @@ namespace asmjit { //! FileLogger logger(stdout); // Logger should always survive CodeHolder. //! //! CodeHolder code; // Holds code and relocation information. -//! code.init(rt.environment()); // Initialize to the same arch as JIT runtime. +//! code.init(rt.environment(), // Initialize code to match the JIT environment. +//! rt.cpuFeatures()); //! code.setLogger(&logger); // Attach the `logger` to `code` holder. //! //! // ... code as usual, everything emitted will be logged to `stdout` ... @@ -1369,7 +1370,8 @@ namespace asmjit { //! StringLogger logger; // Logger should always survive CodeHolder. //! //! CodeHolder code; // Holds code and relocation information. -//! code.init(rt.environment()); // Initialize to the same arch as JIT runtime. +//! code.init(rt.environment(), // Initialize code to match the JIT environment. +//! rt.cpuFeatures()); //! code.setLogger(&logger); // Attach the `logger` to `code` holder. //! //! // ... code as usual, logging will be concatenated to logger string ... @@ -1494,7 +1496,7 @@ namespace asmjit { //! using namespace asmjit; //! //! void formattingExample(BaseBuilder* builder) { -//! FormatFlags formatFlags = FormatFlags::kNone; +//! FormatOptions formatOptions {}; //! //! // This also shows how temporary strings can be used. //! StringTmp<512> sb; @@ -1503,7 +1505,7 @@ namespace asmjit { //! // were zero (no extra flags), and the builder instance, which we have //! // provided. An overloaded version also exists, which accepts begin and //! // and end nodes, which can be used to only format a range of nodes. -//! Formatter::formatNodeList(sb, formatFlags, builder); +//! Formatter::formatNodeList(sb, formatOptions, builder); //! //! // You can do whatever else with the string, it's always null terminated, //! // so it can be passed to C functions like printf(). @@ -1560,7 +1562,7 @@ namespace asmjit { //! MyErrorHandler myErrorHandler; //! CodeHolder code; //! -//! code.init(rt.environment()); +//! code.init(rt.environment(), rt.cpuFeatures()); //! code.setErrorHandler(&myErrorHandler); //! //! x86::Assembler a(&code); |