The automatic vectorizer (also called the auto-vectorizer) is a component of the Intel® compiler that automatically uses SIMD instructions in the MMX™, Intel® Streaming SIMD Extensions (Intel® SSE, SSE2, SSE3 and SSE4 Vectorizing Compiler and Media Accelerators) and Supplemental Streaming SIMD Extensions (SSSE3) instruction sets. The vectorizer detects operations in the program that can be done in parallel, and then converts the sequential operations like one SIMD instruction that processes 2, 4, 8 or up to 16 elements in parallel, depending on the data type.
Automatic vectorization is supported on IA-32 and Intel® 64 architectures.
The section discusses the following topics, among others:
High-level discussion of compiler options used to control or influence vectorization
Vectorization Key Programming Guidelines
Loop parallelization and vectorization
Descriptions of the C++ language features to control vectorization
Discussion and general guidelines on vectorization levels:
automatic vectorization
vectorization with user intervention
Examples demonstrating typical vectorization issues and resolutions
The compiler supports a variety of directives that can help the compiler to generate effective vector instructions.
See The Software Vectorization Handbook. Applying Multimedia Extensions for Maximum Performance, A.J.C. Bik. Intel Press, June, 2004, for a detailed discussion of how to vectorize code using the Intel® compiler. Additionally, see the Related Publications topic in this document for other resources.