llvm-project/llvm/utils
Andrea Di Biagio 3d2b7176fc [tblgen][PredicateExpander] Add the ability to describe more complex constraints on instruction operands.
Before this patch, class PredicateExpander only knew how to expand simple
predicates that performed checks on instruction operands.
In particular, the new scheduling predicate syntax was not rich enough to
express checks like this one:

  Foo(MI->getOperand(0).getImm()) == ExpectedVal;

Here, the immediate operand value at index zero is passed in input to function
Foo, and ExpectedVal is compared against the value returned by function Foo.

While this predicate pattern doesn't show up in any X86 model, it shows up in
other upstream targets. So, being able to support those predicates is
fundamental if we want to be able to modernize all the scheduling models
upstream.

With this patch, we allow users to specify if a register/immediate operand value
needs to be passed in input to a function as part of the predicate check. Now,
register/immediate operand checks all derive from base class CheckOperandBase.

This patch also changes where TIIPredicate definitions are expanded by the
instructon info emitter. Before, definitions were expanded in class
XXXGenInstrInfo (where XXX is a target name).
With the introduction of this new syntax, we may want to have TIIPredicates
expanded directly in XXXInstrInfo. That is because functions used by the new
operand predicates may only exist in the derived class (i.e. XXXInstrInfo).

This patch is a non functional change for the existing scheduling models.
In future, we will be able to use this richer syntax to better describe complex
scheduling predicates, and expose them to llvm-mca.

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

llvm-svn: 345714
2018-10-31 12:28:05 +00:00
..
FileCheck [SourceMgr][FileCheck] Obey -color by extending WithColor 2018-10-24 21:46:42 +00:00
KillTheDoctor Remove @brief commands from doxygen comments, too. 2018-05-01 16:10:38 +00:00
LLVMVisualizers Fix typo in the MSVC Visualizer for SmallVector class 2018-08-06 16:47:24 +00:00
Misc
PerfectShuffle
Reviewing Make email options of find_interesting_reviews more flexible. 2018-06-29 07:16:27 +00:00
TableGen [tblgen][PredicateExpander] Add the ability to describe more complex constraints on instruction operands. 2018-10-31 12:28:05 +00:00
Target/ARM
UpdateTestChecks [NFC] Fix the regular expression for BE PPC in update_llc_test_checks.py 2018-10-26 03:30:28 +00:00
benchmark Add benchmark and benchmark_main to the Utils folder in IDEs. 2018-09-21 22:55:57 +00:00
bugpoint
count
crosstool
docker [docker] Fix LLVM_EXTERNAL_PROJECTS cmake variable value 2018-07-24 18:34:13 +00:00
emacs [emacs] Indent statement continuation to match clang-format 2018-08-02 08:50:41 +00:00
fpcmp
gdb-scripts [gdb] Fix SmallVector pretty printer after r337514 2018-07-23 21:33:51 +00:00
git
git-svn [git-llvm] Fix some issues surrouding EOL conversion on Windows. 2018-10-09 23:42:28 +00:00
jedit
kate Add (very partial) Kate syntax highlighting definition for TableGen 2018-07-18 18:35:27 +00:00
lint
lit [lit] Only return a found bash executable on Windows if it can understand Windows paths 2018-10-23 11:34:04 +00:00
llvm-build Remove llvm-build's --configure-target-def-file. 2018-04-20 17:21:10 +00:00
llvm-lit
not Refactor ExecuteAndWait to take StringRefs. 2018-06-12 17:43:52 +00:00
release merge-request.sh: Add 7.0 metabug 2018-09-28 02:30:42 +00:00
sanitizers Revert "UBSan blacklist workaround for bot timeouts" 2018-10-26 16:07:50 +00:00
testgen
textmate
unittest [unittests] Do not use llvm::sort in googlemock 2018-09-20 04:27:32 +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 utils/abtest: Refactor and add bisection method 2018-09-07 17:08:44 +00:00
bisect
bisect-skip-count Document bisect-skip-count 2018-10-22 14:04:13 +00:00
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
collect_and_build_with_pgo.py [utils] collect_and_build_with_pgo.py: revert part already fixed in rL345461 2018-10-27 23:10:09 +00:00
countloc.sh
create_ladder_graph.py
demangle_tree.py Add a utility script to stress test the demangler. 2018-08-30 20:53:48 +00:00
extract_symbols.py Fix some user facing typos 2018-03-17 17:30:08 +00:00
extract_vplan.py [VPlan] Script to extract VPlan digraphs from log 2018-10-16 09:37:52 +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 [utils] Fix the llvm::Optional data formatter 2018-07-23 21:59:06 +00:00
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 [Coverage] Apply filtered paths to summary 2018-10-11 04:00:51 +00:00
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 [NFC] chmod +x utils/update_analyze_test_checks.py 2018-06-15 12:41:50 +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 Re-land r335297 "[X86] Implement more of x86-64 large and medium PIC code models" 2018-07-23 21:14:35 +00:00
update_mca_test_checks.py [llvm-mca][UpdateTestChecks] Don't try to align blocks that have already been subject to alignment in update_mca_test_checks.py 2018-10-29 13:24:20 +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