Ports often need to define similar patterns for two or more different modes. For example:
SFmode patterns tend to be
very similar to the DFmode ones.
SImode pointers in one configuration and
DImode pointers in another, it will usually have very similar
SImode and DImode patterns for manipulating pointers.
Mode iterators allow several patterns to be instantiated from one
.md file template. They can be used with any type of
rtx-based construct, such as a define_insn,
define_split, or define_peephole2.