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
10973 there is an insn alternative containing the `&' constraint (*note
11256 string, the output-operand's constraint, the index-number of the output
11264 vectors, but each contains the constraint for the respective output
15927 constraint systems. These linear constraint systems can then be solved
15931 elimination: a linear constraint system containing `n' variables is
15932 reduced to a linear constraint system with `n-1' variables. The Omega
16726 `"rm"' is an operand constraint. Its meaning is explained below.
16744 `(match_operand:M N PREDICATE CONSTRAINT)'
16776 CONSTRAINT controls reloading and the choice of the best register
16778 If the constraint would be an empty string, it can be omitted.
16780 People are often unclear on the difference between the constraint
16782 insn matches the pattern. The constraint plays no role in this
16786 `(match_scratch:M N CONSTRAINT)'
16816 constraint (*note Simple Constraints::) for those. `match_dup' is
17001 When the RTL contains two operands which are required by constraint to
17047 pattern's constraint alternatives (*note Multi-Alternative::). For
17218 (match_operand N "pmode_register_operand" CONSTRAINT)
17222 (match_operand:P N "register_operand" CONSTRAINT)
17317 allow OP. The operand number and constraint are ignored.
17442 * Multi-Alternative:: When an insn has two alternative constraint-patterns.
17448 * C Constraint Interface:: How to test constraints from C code.
17456 The simplest kind of constraint is a string full of letters, each of
17470 general memory constraint can be re-defined by a back end using
17489 operand, the constraint letter `o' is valid only when accompanied
17495 anything that would fit the `m' constraint but not the `o'
17496 constraint.
17566 `general_operand'. This is normally used in the constraint of a
17582 This is called a "matching constraint" and what it really means is
17595 constraint.
17608 `p' in the constraint must be accompanied by `address_operand' as
17620 constraint. But a failure to do so does not prevent the pattern from
17622 code so that the constraint will be satisfied. Usually this is done by
17643 which has three operands, two of which are required by a constraint to
17657 the constraint true. The results might look like this:
17677 constraint accepts whatever operands the predicate permits,
17697 address into a register. So if the constraint uses the letter
17702 used in place of the constant. So if the constraint uses the
17705 * If the constraint permits a constant and a pseudo register used in
17711 constraint.
17713 If the operand's predicate can recognize registers, but the constraint
17718 If the predicate accepts a unary operator, the constraint applies to
17723 register. Write the constraint to indicate the type of register that
17740 The overall constraint for an operand is made from the letters for this
17798 constraint letters `g' and `r' also vote: they vote in favor of a
17808 16.8.4 Constraint Modifier Characters
17811 Here are constraint modifier characters.
17827 If you specify `=' or `+' in a constraint, you put it in the first
17828 character of the constraint string.
17874 ignored as a constraint. They are significant only for choosing
17880 constraint as a constraint, and no effect on reloading.
17888 that the `d' constraint letter (for data register) is ignored when
17903 Whenever possible, you should use the general-purpose constraint letters
17905 people reading your code. Failing that, use the constraint letters
17935 Floating-point constant that would satisfy the constraint `F'
17947 Integer that satisfies constraint `I' when inverted (ones
17951 Integer that satisfies constraint `I' when negated (twos
18803 Formerly the `hi' register. This constraint is no longer
18819 Register `$3'. Do not use this constraint in new code; it is
19084 Memory address for `e' constraint registers
19208 Multiple letter constraint followed by 4 parameter letters.
19221 The constraint matches if the specified part of a constant
19491 File: gccint.info, Node: Define Constraints, Next: C Constraint Interface, Prev: Machine Constraints, Up: Constraints
19506 In order to avoid ambiguity in operand constraint strings, no
19507 constraint can have a name that begins with any other constraint's
19508 name. For example, if `x' is defined as a constraint name, `xy' may
19509 not be, and vice versa. As a consequence of this rule, no constraint
19510 may begin with one of the generic constraint letters: `E F V X g i m n
19519 constraint, as it will appear in `match_operand' expressions. If
19520 NAME is a multi-letter constraint its length shall be the same for
19530 DOCSTRING is a sentence documenting the meaning of the constraint.
19533 Non-register constraints are more like predicates: the constraint
19535 constraint matches.
19543 If it evaluates true, the constraint matches; if it evaluates
19544 false, it doesn't. Constraint expressions should indicate which
19586 of an index register. The constraint letter `Q' is defined to
19588 `define_memory_constraint', a `Q' constraint can handle any memory
19591 the way a `o' constraint can handle any memory operand.
19598 address operands: that is, `reload' can make the constraint match
19605 the generic `p' constraint.
19626 Each docstring in a constraint definition should be one or more
19636 internals manual's version of the machine-specific constraint tables.
19640 File: gccint.info, Node: C Constraint Interface, Prev: Define Constraints, Up: Constraints
19645 It is occasionally useful to test a constraint from C code rather than
19646 implicitly via the constraint string in a `match_operand'. The
19655 constraint interface that machine-independent components of the
19658 Some valid constraint names are not valid C identifiers, so there is a
19659 mangling scheme for referring to them from C. Constraint names that do
19672 Throughout this section, the variable C is either a constraint in the
19674 M is a mangled constraint name (usually as part of a larger identifier).
19677 For each machine-specific constraint, there is a corresponding
19679 constraint. Functions that take an `enum constraint_num' as an
19686 For each machine-specific, non-register constraint M, there is one
19688 constraint. These functions are only visible if `rtl.h' was
19693 Like the `satisfies_constraint_M' functions, but the constraint to
19695 constraint, this function will always return `false'.
19700 register constraint, or those registers are not available for the
19704 optimizations (*note Peephole Definitions::), operand constraint
19707 if operand 2 does _not_ satisfy the `K' constraint. (This is a
19838 class letter may be used for the constraint; subsequent constraint
19839 letters are ignored. As a special exception, an empty constraint
19841 ports of the burden of defining an `ALL_REGS' constraint letter
21373 If a constraint in a pattern allows a constant, the reload pass may
21374 replace a register with a constant permitted by the constraint in some
22680 which is the applicable alternative in the constraint of the insn), the
22697 number of alternatives in the constraint of the insn pattern.
23056 units in insn reservations. The most important constraint is: if a
23556 the `:SI' expansion has no such constraint.
25713 constraint asks for one.
25870 terribly special about the name, but the operand constraint letters `r'
25878 constraints is through machine-dependent operand constraint letters.
26072 constraint: the x86 back-end uses this feature to discourage usage
26155 constraint.
26167 Scratch operands in memory (constraint `"=m"' / `"=&m"') are
26217 reload register (whose class is CLASS) can meet the constraint
26376 For the constraint at the start of STR, which starts with the
26383 genoutput.c that check the constraint lengths for the md file, so
26385 transitioning from a byzantine single-letter-constraint scheme:
26386 when you return a negative length for a constraint you want to
26392 constraint letters for register classes. If CHAR is such a
26399 Like `REG_CLASS_FROM_LETTER', but you also get the constraint
26405 constraint letters (`I', `J', `K', ... `P') that specify
26413 Like `CONST_OK_FOR_LETTER_P', but you also get the constraint
26419 constraint letters that specify particular ranges of
26434 constraint string passed in STR, so that you can use suffixes to
26439 constraint letters that can be used to segregate specific types of
26447 the constraint letter C. If C is not defined as an extra
26448 constraint, the value returned should be 0 regardless of VALUE.
26452 Constraint letter `Q' is defined as representing a memory address
26454 specified with a `Q' constraint on the input and `r' on the
26459 Like `EXTRA_CONSTRAINT', but you also get the constraint string
26465 constraint letters, amongst those accepted by `EXTRA_CONSTRAINT',
26469 constraint at the start of STR, the first letter of which is the
26478 of an index register. The constraint letter `Q' is defined via
26481 constraint can handle any memory operand, because the reload pass
26484 constraint can handle any memory operand.
26488 constraint letters, amongst those accepted by `EXTRA_CONSTRAINT' /
26493 constraint at the start of STR, which starts with the letter C,
26499 Any constraint marked as `EXTRA_ADDRESS_CONSTRAINT' can only be
26501 analogously to the `p' constraint.
28703 constraint letter which matches the memory addresses accepted by
28706 semantics of the `'m'' constraint. This is necessary in order to
28708 `'m'' constraint.
29440 additional constraint to issue insns on the same simulated
37274 * ! in constraint: Multi-Alternative. (line 47)
37275 * # in constraint: Modifiers. (line 67)
37278 * % in constraint: Modifiers. (line 45)
37281 * & in constraint: Modifiers. (line 25)
37289 * * in constraint: Modifiers. (line 72)
37328 * + in constraint: Modifiers. (line 12)
37338 * 0 in constraint: Simple Constraints. (line 120)
37339 * < in constraint: Simple Constraints. (line 48)
37340 * = in constraint: Modifiers. (line 8)
37341 * > in constraint: Simple Constraints. (line 52)
37342 * ? in constraint: Multi-Alternative. (line 41)
41083 * constraint modifier characters: Modifiers. (line 6)
41084 * constraint, matching: Simple Constraints. (line 132)
41086 * constraint_num: C Constraint Interface.
41088 * constraint_satisfied_p: C Constraint Interface.
41095 * constraints, testing: C Constraint Interface.
41317 * digits in constraint: Simple Constraints. (line 120)
41358 * E in constraint: Simple Constraints. (line 79)
41446 * F in constraint: Simple Constraints. (line 84)
41574 * g in constraint: Simple Constraints. (line 110)
41575 * G in constraint: Simple Constraints. (line 88)
42030 * H in constraint: Simple Constraints. (line 88)
42086 * I in constraint: Simple Constraints. (line 71)
42087 * i in constraint: Simple Constraints. (line 60)
42349 * m in constraint: Simple Constraints. (line 17)
42386 * matching constraint: Simple Constraints. (line 132)
42517 * n in constraint: Simple Constraints. (line 65)
42599 * o in constraint: Simple Constraints. (line 23)
42657 * p in constraint: Simple Constraints. (line 154)
42809 * r in constraint: Simple Constraints. (line 56)
42907 * regclass_for_constraint: C Constraint Interface.
43036 * s in constraint: Simple Constraints. (line 92)
43042 * satisfies_constraint_: C Constraint Interface.
43615 * testing constraints: C Constraint Interface.
43847 * V in constraint: Simple Constraints. (line 43)
43932 * voting between constraint alternatives: Class Preferences. (line 6)
43956 * X in constraint: Simple Constraints. (line 114)
44172 Node: C Constraint Interface839113