llvm-project/llvm/test
Hao Liu 32c0539691 [LoopVectorize] Teach Loop Vectorizor about interleaved memory accesses.
Interleaved memory accesses are grouped and vectorized into vector load/store and shufflevector.
E.g. for (i = 0; i < N; i+=2) {
       a = A[i];         // load of even element
       b = A[i+1];       // load of odd element
       ...               // operations on a, b, c, d
       A[i] = c;         // store of even element
       A[i+1] = d;       // store of odd element
     }

  The loads of even and odd elements are identified as an interleave load group, which will be transfered into vectorized IRs like:
     %wide.vec = load <8 x i32>, <8 x i32>* %ptr
     %vec.even = shufflevector <8 x i32> %wide.vec, <8 x i32> undef, <4 x i32> <i32 0, i32 2, i32 4, i32 6>
     %vec.odd = shufflevector <8 x i32> %wide.vec, <8 x i32> undef, <4 x i32> <i32 1, i32 3, i32 5, i32 7>

  The stores of even and odd elements are identified as an interleave store group, which will be transfered into vectorized IRs like:
     %interleaved.vec = shufflevector <4 x i32> %vec.even, %vec.odd, <8 x i32> <i32 0, i32 4, i32 1, i32 5, i32 2, i32 6, i32 3, i32 7> 
     store <8 x i32> %interleaved.vec, <8 x i32>* %ptr

This optimization is currently disabled by defaut. To try it by adding '-enable-interleaved-mem-accesses=true'. 

llvm-svn: 239291
2015-06-08 06:39:56 +00:00
..
Analysis [LoopAccessAnalysis] Teach LAA to check the memory dependence between strided accesses. 2015-06-08 04:48:37 +00:00
Assembler Make the test introduced in r239015 more targeted. 2015-06-04 07:21:42 +00:00
Bindings IR: Give 'DI' prefix to debug info metadata 2015-04-29 16:38:44 +00:00
Bitcode [BitcodeReader] Diagnose type mismatches with aliases 2015-06-03 01:30:13 +00:00
BugPoint IR: Give 'DI' prefix to debug info metadata 2015-04-29 16:38:44 +00:00
CodeGen [X86] Added tzcnt vector tests. 2015-06-07 21:01:34 +00:00
DebugInfo Revert "[Object, ELF] Fix segmentation fault in ELFFile::getSectionName()." 2015-06-04 23:58:31 +00:00
ExecutionEngine Re-commit r238838, r238844 with fix for host/target endian mismatch and windows buildbot. 2015-06-03 10:27:28 +00:00
Feature [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
FileCheck
Instrumentation [ASan] New approach to dynamic allocas unpoisoning. Patch by Max Ostapenko! 2015-05-28 07:51:49 +00:00
Integer [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
JitListener IR: Give 'DI' prefix to debug info metadata 2015-04-29 16:38:44 +00:00
LTO Revert changes to LTO test case since llvm-lto can't handle textual IR inputs 2015-04-24 18:13:27 +00:00
Linker Changed renaming of local symbols by inserting a dot vefore the numeric suffix. 2015-05-12 16:47:30 +00:00
MC [objdump] Moving PrintImmHex out of MachODump and in to llvm-objdump and setting instprinter appropriately. 2015-06-07 21:07:17 +00:00
Object [Object, MachO] Don't crash on incomplete MachO segment load commands. 2015-06-04 22:26:44 +00:00
Other Let llc and opt override "-target-cpu" and "-target-features" via command line 2015-05-06 23:54:14 +00:00
SymbolRewriter
TableGen Use std::bitset for SubtargetFeatures. 2015-05-26 10:47:10 +00:00
Transforms [LoopVectorize] Teach Loop Vectorizor about interleaved memory accesses. 2015-06-08 06:39:56 +00:00
Unit
Verifier [Verifier] Assert gc_relocate always return a pointer type 2015-05-18 19:50:14 +00:00
YAMLParser YAML: Implement block scalar parsing. 2015-05-13 23:10:51 +00:00
tools [dsymutil] Fix misspelled CHECK line. 2015-06-05 23:46:18 +00:00
.clang-format
CMakeLists.txt Remove duplicate cmake target I added in r236792. 2015-05-08 16:59:53 +00:00
Makefile test: Make a start on a test suite for libLTO. 2015-03-19 23:55:38 +00:00
Makefile.tests
TestRunner.sh
lit.cfg Add yaml-bench to the list of tools make check needs to run 2015-05-07 22:53:11 +00:00
lit.site.cfg.in test: Make a start on a test suite for libLTO. 2015-03-19 23:55:38 +00:00