Lines Matching full:constraint
4101 constraint letters (*note Constraints for Particular Machines:
4180 a constraint violation in the C standard, which must become an error
10974 there is an insn alternative containing the `&' constraint (*note
11257 string, the output-operand's constraint, the index-number of the output
11265 vectors, but each contains the constraint for the respective output
15928 constraint systems. These linear constraint systems can then be solved
15932 elimination: a linear constraint system containing `n' variables is
15933 reduced to a linear constraint system with `n-1' variables. The Omega
16727 `"rm"' is an operand constraint. Its meaning is explained below.
16745 `(match_operand:M N PREDICATE CONSTRAINT)'
16777 CONSTRAINT controls reloading and the choice of the best register
16779 If the constraint would be an empty string, it can be omitted.
16781 People are often unclear on the difference between the constraint
16783 insn matches the pattern. The constraint plays no role in this
16787 `(match_scratch:M N CONSTRAINT)'
16817 constraint (*note Simple Constraints::) for those. `match_dup' is
17002 When the RTL contains two operands which are required by constraint to
17048 pattern's constraint alternatives (*note Multi-Alternative::). For
17219 (match_operand N "pmode_register_operand" CONSTRAINT)
17223 (match_operand:P N "register_operand" CONSTRAINT)
17318 allow OP. The operand number and constraint are ignored.
17443 * Multi-Alternative:: When an insn has two alternative constraint-patterns.
17449 * C Constraint Interface:: How to test constraints from C code.
17457 The simplest kind of constraint is a string full of letters, each of
17471 general memory constraint can be re-defined by a back end using
17490 operand, the constraint letter `o' is valid only when accompanied
17496 anything that would fit the `m' constraint but not the `o'
17497 constraint.
17567 `general_operand'. This is normally used in the constraint of a
17583 This is called a "matching constraint" and what it really means is
17596 constraint.
17609 `p' in the constraint must be accompanied by `address_operand' as
17621 constraint. But a failure to do so does not prevent the pattern from
17623 code so that the constraint will be satisfied. Usually this is done by
17644 which has three operands, two of which are required by a constraint to
17658 the constraint true. The results might look like this:
17678 constraint accepts whatever operands the predicate permits,
17698 address into a register. So if the constraint uses the letter
17703 used in place of the constant. So if the constraint uses the
17706 * If the constraint permits a constant and a pseudo register used in
17712 constraint.
17714 If the operand's predicate can recognize registers, but the constraint
17719 If the predicate accepts a unary operator, the constraint applies to
17724 register. Write the constraint to indicate the type of register that
17741 The overall constraint for an operand is made from the letters for this
17799 constraint letters `g' and `r' also vote: they vote in favor of a
17809 16.8.4 Constraint Modifier Characters
17812 Here are constraint modifier characters.
17828 If you specify `=' or `+' in a constraint, you put it in the first
17829 character of the constraint string.
17875 ignored as a constraint. They are significant only for choosing
17881 constraint as a constraint, and no effect on reloading.
17889 that the `d' constraint letter (for data register) is ignored when
17904 Whenever possible, you should use the general-purpose constraint letters
17906 people reading your code. Failing that, use the constraint letters
17936 Floating-point constant that would satisfy the constraint `F'
17948 Integer that satisfies constraint `I' when inverted (ones
17952 Integer that satisfies constraint `I' when negated (twos
18804 Formerly the `hi' register. This constraint is no longer
18820 Register `$3'. Do not use this constraint in new code; it is
19085 Memory address for `e' constraint registers
19209 Multiple letter constraint followed by 4 parameter letters.
19222 The constraint matches if the specified part of a constant
19492 File: gccint.info, Node: Define Constraints, Next: C Constraint Interface, Prev: Machine Constraints, Up: Constraints
19507 In order to avoid ambiguity in operand constraint strings, no
19508 constraint can have a name that begins with any other constraint's
19509 name. For example, if `x' is defined as a constraint name, `xy' may
19510 not be, and vice versa. As a consequence of this rule, no constraint
19511 may begin with one of the generic constraint letters: `E F V X g i m n
19520 constraint, as it will appear in `match_operand' expressions. If
19521 NAME is a multi-letter constraint its length shall be the same for
19531 DOCSTRING is a sentence documenting the meaning of the constraint.
19534 Non-register constraints are more like predicates: the constraint
19536 constraint matches.
19544 If it evaluates true, the constraint matches; if it evaluates
19545 false, it doesn't. Constraint expressions should indicate which
19587 of an index register. The constraint letter `Q' is defined to
19589 `define_memory_constraint', a `Q' constraint can handle any memory
19592 the way a `o' constraint can handle any memory operand.
19599 address operands: that is, `reload' can make the constraint match
19606 the generic `p' constraint.
19627 Each docstring in a constraint definition should be one or more
19637 internals manual's version of the machine-specific constraint tables.
19641 File: gccint.info, Node: C Constraint Interface, Prev: Define Constraints, Up: Constraints
19646 It is occasionally useful to test a constraint from C code rather than
19647 implicitly via the constraint string in a `match_operand'. The
19656 constraint interface that machine-independent components of the
19659 Some valid constraint names are not valid C identifiers, so there is a
19660 mangling scheme for referring to them from C. Constraint names that do
19673 Throughout this section, the variable C is either a constraint in the
19675 M is a mangled constraint name (usually as part of a larger identifier).
19678 For each machine-specific constraint, there is a corresponding
19680 constraint. Functions that take an `enum constraint_num' as an
19687 For each machine-specific, non-register constraint M, there is one
19689 constraint. These functions are only visible if `rtl.h' was
19694 Like the `satisfies_constraint_M' functions, but the constraint to
19696 constraint, this function will always return `false'.
19701 register constraint, or those registers are not available for the
19705 optimizations (*note Peephole Definitions::), operand constraint
19708 if operand 2 does _not_ satisfy the `K' constraint. (This is a
19839 class letter may be used for the constraint; subsequent constraint
19840 letters are ignored. As a special exception, an empty constraint
19842 ports of the burden of defining an `ALL_REGS' constraint letter
21374 If a constraint in a pattern allows a constant, the reload pass may
21375 replace a register with a constant permitted by the constraint in some
22681 which is the applicable alternative in the constraint of the insn), the
22698 number of alternatives in the constraint of the insn pattern.
23057 units in insn reservations. The most important constraint is: if a
23557 the `:SI' expansion has no such constraint.
25714 constraint asks for one.
25871 terribly special about the name, but the operand constraint letters `r'
25879 constraints is through machine-dependent operand constraint letters.
26073 constraint: the x86 back-end uses this feature to discourage usage
26156 constraint.
26168 Scratch operands in memory (constraint `"=m"' / `"=&m"') are
26218 reload register (whose class is CLASS) can meet the constraint
26377 For the constraint at the start of STR, which starts with the
26384 genoutput.c that check the constraint lengths for the md file, so
26386 transitioning from a byzantine single-letter-constraint scheme:
26387 when you return a negative length for a constraint you want to
26393 constraint letters for register classes. If CHAR is such a
26400 Like `REG_CLASS_FROM_LETTER', but you also get the constraint
26406 constraint letters (`I', `J', `K', ... `P') that specify
26414 Like `CONST_OK_FOR_LETTER_P', but you also get the constraint
26420 constraint letters that specify particular ranges of
26435 constraint string passed in STR, so that you can use suffixes to
26440 constraint letters that can be used to segregate specific types of
26448 the constraint letter C. If C is not defined as an extra
26449 constraint, the value returned should be 0 regardless of VALUE.
26453 Constraint letter `Q' is defined as representing a memory address
26455 specified with a `Q' constraint on the input and `r' on the
26460 Like `EXTRA_CONSTRAINT', but you also get the constraint string
26466 constraint letters, amongst those accepted by `EXTRA_CONSTRAINT',
26470 constraint at the start of STR, the first letter of which is the
26479 of an index register. The constraint letter `Q' is defined via
26482 constraint can handle any memory operand, because the reload pass
26485 constraint can handle any memory operand.
26489 constraint letters, amongst those accepted by `EXTRA_CONSTRAINT' /
26494 constraint at the start of STR, which starts with the letter C,
26500 Any constraint marked as `EXTRA_ADDRESS_CONSTRAINT' can only be
26502 analogously to the `p' constraint.
28705 constraint letter which matches the memory addresses accepted by
28708 semantics of the `'m'' constraint. This is necessary in order to
28710 `'m'' constraint.
29442 additional constraint to issue insns on the same simulated
37276 * ! in constraint: Multi-Alternative. (line 47)
37277 * # in constraint: Modifiers. (line 67)
37280 * % in constraint: Modifiers. (line 45)
37283 * & in constraint: Modifiers. (line 25)
37295 * * in constraint: Modifiers. (line 72)
37334 * + in constraint: Modifiers. (line 12)
37344 * 0 in constraint: Simple Constraints. (line 120)
37345 * < in constraint: Simple Constraints. (line 48)
37346 * = in constraint: Modifiers. (line 8)
37347 * > in constraint: Simple Constraints. (line 52)
37348 * ? in constraint: Multi-Alternative. (line 41)
41091 * constraint modifier characters: Modifiers. (line 6)
41092 * constraint, matching: Simple Constraints. (line 132)
41094 * constraint_num: C Constraint Interface.
41096 * constraint_satisfied_p: C Constraint Interface.
41103 * constraints, testing: C Constraint Interface.
41326 * digits in constraint: Simple Constraints. (line 120)
41367 * E in constraint: Simple Constraints. (line 79)
41455 * F in constraint: Simple Constraints. (line 84)
41583 * g in constraint: Simple Constraints. (line 110)
41584 * G in constraint: Simple Constraints. (line 88)
42039 * H in constraint: Simple Constraints. (line 88)
42095 * I in constraint: Simple Constraints. (line 71)
42096 * i in constraint: Simple Constraints. (line 60)
42358 * m in constraint: Simple Constraints. (line 17)
42395 * matching constraint: Simple Constraints. (line 132)
42526 * n in constraint: Simple Constraints. (line 65)
42608 * o in constraint: Simple Constraints. (line 23)
42666 * p in constraint: Simple Constraints. (line 154)
42818 * r in constraint: Simple Constraints. (line 56)
42916 * regclass_for_constraint: C Constraint Interface.
43045 * s in constraint: Simple Constraints. (line 92)
43051 * satisfies_constraint_: C Constraint Interface.
43624 * testing constraints: C Constraint Interface.
43857 * V in constraint: Simple Constraints. (line 43)
43942 * voting between constraint alternatives: Class Preferences. (line 6)
43966 * X in constraint: Simple Constraints. (line 114)
44182 Node: C Constraint Interface839114