Home | History | Annotate | Download | only in info

Lines Matching full:constraints

4101      constraint letters (*note Constraints for Particular Machines:
4102 Machine Constraints.).
5303 defined elsewhere. The pass manager validates constraints but does not
5922 This pass looks for cases where matching constraints would force an
8170 same constraints apply to the third operand. This allows array
11267 RTX's, and a vector of input-operand modes and constraints. The mode
16558 * Constraints:: Fine-tuning operand selection.
16598 template or operand constraints. Note that the names the compiler looks
16628 pieces to be filled in later, operand constraints that restrict how the
16786 class to use for a value, as explained later (*note Constraints::).
16825 constraint (*note Simple Constraints::) for those. `match_dup' is
16894 There is no way to specify constraints in `match_operator'. The
16896 never has any constraints because it is never reloaded as a whole.
16898 patterns, those parts may have constraints of their own.
17100 When an insn pattern has multiple alternatives in its constraints,
17133 File: gccint.info, Node: Predicates, Next: Constraints, Prev: Output Statement, Up: Machine Desc
17155 to the hardware, as long as the constraints give reload the ability to
17156 fix them up (*note Constraints::). However, GCC will usually generate
17433 File: gccint.info, Node: Constraints, Next: Standard Names, Prev: Predicates, Up: Machine Desc
17435 16.8 Operand Constraints
17438 Each `match_operand' in an instruction pattern can specify constraints
17439 for the operands allowed. The constraints allow you to fine-tune
17442 Constraints can say whether an operand may be in a register, and which
17445 constant, and which possible values it may have. Constraints can also
17450 * Simple Constraints:: Basic use of constraints.
17452 * Class Preferences:: Constraints guide which hard register to put things in.
17453 * Modifiers:: More precise control over effects of constraints.
17455 * Machine Constraints:: Existing constraints for some particular machines.
17456 * Define Constraints:: How to define machine-specific constraints.
17457 * C Constraint Interface:: How to test constraints from C code.
17460 File: gccint.info, Node: Simple Constraints, Next: Multi-Alternative, Up: Constraints
17462 16.8.1 Simple Constraints
17473 description even if they have different number of constraints and
17527 less than a word wide. Constraints for these operands should use
17567 operand constraints.
17600 Matching constraints are used in these circumstances. More
17678 constraints that can handle any RTL expression that could be present for
17682 constraints don't need to _allow_ any possible operand--when this is
17689 For example, an operand whose constraints permit everything except
17693 provided its constraints include the letter `i'. If any possible
17695 the predicate is more selective, then the constraints may also be
17699 register. So if an operand's constraints allow some kind of
17736 File: gccint.info, Node: Multi-Alternative, Next: Class Preferences, Prev: Simple Constraints, Up: Constraints
17738 16.8.2 Multiple Alternative Constraints
17747 These constraints are represented as multiple alternatives. An
17765 constraints apply to all the alternatives; their meaning is explained
17787 When an insn pattern has multiple alternatives in its constraints,
17796 File: gccint.info, Node: Class Preferences, Next: Modifiers, Prev: Multi-Alternative, Up: Constraints
17801 The operand constraints have another function: they enable the compiler
17803 allocated to. The compiler examines the constraints that apply to the
17815 File: gccint.info, Node: Modifiers, Next: Disable Insn Alternatives, Prev: Class Preferences, Up: Constraints
17830 When the compiler fixes up the operands to satisfy the constraints,
17847 constraints with multiple alternatives, sometimes one alternative
17863 fit the constraints. This is often used in patterns for addition
17894 register is acceptable, the constraints on an address-register
17907 File: gccint.info, Node: Machine Constraints, Next: Define Constraints, Prev: Disable Insn Alternatives, Up: Constraints
17909 16.8.5 Constraints for Particular Machines
17916 commonly used constraints are `m' and `r' (for memory and
17917 general-purpose registers respectively; *note Simple Constraints::), and
17921 Each architecture defines additional constraints. These constraints
17923 for `asm' statements; therefore, some of the constraints are not
17925 machine-dependent constraints available on some particular machines; it
17926 includes both constraints that are useful for `asm' and constraints
17929 that architecture's constraints.
17987 _AVR family--`config/avr/constraints.md'_
18293 _Intel 386--`config/i386/constraints.md'_
18555 _Blackfin family--`config/bfin/constraints.md'_
18802 _MIPS--`config/mips/constraints.md'_
18869 _Motorola 680x0--`config/m68k/constraints.md'_
19395 _Xtensa--`config/xtensa/constraints.md'_
19421 File: gccint.info, Node: Disable Insn Alternatives, Next: Machine Constraints, Prev: Modifiers, Up: Constraints
19432 compiler treats the constraints for the disabled alternative as
19500 File: gccint.info, Node: Define Constraints, Next: C Constraint Interface, Prev: Machine Constraints, Up: Constraints
19502 16.8.7 Defining Machine-Specific Constraints
19505 Machine-specific constraints fall into two categories: register and
19506 non-register constraints. Within the latter category, constraints
19510 Machine-specific constraints can be given names of arbitrary length,
19522 Register constraints correspond directly to register classes. *Note
19530 all constraints starting with the same letter. REGCLASS can be
19535 of expressions is to map some register constraints to `NO_REGS'
19542 Non-register constraints are more like predicates: the constraint
19581 Most non-register constraints should be defined with
19583 appropriate for constraints that should be handled specially by
19587 Use this expression for constraints that match a subset of all
19606 Use this expression for constraints that match a subset of all
19611 Constraints defined with `define_address_constraint' can only be
19620 reserved for constraints that match only `const_double's, and names
19622 constraints that match only `const_int's. This may change in the
19623 future. For the time being, constraints with these names must be
19632 It is fine to use names beginning with other letters for constraints
19638 *Note Machine Constraints::, replacing the hand-maintained tables
19641 constraints causes a reload failure.
19646 Use this for constraints that should not appear in `asm' statements.
19649 File: gccint.info, Node: C Constraint Interface, Prev: Define Constraints, Up: Constraints
19651 16.8.8 Testing constraints from C
19657 machine-specific constraints. None of these interfaces work with the
19658 generic constraints described in *Note Simple Constraints::. This may
19662 constraints, besides the ones documented here. Do not use those
19691 Machine-independent constraints do not have associated constants.
19714 strings are ignored, so if there are relevant constraints, they must be
19734 File: gccint.info, Node: Standard Names, Next: Pattern Ordering, Prev: Constraints, Up: Machine Desc
19813 The constraints on a `movM' must permit moving any hard register
19828 point values in floating point registers, then the constraints of
19846 alternative in the constraints. Third, only a single register
19952 machines, by means of constraints requiring operands 1 and 0 to be
21548 deal with its own reloads, hence the `m' constraints. Also note that
21945 `reload_completed' is nonzero, is known to satisfy the constraints of
21948 is nonzero, must also satisfy the constraints of those definitions.
22225 The operand constraints used in `match_operand' patterns do not have
22227 be validated afterward, so make sure your constraints are general enough
22229 the constraints are not satisfied, the compiler will crash.
22231 It is safe to omit constraints in all the operands of the peephole; or
22232 you can write constraints which serve as a double-check on the criteria
22561 `(match_operand:M N PRED CONSTRAINTS)'
22568 The CONSTRAINTS operand is ignored and should be the null string.
23071 reservation. The rest of the constraints are mentioned in the
23775 * Old Constraints:: The old way to define machine-specific constraints.
25523 of the insn patterns whose constraints permit this class are
25709 constraints for those instructions.
25850 File: gccint.info, Node: Register Classes, Next: Old Constraints, Prev: Registers, Up: Target Macros
25881 constraints is through machine-dependent operand constraint letters.
25883 them in operand constraints.
26039 labeling is used must fit the machine's constraints of which
26218 These patterns need constraints for the reload register and scratch
26224 the constraints in the insn pattern.
26368 File: gccint.info, Node: Old Constraints, Next: Stack and Calling, Prev: Register Classes, Up: Target Macros
26370 17.9 Obsolete Macros for Defining Constraints
26373 Machine-specific constraints can be defined with these macros instead
26375 Constraints::. This mechanism is obsolete. New ports should not use
26381 class / constant / extra constraints that are longer than a single
26383 single-letter constraints only. The definition of this macro
26469 that should be treated like memory constraints by the reload pass.
26493 constraints by the reload pass.
26507 File: gccint.info, Node: Stack and Calling, Next: Varargs, Prev: Old Constraints, Up: Target Macros
29180 the constraints of the insn are met. Setting a cost of other than
29181 2 will allow reload to verify that the constraints are met. You
29182 should do this if the `movM' pattern's constraints do not allow
37315 * 0 in constraint: Simple Constraints. (line 120)
37316 * < in constraint: Simple Constraints. (line 48)
37318 * > in constraint: Simple Constraints. (line 52)
40615 * address constraints: Simple Constraints. (line 154)
40616 * address_operand <1>: Simple Constraints. (line 158)
40758 * autoincrement/decrement addressing: Simple Constraints. (line 30)
40937 * class preference constraints: Class Preferences. (line 6)
41030 * CONST_DOUBLE_OK_FOR_CONSTRAINT_P: Old Constraints. (line 69)
41031 * CONST_DOUBLE_OK_FOR_LETTER_P: Old Constraints. (line 54)
41041 * CONST_OK_FOR_CONSTRAINT_P: Old Constraints. (line 49)
41042 * CONST_OK_FOR_LETTER_P: Old Constraints. (line 40)
41057 * constants in constraints: Simple Constraints. (line 60)
41060 * constraint, matching: Simple Constraints. (line 132)
41061 * CONSTRAINT_LEN: Old Constraints. (line 12)
41066 * constraints: Constraints. (line 6)
41067 * constraints, defining: Define Constraints. (line 6)
41068 * constraints, defining, obsolete method: Old Constraints. (line 6)
41069 * constraints, machine specific: Machine Constraints.
41071 * constraints, testing: C Constraint Interface.
41228 * define_address_constraint: Define Constraints. (line 107)
41242 * define_constraint: Define Constraints. (line 48)
41253 * define_memory_constraint: Define Constraints. (line 88)
41263 * define_register_constraint: Define Constraints. (line 28)
41271 * defining constraints: Define Constraints. (line 6)
41272 * defining constraints, obsolete method: Old Constraints. (line 6)
41293 * digits in constraint: Simple Constraints. (line 120)
41334 * E in constraint: Simple Constraints. (line 79)
41414 * extensible constraints: Simple Constraints. (line 163)
41415 * EXTRA_ADDRESS_CONSTRAINT: Old Constraints. (line 123)
41416 * EXTRA_CONSTRAINT: Old Constraints. (line 74)
41417 * EXTRA_CONSTRAINT_STR: Old Constraints. (line 95)
41418 * EXTRA_MEMORY_CONSTRAINT: Old Constraints. (line 100)
41422 * F in constraint: Simple Constraints. (line 84)
41550 * g in constraint: Simple Constraints. (line 110)
41551 * G in constraint: Simple Constraints. (line 88)
42006 * H in constraint: Simple Constraints. (line 88)
42062 * I in constraint: Simple Constraints. (line 71)
42063 * i in constraint: Simple Constraints. (line 60)
42280 * load address instruction: Simple Constraints. (line 154)
42325 * m in constraint: Simple Constraints. (line 17)
42331 * machine specific constraints: Machine Constraints.
42362 * matching constraint: Simple Constraints. (line 132)
42409 * memory reference, nonoffsettable: Simple Constraints. (line 246)
42410 * memory references in constraints: Simple Constraints. (line 17)
42454 * modifiers in constraints: Modifiers. (line 6)
42486 * multiple alternative constraints: Multi-Alternative. (line 6)
42493 * n in constraint: Simple Constraints. (line 65)
42544 * nonoffsettable memory reference: Simple Constraints. (line 246)
42575 * o in constraint: Simple Constraints. (line 23)
42581 * offsettable address: Simple Constraints. (line 23)
42599 * operand constraints: Constraints. (line 6)
42620 * other register constraints: Simple Constraints. (line 163)
42634 * p in constraint: Simple Constraints. (line 154)
42764 * push address instruction: Simple Constraints. (line 154)
42786 * r in constraint: Simple Constraints. (line 56)
42850 * REG_CLASS_FROM_CONSTRAINT: Old Constraints. (line 35)
42851 * REG_CLASS_FROM_LETTER: Old Constraints. (line 27)
42888 * register class preference constraints: Class Preferences. (line 6)
42900 * registers in constraints: Simple Constraints. (line 56)
43013 * s in constraint: Simple Constraints. (line 92)
43093 * simple constraints: Simple Constraints. (line 6)
43587 * testing constraints: C Constraint Interface.
43819 * V in constraint: Simple Constraints. (line 43)
43928 * X in constraint: Simple Constraints. (line 114)
44136 Node: Constraints775620
44137 Node: Simple Constraints776868
44141 Node: Machine Constraints796939
44143 Node: Define Constraints832555
44192 Node: Old Constraints1140344