llvm-6502/lib
Bill Schmidt 8e38e86266 [PPC64LE] Generate correct code for unaligned little-endian vector loads
The code in PPCTargetLowering::PerformDAGCombine() that handles
unaligned Altivec vector loads generates a lvsl followed by a vperm.
As we've seen in numerous other places, the vperm instruction has a
big-endian bias, and this is fixed for little endian by complementing
the permute control vector and swapping the input operands.  In this
case the lvsl is providing the permute control vector.  Rather than
generating an lvsl and a complement operation, it is sufficient to
generate an lvsr instruction instead.  Thus for LE code generation we
will generate an lvsr rather than an lvsl, and swap the other input
arguments on the vperm.

The existing test/CodeGen/PowerPC/vec_misalign.ll is updated to test
the code generation for PPC64 and PPC64LE, in addition to the existing
PPC32/G5 testing.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@210493 91177308-0d34-0410-b5e6-96231b3b80d8
2014-06-09 22:00:52 +00:00
..
Analysis Remove old fenv.h workaround for a historic clang driver bug 2014-06-09 19:00:52 +00:00
AsmParser Allow aliases to be unnamed_addr. 2014-06-06 01:20:28 +00:00
Bitcode Allow aliases to be unnamed_addr. 2014-06-06 01:20:28 +00:00
CodeGen Generate better location ranges for some register-described variables. 2014-06-09 21:53:47 +00:00
DebugInfo [modules] Add module maps for LLVM. These are not quite ready for prime-time 2014-05-21 02:46:14 +00:00
ExecutionEngine Add a Constant version of stripPointerCasts. 2014-06-04 19:01:48 +00:00
IR InstCombine: Canonicalize addrspacecast between different element types 2014-06-06 21:52:55 +00:00
IRReader [C++11] More 'nullptr' conversion. In some cases just using a boolean check instead of comparing to nullptr. 2014-04-15 06:32:26 +00:00
LineEditor [CMake] Use LINK_LIBS instead of target_link_libraries(). 2014-02-26 06:41:29 +00:00
Linker Allow aliases to be unnamed_addr. 2014-06-06 01:20:28 +00:00
LTO Build fix: remove initializeJumpInstrTablesPass() call from LTO 2014-06-07 20:39:53 +00:00
MC Fix gcc warning (enumeral and non-enumeral type in conditional expression) 2014-06-09 07:35:07 +00:00
Object [yaml2obj][obj2yaml] Support ELF symbol's visibility flags (default/hidden/protected). 2014-06-06 07:41:57 +00:00
Option Options: Use erase_if to remove Args from the list. 2014-05-18 15:14:13 +00:00
ProfileData Use an enum class. 2014-06-03 05:12:33 +00:00
Support APFloat: x - NaN needs to flip the signbit of NaN when x is a number. 2014-06-08 16:53:31 +00:00
TableGen Fix typos in tablegen error messages 2014-05-31 05:18:52 +00:00
Target [PPC64LE] Generate correct code for unaligned little-endian vector loads 2014-06-09 22:00:52 +00:00
Transforms Look through addrspacecasts when turning ptr comparisons into 2014-06-09 19:20:29 +00:00
CMakeLists.txt ProfileData: Introduce the InstrProfReader interface and a text reader 2014-03-21 17:24:48 +00:00
LLVMBuild.txt ProfileData: Introduce the InstrProfReader interface and a text reader 2014-03-21 17:24:48 +00:00
Makefile ProfileData: Introduce the InstrProfReader interface and a text reader 2014-03-21 17:24:48 +00:00