Each match_operand in an instruction pattern can specify a constraint for the type of operands allowed. Constraints can say whether an operand may be in a register, and which kinds of register; whether the operand can be a memory reference, and which kinds of address; whether the operand may be an immediate constant, and which possible values it may have. Constraints can also require two operands to match.
| Simple Constraints | Basic use of constraints. |
| Multi-Alternative | When an insn has two alternative constraint-patterns. |
| Class Preferences | Constraints guide which hard register to put things in. |
| Modifiers | More precise control over effects of constraints. |
| Machine Constraints | Existing constraints for some particular machines. |
| No Constraints | Describing a clean machine without constraints. |