Implement AArch64 vector load/store multiple N-element structure class SIMD(lselem).
authorHao Liu <Hao.Liu@arm.com>
Thu, 10 Oct 2013 14:59:36 +0000 (14:59 +0000)
committerHao Liu <Hao.Liu@arm.com>
Thu, 10 Oct 2013 14:59:36 +0000 (14:59 +0000)
commitc319193636480a19a0faf757b851b53d155e7ccd
tree409623443b48225ea63aa27ce071c51b5b06e813
parentb3b79a434580f28a2e44dac70e3f6f5e88e98f79
Implement AArch64 vector load/store multiple N-element structure class SIMD(lselem).
Including following 14 instructions:
4 ld1 insts: load multiple 1-element structure to sequential 1/2/3/4 registers.
ld2/ld3/ld4: load multiple N-element structure to sequential N registers (N=2,3,4).
4 st1 insts: store multiple 1-element structure from sequential 1/2/3/4 registers.
st2/st3/st4: store multiple N-element structure from sequential N registers (N = 2,3,4).

E.g. ld1(3 registers version) will load 32-bit elements {A, B, C, D, E, F} sequentially into the three 64-bit vectors list {BA, DC, FE}.
E.g. ld3 will load 32-bit elements {A, B, C, D, E, F} into the three 64-bit vectors list {DA, EB, FC}.

llvm-svn: 192351
clang/include/clang/Basic/arm_neon.td
clang/lib/CodeGen/CGBuiltin.cpp
clang/test/CodeGen/aarch64-neon-intrinsics.c