Lines Matching full:constraints
4096 constraint letters (*note Constraints for Particular Machines:
4097 Machine Constraints.).
5217 defined elsewhere. The pass manager validates constraints but does not
5832 This pass looks for cases where matching constraints would force an
8059 same constraints apply to the third operand. This allows array
13323 RTX's, and a vector of input-operand modes and constraints. The mode
14647 * Constraints
14687 template or operand constraints. Note that the names the compiler looks
14717 pieces to be filled in later, operand constraints that restrict how the
14875 class to use for a value, as explained later (*note Constraints::).
14914 constraint (*note Simple Constraints::) for those. `match_dup' is
14983 There is no way to specify constraints in `match_operator'. The
14985 never has any constraints because it is never reloaded as a whole.
14987 patterns, those parts may have constraints of their own.
15189 When an insn pattern has multiple alternatives in its constraints,
15222 File: gccint.info, Node: Predicates, Next: Constraints, Prev: Output Statement, Up: Machine Desc
15244 to the hardware, as long as the constraints give reload the ability to
15245 fix them up (*note Constraints::). However, GCC will usually generate
15522 File: gccint.info, Node: Constraints, Next: Standard Names, Prev: Predicates, Up: Machine Desc
15524 14.8 Operand Constraints
15527 Each `match_operand' in an instruction pattern can specify constraints
15528 for the operands allowed. The constraints allow you to fine-tune
15531 Constraints can say whether an operand may be in a register, and which
15534 constant, and which possible values it may have. Constraints can also
15539 * Simple Constraints:: Basic use of constraints.
15541 * Class Preferences:: Constraints guide which hard register to put things in.
15542 * Modifiers:: More precise control over effects of constraints.
15543 * Machine Constraints:: Existing constraints for some particular machines.
15544 * Define Constraints:: How to define machine-specific constraints.
15545 * C Constraint Interface:: How to test constraints from C code.
15548 File: gccint.info, Node: Simple Constraints, Next: Multi-Alternative, Up: Constraints
15550 14.8.1 Simple Constraints
15561 description even if they have different number of constraints and
15613 less than a word wide. Constraints for these operands should use
15653 operand constraints.
15686 Matching constraints are used in these circumstances. More
15764 constraints that can handle any RTL expression that could be present for
15768 The constraints don't need to _allow_ any possible operand--when this is
15775 For example, an operand whose constraints permit everything except
15779 provided its constraints include the letter `i'. If any possible
15781 the predicate is more selective, then the constraints may also be
15785 register. So if an operand's constraints allow some kind of
15822 File: gccint.info, Node: Multi-Alternative, Next: Class Preferences, Prev: Simple Constraints, Up: Constraints
15824 14.8.2 Multiple Alternative Constraints
15833 These constraints are represented as multiple alternatives. An
15851 constraints apply to all the alternatives; their meaning is explained
15873 When an insn pattern has multiple alternatives in its constraints,
15882 File: gccint.info, Node: Class Preferences, Next: Modifiers, Prev: Multi-Alternative, Up: Constraints
15887 The operand constraints have another function: they enable the compiler
15889 allocated to. The compiler examines the constraints that apply to the
15901 File: gccint.info, Node: Modifiers, Next: Machine Constraints, Prev: Class Preferences, Up: Constraints
15916 When the compiler fixes up the operands to satisfy the constraints,
15933 constraints with multiple alternatives, sometimes one alternative
15949 fit the constraints. This is often used in patterns for addition
15980 register is acceptable, the constraints on an address-register
15993 File: gccint.info, Node: Machine Constraints, Next: Define Constraints, Prev: Modifiers, Up: Constraints
15995 14.8.5 Constraints for Particular Machines
16002 commonly used constraints are `m' and `r' (for memory and
16003 general-purpose registers respectively; *note Simple Constraints::), and
16007 Each architecture defines additional constraints. These constraints
16009 for `asm' statements; therefore, some of the constraints are not
16011 machine-dependent constraints available on some particular machines; it
16012 includes both constraints that are useful for `asm' and constraints
16015 that architecture's constraints.
16073 _AVR family--`config/avr/constraints.md'_
16368 _Intel 386--`config/i386/constraints.md'_
16868 _MIPS--`config/mips/constraints.md'_
16928 _Motorola 680x0--`config/m68k/constraints.md'_
17451 _Xtensa--`config/xtensa/constraints.md'_
17477 File: gccint.info, Node: Define Constraints, Next: C Constraint Interface, Prev: Machine Constraints, Up: Constraints
17479 14.8.6 Defining Machine-Specific Constraints
17482 Machine-specific constraints fall into two categories: register and
17483 non-register constraints. Within the latter category, constraints
17487 Machine-specific constraints can be given names of arbitrary length,
17499 Register constraints correspond directly to register classes. *Note
17507 all constraints starting with the same letter. REGCLASS can be
17512 of expressions is to map some register constraints to `NO_REGS'
17519 Non-register constraints are more like predicates: the constraint
17558 Most non-register constraints should be defined with
17560 appropriate for constraints that should be handled specially by
17564 Use this expression for constraints that match a subset of all
17583 Use this expression for constraints that match a subset of all
17588 Constraints defined with `define_address_constraint' can only be
17597 reserved for constraints that match only `const_double's, and names
17599 constraints that match only `const_int's. This may change in the
17600 future. For the time being, constraints with these names must be
17609 It is fine to use names beginning with other letters for constraints
17615 *Note Machine Constraints::, replacing the hand-maintained tables
17618 constraints causes a reload failure.
17623 Use this for constraints that should not appear in `asm' statements.
17626 File: gccint.info, Node: C Constraint Interface, Prev: Define Constraints, Up: Constraints
17628 14.8.7 Testing constraints from C
17634 machine-specific constraints. None of these interfaces work with the
17635 generic constraints described in *Note Simple Constraints::. This may
17639 constraints, besides the ones documented here. Do not use those
17668 Machine-independent constraints do not have associated constants.
17691 strings are ignored, so if there are relevant constraints, they must be
17711 File: gccint.info, Node: Standard Names, Next: Pattern Ordering, Prev: Constraints, Up: Machine Desc
17790 The constraints on a `movM' must permit moving any hard register
17805 point values in floating point registers, then the constraints of
17823 alternative in the constraints. Third, only a single register
17929 machines, by means of constraints requiring operands 1 and 0 to be
19519 deal with its own reloads, hence the `m' constraints. Also note that
19916 `reload_completed' is nonzero, is known to satisfy the constraints of
19919 is nonzero, must also satisfy the constraints of those definitions.
20196 The operand constraints used in `match_operand' patterns do not have
20198 be validated afterward, so make sure your constraints are general enough
20200 the constraints are not satisfied, the compiler will crash.
20202 It is safe to omit constraints in all the operands of the peephole; or
20203 you can write constraints which serve as a double-check on the criteria
20518 `(match_operand:M N PRED CONSTRAINTS)'
20525 The CONSTRAINTS operand is ignored and should be the null string.
21028 reservation. The rest of the constraints are mentioned in the
21732 * Old Constraints:: The old way to define machine-specific constraints.
23506 of the insn patterns whose constraints permit this class are
23681 constraints for those instructions.
23813 File: gccint.info, Node: Register Classes, Next: Old Constraints, Prev: Registers, Up: Target Macros
23844 constraints is through machine-dependent operand constraint letters.
23846 them in operand constraints.
24002 labeling is used must fit the machine's constraints of which
24181 These patterns need constraints for the reload register and scratch
24187 the constraints in the insn pattern.
24308 File: gccint.info, Node: Old Constraints, Next: Stack and Calling, Prev: Register Classes, Up: Target Macros
24310 15.9 Obsolete Macros for Defining Constraints
24313 Machine-specific constraints can be defined with these macros instead
24315 Constraints::. This mechanism is obsolete. New ports should not use
24321 class / constant / extra constraints that are longer than a single
24323 single-letter constraints only. The definition of this macro
24409 that should be treated like memory constraints by the reload pass.
24433 constraints by the reload pass.
24447 File: gccint.info, Node: Stack and Calling, Next: Varargs, Prev: Old Constraints, Up: Target Macros
27065 the constraints of the insn are met. Setting a cost of other than
27066 2 will allow reload to verify that the constraints are met. You
27067 should do this if the `movM' pattern's constraints do not allow
34669 * 0 in constraint: Simple Constraints. (line 118)
34670 * < in constraint: Simple Constraints. (line 46)
34672 * > in constraint: Simple Constraints. (line 50)
37967 * address constraints: Simple Constraints. (line 152)
37968 * address_operand <1>: Simple Constraints. (line 156)
38110 * autoincrement/decrement addressing: Simple Constraints. (line 28)
38281 * class preference constraints: Class Preferences. (line 6)
38376 * CONST_DOUBLE_OK_FOR_CONSTRAINT_P: Old Constraints. (line 69)
38377 * CONST_DOUBLE_OK_FOR_LETTER_P: Old Constraints. (line 54)
38387 * CONST_OK_FOR_CONSTRAINT_P: Old Constraints. (line 49)
38388 * CONST_OK_FOR_LETTER_P: Old Constraints. (line 40)
38404 * constants in constraints: Simple Constraints. (line 58)
38407 * constraint, matching: Simple Constraints. (line 130)
38408 * CONSTRAINT_LEN: Old Constraints. (line 12)
38413 * constraints: Constraints. (line 6)
38414 * constraints, defining: Define Constraints. (line 6)
38415 * constraints, defining, obsolete method: Old Constraints. (line 6)
38416 * constraints, machine specific: Machine Constraints.
38418 * constraints, testing: C Constraint Interface.
38571 * define_address_constraint: Define Constraints. (line 107)
38585 * define_constraint: Define Constraints. (line 48)
38596 * define_memory_constraint: Define Constraints. (line 88)
38606 * define_register_constraint: Define Constraints. (line 28)
38614 * defining constraints: Define Constraints. (line 6)
38615 * defining constraints, obsolete method: Old Constraints. (line 6)
38636 * digits in constraint: Simple Constraints. (line 118)
38677 * E in constraint: Simple Constraints. (line 77)
38754 * extensible constraints: Simple Constraints. (line 161)
38755 * EXTRA_ADDRESS_CONSTRAINT: Old Constraints. (line 123)
38756 * EXTRA_CONSTRAINT: Old Constraints. (line 74)
38757 * EXTRA_CONSTRAINT_STR: Old Constraints. (line 95)
38758 * EXTRA_MEMORY_CONSTRAINT: Old Constraints. (line 100)
38762 * F in constraint: Simple Constraints. (line 82)
38889 * g in constraint: Simple Constraints. (line 108)
38890 * G in constraint: Simple Constraints. (line 86)
38968 * H in constraint: Simple Constraints. (line 86)
39024 * I in constraint: Simple Constraints. (line 69)
39025 * i in constraint: Simple Constraints. (line 58)
39236 * load address instruction: Simple Constraints. (line 152)
39281 * m in constraint: Simple Constraints. (line 17)
39287 * machine specific constraints: Machine Constraints.
39314 * matching constraint: Simple Constraints. (line 130)
39360 * memory reference, nonoffsettable: Simple Constraints. (line 244)
39361 * memory references in constraints: Simple Constraints. (line 17)
39408 * modifiers in constraints: Modifiers. (line 6)
39440 * multiple alternative constraints: Multi-Alternative. (line 6)
39447 * n in constraint: Simple Constraints. (line 63)
39498 * nonoffsettable memory reference: Simple Constraints. (line 244)
39529 * o in constraint: Simple Constraints. (line 21)
39535 * offsettable address: Simple Constraints. (line 21)
39553 * operand constraints: Constraints. (line 6)
39573 * other register constraints: Simple Constraints. (line 161)
39586 * p in constraint: Simple Constraints. (line 152)
39714 * push address instruction: Simple Constraints. (line 152)
39736 * r in constraint: Simple Constraints. (line 54)
39800 * REG_CLASS_FROM_CONSTRAINT: Old Constraints. (line 35)
39801 * REG_CLASS_FROM_LETTER: Old Constraints. (line 27)
39842 * register class preference constraints: Class Preferences. (line 6)
39854 * registers in constraints: Simple Constraints. (line 54)
39965 Constraints. (line 90)
40045 * simple constraints: Simple Constraints. (line 6)
40503 * testing constraints: C Constraint Interface.
40720 * V in constraint: Simple Constraints. (line 41)
40817 * X in constraint: Simple Constraints. (line 112)
40993 Node: Constraints695427
40994 Node: Simple Constraints696588
40998 Node: Machine Constraints716509
40999 Node: Define Constraints748256
41048 Node: Old Constraints1054079