llvm-6502/test
Hao Liu 442f620296 [AArch64] Match interleaved memory accesses into ldN/stN instructions.
Add a pass AArch64InterleavedAccess to identify and match interleaved memory accesses. This pass transforms an interleaved load/store into ldN/stN intrinsic. As Loop Vectorizor disables optimization on interleaved accesses by default, this optimization is also disabled by default. To enable it by "-aarch64-interleaved-access-opt=true"

E.g. Transform an interleaved load (Factor = 2):
       %wide.vec = load <8 x i32>, <8 x i32>* %ptr
       %v0 = shuffle %wide.vec, undef, <0, 2, 4, 6>  ; Extract even elements
       %v1 = shuffle %wide.vec, undef, <1, 3, 5, 7>  ; Extract odd elements
     Into:
       %ld2 = { <4 x i32>, <4 x i32> } call aarch64.neon.ld2(%ptr)
       %v0 = extractelement { <4 x i32>, <4 x i32> } %ld2, i32 0
       %v1 = extractelement { <4 x i32>, <4 x i32> } %ld2, i32 1

E.g. Transform an interleaved store (Factor = 2):
       %i.vec = shuffle %v0, %v1, <0, 4, 1, 5, 2, 6, 3, 7>  ; Interleaved vec
       store <8 x i32> %i.vec, <8 x i32>* %ptr
     Into:
       %v0 = shuffle %i.vec, undef, <0, 1, 2, 3>
       %v1 = shuffle %i.vec, undef, <4, 5, 6, 7>
       call void aarch64.neon.st2(%v0, %v1, %ptr)



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@239514 91177308-0d34-0410-b5e6-96231b3b80d8
2015-06-11 09:05:02 +00:00
..
Analysis [X86][SSE] Vectorized i8 and i16 shift operators 2015-06-11 07:46:37 +00:00
Assembler
Bindings
Bitcode
BugPoint
CodeGen [AArch64] Match interleaved memory accesses into ldN/stN instructions. 2015-06-11 09:05:02 +00:00
DebugInfo Revert "[DWARF] Fix a few corner cases in expression emission" 2015-06-09 18:01:51 +00:00
ExecutionEngine [Mips64][mcjit] Add R_MIPS_PC32 relocation 2015-06-08 14:10:23 +00:00
Feature
FileCheck
Instrumentation [asan] Prevent __attribute__((annotate)) triggering errors on Darwin 2015-06-09 00:58:08 +00:00
Integer
JitListener
Linker
LTO
MC LLVM support for vector quad bit permute and gather instructions through builtins 2015-06-11 06:21:25 +00:00
Object Revert "Move dllimport name mangling to IR mangler." 2015-06-11 01:31:48 +00:00
Other
SymbolRewriter
TableGen
tools [dsymutil] Fix misspelled CHECK line. 2015-06-05 23:46:18 +00:00
Transforms ArgumentPromotion: Drop sret attribute on functions that are only called directly. 2015-06-10 21:14:34 +00:00
Unit
Verifier
YAMLParser
.clang-format
CMakeLists.txt LibDriver, llvm-lib: introduce. 2015-06-09 21:50:22 +00:00
lit.cfg LibDriver, llvm-lib: introduce. 2015-06-09 21:50:22 +00:00
lit.site.cfg.in
Makefile
Makefile.tests
TestRunner.sh