http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54073
--- Comment #11 from Jakub Jelinek <jakub at gcc dot gnu.org> 2012-11-13 15:24:19 UTC --- (In reply to comment #10) > Please see PR53346, from comment 14 onwards, especially H.J.'s comment: > > -quote- > I was told that cmov wins if branch is mispredicted, otherwise > cmov loses. We will investigate if we can improve cmov in GCC. > -/quote- Possibly. But then still movsicc etc. isn't automatically the right thing if the comparison is ordered and wrong otherwise, but desirable/undesirable depending on whether the compiler can guess if the condition can be predicated well or not. Guess in MonteCarlo the x*x + y*y <= 1.0 condition can't be predicted well and that is why it helps so much.