gccint: Bit-Fields

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