Initial import of libdpf.
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
commit
e4e666f459
4563 changed files with 1690372 additions and 0 deletions
16
thirdparty/portable-snippets/cpu/README.md
vendored
Normal file
16
thirdparty/portable-snippets/cpu/README.md
vendored
Normal file
|
|
@ -0,0 +1,16 @@
|
|||
# CPU Information
|
||||
|
||||
This module provides an API for querying some CPU features, such as
|
||||
ISA extension support, that works across multiple architectures and
|
||||
platforms.
|
||||
|
||||
## Dependencies
|
||||
|
||||
This module requires the once portable-snippet module. If you do not
|
||||
include once.h before cpu.h, cpu.h will automatically include
|
||||
"../once/once.h". If you include once.h manually you are free to use
|
||||
whatever directory structure you like.
|
||||
|
||||
## Limitations
|
||||
|
||||
This code currently only supports x86/x86-64 and ARM.
|
||||
167
thirdparty/portable-snippets/cpu/cpu.c
vendored
Normal file
167
thirdparty/portable-snippets/cpu/cpu.c
vendored
Normal file
|
|
@ -0,0 +1,167 @@
|
|||
/* CPU Information (v1)
|
||||
* Portable Snippets - https://github.com/nemequ/portable-snippets
|
||||
* Created by Evan Nemerson <evan@nemerson.com>
|
||||
*
|
||||
* To the extent possible under law, the authors have waived all
|
||||
* copyright and related or neighboring rights to this code. For
|
||||
* details, see the Creative Commons Zero 1.0 Universal license at
|
||||
* https://creativecommons.org/publicdomain/zero/1.0/
|
||||
*/
|
||||
|
||||
#include "cpu.h"
|
||||
|
||||
#if !defined(PSNIP_ONCE__H)
|
||||
# include "../once/once.h"
|
||||
#endif
|
||||
|
||||
#include <assert.h>
|
||||
|
||||
#if defined(_WIN32)
|
||||
# include <Windows.h>
|
||||
# define PSNIP_CPU__IMPL_WIN32
|
||||
#elif defined(unix) || defined(__unix__) || defined(__unix)
|
||||
# include <unistd.h>
|
||||
# if defined(_SC_NPROCESSORS_ONLN) || defined(_SC_NPROC_ONLN)
|
||||
# define PSNIP_CPU__IMPL_SYSCONF
|
||||
# else
|
||||
# include <sys/sysctl.h>
|
||||
# endif
|
||||
#endif
|
||||
|
||||
#if defined(PSNIP_CPU_ARCH_X86) || defined(PSNIP_CPU_ARCH_X86_64)
|
||||
# if defined(_MSC_VER)
|
||||
static void psnip_cpu_getid(int func, int* data) {
|
||||
__cpuid(data, func);
|
||||
}
|
||||
# else
|
||||
static void psnip_cpu_getid(int func, int* data) {
|
||||
__asm__ ("cpuid"
|
||||
: "=a" (data[0]), "=b" (data[1]), "=c" (data[2]), "=d" (data[3])
|
||||
: "0" (func), "2" (0));
|
||||
}
|
||||
# endif
|
||||
#elif defined(PSNIP_CPU_ARCH_ARM) || defined(PSNIP_CPU_ARCH_ARM64)
|
||||
# if (defined(__GNUC__) && ((__GNUC__ > 2) || (__GNUC__ == 2 && __GNUC_MINOR__ >= 16)))
|
||||
# define PSNIP_CPU__IMPL_GETAUXVAL
|
||||
# include <sys/auxv.h>
|
||||
# endif
|
||||
#endif
|
||||
|
||||
static psnip_once psnip_cpu_once = PSNIP_ONCE_INIT;
|
||||
|
||||
#if defined(PSNIP_CPU_ARCH_X86) || defined(PSNIP_CPU_ARCH_X86_64)
|
||||
static unsigned int psnip_cpuinfo[8 * 4] = { 0, };
|
||||
#elif defined(PSNIP_CPU_ARCH_ARM) || defined(PSNIP_CPU_ARCH_ARM_64)
|
||||
static unsigned long psnip_cpuinfo[2] = { 0, };
|
||||
#endif
|
||||
|
||||
static void psnip_cpu_init(void) {
|
||||
#if defined(PSNIP_CPU_ARCH_X86) || defined(PSNIP_CPU_ARCH_X86_64)
|
||||
int i;
|
||||
for (i = 0 ; i < 8 ; i++) {
|
||||
psnip_cpu_getid(i, (int*) &(psnip_cpuinfo[i * 4]));
|
||||
}
|
||||
#elif defined(PSNIP_CPU_ARCH_ARM) || defined(PSNIP_CPU_ARCH_ARM_64)
|
||||
psnip_cpuinfo[0] = getauxval (AT_HWCAP);
|
||||
psnip_cpuinfo[1] = getauxval (AT_HWCAP2);
|
||||
#endif
|
||||
}
|
||||
|
||||
int
|
||||
psnip_cpu_feature_check (enum PSnipCPUFeature feature) {
|
||||
#if defined(PSNIP_CPU_ARCH_X86) || defined(PSNIP_CPU_ARCH_X86_64)
|
||||
unsigned int i, r, b;
|
||||
#elif defined(PSNIP_CPU_ARCH_ARM) || defined(PSNIP_CPU_ARCH_ARM_64)
|
||||
unsigned long b, i;
|
||||
#endif
|
||||
|
||||
#if defined(PSNIP_CPU_ARCH_X86) || defined(PSNIP_CPU_ARCH_X86_64)
|
||||
if ((feature & PSNIP_CPU_FEATURE_CPU_MASK) != PSNIP_CPU_FEATURE_X86)
|
||||
return 0;
|
||||
#elif defined(PSNIP_CPU_ARCH_ARM) || defined(PSNIP_CPU_ARCH_ARM_64)
|
||||
if ((feature & PSNIP_CPU_FEATURE_CPU_MASK) != PSNIP_CPU_FEATURE_ARM)
|
||||
return 0;
|
||||
#else
|
||||
return 0;
|
||||
#endif
|
||||
|
||||
feature &= (enum PSnipCPUFeature) ~PSNIP_CPU_FEATURE_CPU_MASK;
|
||||
#if defined(_MSC_VER)
|
||||
#pragma warning(push)
|
||||
#pragma warning(disable:4152)
|
||||
#endif
|
||||
psnip_once_call (&psnip_cpu_once, psnip_cpu_init);
|
||||
#if defined(_MSC_VER)
|
||||
#pragma warning(pop)
|
||||
#endif
|
||||
|
||||
#if defined(PSNIP_CPU_ARCH_X86) || defined(PSNIP_CPU_ARCH_X86_64)
|
||||
i = (feature >> 16) & 0xff;
|
||||
r = (feature >> 8) & 0xff;
|
||||
b = (feature ) & 0xff;
|
||||
|
||||
if (i > 7 || r > 3 || b > 31)
|
||||
return 0;
|
||||
|
||||
return (psnip_cpuinfo[(i * 4) + r] >> b) & 1;
|
||||
#elif defined(PSNIP_CPU_ARCH_ARM) || defined(PSNIP_CPU_ARCH_ARM_64)
|
||||
b = 1 << ((feature & 0xff) - 1);
|
||||
i = psnip_cpuinfo[(feature >> 0x08) & 0xff];
|
||||
return (psnip_cpuinfo[(feature >> 0x08) & 0xff] & b) == b;
|
||||
#endif
|
||||
}
|
||||
|
||||
int
|
||||
psnip_cpu_feature_check_many (enum PSnipCPUFeature* feature) {
|
||||
int n;
|
||||
|
||||
for (n = 0 ; feature[n] != PSNIP_CPU_FEATURE_NONE ; n++)
|
||||
if (!psnip_cpu_feature_check(feature[n]))
|
||||
return 0;
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
int
|
||||
psnip_cpu_count (void) {
|
||||
static int count = 0;
|
||||
int c;
|
||||
|
||||
#if defined(_WIN32)
|
||||
DWORD_PTR lpProcessAffinityMask;
|
||||
DWORD_PTR lpSystemAffinityMask;
|
||||
int i;
|
||||
#elif defined(PSNIP_CPU__IMPL_SYSCONF) && defined(HW_NCPU)
|
||||
int mib[2];
|
||||
size_t len;
|
||||
#endif
|
||||
|
||||
if (count != 0)
|
||||
return count;
|
||||
|
||||
#if defined(_WIN32)
|
||||
if (!GetProcessAffinityMask(GetCurrentProcess(), &lpProcessAffinityMask, &lpSystemAffinityMask)) {
|
||||
c = -1;
|
||||
} else {
|
||||
c = 0;
|
||||
for (i = 0 ; lpProcessAffinityMask != 0 ; lpProcessAffinityMask >>= 1)
|
||||
c += lpProcessAffinityMask & 1;
|
||||
}
|
||||
#elif defined(_SC_NPROCESSORS_ONLN)
|
||||
c = sysconf (_SC_NPROCESSORS_ONLN);
|
||||
#elif defined(_SC_NPROC_ONLN)
|
||||
c = sysconf (_SC_NPROC_ONLN);
|
||||
#elif defined(_hpux)
|
||||
c = mpctl(MPC_GETNUMSPUS, NULL, NULL);
|
||||
#elif defined(HW_NCPU)
|
||||
c = 0;
|
||||
mib[0] = CTL_HW;
|
||||
mib[1] = HW_NCPU;
|
||||
len = sizeof(c);
|
||||
sysctl (mib, 2, &c, &len, NULL, 0);
|
||||
#endif
|
||||
|
||||
count = (c > 0) ? c : -1;
|
||||
|
||||
return count;
|
||||
}
|
||||
190
thirdparty/portable-snippets/cpu/cpu.h
vendored
Normal file
190
thirdparty/portable-snippets/cpu/cpu.h
vendored
Normal file
|
|
@ -0,0 +1,190 @@
|
|||
/* CPU Information (v1)
|
||||
* Portable Snippets - https://github.com/nemequ/portable-snippets
|
||||
* Created by Evan Nemerson <evan@nemerson.com>
|
||||
*
|
||||
* To the extent possible under law, the authors have waived all
|
||||
* copyright and related or neighboring rights to this code. For
|
||||
* details, see the Creative Commons Zero 1.0 Universal license at
|
||||
* https://creativecommons.org/publicdomain/zero/1.0/
|
||||
*/
|
||||
|
||||
#if !defined(PSNIP_CPU__H)
|
||||
#define PSNIP_CPU__H
|
||||
|
||||
#if defined(__x86_64__) || defined(_M_AMD64) || defined(_M_X64)
|
||||
# define PSNIP_CPU_ARCH_X86_64
|
||||
#elif defined(__i686__) || defined(__i586__) || defined(__i486__) || defined(__i386__) || defined(__i386) || defined(_M_IX86) || defined(_X86_) || defined(__THW_INTEL__)
|
||||
# define PSNIP_CPU_ARCH_X86
|
||||
#elif defined(__arm__) || defined(_M_ARM)
|
||||
# define PSNIP_CPU_ARCH_ARM
|
||||
#elif defined(__aarch64__)
|
||||
# define PSNIP_CPU_ARCH_ARM64
|
||||
#endif
|
||||
|
||||
#if defined(__cplusplus)
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
enum PSnipCPUFeature {
|
||||
PSNIP_CPU_FEATURE_NONE = 0,
|
||||
|
||||
PSNIP_CPU_FEATURE_CPU_MASK = 0x1f000000,
|
||||
PSNIP_CPU_FEATURE_X86 = 0x01000000,
|
||||
PSNIP_CPU_FEATURE_ARM = 0x04000000,
|
||||
|
||||
/* x86 CPU features are constructed as:
|
||||
*
|
||||
* (PSNIP_CPU_FEATURE_X86 | (eax << 16) | (ret_reg << 8) | (bit_position)
|
||||
*
|
||||
* For example, SSE3 is determined by the fist bit in the ECX
|
||||
* register for a CPUID call with EAX=1, so we get:
|
||||
*
|
||||
* PSNIP_CPU_FEATURE_X86 | (1 << 16) | (2 << 8) | (0) = 0x01010200
|
||||
*
|
||||
* We should have information for inputs of EAX=0-7 w/ ECX=0.
|
||||
*/
|
||||
PSNIP_CPU_FEATURE_X86_FPU = 0x01010300,
|
||||
PSNIP_CPU_FEATURE_X86_VME = 0x01010301,
|
||||
PSNIP_CPU_FEATURE_X86_DE = 0x01010302,
|
||||
PSNIP_CPU_FEATURE_X86_PSE = 0x01010303,
|
||||
PSNIP_CPU_FEATURE_X86_TSC = 0x01010304,
|
||||
PSNIP_CPU_FEATURE_X86_MSR = 0x01010305,
|
||||
PSNIP_CPU_FEATURE_X86_PAE = 0x01010306,
|
||||
PSNIP_CPU_FEATURE_X86_MCE = 0x01010307,
|
||||
PSNIP_CPU_FEATURE_X86_CX8 = 0x01010308,
|
||||
PSNIP_CPU_FEATURE_X86_APIC = 0x01010309,
|
||||
PSNIP_CPU_FEATURE_X86_SEP = 0x0101030b,
|
||||
PSNIP_CPU_FEATURE_X86_MTRR = 0x0101030c,
|
||||
PSNIP_CPU_FEATURE_X86_PGE = 0x0101030d,
|
||||
PSNIP_CPU_FEATURE_X86_MCA = 0x0101030e,
|
||||
PSNIP_CPU_FEATURE_X86_CMOV = 0x0101030f,
|
||||
PSNIP_CPU_FEATURE_X86_PAT = 0x01010310,
|
||||
PSNIP_CPU_FEATURE_X86_PSE_36 = 0x01010311,
|
||||
PSNIP_CPU_FEATURE_X86_PSN = 0x01010312,
|
||||
PSNIP_CPU_FEATURE_X86_CLFSH = 0x01010313,
|
||||
PSNIP_CPU_FEATURE_X86_DS = 0x01010314,
|
||||
PSNIP_CPU_FEATURE_X86_ACPI = 0x01010316,
|
||||
PSNIP_CPU_FEATURE_X86_MMX = 0x01010317,
|
||||
PSNIP_CPU_FEATURE_X86_FXSR = 0x01010318,
|
||||
PSNIP_CPU_FEATURE_X86_SSE = 0x01010319,
|
||||
PSNIP_CPU_FEATURE_X86_SSE2 = 0x0101031a,
|
||||
PSNIP_CPU_FEATURE_X86_SS = 0x0101031b,
|
||||
PSNIP_CPU_FEATURE_X86_HTT = 0x0101031c,
|
||||
PSNIP_CPU_FEATURE_X86_TM = 0x0101031d,
|
||||
PSNIP_CPU_FEATURE_X86_IA64 = 0x0101031e,
|
||||
PSNIP_CPU_FEATURE_X86_PBE = 0x0101031f,
|
||||
|
||||
PSNIP_CPU_FEATURE_X86_SSE3 = 0x01010200,
|
||||
PSNIP_CPU_FEATURE_X86_PCLMULQDQ = 0x01010201,
|
||||
PSNIP_CPU_FEATURE_X86_DTES64 = 0x01010202,
|
||||
PSNIP_CPU_FEATURE_X86_MONITOR = 0x01010203,
|
||||
PSNIP_CPU_FEATURE_X86_DS_CPL = 0x01010204,
|
||||
PSNIP_CPU_FEATURE_X86_VMX = 0x01010205,
|
||||
PSNIP_CPU_FEATURE_X86_SMX = 0x01010206,
|
||||
PSNIP_CPU_FEATURE_X86_EST = 0x01010207,
|
||||
PSNIP_CPU_FEATURE_X86_TM2 = 0x01010208,
|
||||
PSNIP_CPU_FEATURE_X86_SSSE3 = 0x01010209,
|
||||
PSNIP_CPU_FEATURE_X86_CNXT_ID = 0x0101020a,
|
||||
PSNIP_CPU_FEATURE_X86_SDBG = 0x0101020b,
|
||||
PSNIP_CPU_FEATURE_X86_FMA = 0x0101020c,
|
||||
PSNIP_CPU_FEATURE_X86_CX16 = 0x0101020d,
|
||||
PSNIP_CPU_FEATURE_X86_XTPR = 0x0101020e,
|
||||
PSNIP_CPU_FEATURE_X86_PDCM = 0x0101020f,
|
||||
PSNIP_CPU_FEATURE_X86_PCID = 0x01010211,
|
||||
PSNIP_CPU_FEATURE_X86_DCA = 0x01010212,
|
||||
PSNIP_CPU_FEATURE_X86_SSE4_1 = 0x01010213,
|
||||
PSNIP_CPU_FEATURE_X86_SSE4_2 = 0x01010214,
|
||||
PSNIP_CPU_FEATURE_X86_X2APIC = 0x01010215,
|
||||
PSNIP_CPU_FEATURE_X86_MOVBE = 0x01010216,
|
||||
PSNIP_CPU_FEATURE_X86_POPCNT = 0x01010217,
|
||||
PSNIP_CPU_FEATURE_X86_TSC_DEADLINE = 0x01010218,
|
||||
PSNIP_CPU_FEATURE_X86_AES = 0x01010219,
|
||||
PSNIP_CPU_FEATURE_X86_XSAVE = 0x0101021a,
|
||||
PSNIP_CPU_FEATURE_X86_OSXSAVE = 0x0101021b,
|
||||
PSNIP_CPU_FEATURE_X86_AVX = 0x0101021c,
|
||||
PSNIP_CPU_FEATURE_X86_F16C = 0x0101021d,
|
||||
PSNIP_CPU_FEATURE_X86_RDRND = 0x0101021e,
|
||||
PSNIP_CPU_FEATURE_X86_HYPERVISOR = 0x0101021f,
|
||||
|
||||
PSNIP_CPU_FEATURE_X86_FSGSBASE = 0x01070100,
|
||||
PSNIP_CPU_FEATURE_X86_TSC_ADJ = 0x01070101,
|
||||
PSNIP_CPU_FEATURE_X86_SGX = 0x01070102,
|
||||
PSNIP_CPU_FEATURE_X86_BMI1 = 0x01070103,
|
||||
PSNIP_CPU_FEATURE_X86_HLE = 0x01070104,
|
||||
PSNIP_CPU_FEATURE_X86_AVX2 = 0x01070105,
|
||||
PSNIP_CPU_FEATURE_X86_SMEP = 0x01070107,
|
||||
PSNIP_CPU_FEATURE_X86_BMI2 = 0x01070108,
|
||||
PSNIP_CPU_FEATURE_X86_ERMS = 0x01070109,
|
||||
PSNIP_CPU_FEATURE_X86_INVPCID = 0x0107010a,
|
||||
PSNIP_CPU_FEATURE_X86_RTM = 0x0107010b,
|
||||
PSNIP_CPU_FEATURE_X86_PQM = 0x0107010c,
|
||||
PSNIP_CPU_FEATURE_X86_MPX = 0x0107010e,
|
||||
PSNIP_CPU_FEATURE_X86_PQE = 0x0107010f,
|
||||
PSNIP_CPU_FEATURE_X86_AVX512F = 0x01070110,
|
||||
PSNIP_CPU_FEATURE_X86_AVX512DQ = 0x01070111,
|
||||
PSNIP_CPU_FEATURE_X86_RDSEED = 0x01070112,
|
||||
PSNIP_CPU_FEATURE_X86_ADX = 0x01070113,
|
||||
PSNIP_CPU_FEATURE_X86_SMAP = 0x01070114,
|
||||
PSNIP_CPU_FEATURE_X86_AVX512IFMA = 0x01070115,
|
||||
PSNIP_CPU_FEATURE_X86_PCOMMIT = 0x01070116,
|
||||
PSNIP_CPU_FEATURE_X86_CLFLUSHOPT = 0x01070117,
|
||||
PSNIP_CPU_FEATURE_X86_CLWB = 0x01070118,
|
||||
PSNIP_CPU_FEATURE_X86_INTEL_PT = 0x01070119,
|
||||
PSNIP_CPU_FEATURE_X86_AVX512PF = 0x0107011a,
|
||||
PSNIP_CPU_FEATURE_X86_AVX512ER = 0x0107011b,
|
||||
PSNIP_CPU_FEATURE_X86_AVX512CD = 0x0107011c,
|
||||
PSNIP_CPU_FEATURE_X86_SHA = 0x0107011d,
|
||||
PSNIP_CPU_FEATURE_X86_AVX512BW = 0x0107011e,
|
||||
PSNIP_CPU_FEATURE_X86_AVX512VL = 0x0107011f,
|
||||
|
||||
PSNIP_CPU_FEATURE_X86_PREFETCHWT1 = 0x01070200,
|
||||
PSNIP_CPU_FEATURE_X86_AVX512VBMI = 0x01070201,
|
||||
PSNIP_CPU_FEATURE_X86_UMIP = 0x01070202,
|
||||
PSNIP_CPU_FEATURE_X86_PKU = 0x01070203,
|
||||
PSNIP_CPU_FEATURE_X86_OSPKE = 0x01070204,
|
||||
PSNIP_CPU_FEATURE_X86_AVX512VPOPCNTDQ = 0x0107020e,
|
||||
PSNIP_CPU_FEATURE_X86_RDPID = 0x01070215,
|
||||
PSNIP_CPU_FEATURE_X86_SGX_LC = 0x0107021e,
|
||||
|
||||
PSNIP_CPU_FEATURE_X86_AVX512_4VNNIW = 0x01070302,
|
||||
PSNIP_CPU_FEATURE_X86_AVX512_4FMAPS = 0x01070303,
|
||||
|
||||
PSNIP_CPU_FEATURE_ARM_SWP = PSNIP_CPU_FEATURE_ARM | 1,
|
||||
PSNIP_CPU_FEATURE_ARM_HALF = PSNIP_CPU_FEATURE_ARM | 2,
|
||||
PSNIP_CPU_FEATURE_ARM_THUMB = PSNIP_CPU_FEATURE_ARM | 3,
|
||||
PSNIP_CPU_FEATURE_ARM_26BIT = PSNIP_CPU_FEATURE_ARM | 4,
|
||||
PSNIP_CPU_FEATURE_ARM_FAST_MULT = PSNIP_CPU_FEATURE_ARM | 5,
|
||||
PSNIP_CPU_FEATURE_ARM_FPA = PSNIP_CPU_FEATURE_ARM | 6,
|
||||
PSNIP_CPU_FEATURE_ARM_VFP = PSNIP_CPU_FEATURE_ARM | 7,
|
||||
PSNIP_CPU_FEATURE_ARM_EDSP = PSNIP_CPU_FEATURE_ARM | 8,
|
||||
PSNIP_CPU_FEATURE_ARM_JAVA = PSNIP_CPU_FEATURE_ARM | 9,
|
||||
PSNIP_CPU_FEATURE_ARM_IWMMXT = PSNIP_CPU_FEATURE_ARM | 10,
|
||||
PSNIP_CPU_FEATURE_ARM_CRUNCH = PSNIP_CPU_FEATURE_ARM | 11,
|
||||
PSNIP_CPU_FEATURE_ARM_THUMBEE = PSNIP_CPU_FEATURE_ARM | 12,
|
||||
PSNIP_CPU_FEATURE_ARM_NEON = PSNIP_CPU_FEATURE_ARM | 13,
|
||||
PSNIP_CPU_FEATURE_ARM_VFPV3 = PSNIP_CPU_FEATURE_ARM | 14,
|
||||
PSNIP_CPU_FEATURE_ARM_VFPV3D16 = PSNIP_CPU_FEATURE_ARM | 15,
|
||||
PSNIP_CPU_FEATURE_ARM_TLS = PSNIP_CPU_FEATURE_ARM | 16,
|
||||
PSNIP_CPU_FEATURE_ARM_VFPV4 = PSNIP_CPU_FEATURE_ARM | 17,
|
||||
PSNIP_CPU_FEATURE_ARM_IDIVA = PSNIP_CPU_FEATURE_ARM | 18,
|
||||
PSNIP_CPU_FEATURE_ARM_IDIVT = PSNIP_CPU_FEATURE_ARM | 19,
|
||||
PSNIP_CPU_FEATURE_ARM_VFPD32 = PSNIP_CPU_FEATURE_ARM | 20,
|
||||
PSNIP_CPU_FEATURE_ARM_LPAE = PSNIP_CPU_FEATURE_ARM | 21,
|
||||
PSNIP_CPU_FEATURE_ARM_EVTSTRM = PSNIP_CPU_FEATURE_ARM | 22,
|
||||
|
||||
PSNIP_CPU_FEATURE_ARM_AES = PSNIP_CPU_FEATURE_ARM | 0x0100 | 1,
|
||||
PSNIP_CPU_FEATURE_ARM_PMULL = PSNIP_CPU_FEATURE_ARM | 0x0100 | 2,
|
||||
PSNIP_CPU_FEATURE_ARM_SHA1 = PSNIP_CPU_FEATURE_ARM | 0x0100 | 3,
|
||||
PSNIP_CPU_FEATURE_ARM_SHA2 = PSNIP_CPU_FEATURE_ARM | 0x0100 | 4,
|
||||
PSNIP_CPU_FEATURE_ARM_CRC32 = PSNIP_CPU_FEATURE_ARM | 0x0100 | 5
|
||||
};
|
||||
|
||||
int psnip_cpu_count (void);
|
||||
int psnip_cpu_feature_check (enum PSnipCPUFeature feature);
|
||||
int psnip_cpu_feature_check_many (enum PSnipCPUFeature* feature);
|
||||
|
||||
#if defined(__cplusplus)
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* PSNIP_CPU__H */
|
||||
Loading…
Add table
Add a link
Reference in a new issue