enum PF [src]
Processor feature enumeration.
Fields
FLOATING_POINT_PRECISION_ERRATA = 0On a Pentium, a floating-point precision error can occur in rare circumstances.
FLOATING_POINT_EMULATED = 1Floating-point operations are emulated using software emulator.
This function returns a nonzero value if floating-point operations are emulated; otherwise, it returns zero.
COMPARE_EXCHANGE_DOUBLE = 2The atomic compare and exchange operation (cmpxchg) is available.
MMX_INSTRUCTIONS_AVAILABLE = 3The MMX instruction set is available.
PPC_MOVEMEM_64BIT_OK = 4
ALPHA_BYTE_INSTRUCTIONS = 5
XMMI_INSTRUCTIONS_AVAILABLE = 6The SSE instruction set is available.
@"3DNOW_INSTRUCTIONS_AVAILABLE" = 7The 3D-Now instruction is available.
RDTSC_INSTRUCTION_AVAILABLE = 8The RDTSC instruction is available.
PAE_ENABLED = 9The processor is PAE-enabled.
XMMI64_INSTRUCTIONS_AVAILABLE = 10The SSE2 instruction set is available.
SSE_DAZ_MODE_AVAILABLE = 11
NX_ENABLED = 12Data execution prevention is enabled.
SSE3_INSTRUCTIONS_AVAILABLE = 13The SSE3 instruction set is available.
COMPARE_EXCHANGE128 = 14The atomic compare and exchange 128-bit operation (cmpxchg16b) is available.
COMPARE64_EXCHANGE128 = 15The atomic compare 64 and exchange 128-bit operation (cmp8xchg16) is available.
CHANNELS_ENABLED = 16The processor channels are enabled.
XSAVE_ENABLED = 17The processor implements the XSAVI and XRSTOR instructions.
ARM_VFP_32_REGISTERS_AVAILABLE = 18The VFP/Neon: 32 x 64bit register bank is present.
This flag has the same meaning as PF_ARM_VFP_EXTENDED_REGISTERS.
ARM_NEON_INSTRUCTIONS_AVAILABLE = 19This ARM processor implements the ARM v8 NEON instruction set.
SECOND_LEVEL_ADDRESS_TRANSLATION = 20Second Level Address Translation is supported by the hardware.
VIRT_FIRMWARE_ENABLED = 21Virtualization is enabled in the firmware and made available by the operating system.
RDWRFSGBASE_AVAILABLE = 22RDFSBASE, RDGSBASE, WRFSBASE, and WRGSBASE instructions are available.
FASTFAIL_AVAILABLE = 23_fastfail() is available.
ARM_DIVIDE_INSTRUCTION_AVAILABLE = 24The divide instruction_available.
ARM_64BIT_LOADSTORE_ATOMIC = 25The 64-bit load/store atomic instructions are available.
ARM_EXTERNAL_CACHE_AVAILABLE = 26The external cache is available.
ARM_FMAC_INSTRUCTIONS_AVAILABLE = 27The floating-point multiply-accumulate instruction is available.
RDRAND_INSTRUCTION_AVAILABLE = 28
ARM_V8_INSTRUCTIONS_AVAILABLE = 29This ARM processor implements the ARM v8 instructions set.
ARM_V8_CRYPTO_INSTRUCTIONS_AVAILABLE = 30This ARM processor implements the ARM v8 extra cryptographic instructions (i.e., AES, SHA1 and SHA2).
ARM_V8_CRC32_INSTRUCTIONS_AVAILABLE = 31This ARM processor implements the ARM v8 extra CRC32 instructions.
RDTSCP_INSTRUCTION_AVAILABLE = 32
RDPID_INSTRUCTION_AVAILABLE = 33
ARM_V81_ATOMIC_INSTRUCTIONS_AVAILABLE = 34This ARM processor implements the ARM v8.1 atomic instructions (e.g., CAS, SWP).
MONITORX_INSTRUCTION_AVAILABLE = 35
SSSE3_INSTRUCTIONS_AVAILABLE = 36The SSSE3 instruction set is available.
SSE4_1_INSTRUCTIONS_AVAILABLE = 37The SSE4_1 instruction set is available.
SSE4_2_INSTRUCTIONS_AVAILABLE = 38The SSE4_2 instruction set is available.
AVX_INSTRUCTIONS_AVAILABLE = 39The AVX instruction set is available.
AVX2_INSTRUCTIONS_AVAILABLE = 40The AVX2 instruction set is available.
AVX512F_INSTRUCTIONS_AVAILABLE = 41The AVX512F instruction set is available.
ERMS_AVAILABLE = 42
ARM_V82_DP_INSTRUCTIONS_AVAILABLE = 43This ARM processor implements the ARM v8.2 Dot Product (DP) instructions.
ARM_V83_JSCVT_INSTRUCTIONS_AVAILABLE = 44This ARM processor implements the ARM v8.3 JavaScript conversion (JSCVT) instructions.
Source
pub const PF = enum(DWORD) {
/// On a Pentium, a floating-point precision error can occur in rare circumstances.
FLOATING_POINT_PRECISION_ERRATA = 0,
/// Floating-point operations are emulated using software emulator.
/// This function returns a nonzero value if floating-point operations are emulated; otherwise, it returns zero.
FLOATING_POINT_EMULATED = 1,
/// The atomic compare and exchange operation (cmpxchg) is available.
COMPARE_EXCHANGE_DOUBLE = 2,
/// The MMX instruction set is available.
MMX_INSTRUCTIONS_AVAILABLE = 3,
PPC_MOVEMEM_64BIT_OK = 4,
ALPHA_BYTE_INSTRUCTIONS = 5,
/// The SSE instruction set is available.
XMMI_INSTRUCTIONS_AVAILABLE = 6,
/// The 3D-Now instruction is available.
@"3DNOW_INSTRUCTIONS_AVAILABLE" = 7,
/// The RDTSC instruction is available.
RDTSC_INSTRUCTION_AVAILABLE = 8,
/// The processor is PAE-enabled.
PAE_ENABLED = 9,
/// The SSE2 instruction set is available.
XMMI64_INSTRUCTIONS_AVAILABLE = 10,
SSE_DAZ_MODE_AVAILABLE = 11,
/// Data execution prevention is enabled.
NX_ENABLED = 12,
/// The SSE3 instruction set is available.
SSE3_INSTRUCTIONS_AVAILABLE = 13,
/// The atomic compare and exchange 128-bit operation (cmpxchg16b) is available.
COMPARE_EXCHANGE128 = 14,
/// The atomic compare 64 and exchange 128-bit operation (cmp8xchg16) is available.
COMPARE64_EXCHANGE128 = 15,
/// The processor channels are enabled.
CHANNELS_ENABLED = 16,
/// The processor implements the XSAVI and XRSTOR instructions.
XSAVE_ENABLED = 17,
/// The VFP/Neon: 32 x 64bit register bank is present.
/// This flag has the same meaning as PF_ARM_VFP_EXTENDED_REGISTERS.
ARM_VFP_32_REGISTERS_AVAILABLE = 18,
/// This ARM processor implements the ARM v8 NEON instruction set.
ARM_NEON_INSTRUCTIONS_AVAILABLE = 19,
/// Second Level Address Translation is supported by the hardware.
SECOND_LEVEL_ADDRESS_TRANSLATION = 20,
/// Virtualization is enabled in the firmware and made available by the operating system.
VIRT_FIRMWARE_ENABLED = 21,
/// RDFSBASE, RDGSBASE, WRFSBASE, and WRGSBASE instructions are available.
RDWRFSGBASE_AVAILABLE = 22,
/// _fastfail() is available.
FASTFAIL_AVAILABLE = 23,
/// The divide instruction_available.
ARM_DIVIDE_INSTRUCTION_AVAILABLE = 24,
/// The 64-bit load/store atomic instructions are available.
ARM_64BIT_LOADSTORE_ATOMIC = 25,
/// The external cache is available.
ARM_EXTERNAL_CACHE_AVAILABLE = 26,
/// The floating-point multiply-accumulate instruction is available.
ARM_FMAC_INSTRUCTIONS_AVAILABLE = 27,
RDRAND_INSTRUCTION_AVAILABLE = 28,
/// This ARM processor implements the ARM v8 instructions set.
ARM_V8_INSTRUCTIONS_AVAILABLE = 29,
/// This ARM processor implements the ARM v8 extra cryptographic instructions (i.e., AES, SHA1 and SHA2).
ARM_V8_CRYPTO_INSTRUCTIONS_AVAILABLE = 30,
/// This ARM processor implements the ARM v8 extra CRC32 instructions.
ARM_V8_CRC32_INSTRUCTIONS_AVAILABLE = 31,
RDTSCP_INSTRUCTION_AVAILABLE = 32,
RDPID_INSTRUCTION_AVAILABLE = 33,
/// This ARM processor implements the ARM v8.1 atomic instructions (e.g., CAS, SWP).
ARM_V81_ATOMIC_INSTRUCTIONS_AVAILABLE = 34,
MONITORX_INSTRUCTION_AVAILABLE = 35,
/// The SSSE3 instruction set is available.
SSSE3_INSTRUCTIONS_AVAILABLE = 36,
/// The SSE4_1 instruction set is available.
SSE4_1_INSTRUCTIONS_AVAILABLE = 37,
/// The SSE4_2 instruction set is available.
SSE4_2_INSTRUCTIONS_AVAILABLE = 38,
/// The AVX instruction set is available.
AVX_INSTRUCTIONS_AVAILABLE = 39,
/// The AVX2 instruction set is available.
AVX2_INSTRUCTIONS_AVAILABLE = 40,
/// The AVX512F instruction set is available.
AVX512F_INSTRUCTIONS_AVAILABLE = 41,
ERMS_AVAILABLE = 42,
/// This ARM processor implements the ARM v8.2 Dot Product (DP) instructions.
ARM_V82_DP_INSTRUCTIONS_AVAILABLE = 43,
/// This ARM processor implements the ARM v8.3 JavaScript conversion (JSCVT) instructions.
ARM_V83_JSCVT_INSTRUCTIONS_AVAILABLE = 44,
}