Each match_operand
in an instruction pattern can specify
constraints for the operands allowed. The constraints allow you to
fine-tune matching within the set of operands allowed by the
predicate.
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.
Side-effects aren't allowed in operands of inline asm
, unless
‘<’ or ‘>’ constraints are used, because there is no guarantee
that the side-effects will happen exactly once in an instruction that can update
the addressing register.