[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |
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 GET_RTX_CLASS (code)
.
Currently, `rtx.def' defines these classes:
o
REG
) or a memory location (MEM
, SYMBOL_REF
).
Constants and basic transforms on objects (ADDRESSOF
,
HIGH
, LO_SUM
) are also included. Note that SUBREG
and STRICT_LOW_PART
are not in this class, but in class x
.
<
NE
or LT
.
1
NEG
,
NOT
, or ABS
. This category also includes value extension
(sign or zero) and conversions between integer and floating point.
c
PLUS
or
AND
. NE
and EQ
are comparisons, so they have class
<
.
2
MINUS
,
DIV
, or ASHIFTRT
.
b
ZERO_EXTRACT
and SIGN_EXTRACT
. These have three inputs
and are lvalues (so they can be used for insertion as well).
See section 19.10 Bit-Fields.
3
IF_THEN_ELSE
.
i
INSN
, JUMP_INSN
, and
CALL_INSN
. See section 19.17 Insns.
m
MATCH_DUP
. These only occur in machine descriptions.
a
POST_INC
.
x
DEFINE_*
, etc.). It also includes
all the codes describing side effects (SET
, USE
,
CLOBBER
, etc.) and the non-insns that may appear on an insn
chain, such as NOTE
, BARRIER
, and CODE_LABEL
.
For each expression type `rtl.def' specifies the number of
contained objects and their kinds, with four possibilities: `e' for
expression (actually a pointer to an expression), `i' for integer,
`w' for wide integer, `s' for string, and `E' for vector
of expressions. The sequence of letters for an expression code is
called its format. For example, the format of subreg
is
`ei'.
A few other format characters are used occasionally:
u
n
note
insn.
S
V
0
There are macros to get the number of operands and the format of an expression code:
GET_RTX_LENGTH (code)
GET_RTX_FORMAT (code)
Some classes of RTX codes always have the same format. For example, it
is safe to assume that all comparison operations have format ee
.
1
e
.
<
c
2
ee
.
b
3
eee
.
i
iuueiee
.
See section 19.17 Insns. Note that not all RTL objects linked onto an insn chain
are of class i
.
o
m
x
[ < ] | [ > ] | [ << ] | [ Up ] | [ >> ] | [Top] | [Contents] | [Index] | [ ? ] |