llvm-project/llvm
Daniel Sanders 7aac7cc57f [globalisel][tablegen] Add control-flow to the MatchTable.
Summary:
This will allow us to merge the various sub-tables into a single table. This is a
compile-time saving at this point. However, this will also enable the optimization
of a table so that similar instructions can be tested together, reducing the time
spent on the matching the code.

The bulk of this patch is a mechanical conversion to the new MatchTable object
which is responsible for tracking label definitions and filling in the index of
the jump targets. It is also responsible for nicely formatting the table.

This was necessary to support the new GIM_Try opcode which takes the index to
jump to if the match should fail. This value is unknown during table
construction and is filled in during emission. To support nesting try-blocks
(although we currently don't emit tables with nested try-blocks), GIM_Reject
has been re-introduced to explicitly exit a try-block or fail the overall match
if there are no active try-blocks.

Reviewers: ab, t.p.northover, qcolombet, rovka, aditya_nandakumar

Reviewed By: rovka

Subscribers: kristof.beyls, igorb, llvm-commits

Differential Revision: https://reviews.llvm.org/D35117

llvm-svn: 308596
2017-07-20 09:25:44 +00:00
..
bindings [NFC] Remove multiple semicolons 2017-06-28 23:15:16 +00:00
cmake [cmake] GetSVN.cmake takes a list of arguments 2017-07-19 18:37:02 +00:00
docs [libFuzzer] enable reduce_inputs=1 by default (seems to be a big win usually) 2017-07-19 22:10:30 +00:00
examples Defeat another -Wunused-but-set-variable warning 2017-07-19 15:06:31 +00:00
include [globalisel][tablegen] Add control-flow to the MatchTable. 2017-07-20 09:25:44 +00:00
lib [mips] Fix fp select machine verifier errors 2017-07-20 09:21:10 +00:00
projects
resources
runtimes [CMake] Set toolchain tools in cross-target runtimes build 2017-07-18 20:54:02 +00:00
test [globalisel][tablegen] Add control-flow to the MatchTable. 2017-07-20 09:25:44 +00:00
tools Revert "[LLVM][llvm-objcopy] Added basic plumbing to get things started" 2017-07-20 00:13:32 +00:00
unittests Remove some leftover DWARFContextInMemory. 2017-07-19 23:34:59 +00:00
utils [globalisel][tablegen] Add control-flow to the MatchTable. 2017-07-20 09:25:44 +00:00
.arcconfig
.clang-format
.clang-tidy
.gitignore
CMakeLists.txt Update trunk version to 6.0.0svn 2017-07-19 12:19:01 +00:00
CODE_OWNERS.TXT Remove the BBVectorize pass. 2017-06-30 07:09:08 +00:00
CREDITS.TXT Another test commit 2017-07-01 03:24:06 +00:00
LICENSE.TXT
LLVMBuild.txt
README.txt
RELEASE_TESTERS.TXT [RelTest] Diana is doing both releases now 2017-07-14 08:33:52 +00:00
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.