1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2024-11-25 04:02:41 +01:00
llvm-mirror/test/TableGen
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
..
Common GlobalISel/TableGen: Handle setcc patterns 2019-08-29 01:13:41 +00:00
FixedLenDecoderEmitter [TableGen] Correct the shift to the proper bit width. 2019-08-10 16:15:06 +00:00
GICombinerEmitter [gicombiner] Add parse failure tests for defs/match 2019-10-25 12:56:49 -07:00
2003-08-03-PassCode.td
2006-09-18-LargeInt.td
2010-03-24-PrematureDefaults.td
address-space-patfrags.td [GlobalISel] Check LLT size matches memory size for non-truncating stores. 2019-08-02 23:33:13 +00:00
AllowDuplicateRegisterNames.td
ambiguous-composition.td [TableGen] Examine entire subreg compositions to detect ambiguity 2018-11-29 18:20:08 +00:00
AnonDefinitionOnDemand.td
arithmetic.td
AsmPredicateCondsEmission.td
AsmVariant.td
BigEncoder.td Fix compile-time regression caused by rL371928 2019-09-18 18:14:42 +00:00
BitOffsetDecoder.td
BitsInit.td
BitsInitOverflow.td
cast-list-initializer.td
cast-multiclass.td [TableGen] fix assert in !cast when used out of definition in a multiclass 2018-10-10 10:52:57 +00:00
cast-typeerror.td
cast.td
ClassInstanceValue.td
code.td
compare.td
ConcatenatedSubregs.td
cond-bitlist.td [TblGen] Extend !if semantics through new feature !cond 2019-01-25 10:25:25 +00:00
cond-default.td [TblGen] Extend !if semantics through new feature !cond 2019-01-25 10:25:25 +00:00
cond-empty-list-arg.td [TblGen] Extend !if semantics through new feature !cond 2019-01-25 10:25:25 +00:00
cond-inheritance.td [TblGen] Extend !if semantics through new feature !cond 2019-01-25 10:25:25 +00:00
cond-let.td [TblGen] Extend !if semantics through new feature !cond 2019-01-25 10:25:25 +00:00
cond-list.td [TblGen] Extend !if semantics through new feature !cond 2019-01-25 10:25:25 +00:00
cond-subclass.td [TblGen] Extend !if semantics through new feature !cond 2019-01-25 10:25:25 +00:00
cond-type.td [TblGen] Extend !if semantics through new feature !cond 2019-01-25 10:25:25 +00:00
cond-usage.td [TblGen] Extend !if semantics through new feature !cond 2019-01-25 10:25:25 +00:00
condsbit.td [TblGen] Extend !if semantics through new feature !cond 2019-01-25 10:25:25 +00:00
ConstraintChecking1.td [TableGen] Better error checking for TIED_TO constraints. 2018-11-28 11:43:49 +00:00
ConstraintChecking2.td [TableGen] Better error checking for TIED_TO constraints. 2018-11-28 11:43:49 +00:00
ConstraintChecking3.td [TableGen] Better error checking for TIED_TO constraints. 2018-11-28 11:43:49 +00:00
ConstraintChecking4.td [TableGen] Better error checking for TIED_TO constraints. 2018-11-28 11:43:49 +00:00
ConstraintChecking5.td [TableGen] Better error checking for TIED_TO constraints. 2018-11-28 11:43:49 +00:00
ConstraintChecking6.td [TableGen] Better error checking for TIED_TO constraints. 2018-11-28 11:43:49 +00:00
ConstraintChecking7.td [TableGen] Better error checking for TIED_TO constraints. 2018-11-28 11:43:49 +00:00
ConstraintChecking.inc [TableGen] Better error checking for TIED_TO constraints. 2018-11-28 11:43:49 +00:00
CStyleComment.td
dag-functional.td
dag-isel-res-order.td [TableGen] Preserve order of output operands in DAGISelMatcherGen 2018-12-05 00:47:59 +00:00
Dag.td TableGen: Streamline the semantics of NAME 2018-06-04 14:26:05 +00:00
DAGDefaultOps.td [TableGen] Allow DAG isel patterns to override default operands. 2019-07-04 08:43:20 +00:00
defmclass.td
DefmInherit.td
DefmInsideMultiClass.td
defset-typeerror.td
defset.td
DuplicateFieldValues.td
eq.td
eqbit.td
FastISelEmitter.td [FastISel] Permit instructions to be skipped for FastISel generation. 2018-05-22 14:36:58 +00:00
FieldAccess.td
foldl.td
foreach-eval.td
foreach-leak.td
foreach-multiclass.td TableGen: Allow foreach in multiclass to depend on template args 2018-06-21 13:35:44 +00:00
foreach-range-parse-errors0.td TableGen: Handle nontrivial foreach range bounds 2019-05-22 21:28:20 +00:00
foreach-range-parse-errors1.td TableGen: Handle nontrivial foreach range bounds 2019-05-22 21:28:20 +00:00
foreach-range-parse-errors2.td TableGen: Handle nontrivial foreach range bounds 2019-05-22 21:28:20 +00:00
foreach-range-parse-errors3.td TableGen: Handle nontrivial foreach range bounds 2019-05-22 21:28:20 +00:00
foreach-range-parse-errors4.td TableGen: Handle nontrivial foreach range bounds 2019-05-22 21:28:20 +00:00
foreach-range-parse-errors5.td TableGen: Handle nontrivial foreach range bounds 2019-05-22 21:28:20 +00:00
foreach-variable-range.td TableGen: Handle nontrivial foreach range bounds 2019-05-22 21:28:20 +00:00
foreach.td
ForeachList.td
ForeachLoop.td
ForwardRef.td
GeneralList.td
generic-tables-instruction.td Update tablegen test after r369847. 2019-08-24 15:11:41 +00:00
generic-tables.td Update tablegen test after r369847. 2019-08-24 15:11:41 +00:00
get-operand-type.td [TableGen] Emit OperandType enums for RegisterOperands/RegisterClasses 2019-09-23 18:51:00 +00:00
gisel-physreg-input.td GlobalISel: Support physical register inputs in patterns 2019-09-06 20:32:37 +00:00
GlobalISelEmitter-PR39045.td [GlobalISel][NFC] Factor out common target code from GlobalISelEmitterTests 2019-08-13 22:14:37 +00:00
GlobalISelEmitter-setcc.td GlobalISel/TableGen: Handle setcc patterns 2019-08-29 01:13:41 +00:00
GlobalISelEmitter.td Use a bit of relaxed constexpr to make FeatureBitset costant intializable 2019-08-24 15:02:44 +00:00
GlobalISelEmitterOverloadedPtr.td Teach GlobalISelEmitter to treat used iPTRAny operands as pointer operands 2019-08-20 22:04:10 +00:00
GlobalISelEmitterRegSequence.td GlobalISel/TableGen: Handle REG_SEQUENCE patterns 2019-09-10 17:57:33 +00:00
GlobalISelEmitterSkippedPatterns.td [GlobalISel][NFC] Factor out common target code from GlobalISelEmitterTests 2019-08-13 22:14:37 +00:00
GlobalISelEmitterSubreg.td GlobalISel/TableGen: Fix handling of EXTRACT_SUBREG constraints 2019-09-06 00:05:58 +00:00
GlobalISelEmitterVariadic.td [GlobalISel] Match table opt: fix a bug in matching num of operands 2019-11-01 01:57:48 -07:00
HwModeEncodeDecode.td [TableGen] Fix crash when using HwModes in CodeEmitterGen 2019-10-09 09:15:34 +00:00
HwModeSelect.td
if-empty-list-arg.td
if-type.td
if.td
ifbit.td
immarg.td Reapply r372285 "GlobalISel: Don't materialize immarg arguments to intrinsics" 2019-09-19 16:26:14 +00:00
Include.inc
Include.td
IntBitInit.td
intrin-side-effects.td [TableGen] Do not set ReadNone attribute on intrinsics with side effects 2019-07-17 10:53:13 +00:00
intrinsic-long-name.td [IR] Split Intrinsics.inc into enums and implementations 2018-06-23 02:02:38 +00:00
intrinsic-pointer-to-any.td Teach TableGen Intrin Emitter to handle LLVMPointerType<llvm_any_ty> 2019-06-26 00:08:22 +00:00
intrinsic-struct.td [IR] Split Intrinsics.inc into enums and implementations 2018-06-23 02:02:38 +00:00
intrinsic-varargs.td [TableGen] Include ValueTypes.td directly into the intrinsic-varargs.td test. 2019-08-21 19:14:38 +00:00
IntSpecialValues.td [TableGen] Allow 2^63-1 and 2^63-2 as int literals. 2019-03-12 09:28:19 +00:00
InvalidMCSchedClassDesc.td [TableGen] Fix a bug that MCSchedClassDesc is interfered between different SchedModel 2019-10-11 08:36:54 +00:00
isa.td
JSON-check.py [TableGen] Add a general-purpose JSON backend. 2018-07-11 08:40:19 +00:00
JSON.td [lit, python] Always add quotes around the python path in lit 2018-08-06 22:37:44 +00:00
LazyChange.td
LetInsideMultiClasses.td
lisp.td TableGen: Streamline the semantics of NAME 2018-06-04 14:26:05 +00:00
list-element-bitref.td
ListArgs.td [TableGen] Let list elements have a trailing comma 2019-03-26 11:16:01 +00:00
ListArgsSimple.td
listconcat.td
ListConversion.td
ListManip.td
ListOfList.td
listpaste.td TableGen: Allow lists to be concatenated through '#' 2019-03-05 17:16:07 +00:00
ListSlices.td
listsplat.td [TableGen] Introduce !listsplat 'binary' operator 2019-04-10 18:26:36 +00:00
lit.local.cfg Attempt to fix issue with unresolved lit test in TableGen 2019-08-13 22:32:26 +00:00
LoLoL.td
math.td [Tablegen] Add support for the !mul operator. 2019-03-01 09:46:29 +00:00
MultiClass-def-fail.td [TableGen] Give meaningful msg for def use in multiclass 2019-03-26 10:49:09 +00:00
MultiClass-defm-fail.td
MultiClass-defm.td
MultiClass.td
MultiClassDefName.td TableGen: Streamline the semantics of NAME 2018-06-04 14:26:05 +00:00
MultiClassInherit.td
MultiPat.td
name-resolution-consistency.td TableGen: Streamline the semantics of NAME 2018-06-04 14:26:05 +00:00
nested-comment.td
NestedForeach.td TableGen: Allow foreach in multiclass to depend on template args 2018-06-21 13:35:44 +00:00
Paste.td
pr8330.td
prep-diag1.td [TableGen] Preprocessing support 2018-11-27 18:57:43 +00:00
prep-diag2.td [TableGen] Preprocessing support 2018-11-27 18:57:43 +00:00
prep-diag3.td [TableGen] Preprocessing support 2018-11-27 18:57:43 +00:00
prep-diag4.td [TableGen] Preprocessing support 2018-11-27 18:57:43 +00:00
prep-diag5.td TableGen: support #ifndef in addition to #ifdef. 2019-05-14 13:04:25 +00:00
prep-diag6.td [TableGen] Preprocessing support 2018-11-27 18:57:43 +00:00
prep-diag7.td [TableGen] Preprocessing support 2018-11-27 18:57:43 +00:00
prep-diag8.td [TableGen] Preprocessing support 2018-11-27 18:57:43 +00:00
prep-diag9.td [TableGen] Preprocessing support 2018-11-27 18:57:43 +00:00
prep-diag10.td [TableGen] Preprocessing support 2018-11-27 18:57:43 +00:00
prep-diag11-include.inc [TableGen] Preprocessing support 2018-11-27 18:57:43 +00:00
prep-diag11.td [TableGen] Preprocessing support 2018-11-27 18:57:43 +00:00
prep-diag12-include.inc [TableGen] Preprocessing support 2018-11-27 18:57:43 +00:00
prep-diag12.td [TableGen] Preprocessing support 2018-11-27 18:57:43 +00:00
prep-diag13.td [TableGen] Preprocessing support 2018-11-27 18:57:43 +00:00
prep-diag14.td [TableGen] Preprocessing support 2018-11-27 18:57:43 +00:00
prep-ifndef-diag-1.td TableGen: support #ifndef in addition to #ifdef. 2019-05-14 13:04:25 +00:00
prep-ifndef-diag-2.td TableGen: support #ifndef in addition to #ifdef. 2019-05-14 13:04:25 +00:00
prep-ifndef.td TableGen: support #ifndef in addition to #ifdef. 2019-05-14 13:04:25 +00:00
prep-region-include.inc [TableGen] Preprocessing support 2018-11-27 18:57:43 +00:00
prep-region-processing.td [TableGen] Preprocessing support 2018-11-27 18:57:43 +00:00
RegisterBankEmitter.td
RegisterEncoder.td [CodeEmitter] Support instruction widths > 64 bits 2019-09-15 08:35:08 +00:00
RelTest.td
SchedModelError.td [TableGen] Include schedule model name in diagnostic. 2019-04-15 10:06:26 +00:00
searchabletables-intrinsic.td TableGen/SearchableTables: Support more generic enums and tables 2018-06-21 13:36:22 +00:00
self-reference-recursion.td
self-reference-typeerror.td
self-reference.td
SetTheory.td
SiblingForeach.td
size.td
Slice.td
strconcat.td
String.td
subst2.td
subst.td TableGen: Streamline the semantics of NAME 2018-06-04 14:26:05 +00:00
SuperSubclassSameName.td
TargetInstrInfo.td
TargetInstrSpec.td
template-arg-dependency.td
TemplateArgRename.td
Tree.td
TreeNames.td
trydecode-emission2.td [GISel]: Add Opcodes for CTLZ/CTTZ/CTPOP 2018-08-04 01:22:12 +00:00
trydecode-emission3.td [GISel]: Add Opcodes for CTLZ/CTTZ/CTPOP 2018-08-04 01:22:12 +00:00
trydecode-emission.td [GISel]: Add Opcodes for CTLZ/CTTZ/CTPOP 2018-08-04 01:22:12 +00:00
TwoLevelName.td
UnsetBitInit.td
unterminated-c-comment-include.inc [TableGen] Preprocessing support 2018-11-27 18:57:43 +00:00
unterminated-c-comment.td [TableGen] Preprocessing support 2018-11-27 18:57:43 +00:00
unterminated-code-block-include.inc [TableGen] Preprocessing support 2018-11-27 18:57:43 +00:00
unterminated-code-block.td [TableGen] Preprocessing support 2018-11-27 18:57:43 +00:00
UnterminatedComment.td
usevalname.td
ValidIdentifiers.td