Is there an official reference listing the operation of the SSE intrinsic functions for GCC, i.e. the functions in the <*mmintrin.h> header files?
SSE (streaming SIMD extensions) and AVX (advanced vector extensions) are SIMD (single instruction multiple data streams) instruction sets supported by recent CPUs manufactured in Intel and AMD. This SIMD programming allows parallel processing by multiple cores in a single CPU.
__m256d : This is a vector of four double precistion numbers (4x64 = 256 bits)
intel-intrinsics is the SIMD library for D. intel-intrinsics lets you use SIMD in D with support for LDC / DMD / GDC with a single syntax and API: the x86 Intel Intrinsics API that is also used within the C, C++, and Rust communities.
The __m128i data type can hold sixteen 8-bit, eight 16-bit, four 32-bit, or two 64-bit integer values. The compiler aligns __m128d and __m128i local and global data to 16-byte boundaries on the stack. To align integer, float, or double arrays, you can use the __declspec(align) statement.
As well as Intel's vol.2 PDF manual, there is also an online intrinsics guide.
The Intel® Intrinsics Guide contains reference information for Intel intrinsics, which provide access to Intel instructions such as Intel® Streaming SIMD Extensions (Intel® SSE), Intel® Advanced Vector Extensions (Intel® AVX), and Intel® Advanced Vector Extensions 2 (Intel® AVX2).
It has a full-text search, so an intrinsic can be found by its name, or by CPU instruction, CPU feature, etc. It also has a control on which ISA extension to show. This allows, for example, not searching KNC that you wouldn't likely be able to use, or MMX that is far less useful these days.
See also the tag wiki for the sse tag for links to guides and a couple tutorials, as well as this official documentation.
I found these headers were needed for invoking the different versions of SSE from GCC:
extern "C"
{
#include <emmintrin.h>
#include <mmintrin.h>
}
extern "C"
{
#include <pmmintrin.h>
#include <immintrin.h> // (Meta-header)
}
extern "C"
{
#include <smmintrin.h>
}
In modern versions of the compilers, all the headers seem to be common to Visual Studio and GCC.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With