<div dir="ltr"><font face="arial, helvetica, sans-serif">Tim,</font><div><font face="arial, helvetica, sans-serif"><br></font></div><div><font face="arial, helvetica, sans-serif">The code change looks very good for me. </font><span style="line-height:15.987500190734863px;white-space:pre-wrap;color:rgb(0,0,0);font-family:arial,helvetica,sans-serif">It's so nice to see you introduced BinOpFrag to simplify those two addhn patterns.</span></div>
<div><font color="#000000" face="arial, helvetica, sans-serif"><span style="line-height:15.987500190734863px;white-space:pre-wrap"><br></span></font></div><div><font face="arial, helvetica, sans-serif">I want to confirm with you that, the changes from VPR64 operand to VPR128 in patterns <span style="color:rgb(0,0,0);line-height:15.994318008422852px;white-space:pre-wrap">NeonI_3VDN_3Op and </span><span style="color:rgb(0,0,0);line-height:15.994318008422852px;white-space:pre-wrap">N2VShR_Narrow_Hi are because of the static checking of "</span><span style="color:rgb(0,0,0);line-height:15.994318008422852px;white-space:pre-wrap">let Constraints = "$src = $Rd";", true?</span></font></div>
<div><br></div><div><font color="#000000" face="arial, helvetica, sans-serif"><span style="line-height:15.987500190734863px;white-space:pre-wrap">Does the tblgen problem around InstAlias affect asm parser? I mean with this patch applied can end-user use "</span></font><span style="font-family:arial,sans-serif">mov vD.8b, vN.8b</span><font color="#000000" face="arial, helvetica, sans-serif"><span style="line-height:15.987500190734863px;white-space:pre-wrap">" instruction in assembly code or not?</span></font></div>
<div><font color="#000000" face="arial, helvetica, sans-serif"><span style="line-height:15.987500190734863px;white-space:pre-wrap"><br></span></font></div><div><font color="#000000" face="arial, helvetica, sans-serif"><span style="line-height:15.987500190734863px;white-space:pre-wrap">Thanks,</span></font></div>
<div><font color="#000000" face="arial, helvetica, sans-serif"><span style="line-height:15.987500190734863px;white-space:pre-wrap">-Jiangning</span></font></div><div><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">
2013/9/12 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">
This patch changes the AArch64 backend to use a RegisterOperand rather than a RegisterClass for the vector registers.<br>
<br>
The difference is that RegisterOperands are essentially aliases for the RegisterClass with different printing/parsing methods. This matches almost exactly the status of AArch64's vector registers (they use "vN" in SIMD instructions but are really either "qN" or "dN").<br>

<br>
Previously we had some rather nasty hierarchy of degenerate sub_xxx aliases, which Kevin Qin has recently discovered makes it virtually impossible to write patterns mapping VPR128 <-> VPR64.<br>
<br>
Mostly this appears to simplify the code it touches. The main annoyance is that VPR128 and VPR64 become non-trivial operands and so the alias printer can't handle them (specifically, there's no way to print "mov vD.8b, vN.8b" instead of the "orr" form). However, this is an endemic problem (it already hits integer "mov" for example), so I think that's an acceptable sacrifice.<br>

<br>
<a href="http://llvm-reviews.chandlerc.com/D1656" target="_blank">http://llvm-reviews.chandlerc.com/D1656</a><br>
<br>
Files:<br>
  lib/Target/AArch64/AArch64AsmPrinter.cpp<br>
  lib/Target/AArch64/AArch64ISelLowering.cpp<br>
  lib/Target/AArch64/AArch64InstrInfo.td<br>
  lib/Target/AArch64/AArch64InstrNEON.td<br>
  lib/Target/AArch64/AArch64RegisterInfo.td<br>
  lib/Target/AArch64/AsmParser/AArch64AsmParser.cpp<br>
  lib/Target/AArch64/Disassembler/AArch64Disassembler.cpp<br>
  lib/Target/AArch64/InstPrinter/AArch64InstPrinter.cpp<br>
  lib/Target/AArch64/InstPrinter/AArch64InstPrinter.h<br>
  test/MC/AArch64/neon-mov.s<br>
  test/MC/Disassembler/AArch64/neon-instructions.txt<br>
<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>
<br></blockquote></div><br><br clear="all"><div><br></div>-- <br>Thanks,<div>-Jiangning</div>
</div>