[Patch] [AArch64] Implement allowsUnalignedMemoryAccesses()

Jiangning Liu liujiangning1 at gmail.com
Tue Apr 8 21:45:37 PDT 2014


Hi Zhaoshi,

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.

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,

+; RUN: llc < %s -mtriple=aarch64_be-none-linux-gnu -mattr=+neon -o - |
FileCheck %s

It would be better if you can add -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.

Thanks,
-Jiangning



2014-04-08 9:24 GMT+08:00 <zhaoshiz at codeaurora.org>:

> Hi,
>
> This patch should enable unaligned accesses of vector types on AArch64.
> Please help review.
>
> Thanks,
> Zhaoshi
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
>


-- 
Thanks,
-Jiangning
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20140409/3a02de56/attachment.html>


More information about the llvm-commits mailing list