Lines Matching full:constraints
2099 constraint letters (*note Constraints for Particular Machines:
2100 Machine Constraints.).
3201 defined elsewhere. The pass manager validates constraints but does not
3800 This pass looks for cases where matching constraints would force an
5946 same constraints apply to the third operand. This allows array
10878 RTX's, and a vector of input-operand modes and constraints. The mode
12197 * Constraints:: Fine-tuning operand selection.
12237 template or operand constraints. Note that the names the compiler looks
12267 pieces to be filled in later, operand constraints that restrict how the
12425 class to use for a value, as explained later (*note Constraints::).
12464 constraint (*note Simple Constraints::) for those. `match_dup' is
12533 There is no way to specify constraints in `match_operator'. The
12535 never has any constraints because it is never reloaded as a whole.
12537 patterns, those parts may have constraints of their own.
12739 When an insn pattern has multiple alternatives in its constraints,
12772 File: gccint.info, Node: Predicates, Next: Constraints, Prev: Output Statement, Up: Machine Desc
12794 to the hardware, as long as the constraints give reload the ability to
12795 fix them up (*note Constraints::). However, GCC will usually generate
13072 File: gccint.info, Node: Constraints, Next: Standard Names, Prev: Predicates, Up: Machine Desc
13074 14.8 Operand Constraints
13077 Each `match_operand' in an instruction pattern can specify constraints
13078 for the operands allowed. The constraints allow you to fine-tune
13081 Constraints can say whether an operand may be in a register, and which
13084 constant, and which possible values it may have. Constraints can also
13089 * Simple Constraints:: Basic use of constraints.
13091 * Class Preferences:: Constraints guide which hard register to put things in.
13092 * Modifiers:: More precise control over effects of constraints.
13093 * Machine Constraints:: Existing constraints for some particular machines.
13094 * Define Constraints:: How to define machine-specific constraints.
13095 * C Constraint Interface:: How to test constraints from C code.
13098 File: gccint.info, Node: Simple Constraints, Next: Multi-Alternative, Up: Constraints
13100 14.8.1 Simple Constraints
13111 description even if they have different number of constraints and
13163 less than a word wide. Constraints for these operands should use
13203 operand constraints.
13236 Matching constraints are used in these circumstances. More
13314 constraints that can handle any RTL expression that could be present for
13318 The constraints don't need to _allow_ any possible operand--when this is
13325 For example, an operand whose constraints permit everything except
13329 provided its constraints include the letter `i'. If any possible
13331 the predicate is more selective, then the constraints may also be
13335 register. So if an operand's constraints allow some kind of
13372 File: gccint.info, Node: Multi-Alternative, Next: Class Preferences, Prev: Simple Constraints, Up: Constraints
13374 14.8.2 Multiple Alternative Constraints
13383 These constraints are represented as multiple alternatives. An
13401 constraints apply to all the alternatives; their meaning is explained
13423 When an insn pattern has multiple alternatives in its constraints,
13432 File: gccint.info, Node: Class Preferences, Next: Modifiers, Prev: Multi-Alternative, Up: Constraints
13437 The operand constraints have another function: they enable the compiler
13439 allocated to. The compiler examines the constraints that apply to the
13451 File: gccint.info, Node: Modifiers, Next: Machine Constraints, Prev: Class Preferences, Up: Constraints
13466 When the compiler fixes up the operands to satisfy the constraints,
13483 constraints with multiple alternatives, sometimes one alternative
13499 fit the constraints. This is often used in patterns for addition
13530 register is acceptable, the constraints on an address-register
13543 File: gccint.info, Node: Machine Constraints, Next: Define Constraints, Prev: Modifiers, Up: Constraints
13545 14.8.5 Constraints for Particular Machines
13552 commonly used constraints are `m' and `r' (for memory and
13553 general-purpose registers respectively; *note Simple Constraints::), and
13557 Each architecture defines additional constraints. These constraints
13559 for `asm' statements; therefore, some of the constraints are not
13561 machine-dependent constraints available on some particular machines; it
13562 includes both constraints that are useful for `asm' and constraints
13565 that architecture's constraints.
13623 _AVR family--`config/avr/constraints.md'_
13820 _Intel 386--`config/i386/constraints.md'_
14308 _MIPS--`config/mips/constraints.md'_
14859 File: gccint.info, Node: Define Constraints, Next: C Constraint Interface, Prev: Machine Constraints, Up: Constraints
14861 14.8.6 Defining Machine-Specific Constraints
14864 Machine-specific constraints fall into two categories: register and
14865 non-register constraints. Within the latter category, constraints
14869 Machine-specific constraints can be given names of arbitrary length,
14881 Register constraints correspond directly to register classes. *Note
14893 constraints to `NO_REGS' when the register class is not available
14899 Non-register constraints are more like predicates: the constraint
14938 Most non-register constraints should be defined with
14940 appropriate for constraints that should be handled specially by
14944 Use this expression for constraints that match a subset of all
14963 Use this expression for constraints that match a subset of all
14968 Constraints defined with `define_address_constraint' can only be
14977 reserved for constraints that match only `const_double's, and names
14979 constraints that match only `const_int's. This may change in the
14980 future. For the time being, constraints with these names must be
14989 It is fine to use names beginning with other letters for constraints
14995 *Note Machine Constraints::, replacing the hand-maintained tables
14998 constraints
15003 Use this for constraints that should not appear in `asm' statements.
15006 File: gccint.info, Node: C Constraint Interface, Prev: Define Constraints, Up: Constraints
15008 14.8.7 Testing constraints from C
15014 machine-specific constraints. None of these interfaces work with the
15015 generic constraints described in *Note Simple Constraints::. This may
15019 constraints, besides the ones documented here. Do not use those
15048 Machine-independent constraints do not have associated constants.
15071 strings are ignored, so if there are relevant constraints, they must be
15091 File: gccint.info, Node: Standard Names, Next: Pattern Ordering, Prev: Constraints, Up: Machine Desc
15170 The constraints on a `movM' must permit moving any hard register
15185 point values in floating point registers, then the constraints of
15203 alternative in the constraints. Third, only a single register
15281 machines, by means of constraints requiring operands 1 and 0 to be
16673 deal with its own reloads, hence the `m' constraints. Also note that
17067 `reload_completed' is nonzero, is known to satisfy the constraints of
17070 is nonzero, must also satisfy the constraints of those definitions.
17347 The operand constraints used in `match_operand' patterns do not have
17349 be validated afterward, so make sure your constraints are general enough
17351 the constraints are not satisfied, the compiler will crash.
17353 It is safe to omit constraints in all the operands of the peephole; or
17354 you can write constraints which serve as a double-check on the criteria
17669 `(match_operand:M N PRED CONSTRAINTS)'
17676 The CONSTRAINTS operand is ignored and should be the null string.
18179 reservation. The rest of the constraints are mentioned in the
18878 * Old Constraints:: The old way to define machine-specific constraints.
20534 of the insn patterns whose constraints permit this class are
20708 constraints for those instructions.
20840 File: gccint.info, Node: Register Classes, Next: Old Constraints, Prev: Registers, Up: Target Macros
20871 constraints is through machine-dependent operand constraint letters.
20873 them in operand constraints.
21029 labeling is used must fit the machine's constraints of which
21208 These patterns need constraints for the reload register and scratch
21214 the constraints in the insn pattern.
21335 File: gccint.info, Node: Old Constraints, Next: Stack and Calling, Prev: Register Classes, Up: Target Macros
21337 15.9 Obsolete Macros for Defining Constraints
21340 Machine-specific constraints can be defined with these macros instead
21342 Constraints::. This mechanism is obsolete. New ports should not use
21348 class / constant / extra constraints that are longer than a single
21350 single-letter constraints only. The definition of this macro
21436 that should be treated like memory constraints by the reload pass.
21460 constraints by the reload pass.
21474 File: gccint.info, Node: Stack and Calling, Next: Varargs, Prev: Old Constraints, Up: Target Macros
24015 the constraints of the insn are met. Setting a cost of other than
24016 2 will allow reload to verify that the constraints are met. You
24017 should do this if the `movM' pattern's constraints do not allow
31058 * 0 in constraint: Simple Constraints. (line 118)
31059 * < in constraint: Simple Constraints. (line 46)
31061 * > in constraint: Simple Constraints. (line 50)
31601 * address constraints: Simple Constraints. (line 152)
31602 * address_operand <1>: Simple Constraints. (line 156)
31743 * autoincrement/decrement addressing: Simple Constraints. (line 28)
31914 * class preference constraints: Class Preferences. (line 6)
32007 * CONST_DOUBLE_OK_FOR_CONSTRAINT_P: Old Constraints. (line 69)
32008 * CONST_DOUBLE_OK_FOR_LETTER_P: Old Constraints. (line 54)
32017 * CONST_OK_FOR_CONSTRAINT_P: Old Constraints. (line 49)
32018 * CONST_OK_FOR_LETTER_P: Old Constraints. (line 40)
32034 * constants in constraints: Simple Constraints. (line 58)
32037 * constraint, matching: Simple Constraints. (line 130)
32038 * CONSTRAINT_LEN: Old Constraints. (line 12)
32043 * constraints: Constraints. (line 6)
32044 * constraints, defining: Define Constraints. (line 6)
32045 * constraints, defining, obsolete method: Old Constraints. (line 6)
32046 * constraints, machine specific: Machine Constraints.
32048 * constraints, testing: C Constraint Interface.
32200 * define_address_constraint: Define Constraints. (line 105)
32214 * define_constraint: Define Constraints. (line 46)
32225 * define_memory_constraint: Define Constraints. (line 86)
32235 * define_register_constraint: Define Constraints. (line 28)
32243 constraints: Define Constraints. (line 6)
32244 * defining constraints, obsolete method: Old Constraints. (line 6)
32265 * digits in constraint: Simple Constraints. (line 118)
32305 * E in constraint: Simple Constraints. (line 77)
32380 * extensible constraints: Simple Constraints. (line 161)
32381 * EXTRA_ADDRESS_CONSTRAINT: Old Constraints. (line 123)
32382 * EXTRA_CONSTRAINT: Old Constraints. (line 74)
32383 * EXTRA_CONSTRAINT_STR: Old Constraints. (line 95)
32384 * EXTRA_MEMORY_CONSTRAINT: Old Constraints. (line 100)
32388 * F in constraint: Simple Constraints. (line 82)
32503 * g in constraint: Simple Constraints. (line 108)
32504 * G in constraint: Simple Constraints. (line 86)
32582 * H in constraint: Simple Constraints. (line 86)
32635 * I in constraint: Simple Constraints. (line 69)
32636 * i in constraint: Simple Constraints. (line 58)
32852 * load address instruction: Simple Constraints. (line 152)
32891 * m in constraint: Simple Constraints. (line 17)
32897 * machine specific constraints: Machine Constraints.
32923 * matching constraint: Simple Constraints. (line 130)
32967 * memory reference, nonoffsettable: Simple Constraints. (line 244)
32968 * memory references in constraints: Simple Constraints. (line 17)
33011 * modifiers in constraints: Modifiers. (line 6)
33042 * multiple alternative constraints: Multi-Alternative. (line 6)
33047 * n in constraint: Simple Constraints. (line 63)
33098 * nonoffsettable memory reference: Simple Constraints. (line 244)
33130 * o in constraint: Simple Constraints. (line 21)
33136 * offsettable address: Simple Constraints. (line 21)
33153 * operand constraints: Constraints. (line 6)
33173 * other register constraints: Simple Constraints. (line 161)
33186 * p in constraint: Simple Constraints. (line 152)
33312 * push address instruction: Simple Constraints. (line 152)
33333 * r in constraint: Simple Constraints. (line 54)
33398 * REG_CLASS_FROM_CONSTRAINT: Old Constraints. (line 35)
33399 * REG_CLASS_FROM_LETTER: Old Constraints. (line 27)
33437 * register class preference constraints: Class Preferences. (line 6)
33449 * registers in constraints: Simple Constraints. (line 54)
33555 * s in constraint: Simple Constraints. (line 90)
33623 * simple constraints: Simple Constraints. (line 6)
34041 * testing constraints: C Constraint Interface.
34230 * V in constraint: Simple Constraints. (line 41)
34287 * X in constraint: Simple Constraints. (line 112)
34461 Node: Constraints567502
34462 Node: Simple Constraints568663
34466 Node: Machine Constraints588584
34467 Node: Define Constraints616148
34516 Node: Old Constraints905855