Bit Fields
==========
Special expression codes exist to represent bitfield instructions.
These types of expressions are lvalues in RTL; they may appear on the
left side of an assignment, indicating insertion of a value into the
specified bit field.
`(sign_extract:M LOC SIZE POS)'
This represents a reference to a sign-extended bit field contained
or starting in LOC (a memory or register reference). The bit field
is SIZE bits wide and starts at bit POS. The compilation option
`BITS_BIG_ENDIAN' says which end of the memory unit POS counts
from.
If LOC is in memory, its mode must be a single-byte integer mode.
If LOC is in a register, the mode to use is specified by the
operand of the `insv' or `extv' pattern (Note:Standard Names.)
and is usually a full-word integer mode, which is the default if
none is specified.
The mode of POS is machine-specific and is also specified in the
`insv' or `extv' pattern.
The mode M is the same as the mode that would be used for LOC if
it were a register.
`(zero_extract:M LOC SIZE POS)'
Like `sign_extract' but refers to an unsigned or zero-extended bit
field. The same sequence of bits are extracted, but they are
filled to an entire word with zeros instead of by sign-extension.