define_subst
All expressions, allowed in define_insn or define_expand,
are allowed in the input-template of define_subst, except
match_par_dup, match_scratch, match_parallel. The
meanings of expressions in the input-template were changed:
match_operand matches any expression (possibly, a subtree in
RTL-template), if modes of the match_operand and this expression
are the same, or mode of the match_operand is VOIDmode, or
this expression is match_dup, match_op_dup. If the
expression is match_operand too, and predicate of
match_operand from the input pattern is not empty, then the
predicates are compared. That can be used for more accurate filtering
of accepted RTL-templates.
match_operator matches common operators (like plus,
minus), unspec, unspec_volatile operators and
match_operators from the original pattern if the modes match and
match_operator from the input pattern has the same number of
operands as the operator from the original pattern.