https://software.intel.com/sites/landingpage/IntrinsicsGuide...
Intel's intrinsics guide has an approximate clock-count on all instructions. There are a few obscure details to memorize, but if you already understand super-scalar, pipelined, and OoO operations of modern CPUs, its all straight-forward.
---------
The last 10% of using SIMD successfully is obscure and eclectic. Its not "difficult", its just a whole bunch of tricks that you'll probably never figure out on your own. I'm talking about pshufb magic, prefix sum / scan patterns, gather/scatter patterns, and the like.
As complicated as pshufb is, the Intel intrinsic documentation does a great job precisely describing the operation: https://software.intel.com/sites/landingpage/IntrinsicsGuide...
_mm_shuffle_epi8 gives you a register-to-register (no RAM touched, faster than even L1 cache) 16-byte lookup table. An alternative viewpoint: it gives you a register-to-register arbitrary gather command. I've seen so many tricks from this one instruction alone.
---------
Another straightforward guide is Intel's optimization manual. Its straightforward, but a lot of material to read: https://www.intel.com/content/dam/www/public/us/en/documents...
Chapters 4, 5, and 6 deal with SIMD coding.
I also made offline docs, there: https://github.com/Const-me/IntelIntrinsics
Here's the episode where SIMD is properly introduced: https://guide.handmadehero.org/code/day115
[1] http://www.cs.utexas.edu/users/flame/laff/pfhp/week2-optimiz...