Author: Robert Hyatt
Date: 11:48:09 07/20/03
Go up one level in this thread
On July 19, 2003 at 02:11:34, Tom Kerrigan wrote: >On July 19, 2003 at 01:11:31, Robert Hyatt wrote: > >>On July 18, 2003 at 15:16:27, Tom Kerrigan wrote: >> >>>On July 18, 2003 at 04:05:52, Walter Faxon wrote: >>> >>>>>; 326 : if (bbHalf) bb0 = bb1; // will code as cmov (ideally) >>>>> >>>>> test ecx, ecx >>>>> je SHORT $L806 >>>>> mov eax, DWORD PTR _bb$[esp] >>>>>$L806: >>>>> >>>> >>>> >>>>Stupid compiler, not only no cmov >>> >>>IIRC, on the P6 (Pentium Pro, Pentium II, Pentium III), the cmov instruction >>>gets translated into a string of uOps that's equivalent to testing, branching, >>>and copying. >>> >>>In other words, there is no performance benefit (I believe there may actually be >>>a performance penalty) to using cmov on a P6, and it breaks compatibility with >>>pre-P6 processors, so it's little wonder the P6-era MS compiler doesn't generate >>>cmovs. >>> >>>-Tom >> >> >>I think the point is that the cmov eliminates any possibility of a branch >>mis-prediction. On the long PIV pipeline, that's a significant savings for >>mis-predicted branches. >> >>Since Eugene's example shows that the new MSVC compiler is going to finally >>emit cmov instructions, I'd assume there is a performance gain for doing >>so. > >Yes, of course, I thought I had made it perfectly clear that I was talking about >the _P6_ core. I wrote all of them out. Pentium Pro, Pentium II, Pentium III. >_Not_ Pentium 4. > >-Tom I don't see why it would be worse on a P6 core either. IE on a P6, if the branch is mis-predicted, you _still_ have to back out all the stuff that has been speculatively executed, including any out-of-order stuff as well. The CMOV eliminates a lot of that. I haven't tried it on every machine, but I have tried it on several, and it has always been somewhat faster for me. How much faster seems to have a bit of witchcraft and superstition involved. But it was always faster, to some degree. I'd be happy to try a particular benchmark if you have one. I'm sure the effectiveness of the instruction is somewhat coupled to the instructions it is stuck in the middle of.
This page took 0.01 seconds to execute
Last modified: Thu, 15 Apr 21 08:11:13 -0700
Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.