IsProcessorFeaturePresent (Compact 2013)

3/28/2014

This function retrieves information about supported features in a system.

Syntax

BOOL IsProcessorFeaturePresent(
  DWORD dwProcessorFeature
);

Parameters

  • dwProcessorFeature
    [in] Flag for the feature that you want to verify support for.

    The following table shows the flags for ARM processor features.

    Flag

    Description

    PF_ARM_64BIT_LOADSTORE_ATOMIC

    The 64-bit load/store atomic instructions are available.

    PF_ARM_CACHE_CAN_BE_LOCKED_DOWN

    The cache can be locked down.

    PF_ARM_DIVIDE_INSTRUCTION_AVAILABLE

    The divide instructions are available.

    PF_ARM_DSP

    This flag is deprecated. The E DSP instructions are available.

    PF_ARM_DTCM

    Tightly coupled data memory is available.

    PF_ARM_EXTERNAL_CACHE_AVAILABLE

    The external cache is available.

    PF_ARM_INTEL_PMU

    This flag is deprecated. The Performance Monitor Unit (PMU) is available.

    PF_ARM_FMAC_INSTRUCTIONS_AVAILABLE

    The floating-point multiply-accumulate instruction is available.

    PF_ARM_INTEL_WMMX

    This flag is deprecated. Wireless MMX (WMMX) is supported.

    PF_ARM_INTEL_XSCALE

    The Intel XScale processor. This can be used to determine whether the processor supports operations where src==dest.

    PF_ARM_ITCM

    Tightly coupled data memory.

    PF_ARM_JAZELLE

    The ARM Jazelle technology.

    PF_ARM_L2CACHE

    This flag is deprecated. The level 2 cache controller. For the correct flags to use, see the other L2 cache flags.

    PF_ARM_L2CACHE_COPROC

    The level 2 cache controller implemented as a coprocessor.

    PF_ARM_L2CACHE_MEMORY_MAPPED

    The level 2 cache controller implemented as a memory-mapped peripheral.

    PF_ARM_MBX

    The ARM MBX technology.

    PF_ARM_MOVE_CP

    The ARM MOVE coprocessor.

    PF_ARM_MPU

    Support for memory protection unit (MPU) is available.

    PF_ARM_NEON

    The NEON instruction set.

    PF_ARM_NEON_HALF_PRECISION

    The NEON half-precision floating point values.

    This flag always returns TRUE as NEON is required for Windows Embedded Compact 2013.

    PF_ARM_NEON_INSTRUCTIONS_AVAILABLE

    Support for Advanced SIMD registers, single-precision floating-point SIMD, integer SIMD, and advanced SIMD load/store is available.

    PF_ARM_NEON_LOAD_STORE

    The NEON SIMD loads and stores.

    This flag always returns TRUE as NEON is required for Windows Embedded Compact 2013.

    PF_ARM_NEON_SINGLE_PRECISION

    The NEON single-precision floating-point values.

    This flag always returns TRUE as NEON is required for Windows Embedded Compact 2013.

    PF_ARM_PHYSICALLY_TAGGED_CACHE

    The cache is, or can be, physically tagged.

    PF_ARM_T2EE

    The T2EE instruction set.

    PF_ARM_THUMB

    The thumb instruction set.

    PF_ARM_THUMB2

    The thumb2 instruction set.

    PF_ARM_UNALIGNED_ACCESS

    Can support unaligned access. You must call a KLIB_IOCTL to turn this on.

    This flag always returns TRUE.

    PF_ARM_UNIFIED_CACHE

    The unified cache.

    PF_ARM_V6

    The ARM architecture v6. This flag always returns TRUE.

    PF_ARM_V7

    The ARM architecture v7. This flag always returns TRUE.

    PF_ARM_VFP_32_REGISTERS_AVAILABLE

    The VFP/Neon: 32 x 64bit register bank is present. This flag has the same meaning as PF_ARM_VFP_EXTENDED_REGISTERS.

    PF_ARM_VFP_DENORMALS

    The VFP denormalized number arithmetic. This flag always returns TRUE.

    PF_ARM_VFP_DOUBLE_PRECISION

    The double-precision vectored floating-point unit. This flag always returns TRUE.

    PF_ARM_VFP_SINGLE_PRECISION

    The single-precision vectored floating-point unit. This flag always returns TRUE.

    PF_ARM_VFP_SUPPORT

    The OS support for VFP, such as VFP context switch and handling bounced VFP instructions. This does not indicate the presence of VFP hardware. Use PF_ARM_VFP_HARDWARE to query for VFP hardware. This flag always returns TRUE.

    PF_ARM_VFP_HARDWARE

    The VFP hardware implementation (any version). This flag always returns TRUE.

    PF_ARM_VFP_V1

    The VFP1 hardware. This flag always returns TRUE.

    PF_ARM_VFP_V2

    The VFP2 hardware. This flag always returns TRUE.

    PF_ARM_VFP_V3

    The VFP3 hardware. This flag always returns TRUE.

    PF_ARM_VFP_SINGLE_PRECISION

    The VFP hardware support for single-precision floating-point values. This flag always returns TRUE.

    PF_ARM_VFP_DOUBLE_PRECISION

    The VFP hardware support for double-precision floating-point values. This flag always returns TRUE.

    PF_ARM_VFP_ALL_ROUNDING_MODES

    The VFP support for all IEEE rounding modes. This flag always returns TRUE.

    PF_ARM_VFP_SHORT_VECTORS

    The VFP support for short vector operations. This flag always returns TRUE.

    PF_ARM_VFP_SQUARE_ROOT

    The square root implemented in VFP hardware. This flag always returns TRUE.

    PF_ARM_VFP_DIVIDE

    The divide operations implemented in VFP hardware. This flag always returns TRUE.

    PF_ARM_VFP_FP_EXCEPTIONS

    The VFP support for trapped exceptions.

    PF_ARM_VFP_EXTENDED_REGISTERS

    The VFP/Neon: 32 x 64-bit register bank. This flag always returns TRUE.

    PF_ARM_VFP_HALF_PRECISION

    The VFP support for half-precision floating-point values. This flag always returns TRUE.

    PF_ARM_VFP10

    The VFP10 floating-point unit. This flag is obsolete. For the correct flags to use, see the other VFP flags. This flag always returns TRUE.

    PF_ARM_WRITE_BUFFER

    The writeback buffer.

    PF_ARM_WRITE_BACK_CACHE

    The writeback cache.

    The following table shows the flags for x86 processor features.

    Flag

    Description

    PF_3DNOW_INSTRUCTIONS_AVAILABLE

    The 3D-Now instruction set is available.

    PF_COMPARE_EXCHANGE_DOUBLE

    The atomic compare and exchange operation (cmpxchg) is available.

    PF_FASTFAIL_AVAILABLE

    _fastfail() is available.

    PF_FLOATING_POINT_EMULATED

    Floating-point operations are emulated.

    PF_FLOATING_POINT_PRECISION_ERRATA

    On a Pentium CPU, a floating-point precision error can occur in rare circumstances

    PF_MMX_INSTRUCTIONS_AVAILABLE

    MMX instruction set support is available.

    PF_PAE_ENABLED

    The processor is PAE-enabled. For more information, see Physical Address Extension.

    PF_RDTSC_INSTRUCTION_AVAILABLE

    RDTSC (read time-stamp counter) instruction is available.

    PF_RDWRFSGSBASE_AVAILABLE

    RDFSBASE, RDGSBASE, WRFSBASE, and WRGSBASE instructions are available.

    PF_SECOND_LEVEL_ADDRESS_TRANSLATION

    Second-level address translation (SLAT) support is available.

    PF_VIRT_FIRMWARE_ENABLED

    Firmware virtualization is enabled in the BIOS.

    PF_XSAVE_ENABLED

    XSAVE and Processor Extended States are enabled.

    PF_XMMI_INSTRUCTIONS_AVAILABLE

    The streaming SIMD Extensions (SSE) instruction set is available.

    PF_XMMI64_INSTRUCTIONS_AVAILABLE

    SSE2 instruction set support is available.

    PF_X86_VIRTUALIZED

    Indicates whether the system running in a virtual machine.

    PF_X86_HYPERVISOR

    Indicates whether Hypervisor is present.

    Note

    All other PF_XXX flags return FALSE.

Return Value

Nonzero indicates that the processor feature is supported. FALSE indicates that the processor feature is not supported.

Remarks

The PF_XXX flags in dwProcessorFeature are filtered based on the CPU type. Only the PF_XXX flags corresponding to the CPU being compiled are present.

Requirements

Header

windows.h

Library

OEMMain.lib or OEMMain_StaticKITL.lib

See Also

Reference

System Management Functions

Other Resources

OEMIsProcessorFeaturePresent