I'm trying to ensure I get a conditional move if its available during a saturating subtract operation. The saturating subtract clamps the min value at 0. Here's what it looks like in high level code: // Perform a-b, clamp at 0 return (a > b) ? (a - b) : 0; But based on this bug report: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22568, I can't tell if that's what I should be using. What pattern should I use to get a CMOV? Thanks in advance.