Line data Source code
1 : #ifdef __PLUMED_HAS_ASMJIT 2 : // This file is part of AsmJit project <https://asmjit.com> 3 : // 4 : // See asmjit.h or LICENSE.md for license and copyright information 5 : // SPDX-License-Identifier: Zlib 6 : 7 : #include "api-build_p.h" 8 : #if !defined(ASMJIT_NO_AARCH64) && !defined(ASMJIT_NO_BUILDER) 9 : 10 : #include "a64assembler.h" 11 : #include "a64builder.h" 12 : #include "a64emithelper_p.h" 13 : 14 : ASMJIT_BEGIN_SUB_NAMESPACE(a64) 15 : 16 : // a64::Builder - Construction & Destruction 17 : // ========================================= 18 : 19 0 : Builder::Builder(CodeHolder* code) noexcept : BaseBuilder() { 20 0 : _archMask = uint64_t(1) << uint32_t(Arch::kAArch64); 21 0 : assignEmitterFuncs(this); 22 : 23 0 : if (code) 24 0 : code->attach(this); 25 0 : } 26 0 : Builder::~Builder() noexcept {} 27 : 28 : // a64::Builder - Events 29 : // ===================== 30 : 31 0 : Error Builder::onAttach(CodeHolder* code) noexcept { 32 0 : return Base::onAttach(code); 33 : } 34 : 35 0 : Error Builder::onDetach(CodeHolder* code) noexcept { 36 0 : return Base::onDetach(code); 37 : } 38 : 39 : // a64::Builder - Finalize 40 : // ======================= 41 : 42 0 : Error Builder::finalize() { 43 0 : ASMJIT_PROPAGATE(runPasses()); 44 0 : Assembler a(_code); 45 : a.addEncodingOptions(encodingOptions()); 46 0 : a.addDiagnosticOptions(diagnosticOptions()); 47 0 : return serializeTo(&a); 48 0 : } 49 : 50 : ASMJIT_END_SUB_NAMESPACE 51 : 52 : #endif // !ASMJIT_NO_AARCH64 && !ASMJIT_NO_BUILDER 53 : 54 : #endif // __PLUMED_HAS_ASMJIT