llvm-project/llvm
Chandler Carruth 9ffb97e631 Introduce a loop block rotation optimization to the new block placement
pass. This is designed to achieve one of the important optimizations
that the old code placement pass did, but more simply.

This is a somewhat rough and *very* conservative version of the
transform. We could get a lot fancier here if there are profitable cases
to do so. In particular, this only looks for a single pattern, it
insists that the loop backedge being rotated away is the last backedge
in the chain, and it doesn't provide any means of doing better in-loop
placement due to the rotation. However, it appears that it will handle
the important loops I am finding in the LLVM test suite.

llvm-svn: 145158
2011-11-27 00:38:03 +00:00
..
autoconf Add configure checking for pread(2) and use it to save a syscall when reading files. 2011-11-22 12:31:53 +00:00
bindings Minor fixes in Makefiles for the OCaml bindings: 2011-11-09 12:00:39 +00:00
cmake Add configure checking for pread(2) and use it to save a syscall when reading files. 2011-11-22 12:31:53 +00:00
docs Move the branch probability blurb into the optimizer section. Add a minimal bullet for AVX. 2011-11-26 11:14:54 +00:00
examples build: Add initial cut at LLVMBuild.txt files. 2011-11-03 18:53:17 +00:00
include This patch contains support for encoding FMA4 instructions and 2011-11-25 19:33:42 +00:00
lib Introduce a loop block rotation optimization to the new block placement 2011-11-27 00:38:03 +00:00
projects build: Add initial cut at LLVMBuild.txt files. 2011-11-03 18:53:17 +00:00
runtime PathProfiling.c: Get rid of using "inline". We may expect compiler shall optimize out "static" scope w/o "inline". 2011-11-08 12:03:14 +00:00
test Introduce a loop block rotation optimization to the new block placement 2011-11-27 00:38:03 +00:00
tools Point to libLTO with -L/PATH/ -lLTO so that it is found in the install 2011-11-23 03:07:25 +00:00
unittests Fix APFloat::convert so that it handles narrowing conversions correctly; it 2011-11-26 03:38:02 +00:00
utils Remove some unnecessary filtering checks from X86 disassembler table build. 2011-11-19 05:48:20 +00:00
.gitignore git: Add tools/lldb to the ignore list. 2011-11-10 22:55:50 +00:00
CMakeLists.txt Revert r144300 "llvm-config: Replace with C++ version (was llvm-config-2).", 2011-11-10 19:59:35 +00:00
CREDITS.TXT CREDITS.TXT: Add a line. (test commit) 2011-10-29 23:42:14 +00:00
LICENSE.TXT Happy new year. 2011-06-12 15:26:54 +00:00
LLVMBuild.txt build: Add initial cut at LLVMBuild.txt files. 2011-11-03 18:53:17 +00:00
Makefile Merge the install-clang-c target into install-clang. <rdar://problem/10217046> 2011-11-27 00:26:22 +00:00
Makefile.common
Makefile.config.in build/Make: Define a TARGET_NATIVE_ARCH variable to be a bit more precise than 2011-11-12 00:18:02 +00:00
Makefile.rules build/Make: Switch over to using llvm-config-2 for dependencies one more (hopefully last) time, now that it also builds as a build tool. 2011-11-14 17:17:45 +00:00
README.txt Undo test commit 2011-11-22 20:05:48 +00:00
configure Add configure checking for pread(2) and use it to save a syscall when reading files. 2011-11-22 12:31:53 +00:00
llvm.spec.in

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.