The various expression codes are divided into several classes,
which are represented by single characters. You can determine the class
of an RTX code with the macro
Currently, rtl.def defines these classes:
REG) or a memory location (
LO_SUM) is also included; instead,
STRICT_LOW_PARTare not in this class, but in class
HIGHis also included in this class.
ABS. This category also includes value extension (sign or zero) and conversions between integer and floating point.
EQare comparisons, so they have class
SIGN_EXTRACT. These have three inputs and are lvalues (so they can be used for insertion as well). See Bit-Fields.
CALL_INSN. See Insns.
MATCH_DUP. These only occur in machine descriptions.
POST_INC. ‘XEXP (x, 0)’ gives the auto-modified register.
DEFINE_*, etc.). It also includes all the codes describing side effects (
CLOBBER, etc.) and the non-insns that may appear on an insn chain, such as
SUBREGis also part of this class.
For each expression code, rtl.def specifies the number of
contained objects and their kinds using a sequence of characters
called the format of the expression code. For example,
the format of
subreg is ‘ei’.
These are the most commonly used format characters:
A few other format characters are used occasionally:
There are macros to get the number of operands and the format of an expression code:
Some classes of RTX codes always have the same format. For example, it
is safe to assume that all comparison operations have format
iuueiee. See Insns. Note that not all RTL objects linked onto an insn chain are of class