SIMD
lastmod 2022-07-01created 2015-12-0416 edits
SIMD (Single Instruction Multiple Data) is a type of parallel processor that computes multiple values at the same time with a single instruction.
It is widely used in vector processors and is often used in multimedia fields such as video game consoles and graphics cards. On CPUs, it has been applied in technologies such as Intel's MMX and Streaming SIMD Extensions (SSE), and AMD's 3DNow!.
x86 instruction sets
List of all the instruction sets headers that need to be included to use intrinsect functions with GCC and Visual Studio (and Intel compiler for supported instruction set).
- x86intrin.h: x86 instructions
- mmintrin.h: MMX (Pentium MMX!)
- mm3dnow.h: 3dnow! (K6-2) (deprecated)
- xmmintrin.h: SSE + MMX (Pentium 3, Athlon XP)
- emmintrin.h: SSE2 + SSE + MMX (Pentiuem 4, Ahtlon 64)
- pmmintrin.h: SSE3 + SSE2 + SSE + MMX (Pentium 4 Prescott, Ahtlon 64 San Diego)
- tmmintrin.h: SSSE3 + SSE3 + SSE2 + SSE + MMX (Core 2, Bulldozer)
- popcntintrin.h: POPCNT (Core i7, Phenom subset of SSE4.2 and SSE4A)
- ammintrin.h: SSE4A + SSE3 + SSE2 + SSE + MMX (Phenom)
- smmintrin.h: SSE4_1 + SSSE3 + SSE3 + SSE2 + SSE + MMX (Core i7, Bulldozer)
- nmmintrin.h: SSE4_2 + SSE4_1 + SSSE3 + SSE3 + SSE2 + SSE + MMX (Core i7, Bulldozer)
- wmmintrin.h: AES (Core i7 Westmere, Bulldozer)
- immintrin.h: AVX, SSE4_2 + SSE4_1 + SSSE3 + SSE3 + SSE2 + SSE + MMX (Core i7 Sandy Bridge, Bulldozer)
Libraries
See also
- MMX
- SSE
- 3DNow
- Advanced Vector Extensions (AVX)
- Performance Tuning
- Cache prefetching (Software Prefetch)
Favorite site
- Wikipedia (en) explanation of SIMD
- Basics of SIMD Programming
- Building a math library with SIMD - 1. What is SIMD?
- Stackoverflow - c++ SSE SIMD framework
- SIMD parallel programming - StonzeBlog 1
Programming
References
Pages that link here