<div dir="ltr">Hi Tim,<div><br></div><div>Patch is commited atĀ r208669. Thanks for your understanding. I was just trying to provide more preciseĀ <span style="font-family:arial,sans-serif;font-size:13.63636302947998px">diagnostics to get end-user easily use our backend. Also, I'm very happy to see you're going to solve this from root cause:)</span></div>
<div><span style="font-family:arial,sans-serif;font-size:13.63636302947998px"><br></span></div><div><span style="font-family:arial,sans-serif;font-size:13.63636302947998px">Best Regards,</span></div><div>Kevin</div></div>
<div class="gmail_extra"><br><br><div class="gmail_quote">2014-05-13 15:20 GMT+08:00 Tim Northover <span dir="ltr"><<a href="mailto:t.p.northover@gmail.com" target="_blank">t.p.northover@gmail.com</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi again,<br>
<div class=""><br>
> If you really want more accurate diagnostics then we need to do in some<br>
> way that actually improves the code quality, not just the diagnostic quality.<br>
<br>
</div><div class="">Bradley's been encountering similar issues with load/store<br>
diagnostics, and has mentioned that a large part of the problem is<br>
that so much complexity is put into a single conglomerate operand.<br>
<br>
AArch64 has split up the load/store instructions much more than ARM64,<br>
allowing more focussed diagnostics. I think that went too far (the<br>
patterns are an unmaintainable mess), but some middle ground might<br>
give us both a neater assembler and more focussed diagnostics when<br>
things go wrong.<br>
<br>
>From what I remember, the reason AArch64 had to split things up as<br>
much as it did is that once you go beyond a single operand that can be<br>
handled by a ComplexPat, you need to split *everything* up to be able<br>
to use the instructions. This multiplies the number of instructions<br>
greatly.<br>
<br>
Very similar concerns (but on a slightly simpler level) apply to the<br>
register-offset arithmetic & logical operations. I'm wondering if a<br>
more flexible ComplexPatFrag, capable of distributing its results to<br>
more than a single Operand, might allow us the best of both worlds:<br>
few instructions, but each with many operands so that the last failure<br>
point actually gives us useful information.<br>
<br>
I think I might try to implement that today (only on arith/logical for<br>
now though; load/store would be a big project). I'll let you know how<br>
it goes.<br>
<br>
Cheers.<br>
<br>
Tim.<br>
<br>
</div>(duplicate to llvm-commits).<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div dir="ltr">Best Regards,<div><br></div><div>Kevin Qin</div></div>
</div>