llvm-project/llvm/utils
Andrea Di Biagio be8616f5f2 [MCSchedule] Add the ability to compute the latency and throughput information for MCInst.
This patch extends the MCSchedModel API with new methods that can be used to
obtain the latency and reciprocal througput information for an MCInst.

Scheduling models have recently gained the ability to resolve variant scheduling
classes associated with MCInst objects. Before, models were only able to resolve
a variant scheduling class from a MachineInstr object.

This patch is mainly required by D47374 to avoid regressing a pair of x86
specific -print-schedule tests for btver2. Patch D47374 introduces a new variant
class to teach the btver scheduling model (x86 target) how to correctly compute
the latency profile for some zero-idioms using the new scheduling predicates.

The new methods added by this patch would be mainly used by llc when flag
-print-schedule is specified. In particular, tests that contain inline assembly
require that code is parsed at code emission stage into a sequence of MCInst.
That forces the print-schedule functionality to query the latency/rthroughput
information for MCInst instructions too. If we don't expose this new API, then
we lose "-print-schedule" test coverage as soon as variant scheduling classes
are added to the x86 models.

The tablegen SubtargetEmitter changes teaches how to query latency profile
information using a object that derives from TargetSubtargetInfo. Note that this
should really have been part of r333286. To avoid code duplication, the logic
that "resolves" variant scheduling classes for MCInst, has been moved to a
common place in MC. That logic is used by the "resolveVariantSchedClass" methods
redefined in override by the tablegen'd GenSubtargetInfo classes.

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

llvm-svn: 333650
2018-05-31 13:30:42 +00:00
..
FileCheck Define InitLLVM to do common initialization all at once. 2018-04-13 18:26:06 +00:00
KillTheDoctor Remove @brief commands from doxygen comments, too. 2018-05-01 16:10:38 +00:00
LLVMVisualizers
Misc
PerfectShuffle
Reviewing Add Script to match open Phabricator reviews with potential reviewers. 2018-05-18 13:02:32 +00:00
TableGen [MCSchedule] Add the ability to compute the latency and throughput information for MCInst. 2018-05-31 13:30:42 +00:00
Target/ARM
UpdateTestChecks [utils] improve AArch64 asm parser 2018-04-20 17:16:23 +00:00
bugpoint
count
crosstool
docker [Dockerfiles] Split checkout and build scripts into separate files. 2018-04-20 10:19:38 +00:00
emacs Add attributes and fix some keywords in llvm-mode.el 2018-03-08 01:28:45 +00:00
fpcmp
gdb-scripts
git
git-svn [git-llvm] Handle files ignored by svn correctly 2017-12-22 21:19:13 +00:00
jedit
kate
lint
lit [lit] Fix windows cmd.exe test config for r333620 2018-05-31 05:48:33 +00:00
llvm-build Remove llvm-build's --configure-target-def-file. 2018-04-20 17:21:10 +00:00
llvm-lit [lit] Actually do normalize the case of files in the config map. 2017-09-21 21:27:11 +00:00
not [CMake] Use PRIVATE in target_link_libraries for executables 2017-12-05 21:49:56 +00:00
release build_llvm_package.bat: Drop LLDB from the package. 2018-03-19 13:05:37 +00:00
sanitizers Add libstd++-4.8 exceptions to ubsan_blacklist.txt 2017-11-29 20:10:14 +00:00
testgen
textmate
unittest [unittests] Change std::sort to llvm::sort in response to r327219 2018-04-07 01:29:45 +00:00
valgrind
vim vim: rename `singlethread` to `syncscope` 2018-03-22 16:39:54 +00:00
vscode
yaml-bench Remove \brief commands from doxygen comments. 2018-05-01 15:54:18 +00:00
DSAclean.py
DSAextract.py
GenLibDeps.pl
GetRepositoryPath
GetSourceVersion
LLVMBuild.txt
UpdateCMakeLists.pl
abtest.py
bisect
bisect-skip-count
bugpoint_gisel_reducer.py Add a utility to reduce GlobalISel tests 2018-01-23 19:47:10 +00:00
check-each-file
clang-parse-diagnostics-file
codegen-diff
countloc.sh
create_ladder_graph.py
extract_symbols.py Fix some user facing typos 2018-03-17 17:30:08 +00:00
findmisopt
findoptdiff
findsym.pl
getsrcs.sh
indirect_calls.py Remove a stale comment cut and pasted from another file. 2018-04-03 17:07:05 +00:00
lldbDataFormatters.py
llvm-compilers-check
llvm-gisel-cov.py [globalisel][tablegen] Generate rule coverage and use it to identify untested rules 2017-11-16 00:46:35 +00:00
llvm-native-gxx
llvm.grm
llvmdo
llvmgrep
prepare-code-coverage-artifact.py
schedcover.py [MachineScheduler] Add itinerary to schedcover.py. Make default work in the command line filter 2018-03-27 04:26:39 +00:00
shuffle_fuzz.py
shuffle_select_fuzz_tester.py Adding a shufflevector and select LLVM IR instructions fuzz tool 2017-10-31 11:39:31 +00:00
sort_includes.py
unicode-case-fold.py Resubmit r325107 (case folding DJB hash) 2018-02-21 22:36:31 +00:00
update_analyze_test_checks.py [UpdateTestChecks] Add update_analyze_test_checks.py for cost model analysis generation 2018-04-06 12:36:27 +00:00
update_cc_test_checks.py Fix LLVM IR check lines in utils/update_cc_test_checks.py 2018-03-14 17:47:07 +00:00
update_llc_test_checks.py [utils] Refactor utils/update_{,llc_}test_checks.py to share more code 2018-02-10 05:01:33 +00:00
update_mca_test_checks.py [UpdateTestChecks] Improved update_mca_test_checks block analysis 2018-05-24 16:36:44 +00:00
update_mir_test_checks.py update_mir_test_checks: Fix handling of IR input after r326284 2018-03-12 18:06:58 +00:00
update_test_checks.py [UpdateTestChecks] Remove unnecessary return from add_ir_checks 2018-04-05 09:30:42 +00:00
wciia.py