GCC Middle and Back End API Reference
move_by_pieces_d Class Reference
Inheritance diagram for move_by_pieces_d:
Collaboration diagram for move_by_pieces_d:

Public Member Functions

 move_by_pieces_d (rtx to, rtx from, unsigned HOST_WIDE_INT len, unsigned int align)
 
rtx finish_retmode (memop_ret)
 
void run ()
 

Protected Member Functions

virtual void finish_mode (machine_mode)
 

Protected Attributes

pieces_addr m_to
 
pieces_addr m_from
 
const unsigned HOST_WIDE_INT m_len
 
HOST_WIDE_INT m_offset
 
unsigned int m_align
 
unsigned int m_max_size
 
bool m_reverse
 
bool m_push
 
bool m_overlap_op_by_pieces
 
by_pieces_operation m_op
 

Private Member Functions

void generate (rtx, rtx, machine_mode) final override
 
bool prepare_mode (machine_mode, unsigned int) final override
 
fixed_size_mode get_usable_mode (fixed_size_mode, unsigned int)
 
fixed_size_mode smallest_fixed_size_mode_for_size (unsigned int)
 

Private Attributes

insn_gen_fn m_gen_fun
 

Constructor & Destructor Documentation

◆ move_by_pieces_d()

move_by_pieces_d::move_by_pieces_d ( rtx to,
rtx from,
unsigned HOST_WIDE_INT len,
unsigned int align )
inline

Member Function Documentation

◆ finish_mode()

virtual void op_by_pieces_d::finish_mode ( machine_mode )
inlineprotectedvirtualinherited

Reimplemented in compare_by_pieces_d.

Referenced by op_by_pieces_d::run().

◆ finish_retmode()

rtx move_by_pieces_d::finish_retmode ( memop_ret retmode)
Perform the final adjustment at the end of a string to obtain the
correct return value for the block operation.
Return value is based on RETMODE argument.   

References pieces_addr::adjust(), gcc_assert, ggc_alloc(), op_by_pieces_d::m_offset, op_by_pieces_d::m_reverse, op_by_pieces_d::m_to, pieces_addr::maybe_postinc(), and RETURN_END_MINUS_ONE.

◆ generate()

void move_by_pieces_d::generate ( rtx op0,
rtx op1,
machine_mode mode )
finaloverrideprivatevirtual
A callback used when iterating for a compare_by_pieces_operation.
OP0 and OP1 are the values that have been loaded and should be
compared in MODE.  If OP0 is NULL, this means we should generate a
push; otherwise EXTRA_DATA holds a pointer to a pointer to the insn
gen function that should be used to generate the mode.   

Implements op_by_pieces_d.

References emit_insn(), ggc_alloc(), m_gen_fun, NULL, and NULL_RTX.

◆ get_usable_mode()

fixed_size_mode op_by_pieces_d::get_usable_mode ( fixed_size_mode mode,
unsigned int len )
privateinherited
This function returns the largest usable integer mode for LEN bytes
whose size is no bigger than size of MODE.   

References GET_MODE_SIZE(), op_by_pieces_d::m_align, op_by_pieces_d::m_op, op_by_pieces_d::prepare_mode(), and widest_fixed_size_mode_for_size().

Referenced by op_by_pieces_d::run().

◆ prepare_mode()

bool move_by_pieces_d::prepare_mode ( machine_mode mode,
unsigned int align )
finaloverrideprivatevirtual
Return true if MODE can be used for a set of copies, given an
alignment ALIGN.  Prepare whatever data is necessary for later
calls to generate.   

Implements op_by_pieces_d.

References GET_MODE_ALIGNMENT, ggc_alloc(), m_gen_fun, and optab_handler().

◆ run()

void op_by_pieces_d::run ( )
inherited

◆ smallest_fixed_size_mode_for_size()

fixed_size_mode op_by_pieces_d::smallest_fixed_size_mode_for_size ( unsigned int size)
privateinherited

Field Documentation

◆ m_align

unsigned int op_by_pieces_d::m_align
protectedinherited

◆ m_from

pieces_addr op_by_pieces_d::m_from
protectedinherited

◆ m_gen_fun

insn_gen_fn move_by_pieces_d::m_gen_fun
private

Referenced by generate(), and prepare_mode().

◆ m_len

const unsigned HOST_WIDE_INT op_by_pieces_d::m_len
protectedinherited

◆ m_max_size

unsigned int op_by_pieces_d::m_max_size
protectedinherited

◆ m_offset

◆ m_op

◆ m_overlap_op_by_pieces

bool op_by_pieces_d::m_overlap_op_by_pieces
protectedinherited

◆ m_push

bool op_by_pieces_d::m_push
protectedinherited

Referenced by op_by_pieces_d::run().

◆ m_reverse

bool op_by_pieces_d::m_reverse
protectedinherited

◆ m_to


The documentation for this class was generated from the following file: