llvm-6502/lib
Bill Schmidt 9215b9ab25 [PPC64LE] Enable missing lxvdsx optimization, and related swap optimization
When adding little-endian vector support for PowerPC last year, I
inadvertently disabled an optimization that recognizes a load-splat
idiom and generates the lxvdsx instruction.  This patch moves the
offending logic so lxvdsx is once again generated.

This pattern is frequently generated by the vectorizer for scalar
loads of an effective constant.  Previously the lxvdsx instruction was
wrongly listed as lane-sensitive for the VSX swap optimization (since
both doublewords are identical, swaps are safe).  This patch fixes
this as well, so that vectorized code using lxvdsx can now have swaps
removed from the computation.

There is an existing test (@test50) in test/CodeGen/PowerPC/vsx.ll
that checks for the missing optimization.  However, vsx.ll was only
being tested for POWER7 with big-endian code generation.  I've added
a little-endian RUN statement and expected LE code generation for all
the tests in vsx.ll to give us a bit better VSX coverage, including
what's needed for this patch.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@241183 91177308-0d34-0410-b5e6-96231b3b80d8
2015-07-01 19:40:07 +00:00
..
Analysis Move delinearization from SCEVAddRecExpr to ScalarEvolution 2015-06-29 14:42:48 +00:00
AsmParser Add a DIModule metadata node to the IR. 2015-06-29 23:03:47 +00:00
Bitcode Add a DIModule metadata node to the IR. 2015-06-29 23:03:47 +00:00
CodeGen add a cl::opt override for TargetLoweringBase's JumpIsExpensive 2015-07-01 18:10:20 +00:00
DebugInfo Don't return error_code from a function that doesn't fail. 2015-06-30 04:08:37 +00:00
ExecutionEngine Use ErrorOr in getRelocationAdress. 2015-06-30 20:32:26 +00:00
Fuzzer
IR Fix a fixme and make DICompileUnit a distinct node. Tested via clang. 2015-06-30 18:32:18 +00:00
IRReader
LibDriver
LineEditor
Linker
LTO Teach LTOModule to emit linker flags for dllexported symbols, plus interface cleanup. 2015-06-29 22:04:09 +00:00
MC Fix PR23872: Integrated assembler error message when using .type directive with @ in AArch32 assembly. 2015-07-01 08:58:49 +00:00
Object Return ErrorOr from getSection. 2015-07-01 12:56:27 +00:00
Option
Passes
ProfileData
Support Drop the OS from the WebAssembly target triple for now. 2015-06-30 03:52:25 +00:00
TableGen
Target [PPC64LE] Enable missing lxvdsx optimization, and related swap optimization 2015-07-01 19:40:07 +00:00
Transforms [LoopUnroll] Use undef for phis with no value live 2015-07-01 05:38:07 +00:00
CMakeLists.txt
LLVMBuild.txt
Makefile