1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-24 03:33:20 +01:00
llvm-mirror/utils
Roman Tereshin a86792ba95 [GlobalISel] Match table opt: fix a bug in matching num of operands
If there is a dag node with a variable number of operands that has at
least N operands (for some non-negative N), and multiple patterns with
that node with different number of operands, we would drop the number of
operands check in patterns with N operands, presumably because it's
guaranteed in such case that none of the per-operand checks will access
the operand list out-of-bounds.

Except semantically the check is about having exactly N operands, not at
least N operands, and a backend might rely on it to disambiguate
different patterns.

In this patch we change the condition on emitting the number of operands
check from "the instruction is not guaranteed to have at least as many
operands as are checked by the pattern being matched" to "the
instruction is not guaranteed to have a specific number of operands".

We're relying (still) on the rest of the CodeGenPatterns mechanics to
validate that the pattern itself doesn't try to access more operands
than there is in the instruction in cases when the instruction does have
fixed number of operands, and on the machine verifier to validate at
runtime that particular MIs like that satisfy the constraint as well.

Reviewers: dsanders, qcolombet

Reviewed By: qcolombet

Subscribers: arsenm, rovka, Petar.Avramovic, llvm-commits

Tags: #llvm

Differential Revision: https://reviews.llvm.org/D69653
2019-11-01 01:57:48 -07:00
..
benchmark [benchmark] Fix win32 link on case-sensitive fs 2019-07-30 20:47:59 +00:00
bugpoint
count
crosstool
docker [build] Rename clang-headers to clang-resource-headers 2019-03-04 21:19:53 +00:00
emacs [NFC][emacs] remove out-of-date comment from tablegen-mode.el 2019-09-26 19:36:01 +00:00
FileCheck [FileCheck] Implement --ignore-case option. 2019-10-11 11:59:14 +00:00
fpcmp
gdb-scripts Fix GDB pretty printer for Optional after r354246 2019-05-28 20:22:16 +00:00
git-svn git-llvm: Drop dependency on github module 2019-10-25 00:04:31 -07:00
gn gn build: Merge e72e59e9028 2019-10-31 23:15:09 +00:00
jedit
kate [TableGen] Introduce !listsplat 'binary' operator 2019-04-10 18:26:36 +00:00
KillTheDoctor
lint
lit [lit] Extract Display.print_header function 2019-10-31 11:43:20 -07:00
llvm-build Write the RequiredLibraries for 'all' in LibraryDependencies.inc in a deterministic order (PR42739) 2019-08-05 13:04:07 +00:00
llvm-lit
llvm-locstats [llvm-locstats] Fix 'only params' no entry value stats 2019-10-15 10:12:14 +00:00
LLVMVisualizers Clean up MSVC visualization of LLVM pointer types 2019-06-30 21:54:34 +00:00
Misc
not
PerfectShuffle
release Fix copy-pasto in r374759 2019-10-14 17:52:31 +00:00
Reviewing Python compat - iteritems() vs. items() 2019-01-03 14:12:23 +00:00
sanitizers
TableGen [GlobalISel] Match table opt: fix a bug in matching num of operands 2019-11-01 01:57:48 -07:00
Target/ARM
testgen
textmate
unittest reland [gtest] Fix printing of StringRef and SmallString in assert messages. 2019-08-21 13:56:29 +00:00
UpdateTestChecks [utils] Reflow asm check generation to tolerate blank lines 2019-11-01 09:42:48 +03:00
valgrind
vim [X86] Add new calling convention that guarantees tail call optimization 2019-10-07 22:28:58 +00:00
vscode
yaml-bench
abtest.py
add_argument_names.py IR: print value numbers for unnamed function arguments 2019-08-03 14:28:34 +00:00
bisect [utils] Fix incompatibility of bisect[-skip-count] with Python 3 2019-10-04 16:44:18 +00:00
bisect-skip-count [utils] Fix incompatibility of bisect[-skip-count] with Python 3 2019-10-04 16:44:18 +00:00
bugpoint_gisel_reducer.py
check-each-file
chunk-print-before-all.py [Util] Add a helper script for converting -print-before-all output into a file based equivelent 2019-06-19 22:05:47 +00:00
clang-parse-diagnostics-file
codegen-diff
collect_and_build_with_pgo.py
countloc.sh
create_ladder_graph.py
demangle_tree.py Python compat - print statement 2019-01-03 14:11:33 +00:00
DSAclean.py
DSAextract.py
extract_symbols.py Use portable flag with nm in extract_symbols.py 2019-10-23 16:48:22 -04:00
extract_vplan.py
findmisopt
findoptdiff
findsym.pl
GenLibDeps.pl [Bitcode] Move Bitstream to a separate library 2019-07-03 22:40:07 +00:00
GetRepositoryPath
GetSourceVersion
getsrcs.sh
indirect_calls.py
lldbDataFormatters.py Add LLDB dataformatters for llvm::StringRef and lldb_private::ConstString 2019-08-16 23:47:57 +00:00
llvm-compilers-check
llvm-gisel-cov.py
llvm-native-gxx
llvm.grm
LLVMBuild.txt
llvmdo
llvmgrep
prepare-code-coverage-artifact.py svn propset svn:executable on utils/prepare-code-coverage-artifact.py 2019-06-04 23:35:07 +00:00
schedcover.py
shuffle_fuzz.py
shuffle_select_fuzz_tester.py
sort_includes.py
unicode-case-fold.py
update_analyze_test_checks.py [Utils] Allow update_test_checks to check function information 2019-10-30 20:40:42 -05:00
update_cc_test_checks.py [update_cc_test_checks.py] Pass the builtin include dir to clang 2019-10-31 21:18:33 +00:00
update_llc_test_checks.py [utils] Add minimal support for MIR inputs to update_llc_test_checks.py 2019-09-18 23:44:17 +00:00
update_mca_test_checks.py [UpdateTestChecks] Emit warning when invalid value for -check-prefix(es) option 2019-07-29 17:41:00 +00:00
update_mir_test_checks.py Fix update_mir_test_checks after 3598b8100 2019-10-31 20:08:28 -07:00
update_test_checks.py [Utils] Allow update_test_checks to check function information 2019-10-30 20:40:42 -05:00
UpdateCMakeLists.pl
wciia.py