lestes::md::registers::move_generator Class Reference

Provides way to generate ge-intercode that copies value between registers, from memory to register or from register to memory. More...

#include <move_generator.g.hh>

Inheritance diagram for lestes::md::registers::move_generator:

Inheritance graph
[legend]
List of all members.

Public Member Functions

ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi > > > generate_load_from_memory (ptr< ::lestes::backend_v2::intercode::ge_operand_mem > op_mem, ptr< ::lestes::backend_v2::intercode::ge_operand_reg > op_reg, ptr< ::lestes::md::registers::tm_register_base > reg)
ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi > > > generate_store_to_memory (ptr< ::lestes::backend_v2::intercode::ge_operand_reg > op_reg, ptr< ::lestes::md::registers::tm_register_base > reg, ptr< ::lestes::backend_v2::intercode::ge_operand_mem > op_mem)
ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi > > > generate_copy_to_register (ptr< ::lestes::backend_v2::intercode::ge_operand_reg > op_reg_src, ptr< ::lestes::md::registers::tm_register_base > reg_src, ptr< ::lestes::backend_v2::intercode::ge_operand_reg > op_reg_dst, ptr< ::lestes::md::registers::tm_register_base > reg_dst)
ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi > > > generate_move (ptr< ::lestes::backend_v2::intercode::ge_operand > op_reg_src, ptr< ::lestes::md::registers::tm_register_base > reg_src, ptr< ::lestes::backend_v2::intercode::ge_operand > op_reg_dst, ptr< ::lestes::md::registers::tm_register_base > reg_dst)
ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi > > > generate_ge_code (ptr< ::lestes::backend_v2::intercode::ge_operand > input_op, ptr< ::lestes::md::registers::tm_register_base > input_reg, ptr< ::lestes::backend_v2::intercode::ge_operand > output_op, ptr< ::lestes::md::registers::tm_register_base > output_reg, ptr< ::lestes::md::instructions::pi_pi2ge_pi_template_base > pat, ptr< vector< ulint > > selected_instrs, ptr< map< ulint, ulint > > selected_op_types)
bool find_consistent_instructions (ptr< ::lestes::backend_v2::intercode::ge_operand > op_reg_src, ptr< ::lestes::md::registers::tm_register_base > reg_src, ptr< ::lestes::backend_v2::intercode::ge_operand > op_reg_dst, ptr< ::lestes::md::registers::tm_register_base > reg_dst, ptr< ::lestes::md::instructions::pi_pi2ge_pi_template_base > pat, ptr< vector< ulint > > selected_instrs, ptr< map< ulint, srp< ::lestes::md::instructions::tm_instr_op_base > > > selected_operands, ptr< map< ulint, ulint > > selected_op_types, ulint curr_instrs_pat)
bool is_instruction_consistent (ptr< ::lestes::backend_v2::intercode::ge_operand > op_reg_src, ptr< ::lestes::md::registers::tm_register_base > reg_src, ptr< ::lestes::backend_v2::intercode::ge_operand > op_reg_dst, ptr< ::lestes::md::registers::tm_register_base > reg_dst, ptr< ::lestes::md::instructions::instruction_group_base > instr_pat, ptr< ::lestes::md::instructions::tm_instr_base > instr_version, ptr< map< ulint, srp< ::lestes::md::instructions::tm_instr_op_base > > > selected_operands, ptr< map< ulint, ulint > > selected_op_types)
bool is_operand_compatible1 (ptr< ::lestes::md::instructions::tm_instr_op_base > instr_op, ptr< ::lestes::backend_v2::intercode::ge_operand > ge_op, ulint type, ptr< ::lestes::md::registers::tm_register_base > reg)
bool is_operand_compatible2 (ptr< ::lestes::md::instructions::tm_instr_op_base > op1, ptr< ::lestes::md::instructions::tm_instr_op_base > op2, ulint type)
void add_selected_operands (ptr< ::lestes::backend_v2::intercode::ge_operand > input_op, ptr< ::lestes::backend_v2::intercode::ge_operand > output_op, ptr< ::lestes::md::instructions::instruction_group_base > instr_pat, ptr< ::lestes::md::instructions::tm_instr_base > instr_version, ptr< map< ulint, srp< ::lestes::md::instructions::tm_instr_op_base > > > selected_operands, ptr< map< ulint, ulint > > selected_op_types)
void remove_selected_operands (ptr< ::lestes::md::instructions::instruction_group_base > instr_pat, ptr< map< ulint, srp< ::lestes::md::instructions::tm_instr_op_base > > > selected_operands, ptr< map< ulint, ulint > > selected_op_types)
ptr< ::lestes::md::instructions::tm_instr_op_basefind_op_by_id (ptr< ::lestes::std::vector< srp< ::lestes::md::instructions::tm_instr_op_base > > > list, ulint id)
virtual ptr< reflection_listreflection_get () const
 for purposes of dumping
virtual ptr< field_list_listfield_values_get () const
 for purposes of dumping

Static Public Member Functions

static ptr< move_generatorcreate ()
 First generated factory method for class move_generator.

Protected Member Functions

 move_generator ()
 Generated constructor for class move_generator.
virtual void gc_mark ()
 Marking routine for class move_generator.

Static Private Attributes

static ptr< reflection_listreflection = reflection

Detailed Description

Provides way to generate ge-intercode that copies value between registers, from memory to register or from register to memory.

This class is not target-machine dependent. A tempalte of copy code is acquired from field of register operand (tm_instr_op_reg class) - move_templates.


Constructor & Destructor Documentation

lestes::md::registers::move_generator::move_generator (  )  [protected]

Generated constructor for class move_generator.

Generated constructor for class move_generator.

Author:
lsg


Member Function Documentation

ptr<vector<srp< ::lestes::backend_v2::intercode::ge_pi> > > lestes::md::registers::move_generator::generate_load_from_memory ( ptr< ::lestes::backend_v2::intercode::ge_operand_mem op_mem,
ptr< ::lestes::backend_v2::intercode::ge_operand_reg op_reg,
ptr< ::lestes::md::registers::tm_register_base reg 
)

ptr<vector<srp< ::lestes::backend_v2::intercode::ge_pi> > > lestes::md::registers::move_generator::generate_store_to_memory ( ptr< ::lestes::backend_v2::intercode::ge_operand_reg op_reg,
ptr< ::lestes::md::registers::tm_register_base reg,
ptr< ::lestes::backend_v2::intercode::ge_operand_mem op_mem 
)

ptr<vector<srp< ::lestes::backend_v2::intercode::ge_pi> > > lestes::md::registers::move_generator::generate_copy_to_register ( ptr< ::lestes::backend_v2::intercode::ge_operand_reg op_reg_src,
ptr< ::lestes::md::registers::tm_register_base reg_src,
ptr< ::lestes::backend_v2::intercode::ge_operand_reg op_reg_dst,
ptr< ::lestes::md::registers::tm_register_base reg_dst 
)

ptr<vector<srp< ::lestes::backend_v2::intercode::ge_pi> > > lestes::md::registers::move_generator::generate_move ( ptr< ::lestes::backend_v2::intercode::ge_operand op_reg_src,
ptr< ::lestes::md::registers::tm_register_base reg_src,
ptr< ::lestes::backend_v2::intercode::ge_operand op_reg_dst,
ptr< ::lestes::md::registers::tm_register_base reg_dst 
)

ptr< vector< srp< ::lestes::backend_v2::intercode::ge_pi> > > lestes::md::registers::move_generator::generate_ge_code ( ptr< ::lestes::backend_v2::intercode::ge_operand input_op,
ptr< ::lestes::md::registers::tm_register_base input_reg,
ptr< ::lestes::backend_v2::intercode::ge_operand output_op,
ptr< ::lestes::md::registers::tm_register_base output_reg,
ptr< ::lestes::md::instructions::pi_pi2ge_pi_template_base pat,
ptr< vector< ulint > >  selected_instrs,
ptr< map< ulint, ulint > >  selected_op_types 
)

bool lestes::md::registers::move_generator::find_consistent_instructions ( ptr< ::lestes::backend_v2::intercode::ge_operand op_reg_src,
ptr< ::lestes::md::registers::tm_register_base reg_src,
ptr< ::lestes::backend_v2::intercode::ge_operand op_reg_dst,
ptr< ::lestes::md::registers::tm_register_base reg_dst,
ptr< ::lestes::md::instructions::pi_pi2ge_pi_template_base pat,
ptr< vector< ulint > >  selected_instrs,
ptr< map< ulint, srp< ::lestes::md::instructions::tm_instr_op_base > > >  selected_operands,
ptr< map< ulint, ulint > >  selected_op_types,
ulint  curr_instrs_pat 
)

bool lestes::md::registers::move_generator::is_instruction_consistent ( ptr< ::lestes::backend_v2::intercode::ge_operand op_reg_src,
ptr< ::lestes::md::registers::tm_register_base reg_src,
ptr< ::lestes::backend_v2::intercode::ge_operand op_reg_dst,
ptr< ::lestes::md::registers::tm_register_base reg_dst,
ptr< ::lestes::md::instructions::instruction_group_base instr_pat,
ptr< ::lestes::md::instructions::tm_instr_base instr_version,
ptr< map< ulint, srp< ::lestes::md::instructions::tm_instr_op_base > > >  selected_operands,
ptr< map< ulint, ulint > >  selected_op_types 
)

bool lestes::md::registers::move_generator::is_operand_compatible1 ( ptr< ::lestes::md::instructions::tm_instr_op_base instr_op,
ptr< ::lestes::backend_v2::intercode::ge_operand ge_op,
ulint  type,
ptr< ::lestes::md::registers::tm_register_base reg 
)

bool lestes::md::registers::move_generator::is_operand_compatible2 ( ptr< ::lestes::md::instructions::tm_instr_op_base op1,
ptr< ::lestes::md::instructions::tm_instr_op_base op2,
ulint  type 
)

void lestes::md::registers::move_generator::add_selected_operands ( ptr< ::lestes::backend_v2::intercode::ge_operand input_op,
ptr< ::lestes::backend_v2::intercode::ge_operand output_op,
ptr< ::lestes::md::instructions::instruction_group_base instr_pat,
ptr< ::lestes::md::instructions::tm_instr_base instr_version,
ptr< map< ulint, srp< ::lestes::md::instructions::tm_instr_op_base > > >  selected_operands,
ptr< map< ulint, ulint > >  selected_op_types 
)

void lestes::md::registers::move_generator::remove_selected_operands ( ptr< ::lestes::md::instructions::instruction_group_base instr_pat,
ptr< map< ulint, srp< ::lestes::md::instructions::tm_instr_op_base > > >  selected_operands,
ptr< map< ulint, ulint > >  selected_op_types 
)

ptr< ::lestes::md::instructions::tm_instr_op_base > lestes::md::registers::move_generator::find_op_by_id ( ptr< ::lestes::std::vector< srp< ::lestes::md::instructions::tm_instr_op_base > > >  list,
ulint  id 
)

ptr< move_generator > lestes::md::registers::move_generator::create ( void   )  [static]

First generated factory method for class move_generator.

This factory method for class move_generator takes values of all fields as arguments.

Author:
lsg

ptr< object::reflection_list > lestes::md::registers::move_generator::reflection_get (  )  const [virtual]

for purposes of dumping

Reimplemented from lestes::std::object.

ptr< object::field_list_list > lestes::md::registers::move_generator::field_values_get (  )  const [virtual]

for purposes of dumping

Reimplemented from lestes::std::object.

void lestes::md::registers::move_generator::gc_mark ( void   )  [protected, virtual]

Marking routine for class move_generator.

Marking routine is used for garbage collection.

Author:
lsg

Reimplemented from lestes::std::mem::keystone.


Member Data Documentation

ptr< object::reflection_list > lestes::md::registers::move_generator::reflection = reflection [static, private]

Reimplemented from lestes::std::object.


The documentation for this class was generated from the following files:
Generated on Mon Feb 12 18:49:21 2007 for lestes by doxygen 1.5.1-20070107