<p dir="ltr">Hi zhaoshi,</p>
<p dir="ltr">> I believe “ld1/st1 + rev” or “ldr” on big-endian should be controlled by pattern matching and addressed by a separate patch... Can you point me to the review thread you mentioned?</p>
<p dir="ltr"><a href="http://permalink.gmane.org/gmane.comp.compilers.llvm.cvs/180464">http://permalink.gmane.org/gmane.comp.compilers.llvm.cvs/180464</a></p>
<p dir="ltr">> I looked into ARM64 backend. All vector types are promoted to v2i64/v2i32 and the pattern matcher emits ldr/str instructions.</p>
<p dir="ltr">Yes, and this is probably the way we should follow for non-strict alignment mode, i.e. generate ldr/str. So it may affect your performance finally due to instrction change for little endian. For strict mode, we should have to use ld1+rev for big endian to gurantee the same semantic.</p>

<p dir="ltr">> My assumption is Linux by default is configured to support unaligned accesses. Do you mean I should add –aarch64-no-strict-align to the command line in my test? </p>
<p dir="ltr">Yes, I think you should add more RUNs in your test to cover all opts you are going to add.</p>
<p dir="ltr">> Can you elaborate a little bit about “the ld1/st1 CHECK should be guaranteed for both little-endian and big-endian”?</p>
<p dir="ltr">Since that big-endian patch has not been upstreamed yet, at present you can only use ld1/st1 to make correct test case for both little endian and big endian. I expect your test case should be updated to use ldr/str by the big endian patch, if your patch will be upstreamed first.</p>

<p dir="ltr">Thanks,<br>
-Jiangning</p>