LLVM backend for 6502
Go to file
Hal Finkel 72465ea23d BBVectorize: Choose pair ordering to minimize shuffles
BBVectorize would, except for loads and stores, always fuse instructions
so that the first instruction (in the current source order) would always
represent the low part of the input vectors and the second instruction
would always represent the high part. This lead to too many shuffles
being produced because sometimes the opposite order produces fewer of them.

With this change, BBVectorize tracks the kind of pair connections that form
the DAG of candidate pairs, and uses that information to reorder the pairs to
avoid excess shuffles. Using this information, a future commit will be able
to add VTTI-based shuffle costs to the pair selection procedure. Importantly,
the number of remaining shuffles can now be estimated during pair selection.

There are some trivial instruction reorderings in the test cases, and one
simple additional test where we certainly want to do a reordering to
avoid an unnecessary shuffle.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@167122 91177308-0d34-0410-b5e6-96231b3b80d8
2012-10-31 15:17:07 +00:00
autoconf Add mips64-* and mips64el-* triples to configure scripts 2012-10-29 19:49:45 +00:00
bindings Fix a build error for ocaml bindings that was introduced with the TargetData --> DataLayout changes. 2012-10-19 20:36:22 +00:00
cmake CMake: Include private headers / tablegen files in generated Xcode projects. 2012-10-23 21:36:55 +00:00
docs Typo. 2012-10-29 21:49:46 +00:00
examples Back out r166591, not sure why this made it through since I cancelled the command. Bleh, sorry about this! 2012-10-24 17:25:11 +00:00
include Fix a couple of comment typos. 2012-10-31 11:25:32 +00:00
lib BBVectorize: Choose pair ordering to minimize shuffles 2012-10-31 15:17:07 +00:00
projects Add mips64-* and mips64el-* triples to configure scripts 2012-10-29 19:49:45 +00:00
runtime Place temporary LTO files into their own subdirectory. 2012-10-10 05:29:15 +00:00
test BBVectorize: Choose pair ordering to minimize shuffles 2012-10-31 15:17:07 +00:00
tools Align the data section correctly when loading an ELF file. 2012-10-29 10:47:07 +00:00
unittests Add IRBuilderBase::getIntPtrTy. 2012-10-31 09:50:01 +00:00
utils Don't return false when the function's return type is a pointer. 2012-10-25 21:25:08 +00:00
.gitignore Add extra vim swap file pattern 2012-10-09 23:48:34 +00:00
CMakeLists.txt Removing dependency on third party library for Intel JIT event support. 2012-09-28 17:35:20 +00:00
CODE_OWNERS.TXT
configure Add mips64-* and mips64el-* triples to configure scripts 2012-10-29 19:49:45 +00:00
CREDITS.TXT Move TargetData to DataLayout. 2012-10-08 16:40:38 +00:00
LICENSE.TXT
llvm.spec.in
LLVMBuild.txt
Makefile Don't try to install c-index-test with BUILD_CLANG_ONLY. rdar://12492703 2012-10-24 22:56:32 +00:00
Makefile.common
Makefile.config.in Re-enable support for --program-prefix. 2012-10-01 18:40:32 +00:00
Makefile.rules Use MACOSX_DEPLOYMENT_TARGET when it is set. <rdar://problem/12433905> 2012-10-12 21:48:14 +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 HTML documentation provided in docs/index.html for further
assistance with LLVM.

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