<html><head><meta http-equiv="Content-Type" content="text/html charset=us-ascii"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On Jan 22, 2013, at 9:34 PM, Chandler Carruth <<a href="mailto:chandlerc@google.com">chandlerc@google.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><span style="font-family: Optima; font-size: medium; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-align: -webkit-auto; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; display: inline !important; float: none; ">There also appears to be some problems in early if-conversion as code in simple, common compression loops for clamping values seems to end up as a CFG rather than a cmov currently, and as a consequence runs significantly slower in my benchmarks of zlib and the like. While this might be "fixed" by making the IR level speculation better, it seems likely to indicate an actual issue with the underlying if-conversion pass...</span></blockquote></div><br><div>Stupid question: Did you turn it on?</div><div><br></div><div>If-conversion isn't enabled for x86 by default because I haven't had the time to hook it up to a good enough machine model and do the performance benchmarking work. Without a good machine model it can cause significant regressions.</div><div><br></div><div>This is old, but still worthwhile: <a href="http://yarchive.net/comp/linux/cmov.html">http://yarchive.net/comp/linux/cmov.html</a></div><div><br></div><div>Ignore the P4 bashing, a cmov is 2 cycles on Sandy Bridge. Linus' points about extending the critical path still apply.</div><div><br></div><div>/jakob</div><div><br></div></body></html>