Line data Source code
1 : /* +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 : Copyright (c) 2008-2017, Petr Kobalicek 3 : 4 : This software is provided 'as-is', without any express or implied 5 : warranty. In no event will the authors be held liable for any damages 6 : arising from the use of this software. 7 : 8 : Permission is granted to anyone to use this software for any purpose, 9 : including commercial applications, and to alter it and redistribute it 10 : freely, subject to the following restrictions: 11 : 12 : 1. The origin of this software must not be misrepresented; you must not 13 : claim that you wrote the original software. If you use this software 14 : in a product, an acknowledgment in the product documentation would be 15 : appreciated but is not required. 16 : 2. Altered source versions must be plainly marked as such, and must not be 17 : misrepresented as being the original software. 18 : 3. This notice may not be removed or altered from any source distribution. 19 : +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ */ 20 : #ifdef __PLUMED_HAS_ASMJIT 21 : #pragma GCC diagnostic push 22 : #pragma GCC diagnostic ignored "-Wpedantic" 23 : // [AsmJit] 24 : // Complete x86/x64 JIT and Remote Assembler for C++. 25 : // 26 : // [License] 27 : // Zlib - See LICENSE.md file in the package. 28 : 29 : // [Export] 30 : #define ASMJIT_EXPORTS 31 : 32 : // [Guard] 33 : #include "./asmjit_build.h" 34 : #if defined(ASMJIT_BUILD_X86) 35 : 36 : // [Dependencies] 37 : #include "./arch.h" 38 : #include "./inst.h" 39 : 40 : #if defined(ASMJIT_BUILD_X86) 41 : # include "./x86instimpl_p.h" 42 : #endif // ASMJIT_BUILD_X86 43 : 44 : #if defined(ASMJIT_BUILD_ARM) 45 : # include "./arminstimpl_p.h" 46 : #endif // ASMJIT_BUILD_ARM 47 : 48 : // [Api-Begin] 49 : #include "./asmjit_apibegin.h" 50 : 51 : namespace PLMD { 52 : namespace asmjit { 53 : 54 : // ============================================================================ 55 : // [asmjit::Inst - Validate] 56 : // ============================================================================ 57 : 58 : #if !defined(ASMJIT_DISABLE_VALIDATION) 59 0 : Error Inst::validate(uint32_t archType, const Detail& detail, const Operand_* operands, uint32_t count) noexcept { 60 : #if defined(ASMJIT_BUILD_X86) 61 0 : if (ArchInfo::isX86Family(archType)) 62 0 : return X86InstImpl::validate(archType, detail, operands, count); 63 : #endif 64 : 65 : #if defined(ASMJIT_BUILD_ARM) 66 : if (ArchInfo::isArmFamily(archType)) 67 : return ArmInstImpl::validate(archType, detail, operands, count); 68 : #endif 69 : 70 : return DebugUtils::errored(kErrorInvalidArch); 71 : } 72 : #endif 73 : 74 : // ============================================================================ 75 : // [asmjit::Inst - CheckFeatures] 76 : // ============================================================================ 77 : 78 : #if !defined(ASMJIT_DISABLE_EXTENSIONS) 79 0 : Error Inst::checkFeatures(uint32_t archType, const Detail& detail, const Operand_* operands, uint32_t count, CpuFeatures& out) noexcept { 80 : #if defined(ASMJIT_BUILD_X86) 81 0 : if (ArchInfo::isX86Family(archType)) 82 0 : return X86InstImpl::checkFeatures(archType, detail, operands, count, out); 83 : #endif 84 : 85 : #if defined(ASMJIT_BUILD_ARM) 86 : if (ArchInfo::isArmFamily(archType)) 87 : return ArmInstImpl::checkFeatures(archType, detail, operands, count, out); 88 : #endif 89 : 90 : return DebugUtils::errored(kErrorInvalidArch); 91 : } 92 : #endif // !defined(ASMJIT_DISABLE_EXTENSIONS) 93 : 94 : } // asmjit namespace 95 : } // namespace PLMD 96 : 97 : // [Api-End] 98 : #include "./asmjit_apiend.h" 99 : 100 : // [Guard] 101 : #endif // ASMJIT_BUILD_X86 102 : #pragma GCC diagnostic pop 103 : #endif // __PLUMED_HAS_ASMJIT