Hacker News new | ask | show | jobs
by BeeOnRope 2329 days ago
Even if you do the branchiest thing possible in the source, no bitwise or "looks cmov-y" stuff, all compilers that matter will do this without a branch with optimization on:

https://godbolt.org/z/XCBGYW

Only icc vectorizes this at -O2 (still branchless, of course), but clang and gcc vectorize it if you go to -O3.

1 comments

Sure, but where's the code golfing fun in there ;)
:) I guess I'm not fun at [code golfing] parties.

I just want to gently push back on the notion that the source level branchy-ness is tightly tied to the generated assembly level branchiness.

Sometimes, it is - but it is a long topic to characterize when. For simple things like counters based on a condition, you'll almost always get branch-free. Same for assignment/return value based on a condition, where the possibilities don't involve lots of asymmetric work (or a asymmetric memory access).