hanchenye-llvm-project/llvm
Krzysztof Parzyszek 8f174dde92 [Pipeliner] Improve serialization order for post-increments
The pipeliner is generating a serial sequence that causes poor
register allocation when a post-increment instruction appears
prior to the use of the post-increment register. This occurs when
there is a circular set of dependences involved with a sequence
of instructions in the same cycle. In this case, there is no
serialization of the parallel semantics that will not cause an
additional register to be allocated.

This patch fixes the problem by changing the instructions so that
the post-increment instruction is used by the subsequent
instruction, which enables the register allocator to make a
better decision and not require another register.

Patch by Brendon Cahoon.

llvm-svn: 315466
2017-10-11 15:51:44 +00:00
..
bindings
cmake Bring r314809 back. 2017-10-04 20:27:01 +00:00
docs [AMDGPU] Lower enqueued blocks and generate runtime metadata 2017-10-10 19:39:48 +00:00
examples Fix broken links to the Itanium CXX ABI 2017-09-12 00:19:11 +00:00
include [TargetLowering] Correctly track NumFixedArgs field of CallLoweringInfo 2017-10-11 13:48:45 +00:00
lib [Pipeliner] Improve serialization order for post-increments 2017-10-11 15:51:44 +00:00
projects
resources
runtimes [CMake][runtimes] Use the same configuration for non-target and "default" target 2017-09-08 22:26:50 +00:00
test [Pipeliner] Improve serialization order for post-increments 2017-10-11 15:51:44 +00:00
tools Revert "[dsymutil] Timestmap verification for __swift_ast" 2017-10-11 13:51:30 +00:00
unittests [MC] Have MCObjectStreamer take its MCAsmBackend argument via unique_ptr. 2017-10-11 01:57:21 +00:00
utils [TableGen] Tidy up CodeGenSchedule.cpp 2017-10-11 09:33:23 +00:00
.arcconfig
.clang-format
.clang-tidy
.gitignore
CMakeLists.txt Revert "[CMake] Remove `CMAKE_.*_OUTPUT_DIRECTORY` (NFCI)" 2017-09-29 19:50:41 +00:00
CODE_OWNERS.TXT
CREDITS.TXT Add myself to CREDITS.txt 2017-09-18 14:33:39 +00:00
LICENSE.TXT
LLVMBuild.txt
README.txt
RELEASE_TESTERS.TXT
configure
llvm.spec.in

README.txt

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

This directory and its subdirectories contain source code for LLVM,
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 are writing a package for LLVM, see docs/Packaging.rst for our
suggestions.