diff options
Diffstat (limited to '3rdparty/asmjit/src/asmjit/x86/x86features.h')
-rw-r--r-- | 3rdparty/asmjit/src/asmjit/x86/x86features.h | 290 |
1 files changed, 0 insertions, 290 deletions
diff --git a/3rdparty/asmjit/src/asmjit/x86/x86features.h b/3rdparty/asmjit/src/asmjit/x86/x86features.h deleted file mode 100644 index b26b52454b1..00000000000 --- a/3rdparty/asmjit/src/asmjit/x86/x86features.h +++ /dev/null @@ -1,290 +0,0 @@ -// AsmJit - Machine code generation for C++ -// -// * Official AsmJit Home Page: https://asmjit.com -// * Official Github Repository: https://github.com/asmjit/asmjit -// -// Copyright (c) 2008-2020 The AsmJit Authors -// -// This software is provided 'as-is', without any express or implied -// warranty. In no event will the authors be held liable for any damages -// arising from the use of this software. -// -// Permission is granted to anyone to use this software for any purpose, -// including commercial applications, and to alter it and redistribute it -// freely, subject to the following restrictions: -// -// 1. The origin of this software must not be misrepresented; you must not -// claim that you wrote the original software. If you use this software -// in a product, an acknowledgment in the product documentation would be -// appreciated but is not required. -// 2. Altered source versions must be plainly marked as such, and must not be -// misrepresented as being the original software. -// 3. This notice may not be removed or altered from any source distribution. - -#ifndef ASMJIT_X86_X86FEATURES_H_INCLUDED -#define ASMJIT_X86_X86FEATURES_H_INCLUDED - -#include "../core/features.h" - -ASMJIT_BEGIN_SUB_NAMESPACE(x86) - -//! \addtogroup asmjit_x86 -//! \{ - -// ============================================================================ -// [asmjit::x86::Features] -// ============================================================================ - -//! CPU features (X86). -class Features : public BaseFeatures { -public: - //! CPU feature ID. - enum Id : uint32_t { - // @EnumValuesBegin{"enum": "x86::Features::Id"}@ - - kNone = 0, //!< No feature (never set, used internally). - - kMT, //!< CPU has multi-threading capabilities. - kNX, //!< CPU has Not-Execute-Bit aka DEP (data-execution prevention). - - k3DNOW, //!< CPU has 3DNOW (3DNOW base instructions) [AMD]. - k3DNOW2, //!< CPU has 3DNOW2 (enhanced 3DNOW) [AMD]. - kADX, //!< CPU has ADX (multi-precision add-carry instruction extensions). - kAESNI, //!< CPU has AESNI (AES encode/decode instructions). - kALTMOVCR8, //!< CPU has LOCK MOV R<->CR0 (supports `MOV R<->CR8` via `LOCK MOV R<->CR0` in 32-bit mode) [AMD]. - kAVX, //!< CPU has AVX (advanced vector extensions). - kAVX2, //!< CPU has AVX2 (advanced vector extensions 2). - kAVX512_4FMAPS, //!< CPU has AVX512_FMAPS (FMA packed single). - kAVX512_4VNNIW, //!< CPU has AVX512_VNNIW (vector NN instructions word variable precision). - kAVX512_BF16, //!< CPU has AVX512_BF16 (BFLOAT16 support instruction). - kAVX512_BITALG, //!< CPU has AVX512_BITALG (VPOPCNT[B|W], VPSHUFBITQMB). - kAVX512_BW, //!< CPU has AVX512_BW (packed BYTE|WORD). - kAVX512_CDI, //!< CPU has AVX512_CDI (conflict detection). - kAVX512_DQ, //!< CPU has AVX512_DQ (packed DWORD|QWORD). - kAVX512_ERI, //!< CPU has AVX512_ERI (exponential and reciprocal). - kAVX512_F, //!< CPU has AVX512_F (AVX512 foundation). - kAVX512_IFMA, //!< CPU has AVX512_IFMA (integer fused-multiply-add using 52-bit precision). - kAVX512_PFI, //!< CPU has AVX512_PFI (prefetch instructions). - kAVX512_VBMI, //!< CPU has AVX512_VBMI (vector byte manipulation). - kAVX512_VBMI2, //!< CPU has AVX512_VBMI2 (vector byte manipulation 2). - kAVX512_VL, //!< CPU has AVX512_VL (vector length extensions). - kAVX512_VNNI, //!< CPU has AVX512_VNNI (vector neural network instructions). - kAVX512_VP2INTERSECT, //!< CPU has AVX512_VP2INTERSECT - kAVX512_VPOPCNTDQ, //!< CPU has AVX512_VPOPCNTDQ (VPOPCNT[D|Q] instructions). - kBMI, //!< CPU has BMI (bit manipulation instructions #1). - kBMI2, //!< CPU has BMI2 (bit manipulation instructions #2). - kCLDEMOTE, //!< CPU has CLDEMOTE (cache line demote). - kCLFLUSH, //!< CPU has CLFUSH (Cache Line flush). - kCLFLUSHOPT, //!< CPU has CLFUSHOPT (Cache Line flush - optimized). - kCLWB, //!< CPU has CLWB. - kCLZERO, //!< CPU has CLZERO. - kCMOV, //!< CPU has CMOV (CMOV and FCMOV instructions). - kCMPXCHG16B, //!< CPU has CMPXCHG16B (compare-exchange 16 bytes) [X86_64]. - kCMPXCHG8B, //!< CPU has CMPXCHG8B (compare-exchange 8 bytes). - kENCLV, //!< CPU has ENCLV. - kENQCMD, //!< CPU has ENQCMD (enqueue stores). - kERMS, //!< CPU has ERMS (enhanced REP MOVSB/STOSB). - kF16C, //!< CPU has F16C. - kFMA, //!< CPU has FMA (fused-multiply-add 3 operand form). - kFMA4, //!< CPU has FMA4 (fused-multiply-add 4 operand form). - kFPU, //!< CPU has FPU (FPU support). - kFSGSBASE, //!< CPU has FSGSBASE. - kFXSR, //!< CPU has FXSR (FXSAVE/FXRSTOR instructions). - kFXSROPT, //!< CPU has FXSROTP (FXSAVE/FXRSTOR is optimized). - kGEODE, //!< CPU has GEODE extensions (3DNOW additions). - kGFNI, //!< CPU has GFNI (Galois field instructions). - kHLE, //!< CPU has HLE. - kI486, //!< CPU has I486 features (I486+ support). - kLAHFSAHF, //!< CPU has LAHF/SAHF (LAHF/SAHF in 64-bit mode) [X86_64]. - kLWP, //!< CPU has LWP (lightweight profiling) [AMD]. - kLZCNT, //!< CPU has LZCNT (LZCNT instruction). - kMMX, //!< CPU has MMX (MMX base instructions). - kMMX2, //!< CPU has MMX2 (MMX extensions or MMX2). - kMONITOR, //!< CPU has MONITOR (MONITOR/MWAIT instructions). - kMONITORX, //!< CPU has MONITORX (MONITORX/MWAITX instructions). - kMOVBE, //!< CPU has MOVBE (move with byte-order swap). - kMOVDIR64B, //!< CPU has MOVDIR64B (move 64 bytes as direct store). - kMOVDIRI, //!< CPU has MOVDIRI (move dword/qword as direct store). - kMPX, //!< CPU has MPX (memory protection extensions). - kMSR, //!< CPU has MSR (RDMSR/WRMSR instructions). - kMSSE, //!< CPU has MSSE (misaligned SSE support). - kOSXSAVE, //!< CPU has OSXSAVE (XSAVE enabled by OS). - kPCLMULQDQ, //!< CPU has PCLMULQDQ (packed carry-less multiplication). - kPCOMMIT, //!< CPU has PCOMMIT (PCOMMIT instruction). - kPCONFIG, //!< CPU has PCONFIG (PCONFIG instruction). - kPOPCNT, //!< CPU has POPCNT (POPCNT instruction). - kPREFETCHW, //!< CPU has PREFETCHW. - kPREFETCHWT1, //!< CPU has PREFETCHWT1. - kRDPID, //!< CPU has RDPID. - kRDRAND, //!< CPU has RDRAND. - kRDSEED, //!< CPU has RDSEED. - kRDTSC, //!< CPU has RDTSC. - kRDTSCP, //!< CPU has RDTSCP. - kRTM, //!< CPU has RTM. - kSHA, //!< CPU has SHA (SHA-1 and SHA-256 instructions). - kSKINIT, //!< CPU has SKINIT (SKINIT/STGI instructions) [AMD]. - kSMAP, //!< CPU has SMAP (supervisor-mode access prevention). - kSMEP, //!< CPU has SMEP (supervisor-mode execution prevention). - kSMX, //!< CPU has SMX (safer mode extensions). - kSSE, //!< CPU has SSE. - kSSE2, //!< CPU has SSE2. - kSSE3, //!< CPU has SSE3. - kSSE4_1, //!< CPU has SSE4.1. - kSSE4_2, //!< CPU has SSE4.2. - kSSE4A, //!< CPU has SSE4A [AMD]. - kSSSE3, //!< CPU has SSSE3. - kSVM, //!< CPU has SVM (virtualization) [AMD]. - kTBM, //!< CPU has TBM (trailing bit manipulation) [AMD]. - kTSX, //!< CPU has TSX. - kVAES, //!< CPU has VAES (vector AES 256|512 bit support). - kVMX, //!< CPU has VMX (virtualization) [INTEL]. - kVPCLMULQDQ, //!< CPU has VPCLMULQDQ (vector PCLMULQDQ 256|512-bit support). - kWAITPKG, //!< CPU has WAITPKG (UMONITOR, UMWAIT, TPAUSE). - kWBNOINVD, //!< CPU has WBNOINVD. - kXOP, //!< CPU has XOP (XOP instructions) [AMD]. - kXSAVE, //!< CPU has XSAVE. - kXSAVEC, //!< CPU has XSAVEC. - kXSAVEOPT, //!< CPU has XSAVEOPT. - kXSAVES, //!< CPU has XSAVES. - - // @EnumValuesEnd@ - - kCount //!< Count of X86 CPU features. - }; - - //! \name Construction / Destruction - //! \{ - - inline Features() noexcept - : BaseFeatures() {} - inline Features(const Features& other) noexcept - : BaseFeatures(other) {} - - //! \} - - //! \name Overloaded Operators - //! \{ - - inline Features& operator=(const Features& other) noexcept = default; - - //! \} - - //! \name Accessors - //! \{ - - #define ASMJIT_X86_FEATURE(FEATURE) \ - inline bool has##FEATURE() const noexcept { return has(k##FEATURE); } - - ASMJIT_X86_FEATURE(MT) - ASMJIT_X86_FEATURE(NX) - - ASMJIT_X86_FEATURE(3DNOW) - ASMJIT_X86_FEATURE(3DNOW2) - ASMJIT_X86_FEATURE(ADX) - ASMJIT_X86_FEATURE(AESNI) - ASMJIT_X86_FEATURE(ALTMOVCR8) - ASMJIT_X86_FEATURE(AVX) - ASMJIT_X86_FEATURE(AVX2) - ASMJIT_X86_FEATURE(AVX512_4FMAPS) - ASMJIT_X86_FEATURE(AVX512_4VNNIW) - ASMJIT_X86_FEATURE(AVX512_BF16) - ASMJIT_X86_FEATURE(AVX512_BITALG) - ASMJIT_X86_FEATURE(AVX512_BW) - ASMJIT_X86_FEATURE(AVX512_CDI) - ASMJIT_X86_FEATURE(AVX512_DQ) - ASMJIT_X86_FEATURE(AVX512_ERI) - ASMJIT_X86_FEATURE(AVX512_F) - ASMJIT_X86_FEATURE(AVX512_IFMA) - ASMJIT_X86_FEATURE(AVX512_PFI) - ASMJIT_X86_FEATURE(AVX512_VBMI) - ASMJIT_X86_FEATURE(AVX512_VBMI2) - ASMJIT_X86_FEATURE(AVX512_VL) - ASMJIT_X86_FEATURE(AVX512_VNNI) - ASMJIT_X86_FEATURE(AVX512_VP2INTERSECT) - ASMJIT_X86_FEATURE(AVX512_VPOPCNTDQ) - ASMJIT_X86_FEATURE(BMI) - ASMJIT_X86_FEATURE(BMI2) - ASMJIT_X86_FEATURE(CLDEMOTE) - ASMJIT_X86_FEATURE(CLFLUSH) - ASMJIT_X86_FEATURE(CLFLUSHOPT) - ASMJIT_X86_FEATURE(CLWB) - ASMJIT_X86_FEATURE(CLZERO) - ASMJIT_X86_FEATURE(CMOV) - ASMJIT_X86_FEATURE(CMPXCHG16B) - ASMJIT_X86_FEATURE(CMPXCHG8B) - ASMJIT_X86_FEATURE(ENCLV) - ASMJIT_X86_FEATURE(ENQCMD) - ASMJIT_X86_FEATURE(ERMS) - ASMJIT_X86_FEATURE(F16C) - ASMJIT_X86_FEATURE(FMA) - ASMJIT_X86_FEATURE(FMA4) - ASMJIT_X86_FEATURE(FPU) - ASMJIT_X86_FEATURE(FSGSBASE) - ASMJIT_X86_FEATURE(FXSR) - ASMJIT_X86_FEATURE(FXSROPT) - ASMJIT_X86_FEATURE(GEODE) - ASMJIT_X86_FEATURE(GFNI) - ASMJIT_X86_FEATURE(HLE) - ASMJIT_X86_FEATURE(I486) - ASMJIT_X86_FEATURE(LAHFSAHF) - ASMJIT_X86_FEATURE(LWP) - ASMJIT_X86_FEATURE(LZCNT) - ASMJIT_X86_FEATURE(MMX) - ASMJIT_X86_FEATURE(MMX2) - ASMJIT_X86_FEATURE(MONITOR) - ASMJIT_X86_FEATURE(MONITORX) - ASMJIT_X86_FEATURE(MOVBE) - ASMJIT_X86_FEATURE(MOVDIR64B) - ASMJIT_X86_FEATURE(MOVDIRI) - ASMJIT_X86_FEATURE(MPX) - ASMJIT_X86_FEATURE(MSR) - ASMJIT_X86_FEATURE(MSSE) - ASMJIT_X86_FEATURE(OSXSAVE) - ASMJIT_X86_FEATURE(PCLMULQDQ) - ASMJIT_X86_FEATURE(PCOMMIT) - ASMJIT_X86_FEATURE(PCONFIG) - ASMJIT_X86_FEATURE(POPCNT) - ASMJIT_X86_FEATURE(PREFETCHW) - ASMJIT_X86_FEATURE(PREFETCHWT1) - ASMJIT_X86_FEATURE(RDPID) - ASMJIT_X86_FEATURE(RDRAND) - ASMJIT_X86_FEATURE(RDSEED) - ASMJIT_X86_FEATURE(RDTSC) - ASMJIT_X86_FEATURE(RDTSCP) - ASMJIT_X86_FEATURE(RTM) - ASMJIT_X86_FEATURE(SHA) - ASMJIT_X86_FEATURE(SKINIT) - ASMJIT_X86_FEATURE(SMAP) - ASMJIT_X86_FEATURE(SMEP) - ASMJIT_X86_FEATURE(SMX) - ASMJIT_X86_FEATURE(SSE) - ASMJIT_X86_FEATURE(SSE2) - ASMJIT_X86_FEATURE(SSE3) - ASMJIT_X86_FEATURE(SSSE3) - ASMJIT_X86_FEATURE(SSE4A) - ASMJIT_X86_FEATURE(SSE4_1) - ASMJIT_X86_FEATURE(SSE4_2) - ASMJIT_X86_FEATURE(SVM) - ASMJIT_X86_FEATURE(TBM) - ASMJIT_X86_FEATURE(TSX) - ASMJIT_X86_FEATURE(XSAVE) - ASMJIT_X86_FEATURE(XSAVEC) - ASMJIT_X86_FEATURE(XSAVEOPT) - ASMJIT_X86_FEATURE(XSAVES) - ASMJIT_X86_FEATURE(VAES) - ASMJIT_X86_FEATURE(VMX) - ASMJIT_X86_FEATURE(VPCLMULQDQ) - ASMJIT_X86_FEATURE(WAITPKG) - ASMJIT_X86_FEATURE(WBNOINVD) - ASMJIT_X86_FEATURE(XOP) - - #undef ASMJIT_X86_FEATURE - - //! \} -}; - -//! \} - -ASMJIT_END_SUB_NAMESPACE - -#endif // ASMJIT_X86_X86FEATURES_H_INCLUDED |