LLVM backend for 6502
Go to file
Andrea Di Biagio 60e9a53c21 [CostModel][x86] Improved cost model for alternate shuffles.
This patch:
 1) Improves the cost model for x86 alternate shuffles (originally
added at revision 211339);
 2) Teaches the Cost Model Analysis pass how to analyze alternate shuffles.

Alternate shuffles are a special kind of blend; on x86, we can often
easily lowered alternate shuffled into single blend
instruction (depending on the subtarget features).

The existing cost model didn't take into account subtarget features.
Also, it had a couple of "dead" entries for vector types that are never
legal (example: on x86 types v2i32 and v2f32 are not legal; those are
always either promoted or widened to 128-bit vector types).

The new x86 cost model takes into account what target features we have
before returning the shuffle cost (i.e. the number of instructions
after the blend is lowered/expanded).

This patch also teaches the Cost Model Analysis how to identify and analyze
alternate shuffles (i.e. 'SK_Alternate' shufflevector instructions):
 - added function 'isAlternateVectorMask';
 - added some logic to check if an instruction is a alternate shuffle and, in
   case, call the target specific TTI to get the corresponding shuffle cost;
 - added a test to verify the cost model analysis on alternate shuffles.



git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@212296 91177308-0d34-0410-b5e6-96231b3b80d8
2014-07-03 22:24:18 +00:00
autoconf
bindings [OCaml] Documentation improvements. 2014-07-02 22:17:20 +00:00
cmake cmake: Don't do anything for LLVM_ENABLE_ASSERTIONS=OFF 2014-06-27 18:17:30 +00:00
docs Expand the note about llvm-ar now that inline asm works. 2014-07-03 21:34:25 +00:00
examples
include Add support for inline asm symbols to IRObjectFile. 2014-07-03 18:59:23 +00:00
lib [CostModel][x86] Improved cost model for alternate shuffles. 2014-07-03 22:24:18 +00:00
projects
test [CostModel][x86] Improved cost model for alternate shuffles. 2014-07-03 22:24:18 +00:00
tools Add the -just-symbol-name (aka -j) flag to llvm-nm to just print the 2014-07-03 21:51:07 +00:00
unittests Invert the MC -> Object dependency. 2014-07-03 02:01:39 +00:00
utils Revert "Introduce a string_ostream string builder facilty" 2014-06-26 22:52:05 +00:00
.arcconfig
.clang-format
.gitignore Add Polly to the ignored trees. 2014-06-25 13:13:36 +00:00
CMakeLists.txt Delete utils/FileUpdate. 2014-06-23 17:58:39 +00:00
CODE_OWNERS.TXT
configure
CREDITS.TXT
LICENSE.TXT
llvm.spec.in
LLVMBuild.txt
Makefile
Makefile.common
Makefile.config.in
Makefile.rules [Make] Fix dependencies for td.expanded 2014-06-20 19:00:41 +00:00
README.txt

Low Level Virtual Machine (LLVM)
================================

This directory and its subdirectories contain source code for the Low Level
Virtual Machine, a toolkit for the construction of highly optimized compilers,
optimizers, and runtime environments.

LLVM is open source software. You may freely distribute it under the terms of
the license agreement found in LICENSE.txt.

Please see the documentation provided in docs/ for further
assistance with LLVM, and in particular docs/GettingStarted.rst for getting
started with LLVM and docs/README.txt for an overview of LLVM's
documentation setup.

If you're writing a package for LLVM, see docs/Packaging.rst for our
suggestions.