HackerTrans
TopNewTrendsCommentsPastAskShowJobs

jnordwick

no profile record

comments

jnordwick
·vor 2 Jahren·discuss
I think everybody agrees it is a craft. Like woodworking - it is part engineering, part art, and a lot of experience.
jnordwick
·vor 2 Jahren·discuss
Per Fog's tables, Ice Lake shows a reg-to-reg cmov decoding to 1 uop with a latency of 1 and throughput of 0.5. *mont all have latency 2. P4 had a latency of 6. AMD's K10 latency 4.
jnordwick
·vor 2 Jahren·discuss
cmov turns a control dependency into a data dependency. It is still there just in a different way. (its like the Fourier Transform of instructions - lolol).

I haven't seen cmov lose to a conditional in a few years (on very recent Intel hardware). Maybe there might be some circumstances where in creates a loop carried dependency that wrecks the optimizer, but I haven't seen one in a minute.

To be fair - cmov versions often involve some extra compution to get things in a form where cmov can be used, and I often just opt for the well predicted conditional since those couple extra instructions to set up the value to move can be avoided.
jnordwick
·vor 2 Jahren·discuss
When Linus made that comment cmov was like a 6 cycle latency. For the last decade it has been 1 cycle, and I don't think there is any scenario where cmov is now slower than a branch.