- Use thecpu_specificandcpu_dispatchkeywords—attributes in Linux* or __declspecs in Windows*—to write one or more versions of a function that executes only on specified types of Intel® processors as well as a generic version that executes on other Intel or non-Intel processors. The Intel processor type is detected at run-time, and the corresponding function version is executed. This feature is available only for Intel processors based on IA-32 or Intel® 64 architecture. It is not available for non-Intel processors. Applications built using the manual processor dispatch feature may be more highly optimized for Intel processors than for non-Intel processors.For more information see below.
- Use theoptimization_parameterpragma.For more information see below.
- On Linux*, in addition to the Intel-defined attributescpu_specificandcpu_dispatch, C++ compilations with GNU Compiler Collection (GCC*) compatibility 4.8 or higher support creation of multiple function versions using thetargetattribute.For more information see the GCC documentation on "Function Multiversioning".
cpu_dispatch for Manual Processor Dispatch Programming
- code and executable sizes increase considerably
- additional performance overhead may be introduced because of additional function calls
Using Pragmas to Target Processors Manually
Intel's compilers may or may not optimize to the same degree for non-Intel microprocessors for optimizations that are not unique to Intel microprocessors. These optimizations include SSE2, SSE3, and SSSE3 instruction sets and other optimizations. Intel does not guarantee the availability, functionality, or effectiveness of any optimization on microprocessors not manufactured by Intel. Microprocessor-dependent optimizations in this product are intended for use with Intel microprocessors. Certain optimizations not specific to Intel microarchitecture are reserved for Intel microprocessors. Please refer to the applicable product User and Reference Guides for more information regarding the specific instruction sets covered by this notice.
Notice revision #20110804