llvm-6502/lib
Hao Liu 5be64c403b [ARM] Lower interleaved memory accesses to vldN/vstN intrinsics.
This patch also adds a function to calculate the cost of interleaved memory accesses.

E.g. Lower an interleaved load:
        %wide.vec = load <8 x i32>, <8 x i32>* %ptr, align 4
        %v0 = shuffle %wide.vec, undef, <0, 2, 4, 6>
        %v1 = shuffle %wide.vec, undef, <1, 3, 5, 7>
     into:
        %vld2 = { <4 x i32>, <4 x i32> } call llvm.arm.neon.vld2(%ptr, 4)
        %vec0 = extractelement { <4 x i32>, <4 x i32> } %vld2, i32 0
        %vec1 = extractelement { <4 x i32>, <4 x i32> } %vld2, i32 1

E.g. Lower an interleaved store:
        %i.vec = shuffle <8 x i32> %v0, <8 x i32> %v1, <0, 4, 8, 1, 5, 9, 2, 6, 10, 3, 7, 11>
        store <12 x i32> %i.vec, <12 x i32>* %ptr, align 4
     into:
        %sub.v0 = shuffle <8 x i32> %v0, <8 x i32> v1, <0, 1, 2, 3>
        %sub.v1 = shuffle <8 x i32> %v0, <8 x i32> v1, <4, 5, 6, 7>
        %sub.v2 = shuffle <8 x i32> %v0, <8 x i32> v1, <8, 9, 10, 11>
        call void llvm.arm.neon.vst3(%ptr, %sub.v0, %sub.v1, %sub.v2, 4)

Differential Revision: http://reviews.llvm.org/D10533


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@240755 91177308-0d34-0410-b5e6-96231b3b80d8
2015-06-26 02:45:36 +00:00
..
Analysis Take alignment into account in isSafeToLoadUnconditionally 2015-06-25 12:18:43 +00:00
AsmParser ADT: Add a string APSInt constructor. 2015-06-23 18:22:10 +00:00
Bitcode Use foreach loop over constant operands. NFC. 2015-06-25 20:51:38 +00:00
CodeGen [InterleavedAccess] Add a pass InterleavedAccess to identify interleaved memory accesses and transform into target specific intrinsics. 2015-06-26 02:10:27 +00:00
DebugInfo Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
ExecutionEngine Use Symbol.getValue to simplify RuntimeDyldCOFF::getSymbolOffset. NFC. 2015-06-24 19:27:53 +00:00
Fuzzer
IR Devirtualize Instruction::clone_impl 2015-06-24 20:22:23 +00:00
IRReader Return a unique_ptr from getLazyBitcodeModule and parseBitcodeFile. NFC. 2015-06-16 22:27:55 +00:00
LibDriver Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
LineEditor
Linker Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
LTO Simplify the Mangler interface now that DataLayout is mandatory. 2015-06-23 13:59:29 +00:00
MC IAS: Use the root macro instanciation for location 2015-06-25 21:57:33 +00:00
Object Add an ELFSymbolRef type. 2015-06-25 22:10:04 +00:00
Option [Option] Plug a leak when move-assigning an InputArgList. 2015-06-23 15:28:10 +00:00
Passes
ProfileData Revert r240137 (Fixed/added namespace ending comments using clang-tidy. NFC) 2015-06-23 09:49:53 +00:00
Support ADT: Add a string APSInt constructor. 2015-06-23 18:22:10 +00:00
TableGen [TableGen] Restore the use of the TheInit field in Record to cache the Record's DefInit. I broke this when I fixed memory leaks recently. Remove the DenseMap that mapped Record's to DefInit. 2015-06-24 06:19:19 +00:00
Target [ARM] Lower interleaved memory accesses to vldN/vstN intrinsics. 2015-06-26 02:45:36 +00:00
Transforms [ASan] Use llvm::getDISubprogram() to get function entry debug location. 2015-06-26 00:00:47 +00:00
CMakeLists.txt
LLVMBuild.txt
Makefile