llvm-project/llvm
Craig Topper f82867c95a Recommit r320461 "[X86] Use regular expressions more aggressively to reduce the number of scheduler entries needed for FMA3 instructions."
I've hopefully sidestepped the MSVC issue that caused it to be reverted. We no longer include the Sched enum from X86GenInstrInfo.inc on the X86 target. So hopefully MSVC's preprocessor will skip over it and nothing will notice the 11000 character enum name.

Original commit message:

When the scheduler tables are generated by tablegen, the instructions are divided up into groups based on their default scheduling information and how they are referenced by groups for each processor. For any set of instructions that are matched by a specific InstRW line, that group of instructions is guaranteed to not be in a group with any other instructions. So in general, the more InstRW class definitions are created, the more groups we end up with in the generated files. Particularly if a lot of the InstRW lines only match to single instructions, which is true of a large number of the Intel scheduler models.

This change alone reduces the number of instructions groups from ~6000 to ~5500. And there's lots more we could do.

llvm-svn: 320655
2017-12-13 23:11:30 +00:00
..
bindings
cmake [cmake] Explicitly set VS 2017 compatibility 2017-12-13 21:12:37 +00:00
docs [CodeGen] Print jump-table index operands as %jump-table.0 in both MIR and debug output 2017-12-13 10:30:59 +00:00
examples [CMake] Use PRIVATE in target_link_libraries for executables 2017-12-05 21:49:56 +00:00
include [CodeView] Teach clang to emit the .debug$H COFF section. 2017-12-13 22:33:58 +00:00
lib Recommit r320461 "[X86] Use regular expressions more aggressively to reduce the number of scheduler entries needed for FMA3 instructions." 2017-12-13 23:11:30 +00:00
projects [cmake] Support moving debuginfo-tests to llvm/projects 2017-12-12 17:06:08 +00:00
resources
runtimes [runtimes] Add install-*-stripped targets 2017-12-08 19:42:46 +00:00
test [EarlyCSE] recognize swapped variants of abs/nabs as equivalent 2017-12-13 22:57:35 +00:00
tools Recover some overzealously removed includes. 2017-12-13 22:21:02 +00:00
unittests Remove redundant includes from unittests. 2017-12-13 21:31:05 +00:00
utils Remove redundant includes from utils/TableGen. 2017-12-13 21:31:13 +00:00
.arcconfig
.clang-format
.clang-tidy
.gitattributes [MC] Fix regression tests on Windows when git “core.autocrlf” is set to true. 2017-11-17 21:59:43 +00:00
.gitignore
CMakeLists.txt [cmake] Support moving debuginfo-tests to llvm/projects 2017-12-12 17:06:08 +00:00
CODE_OWNERS.TXT
CREDITS.TXT
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.