<div dir="ltr"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">Hi Zhaoshi,</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small"><br></div>
<div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">One more thing...</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">
Currently the pattern match only generates ld1/st1, which is inefficient for big-endian, and I think it is going to be changed soon to ldr/str by another big-endian support patch. You may have noticed there is another patch review thread relates to big-endian. I prefer your case stays with ld1/st1, and ask another patch to fix that all together, because that's all about big-endian.</div>
<div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">For performance wise, you can hack the followings in AArch64IntrNEON.td in advance to verify ldr/str.</div>
<div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small"><br></div><div class="gmail_default"><div class="gmail_default"><font face="arial, helvetica, sans-serif">def : Pat<(v2f64 (load GPR64xsp:$addr)), (LD1_2D GPR64xsp:$addr)>;</font></div>
<div class="gmail_default"><font face="arial, helvetica, sans-serif">def : Pat<(v2i64 (load GPR64xsp:$addr)), (LD1_2D GPR64xsp:$addr)>;</font></div><div class="gmail_default"><font face="arial, helvetica, sans-serif"><br>
</font></div><div class="gmail_default"><font face="arial, helvetica, sans-serif">def : Pat<(v4f32 (load GPR64xsp:$addr)), (LD1_4S GPR64xsp:$addr)>;</font></div><div class="gmail_default"><font face="arial, helvetica, sans-serif">def : Pat<(v4i32 (load GPR64xsp:$addr)), (LD1_4S GPR64xsp:$addr)>;</font></div>
<div class="gmail_default"><font face="arial, helvetica, sans-serif"><br></font></div><div class="gmail_default"><font face="arial, helvetica, sans-serif">def : Pat<(v8i16 (load GPR64xsp:$addr)), (LD1_8H GPR64xsp:$addr)>;</font></div>
<div class="gmail_default"><font face="arial, helvetica, sans-serif">def : Pat<(v16i8 (load GPR64xsp:$addr)), (LD1_16B GPR64xsp:$addr)>;</font></div><div class="gmail_default"><font face="arial, helvetica, sans-serif"><br>
</font></div><div class="gmail_default"><font face="arial, helvetica, sans-serif">def : Pat<(v1f64 (load GPR64xsp:$addr)), (LD1_1D GPR64xsp:$addr)>;</font></div><div class="gmail_default"><font face="arial, helvetica, sans-serif">def : Pat<(v1i64 (load GPR64xsp:$addr)), (LD1_1D GPR64xsp:$addr)>;</font></div>
<div class="gmail_default"><font face="arial, helvetica, sans-serif"><br></font></div><div class="gmail_default"><font face="arial, helvetica, sans-serif">def : Pat<(v2f32 (load GPR64xsp:$addr)), (LD1_2S GPR64xsp:$addr)>;</font></div>
<div class="gmail_default"><font face="arial, helvetica, sans-serif">def : Pat<(v2i32 (load GPR64xsp:$addr)), (LD1_2S GPR64xsp:$addr)>;</font></div><div class="gmail_default"><font face="arial, helvetica, sans-serif"><br>
</font></div><div class="gmail_default"><font face="arial, helvetica, sans-serif">def : Pat<(v4i16 (load GPR64xsp:$addr)), (LD1_4H GPR64xsp:$addr)>;</font></div><div class="gmail_default"><font face="arial, helvetica, sans-serif">def : Pat<(v8i8 (load GPR64xsp:$addr)), (LD1_8B GPR64xsp:$addr)>;</font></div>
</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">This is just in case the performance impact after fully enabling big-endian on AArch64.</div>
<div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">Thanks,</div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">
-Jiangning</div></div><div class="gmail_extra"><br><br><div class="gmail_quote">2014-04-09 12:45 GMT+08:00 Jiangning Liu <span dir="ltr"><<a href="mailto:liujiangning1@gmail.com" target="_blank">liujiangning1@gmail.com</a>></span>:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">Hi Zhaoshi,</div>
<div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small"><br></div>
<div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">For both little-endian and big-endian, we need to generate instructions as if ldr/str. For little-endian, ldr/str is the same as ld1/st1, while for big-endian they have different behaviours. So if we generate ld1/st1 for big-endian, we should have to generate "rev" following them to keep the reversed in-register layout.</div>

<div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small"><br></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">Your code shows you are saying Linux should be always configured as non-strict mode for hardware, so for big-endian the choice between "ldr/str" and "ld1/st1 + rev" will depend on cost estimate. Therefore, for your test case unaligned-vector-ld1-st1.ll,</div>

<div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small"><br></div><div class="gmail_default"><font face="arial, helvetica, sans-serif">+; RUN: llc < %s -mtriple=aarch64_be-none-linux-gnu -mattr=+neon -o - | FileCheck %s</font><br>

<br></div><div class="gmail_default"><span style="font-family:arial,helvetica,sans-serif">It would be better if you can add -</span><font face="arial, helvetica, sans-serif">aarch64-strict-align in command line, and the ld1/st1 CHECK should be guaranteed for both little-endian and big-endian. Also, I don't see you have tests covering those three newly added opts you added.</font></div>

<div class="gmail_default"><br></div><div class="gmail_default"><font face="arial, helvetica, sans-serif">Thanks,</font></div><div class="gmail_default"><font face="arial, helvetica, sans-serif">-Jiangning</font></div><div class="gmail_default" style="font-family:arial,helvetica,sans-serif;font-size:small">

<br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">2014-04-08 9:24 GMT+08:00  <span dir="ltr"><<a href="mailto:zhaoshiz@codeaurora.org" target="_blank">zhaoshiz@codeaurora.org</a>></span>:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div class="h5">Hi,<br>
<br>
This patch should enable unaligned accesses of vector types on AArch64.<br>
Please help review.<br>
<br>
Thanks,<br>
Zhaoshi<br></div></div>_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu" target="_blank">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><span class="HOEnZb"><font color="#888888"><br><br clear="all"><div><br></div>-- <br><div dir="ltr"><font face="courier new, monospace">Thanks,</font><div><font face="courier new, monospace">-Jiangning</font></div>
</div>
</font></span></div>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div dir="ltr"><font face="courier new, monospace">Thanks,</font><div><font face="courier new, monospace">-Jiangning</font></div></div>
</div>