Intel Compilers: Vectorization for Multimedia Extensions

[IAA] The growing popularity of multimedia extensions has renewed the interest in vectorizing compilers, which date back to the early days of supercomputers (with a traditional focus on Fortran programs). Although the target architectures of these early vectorizing compilers differ substantially from modern microprocessors with multimedia extensions, a lot of the vectorization methodology developed in the past can be put to use in today's compilers that target multimedia instruction sets that are based on the Single-Instruction-Multiple-Data (SIMD) paradigm.

[COOKB06] [BIKVEC04] [BIKVEC04] The Intel® C++/Fortran compilers are vectorizing compilers for Windows, Linux, and Mac OS that automatically convert sequential code into a form that exploits the Intel® MMX™ Technology, Streaming SIMD Extensions (SSE, SSE2, SSE3, SSSE3, SSE4) for IA-32 and Intel® 64 processors, and the Intel® Wireless MMX™ Technology for the Intel® Xscale® microarchitecture. In March 2002, Aart Bik received the Intel Achievement Award (highest company award) from Paul Otellini for making the Streaming SIMD Extensions easy to use through automatic vectorization.

For more details on automatic vectorization for multimedia extensions (also called intra-register vectorization), see:

For more information on Intel products, see: Some other compiler-projects that target various multimedia extensions are Intel's Java™ JIT compilation with support for the Intel® MMX™ Technology (Haghighat et al.), vectorization in GCC (Dorit Naishlos et al.), the Scc compiler for a C dialect called SWAR-C (Hank Dietz and Randy Fisher), SLP Superword Level Parallelism (Samuel Larsen), and the Vector Pascal compiler for a data parallel Pascal dialect (Paul Cockshott).
Two obfuscated C one-liners to try with the latest Intel compilers:
Please note that this page is privately maintained by Aart Bik. Google+ LinkedIn