<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 Apr 17, 2013, at 1:36 PM, Michael Liao <<a href="mailto:michael.liao@intel.com">michael.liao@intel.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div style="letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">Hi Nadav<br><br>I cannot follow your statement on complexity and complexity. Could you<br>give me more concrete reasons? Broadly speaking of that definitely won't<br>help us to revise the proposal.<br></div></blockquote><div><br></div><div>You are increasing the compile time by adding a new pass that needs to run over all of the code that the X86 backend needs to run.  You are adding unnecessary complexity by adding target specific semantics LLVM's IR and by adding a new pass. Your proposal is completely unscalable. We can't add new passes and new metadata to support every little feature. If we go down this road we'll have dozens of target specific passes, tricks and hooks all over the compiler. The maintainability of the compiler, as well as the compile time for people who don't care about feature is more important. And what is the gain of all this ? Just the ability to run LLVM's optimizations for atomic instruction ? Do you really have workloads that benefit from these optimizations ? At the end of the day there is a tradeoff between atomic optimizations for HLE atomic operations (which you even failed to mention what they are) and the added complexity to the compiler. </div><br><blockquote type="cite"><div style="letter-spacing: normal; orphans: auto; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; widows: auto; word-spacing: 0px; -webkit-text-stroke-width: 0px;">I don't why you insists on implementing HLE as separate intrinsics<br>without considering all the comments previously we raised. HLE needs to<br>leverage the existing optimization on atomic instructions. Adding them<br>as separate intrinsics will add significant overhead on duplicating<br>these optimizations and breaking layered design, not less to say how<br>many intrinsics we needed.<br><br>Yours<br>- Michael<br></div></blockquote></div><br></body></html>