[Bug target/56309] conditional moves instead of compare and branch result in almost 2x slower code

ubizjak at gmail dot com gcc-bugzilla@gcc.gnu.org
Sun Feb 17 08:35:00 GMT 2013


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56309

Uros Bizjak <ubizjak at gmail dot com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Summary|-O3 optimizer generates     |conditional moves instead
                   |conditional moves instead   |of compare and branch
                   |of compare and branch       |result in almost 2x slower
                   |resulting in almost 2x      |code
                   |slower code                 |

--- Comment #25 from Uros Bizjak <ubizjak at gmail dot com> 2013-02-17 08:35:17 UTC ---
(In reply to comment #21)
> (In reply to comment #18)

> But in this case we are giving up vectorization for some cases, aren't we?

Yes, and please note that vectorized conditional move doesn't result in a cmov
instruction, but in a sequence of sse logic isns. So, as far as x86 targets are
concerned, this bug has nothing to do with a vectorizer.

Maybe we should decompose scalar cmoves into the same sequence?



More information about the Gcc-bugs mailing list