de) { scalar_int_mode int_mode; if (is_a (mode, &int_mode) && GET_MODE_PRECISION (int_mode) < BITS_PER_WORD) return LOAD_EXTEND_OP (int_mode); return UNKNOWN; } /* If X is a PLUS of a base and a constant offset, add the constant to *OFFSET and return the base. Return X otherwise. */ inline rtx strip_offset_and_add (rtx x, poly_int64 *offset) { if (GET_CODE (x) == PLUS) { poly_int64 suboffset; x = strip_offset (x, &suboffset); *offset = poly_uint64 (*offset) + suboffset; } return x; } /* Return true if X is an operation that always operates on the full registers for WORD_REGISTER_OPERATIONS architectures. */ inline bool word_register_operation_p (const_rtx x) { switch (GET_CODE (x)) { case CONST_INT: case ROTATE: case ROTATERT: case SIGN_EXTRACT: case ZERO_EXTRACT: return false; default: return true; } } /* Holds an rtx comparison to simplify passing many parameters pertaining to a single comparison. */ struct rtx_comparison { rtx_code code; rtx op0, op1; machine_mode mode; }; /* gtype-desc.cc. */ extern void gt_ggc_mx (rtx &); extern void gt_pch_nx (rtx &); extern void gt_pch_nx (rtx &, gt_pointer_operator, void *); #endif /* ! GCC_RTL_H */