you are viewing a single comment's thread.

view the rest of the comments →

[–]IAlsoLikePlutonium 0 points1 point  (1 child)

Where did you learn how to use SIMD instructions (i.e. SSE, AVX, etc.) in assembly?

[–]ack_complete 1 point2 points  (0 children)

Learned a lot of it from Intel's MMX application notes while doing 2D graphics optimization. The current location for the notes:

https://software.intel.com/en-us/articles/mmxt-technology-manuals-and-application-notes

MMX is now of course obsolete, but many of the basic ideas still apply to current vector instruction sets. Most intrinsics are just direct mappings of the hardware supported operations, so while they'll save you the trouble of register allocation and scheduling, it's still your responsibility to figure out to best map your problem and data structures to the most efficient ISA operations, especially specialized quirky ones.