3 ms·
A couple of advices for you then. Unless you’re planning to do reverse engineering, or planning to work on a compiler, learning assembler is mostly pointless.
by Const-me 10y ago
A couple of advices for you then.
Unless you’re planning to do reverse engineering, or planning to work on a compiler, learning assembler is mostly pointless.
In most cases, real-world algorithms contain both vector code in the inner loops, and scalar code everywhere else. When coding assembler you need to use it for both, and assembler ain’t exactly user-friendly.
Using C or C++ language with SSE intrinsics is the way to go.
All modern compilers support them.
Intel’s documentation is the best so far, but there’s no offline searchable version.
I’ve created one: https://github.com/Const-me/IntelIntrinsics/releases https://github.com/Const-me/IntelIntrinsics/releases
Memory layout is a king. You need to keep the input and output data SSE-friendly: aligned, dense, sequential access patterns are preferred. This could mean you need to [re]design some parts of your software specifically for SSE.
There’re multiple generations of hardware. When writing manually-vectorized code, the compiler won’t tell you what CPUs it’ll run on. SSE2 is the most compatible. Here’s some statistics about Windows users: http://store.steampowered.com/hwsurvey/ http://store.steampowered.com/hwsurvey/ click on “Other settings”
glhf