Hacker News new | ask | show | jobs
by Panzerschrek 71 days ago
Such tricks were maybe useful 40 years ago while writing assembly code manually or while using a dumb compiler with no optimizations. But nowadays such tricks are near to useless. All useful ones (like optimizing division by 2 via bitshift ) are already implemented as compiler optimizations. Others shouldn't be used in order to avoid making optimizer's job harder.
1 comments

Back when I was in college in the late 00s we were advised to not attempt to optimise using assembly unless we really found a bottleneck the compiler missed.
Correct. There are still some situations that benefit from it, but only using the extended instruction sets that compilers can't/won't generate. Even then you should at least try writing the C code and seeing if it will auto-vectorize. Even C# can auto-vectorize some cases now.

Things like "add with saturation" and the special AES instructions.

In my experience, relying on the compiler to auto vectorize your code is a path fraught with peril.

It'll break eventually. If it matters, write the simd yourself. It'll probably be 2-50x better than the compiler anyways.