<div class="gmail_quote">On 20 June 2012 15:30, deadalnix <span dir="ltr"><<a href="mailto:deadalnix@gmail.com" target="_blank">deadalnix@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Le 20/06/2012 13:04, Manu a écrit :<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">
Case 1 has no alternative to inline asm. I've thrown out some crazy<br>
ideas to think about (but nobody seems to like them). I still think it<br>
could be addressed though.<br>
<br>
Case 2; I'm not convinced. These such long functions are the type I'm<br>
generally interested in aswell, and have the most experience with. But<br>
in my experience, they're almost always best written with intrinsics.<br>
If they're small enough to be inlined, then you can't afford not to use<br>
intrinsics. If they are truly big functions, then you begin to sacrifice<br>
readability and maintain-ability, and certainly limit the number of<br>
programmers that can maintain the code.<br></div><div class="im">
I rarely fail to produce identical code with intrinsics to that which I<br>
would write with hand written asm. The flags are always the biggest<br>
challenge, as discussed prior in this thread. I think that could be<br>
addressed with better intrinsics.<br>
</div></blockquote>
<br>
I'm sorry, but what you say is rather ignorant.<br>
<br>
Not that it is wrong, but it only cover YOUR usage of inline asm. You are talking about performances, but many other usages of assembly code are very useful, valid, and cannot be replaced by intrinsics. druntime is full of that, Walter and I presented you piece of code specifically. None of that could have been done without 100% asm functions.<br>
</blockquote><div><br></div><div>I wasn't talking about performance strictly, I'm talking about pure functionality but with an intent not to inhibit optimisation. The high level language can't interact with registers directly, there's no mechanism to do so.</div>
<div><br></div><div>I offered trivial solutions. You never suggested any reason why they couldn't work. In your code, you only need push/pop intrinsics, and a register alias to produce identical code.</div><div>In Walters example, I offered a number of options (neat handling of JC being the key issue). I'm not saying what it SHOULD be, just some possibilities to think about/explore.</div>
<div><br></div><div><br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">It is clear, however, that the compiler should get a better understanding of asm.<br>
</blockquote></div><br><div>Such a better understanding of asm is easier implemented via intrinsics, that's the basis of my suggestion; extend the high level language such that it is capable of that understanding within conventional expressions.</div>
<div>Intrinsics are already mechanically present in the language, adding more as they are needed is no problem. The only missing component I can identify, is the ability to directly address specific registers in high level code.</div>