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
10981 there is an insn alternative containing the `&' constraint (*note
11264 string, the output-operand's constraint, the index-number of the output
11272 vectors, but each contains the constraint for the respective output
15935 constraint systems. These linear constraint systems can then be solved
15939 elimination: a linear constraint system containing `n' variables is
15940 reduced to a linear constraint system with `n-1' variables. The Omega
16734 `"rm"' is an operand constraint. Its meaning is explained below.
16752 `(match_operand:M N PREDICATE CONSTRAINT)'
16784 CONSTRAINT controls reloading and the choice of the best register
16786 If the constraint would be an empty string, it can be omitted.
16788 People are often unclear on the difference between the constraint
16790 insn matches the pattern. The constraint plays no role in this
16794 `(match_scratch:M N CONSTRAINT)'
16824 constraint (*note Simple Constraints::) for those. `match_dup' is
17009 When the RTL contains two operands which are required by constraint to
17055 pattern's constraint alternatives (*note Multi-Alternative::). For
17226 (match_operand N "pmode_register_operand" CONSTRAINT)
17230 (match_operand:P N "register_operand" CONSTRAINT)
17325 allow OP. The operand number and constraint are ignored.
17450 * Multi-Alternative:: When an insn has two alternative constraint-patterns.
17456 * C Constraint Interface:: How to test constraints from C code.
17464 The simplest kind of constraint is a string full of letters, each of
17478 general memory constraint can be re-defined by a back end using
17497 operand, the constraint letter `o' is valid only when accompanied
17503 anything that would fit the `m' constraint but not the `o'
17504 constraint.
17574 `general_operand'. This is normally used in the constraint of a
17590 This is called a "matching constraint" and what it really means is
17603 constraint.
17616 `p' in the constraint must be accompanied by `address_operand' as
17628 constraint. But a failure to do so does not prevent the pattern from
17630 code so that the constraint will be satisfied. Usually this is done by
17651 which has three operands, two of which are required by a constraint to
17665 the constraint true. The results might look like this:
17685 * If the constraint accepts whatever operands the predicate permits,
17705 address into a register. So if the constraint uses the letter
17710 used in place of the constant. So if the constraint uses the
17713 * If the constraint permits a constant and a pseudo register used in
17719 constraint.
17721 If the operand's predicate can recognize registers, but the constraint
17726 If the predicate accepts a unary operator, the constraint applies to
17731 register. Write the constraint to indicate the type of register that
17748 The overall constraint for an operand is made from the letters for this
17806 constraint letters `g' and `r' also vote: they vote in favor of a
17816 16.8.4 Constraint Modifier Characters
17819 Here are constraint modifier characters.
17835 If you specify `=' or `+' in a constraint, you put it in the first
17836 character of the constraint string.
17882 ignored as a constraint. They are significant only for choosing
17888 constraint as a constraint, and no effect on reloading.
17896 that the `d' constraint letter (for data register) is ignored when
17911 Whenever possible, you should use the general-purpose constraint letters
17913 people reading your code. Failing that, use the constraint letters
17943 Floating-point constant that would satisfy the constraint `F'
17955 Integer that satisfies constraint `I' when inverted (ones
17959 Integer that satisfies constraint `I' when negated (twos
18811 Formerly the `hi' register. This constraint is no longer
18827 Register `$3'. Do not use this constraint in new code; it is
19092 Memory address for `e' constraint registers
19216 Multiple letter constraint followed by 4 parameter letters.
19229 The constraint matches if the specified part of a constant
19499 File: gccint.info, Node: Define Constraints, Next: C Constraint Interface, Prev: Machine Constraints, Up: Constraints
19514 In order to avoid ambiguity in operand constraint strings, no
19515 constraint can have a name that begins with any other constraint's
19516 name. For example, if `x' is defined as a constraint name, `xy' may
19517 not be, and vice versa. As a consequence of this rule, no constraint
19518 may begin with one of the generic constraint letters: `E F V X g i m n
19527 constraint, as it will appear in `match_operand' expressions. If
19528 NAME is a multi-letter constraint its length shall be the same for
19538 DOCSTRING is a sentence documenting the meaning of the constraint.
19541 Non-register constraints are more like predicates: the constraint
19543 constraint matches.
19551 If it evaluates true, the constraint matches; if it evaluates
19552 false, it doesn't. Constraint expressions should indicate which
19594 of an index register. The constraint letter `Q' is defined to
19596 `define_memory_constraint', a `Q' constraint can handle any memory
19599 the way a `o' constraint can handle any memory operand.
19606 address operands: that is, `reload' can make the constraint match
19613 the generic `p' constraint.
19634 Each docstring in a constraint definition should be one or more
19644 internals manual's version of the machine-specific constraint tables.
19648 File: gccint.info, Node: C Constraint Interface, Prev: Define Constraints, Up: Constraints
19653 It is occasionally useful to test a constraint from C code rather than
19654 implicitly via the constraint string in a `match_operand'. The
19663 constraint interface that machine-independent components of the
19666 Some valid constraint names are not valid C identifiers, so there is a
19667 mangling scheme for referring to them from C. Constraint names that do
19680 Throughout this section, the variable C is either a constraint in the
19682 M is a mangled constraint name (usually as part of a larger identifier).
19685 For each machine-specific constraint, there is a corresponding
19687 constraint. Functions that take an `enum constraint_num' as an
19694 For each machine-specific, non-register constraint M, there is one
19696 constraint. These functions are only visible if `rtl.h' was
19701 Like the `satisfies_constraint_M' functions, but the constraint to
19703 constraint, this function will always return `false'.
19708 register constraint, or those registers are not available for the
19712 optimizations (*note Peephole Definitions::), operand constraint
19715 if operand 2 does _not_ satisfy the `K' constraint. (This is a
19846 class letter may be used for the constraint; subsequent constraint
19847 letters are ignored. As a special exception, an empty constraint
19849 ports of the burden of defining an `ALL_REGS' constraint letter
21383 If a constraint in a pattern allows a constant, the reload pass may
21384 replace a register with a constant permitted by the constraint in some
22690 which is the applicable alternative in the constraint of the insn), the
22707 number of alternatives in the constraint of the insn pattern.
23066 units in insn reservations. The most important constraint is: if a
23566 the `:SI' expansion has no such constraint.
25715 constraint asks for one.
25872 terribly special about the name, but the operand constraint letters `r'
25880 constraints is through machine-dependent operand constraint letters.
26074 constraint: the x86 back-end uses this feature to discourage usage
26157 constraint.
26169 Scratch operands in memory (constraint `"=m"' / `"=&m"') are
26219 reload register (whose class is CLASS) can meet the constraint
26378 For the constraint at the start of STR, which starts with the
26385 genoutput.c that check the constraint lengths for the md file, so
26387 transitioning from a byzantine single-letter-constraint scheme:
26388 when you return a negative length for a constraint you want to
26394 constraint letters for register classes. If CHAR is such a
26401 Like `REG_CLASS_FROM_LETTER', but you also get the constraint
26407 constraint letters (`I', `J', `K', ... `P') that specify
26415 Like `CONST_OK_FOR_LETTER_P', but you also get the constraint
26421 constraint letters that specify particular ranges of
26436 constraint string passed in STR, so that you can use suffixes to
26441 constraint letters that can be used to segregate specific types of
26449 the constraint letter C. If C is not defined as an extra
26450 constraint, the value returned should be 0 regardless of VALUE.
26454 Constraint letter `Q' is defined as representing a memory address
26456 specified with a `Q' constraint on the input and `r' on the
26461 Like `EXTRA_CONSTRAINT', but you also get the constraint string
26467 constraint letters, amongst those accepted by `EXTRA_CONSTRAINT',
26471 constraint at the start of STR, the first letter of which is the
26480 of an index register. The constraint letter `Q' is defined via
26483 constraint can handle any memory operand, because the reload pass
26486 constraint can handle any memory operand.
26490 constraint letters, amongst those accepted by `EXTRA_CONSTRAINT' /
26495 constraint at the start of STR, which starts with the letter C,
26501 Any constraint marked as `EXTRA_ADDRESS_CONSTRAINT' can only be
26503 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
37249 * ! in constraint: Multi-Alternative. (line 47)
37250 * # in constraint: Modifiers. (line 67)
37253 * % in constraint: Modifiers. (line 45)
37256 * & in constraint: Modifiers. (line 25)
37264 * * in constraint: Modifiers. (line 72)
37303 * + in constraint: Modifiers. (line 12)
37313 * 0 in constraint: Simple Constraints. (line 120)
37314 * < in constraint: Simple Constraints. (line 48)
37315 * = in constraint: Modifiers. (line 8)
37316 * > in constraint: Simple Constraints. (line 52)
37317 * ? in constraint: Multi-Alternative. (line 41)
41057 * constraint modifier characters: Modifiers. (line 6)
41058 * constraint, matching: Simple Constraints. (line 132)
41060 * constraint_num: C Constraint Interface.
41062 * constraint_satisfied_p: C Constraint Interface.
41069 * constraints, testing: C Constraint Interface.
41291 * digits in constraint: Simple Constraints. (line 120)
41332 * E in constraint: Simple Constraints. (line 79)
41420 * F in constraint: Simple Constraints. (line 84)
41548 * g in constraint: Simple Constraints. (line 110)
41549 * G in constraint: Simple Constraints. (line 88)
42004 * H in constraint: Simple Constraints. (line 88)
42060 * I in constraint: Simple Constraints. (line 71)
42061 * i in constraint: Simple Constraints. (line 60)
42323 * m in constraint: Simple Constraints. (line 17)
42360 * matching constraint: Simple Constraints. (line 132)
42491 * n in constraint: Simple Constraints. (line 65)
42573 * o in constraint: Simple Constraints. (line 23)
42632 * p in constraint: Simple Constraints. (line 154)
42784 * r in constraint: Simple Constraints. (line 56)
42882 * regclass_for_constraint: C Constraint Interface.
43011 * s in constraint: Simple Constraints. (line 92)
43017 * satisfies_constraint_: C Constraint Interface.
43585 * testing constraints: C Constraint Interface.
43817 * V in constraint: Simple Constraints. (line 43)
43902 * voting between constraint alternatives: Class Preferences. (line 6)
43926 * X in constraint: Simple Constraints. (line 114)
44142 Node: C Constraint Interface839345