llvm/test
Bill Schmidt 982f60be44 [PPC64LE] Adjust vector splats during VSX swap optimization
The initial code drop for VSX swap optimization permitted the
optimization only when all operations in a web of related computation
are lane-insensitive.  For some lane-sensitive operations, we can
still permit the optimization provided that we make adjustments to
those operations.  This patch adds special handling for vector splats
so that their presence doesn't kill the optimization.

Vector splats are lane-sensitive since they identify by number a
vector element to be used as the source of a splat.  When swap
optimizations take place, the desired vector element will move to the
opposite doubleword of the quadword vector.  We thus replace the index
I by (I + N/2) % N, where N is the number of elements in the vector.

A new test case is added to test that swap optimization succeeds when
vector splats are present, and that the proper input element is used
as the source of the splat.

An ancillary change removes SH_BUILDVEC as one of the kinds of special
handling that may be required by VSX swap optimization.  From
experience with GCC, I had expected to need some modifications for
vector build operations, but I did not find that to be the case.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@236606 91177308-0d34-0410-b5e6-96231b3b80d8
2015-05-06 15:40:46 +00:00
..
Analysis [getUnderlyingOjbects] Analyze loop PHIs further to remove false positives 2015-04-23 20:09:20 +00:00
Assembler IR: Give 'DI' prefix to debug info metadata 2015-04-29 16:38:44 +00:00
Bindings IR: Give 'DI' prefix to debug info metadata 2015-04-29 16:38:44 +00:00
Bitcode Don't overflow GCTable 2015-04-30 04:09:41 +00:00
BugPoint IR: Give 'DI' prefix to debug info metadata 2015-04-29 16:38:44 +00:00
CodeGen [PPC64LE] Adjust vector splats during VSX swap optimization 2015-05-06 15:40:46 +00:00
DebugInfo DebugInfo: Use low_pc relative debug_ranges under fission when the CU has a low_pc 2015-05-02 02:31:49 +00:00
ExecutionEngine [Orc] Reapply r236465 with fixes for the MSVC bots. 2015-05-05 17:37:18 +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 IR: Give 'DI' prefix to debug info metadata 2015-04-29 16:38:44 +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
Linker 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
MC [SystemZ] Add z13 vector facility and MC support 2015-05-05 19:23:40 +00:00
Object [Object] Teach Object and llvm-objdump about ".hidden" 2015-04-30 23:08:53 +00:00
Other [opaque pointer type] Add textual IR support for explicit type parameter to the call instruction 2015-04-16 23:24:18 +00:00
SymbolRewriter
TableGen Add support for v1i128 type. 2015-04-17 16:11:05 +00:00
tools [llvm-pdbdump] Support dynamic load address and external symbols. 2015-05-01 20:24:26 +00:00
Transforms [Inliner] Discard empty COMDAT groups 2015-05-05 20:14:22 +00:00
Unit
Verifier IR: Give 'DI' prefix to debug info metadata 2015-04-29 16:38:44 +00:00
YAMLParser
.clang-format
CMakeLists.txt
lit.cfg Lit: Allow overriding llvm tool paths+arguments, make -D an alias for --param 2015-05-04 21:36:36 +00:00
lit.site.cfg.in
Makefile
Makefile.tests
TestRunner.sh