Which applications use SIMD

Enable Windows 7 support for Intel AVX

  • 2 minutes to read

Affected platforms

Clients - Windows 7 SP1
server - Windows Server 2008 R2 SP1

Effects on features

Severity - Low
frequency : Low


Intel? Advanced Vector Extensions (AVX)? is a 256-bit SIMD floating point vector extension of the Intel architecture. It contains extensions for instruction and register sets.

Microsoft has developed some API extensions such as: B. XState functions that allow applications to access and manipulate advanced processor feature information and states, including AVX.

Usage scenarios

There are three general levels of potential impact.

Level 1: Applications that do not use Intel AVX directly have no effect on their functionality, even if they call libraries or use compilers that indirectly use or generate intel AVX extensions. This represents the vast majority of the applications.

Level 2: Advanced applications that explicitly use the Intel AVX instruction set can access and modify AVX register contents if a hardware exception is thrown. A very small number of applications would fall into this category because it implies a thorough knowledge of the instruction stream that is executing at the time of the exception, e.g. For example, applications with sections written in assembly language or those that generate computer code at runtime (e.g. runtimes of managed code with just-in-time compilation).

Level 3: Debugger applications can access and manipulate the AVX status in the application being debugged.

Use of feature functions

Level 1: No action is required for applications to use Intel AVX.

Level 2: Applications in this category have the option of accessing and editing the AVX state at the time of the exception in their exception filters. After getting the base processor context via GetExceptionInformation, filters should:

1. Check The value of the CONTEXT _ XSTATE flags. This flag indicates that at least one XState feature was present in the context.
2. If so, give us a call GetXStateFeaturesMask and test the value of the XSTATE _ AVX flags in the returned mask. This indicates the presence of the AVX state in the context.
3. CallLocateXStateFeature on, to get the actual location of the AVX state.

Level 3: There is no need to update existing debugger applications unless you want to access the Intel AVX registers:

1. To determine if AVX is enabled, the debugger should use:

  • GetEnabledXStateFeatures to get a mask of activated XState features on x86 or x64 processors to determine which features are present and activated on the system before using an XState processor feature or attempting to manipulate XState contexts

2. If AVX is present and you want to get the AVX state from the application being debugged and manipulate it (e.g. GetThreadContext and SetThreadContext), the debugger should use:

  • InitializeContext function for initializing a context structure within a buffer with the required size and alignment
  • CopyContext function for copying a source context structure (including any XState) into an initialized target context structure

3. To test, set and find AVX state in a processor context, the debugger should use:

  • LocateXStateFeature to get a pointer to the processor state for a single XState feature within a context structure
  • GetXStateFeaturesMask for returning the mask of XState features that are set within a context structure
  • SetXStateFeaturesMask for setting the mask of XState features that are defined within a context structure

Links to other resources