#include <tm_register_base.g.hh>
Inheritance diagram for lestes::md::registers::tm_register_base:

Public Types | |
| typedef ulint | id_type |
Public Member Functions | |
| tm_register_base::id_type | id_get () const |
| The method id_get returns the value of the field tm_register_base::id. | |
| void | id_set (tm_register_base::id_type) |
| The method id_set sets the field tm_register_base::id to the given value. | |
| ulint | bitwidth_get () const |
| The method bitwidth_get returns the value of the field tm_register_base::bitwidth. | |
| void | bitwidth_set (ulint) |
| The method bitwidth_set sets the field tm_register_base::bitwidth to the given value. | |
| ptr< ::lestes::std::set< ::lestes::md::types::tm_data_type_base::id_type > > | compatible_types_get () const |
| The method compatible_types_get returns the value of the field tm_register_base::compatible_types. | |
| void | compatible_types_set (const ptr< ::lestes::std::set< ::lestes::md::types::tm_data_type_base::id_type > > &) |
| The method compatible_types_set sets the field tm_register_base::compatible_types to the given value. | |
| ptr< ::lestes::std::set< tm_register_base::id_type > > | aliases_get () const |
| The method aliases_get returns the value of the field tm_register_base::aliases. | |
| void | aliases_set (const ptr< ::lestes::std::set< tm_register_base::id_type > > &) |
| The method aliases_set sets the field tm_register_base::aliases to the given value. | |
| ptr< ::lestes::std::set< ulint > > | move_templates_get () const |
| The method move_templates_get returns the value of the field tm_register_base::move_templates. | |
| void | move_templates_set (const ptr< ::lestes::std::set< ulint > > &) |
| The method move_templates_set sets the field tm_register_base::move_templates to the given value. | |
| lstring | asm_output_get () const |
| The method asm_output_get returns the value of the field tm_register_base::asm_output. | |
| void | asm_output_set (lstring) |
| The method asm_output_set sets the field tm_register_base::asm_output to the given value. | |
| ulint | flags_get () const |
| The method flags_get returns the value of the field tm_register_base::flags. | |
| void | flags_set (ulint) |
| The method flags_set sets the field tm_register_base::flags to the given value. | |
| bool | is_unspillable () |
| Tells whether the current register can't be spilled. | |
| virtual ptr< reflection_list > | reflection_get () const |
| for purposes of dumping | |
| virtual ptr< field_list_list > | field_values_get () const |
| for purposes of dumping | |
Static Public Member Functions | |
| static ptr< tm_register_base > | create (tm_register_base::id_type a__tm_register_base__id, ulint a__tm_register_base__bitwidth, ptr< ::lestes::std::set< ::lestes::md::types::tm_data_type_base::id_type > > a__tm_register_base__compatible_types, ptr< ::lestes::std::set< tm_register_base::id_type > > a__tm_register_base__aliases, ptr< ::lestes::std::set< ulint > > a__tm_register_base__move_templates, lstring a__tm_register_base__asm_output, ulint a__tm_register_base__flags) |
| First generated factory method for class tm_register_base. | |
| static ptr< tm_register_base > | create (tm_register_base::id_type a__tm_register_base__id, ulint a__tm_register_base__bitwidth, ptr< ::lestes::std::set< ::lestes::md::types::tm_data_type_base::id_type > > a__tm_register_base__compatible_types, ptr< ::lestes::std::set< tm_register_base::id_type > > a__tm_register_base__aliases, ptr< ::lestes::std::set< ulint > > a__tm_register_base__move_templates, lstring a__tm_register_base__asm_output) |
| Second generated factory method for class tm_register_base. | |
Protected Member Functions | |
| tm_register_base (tm_register_base::id_type a__tm_register_base__id, ulint a__tm_register_base__bitwidth, ptr< ::lestes::std::set< ::lestes::md::types::tm_data_type_base::id_type > > a__tm_register_base__compatible_types, ptr< ::lestes::std::set< tm_register_base::id_type > > a__tm_register_base__aliases, ptr< ::lestes::std::set< ulint > > a__tm_register_base__move_templates, lstring a__tm_register_base__asm_output, ulint a__tm_register_base__flags) | |
| Generated constructor for class tm_register_base. | |
| virtual void | gc_mark () |
| Marking routine for class tm_register_base. | |
Private Attributes | |
| tm_register_base::id_type | id |
| The register's id. | |
| ulint | bitwidth |
| Bitwidth of the register. | |
| srp< ::lestes::std::set< ::lestes::md::types::tm_data_type_base::id_type > > | compatible_types |
| List of datatypes that can be stored in the register. | |
| srp< ::lestes::std::set< tm_register_base::id_type > > | aliases |
| List of register ids that represents the same physical register as this one does. | |
| srp< ::lestes::std::set< ulint > > | move_templates |
| List of instructions that can move value between register->register, mem->register, register->mem. Needed for spillcode generation. | |
| lstring | asm_output |
| Asm label for the register. | |
| ulint | flags |
| The register's flags. | |
Static Private Attributes | |
| static ptr< reflection_list > | reflection = reflection |
Note: A concrete derived class is target dependent and it is placed in /target/machine/${TARGET_CPU}/lestes/md/registers/ directory.
Definition at line 42 of file tm_register_base.g.hh.
| typedef ulint lestes::md::registers::tm_register_base::id_type |
Definition at line 44 of file tm_register_base.g.hh.
| lestes::md::registers::tm_register_base::tm_register_base | ( | tm_register_base::id_type | a__tm_register_base__id, | |
| ulint | a__tm_register_base__bitwidth, | |||
| ptr< ::lestes::std::set< ::lestes::md::types::tm_data_type_base::id_type > > | a__tm_register_base__compatible_types, | |||
| ptr< ::lestes::std::set< tm_register_base::id_type > > | a__tm_register_base__aliases, | |||
| ptr< ::lestes::std::set< ulint > > | a__tm_register_base__move_templates, | |||
| lstring | a__tm_register_base__asm_output, | |||
| ulint | a__tm_register_base__flags | |||
| ) | [protected] |
Generated constructor for class tm_register_base.
Generated constructor for class tm_register_base.
Definition at line 188 of file tm_register_base.g.cc.
Referenced by create().
00195 : ::lestes::std::object(), id(a__tm_register_base__id), bitwidth(a__tm_register_base__bitwidth), compatible_types(checked(a__tm_register_base__compatible_types)), aliases(checked(a__tm_register_base__aliases)), move_templates(checked(a__tm_register_base__move_templates)), asm_output(a__tm_register_base__asm_output), flags(a__tm_register_base__flags) 00196 {}
| tm_register_base::id_type lestes::md::registers::tm_register_base::id_get | ( | ) | const |
The method id_get returns the value of the field tm_register_base::id.
Definition at line 27 of file tm_register_base.g.cc.
References id.
00028 { 00029 return id; 00030 }
| void lestes::md::registers::tm_register_base::id_set | ( | tm_register_base::id_type | x | ) |
The method id_set sets the field tm_register_base::id to the given value.
| [in] | x | The new value to set tm_register_base::id to. |
Definition at line 36 of file tm_register_base.g.cc.
References id.
00037 { 00038 tm_register_base::id = x; 00039 }
| ulint lestes::md::registers::tm_register_base::bitwidth_get | ( | ) | const |
The method bitwidth_get returns the value of the field tm_register_base::bitwidth.
Definition at line 45 of file tm_register_base.g.cc.
References bitwidth.
00046 { 00047 return bitwidth; 00048 }
| void lestes::md::registers::tm_register_base::bitwidth_set | ( | ulint | x | ) |
The method bitwidth_set sets the field tm_register_base::bitwidth to the given value.
| [in] | x | The new value to set tm_register_base::bitwidth to. |
Definition at line 54 of file tm_register_base.g.cc.
References bitwidth.
00055 { 00056 tm_register_base::bitwidth = x; 00057 }
| ptr<::lestes::std::set<::lestes::md::types::tm_data_type_base::id_type > > lestes::md::registers::tm_register_base::compatible_types_get | ( | ) | const |
The method compatible_types_get returns the value of the field tm_register_base::compatible_types.
Definition at line 63 of file tm_register_base.g.cc.
References compatible_types.
00064 { 00065 return compatible_types; 00066 }
| void lestes::md::registers::tm_register_base::compatible_types_set | ( | const ptr< ::lestes::std::set< ::lestes::md::types::tm_data_type_base::id_type > > & | x | ) |
The method compatible_types_set sets the field tm_register_base::compatible_types to the given value.
| [in] | x | The new value to set tm_register_base::compatible_types to. |
Definition at line 72 of file tm_register_base.g.cc.
References compatible_types.
00073 { 00074 tm_register_base::compatible_types = x; 00075 }
| ptr<::lestes::std::set< tm_register_base::id_type > > lestes::md::registers::tm_register_base::aliases_get | ( | ) | const |
The method aliases_get returns the value of the field tm_register_base::aliases.
Definition at line 81 of file tm_register_base.g.cc.
References aliases.
00082 { 00083 return aliases; 00084 }
| void lestes::md::registers::tm_register_base::aliases_set | ( | const ptr< ::lestes::std::set< tm_register_base::id_type > > & | x | ) |
The method aliases_set sets the field tm_register_base::aliases to the given value.
| [in] | x | The new value to set tm_register_base::aliases to. |
Definition at line 90 of file tm_register_base.g.cc.
References aliases.
00091 { 00092 tm_register_base::aliases = x; 00093 }
| ptr<::lestes::std::set< ulint > > lestes::md::registers::tm_register_base::move_templates_get | ( | ) | const |
The method move_templates_get returns the value of the field tm_register_base::move_templates.
Definition at line 99 of file tm_register_base.g.cc.
References move_templates.
00100 { 00101 return move_templates; 00102 }
| void lestes::md::registers::tm_register_base::move_templates_set | ( | const ptr< ::lestes::std::set< ulint > > & | x | ) |
The method move_templates_set sets the field tm_register_base::move_templates to the given value.
| [in] | x | The new value to set tm_register_base::move_templates to. |
Definition at line 108 of file tm_register_base.g.cc.
References move_templates.
00109 { 00110 tm_register_base::move_templates = x; 00111 }
| lstring lestes::md::registers::tm_register_base::asm_output_get | ( | ) | const |
The method asm_output_get returns the value of the field tm_register_base::asm_output.
Definition at line 117 of file tm_register_base.g.cc.
References asm_output.
00118 { 00119 return asm_output; 00120 }
| void lestes::md::registers::tm_register_base::asm_output_set | ( | lstring | x | ) |
The method asm_output_set sets the field tm_register_base::asm_output to the given value.
| [in] | x | The new value to set tm_register_base::asm_output to. |
Definition at line 126 of file tm_register_base.g.cc.
References asm_output.
00127 { 00128 tm_register_base::asm_output = x; 00129 }
| ulint lestes::md::registers::tm_register_base::flags_get | ( | ) | const |
The method flags_get returns the value of the field tm_register_base::flags.
Definition at line 135 of file tm_register_base.g.cc.
References flags.
00136 { 00137 return flags; 00138 }
| void lestes::md::registers::tm_register_base::flags_set | ( | ulint | x | ) |
The method flags_set sets the field tm_register_base::flags to the given value.
| [in] | x | The new value to set tm_register_base::flags to. |
Definition at line 144 of file tm_register_base.g.cc.
References flags.
00145 { 00146 tm_register_base::flags = x; 00147 }
| bool lestes::md::registers::tm_register_base::is_unspillable | ( | ) |
Tells whether the current register can't be spilled.
Definition at line 10 of file tm_register_base.cc.
References flags, and lestes::md::registers::RF_NOSPILL.
00010 { 00011 return flags && RF_NOSPILL; 00012 }
| ptr< tm_register_base > lestes::md::registers::tm_register_base::create | ( | tm_register_base::id_type | a__tm_register_base__id, | |
| ulint | a__tm_register_base__bitwidth, | |||
| ptr< ::lestes::std::set< ::lestes::md::types::tm_data_type_base::id_type > > | a__tm_register_base__compatible_types, | |||
| ptr< ::lestes::std::set< tm_register_base::id_type > > | a__tm_register_base__aliases, | |||
| ptr< ::lestes::std::set< ulint > > | a__tm_register_base__move_templates, | |||
| lstring | a__tm_register_base__asm_output, | |||
| ulint | a__tm_register_base__flags | |||
| ) | [static] |
First generated factory method for class tm_register_base.
This factory method for class tm_register_base takes values of all fields as arguments.
Definition at line 153 of file tm_register_base.g.cc.
References tm_register_base().
00160 { 00161 return ptr< tm_register_base > ( new tm_register_base(a__tm_register_base__id, 00162 a__tm_register_base__bitwidth, 00163 a__tm_register_base__compatible_types, 00164 a__tm_register_base__aliases, 00165 a__tm_register_base__move_templates, 00166 a__tm_register_base__asm_output, 00167 a__tm_register_base__flags) ); 00168 }
| ptr< tm_register_base > lestes::md::registers::tm_register_base::create | ( | tm_register_base::id_type | a__tm_register_base__id, | |
| ulint | a__tm_register_base__bitwidth, | |||
| ptr< ::lestes::std::set< ::lestes::md::types::tm_data_type_base::id_type > > | a__tm_register_base__compatible_types, | |||
| ptr< ::lestes::std::set< tm_register_base::id_type > > | a__tm_register_base__aliases, | |||
| ptr< ::lestes::std::set< ulint > > | a__tm_register_base__move_templates, | |||
| lstring | a__tm_register_base__asm_output | |||
| ) | [static] |
Second generated factory method for class tm_register_base.
This factory method for class tm_register_base uses initializers.
Definition at line 174 of file tm_register_base.g.cc.
References tm_register_base().
00180 { 00181 return ptr< tm_register_base > ( new tm_register_base(a__tm_register_base__id, a__tm_register_base__bitwidth, a__tm_register_base__compatible_types, a__tm_register_base__aliases, a__tm_register_base__move_templates, a__tm_register_base__asm_output, 0) ); 00182 }
| ptr< object::reflection_list > lestes::md::registers::tm_register_base::reflection_get | ( | ) | const [virtual] |
for purposes of dumping
Reimplemented from lestes::std::object.
Reimplemented in lestes::md::registers::tm_register.
Definition at line 198 of file tm_register_base.g.cc.
References lestes::std::list< T >::create(), reflection, and lestes::std::object::reflection_get().
Referenced by lestes::md::registers::tm_register::reflection_get().
00199 { 00200 if (!reflection) { 00201 typedef class_reflection::field_metadata md; 00202 typedef class_reflection::field_metadata_list mdlist; 00203 ptr<mdlist> mdl = mdlist::create(); 00204 mdl->push_back( md::create( "id", "tm_register_base::id_type" ) ); 00205 mdl->push_back( md::create( "bitwidth", "ulint" ) ); 00206 mdl->push_back( md::create( "compatible_types", "set< ::lestes::md::types::tm_data_type_base::id_type >" ) ); 00207 mdl->push_back( md::create( "aliases", "set< tm_register_base::id_type >" ) ); 00208 mdl->push_back( md::create( "move_templates", "set< ulint >" ) ); 00209 mdl->push_back( md::create( "asm_output", "lstring" ) ); 00210 mdl->push_back( md::create( "flags", "ulint" ) ); 00211 reflection = reflection_list::create( ::lestes::std::object::reflection_get() ); 00212 reflection->push_back( class_reflection::create( "tm_register_base", mdl ) ); 00213 } 00214 return reflection; 00215 }
| ptr< object::field_list_list > lestes::md::registers::tm_register_base::field_values_get | ( | ) | const [virtual] |
for purposes of dumping
Reimplemented from lestes::std::object.
Reimplemented in lestes::md::registers::tm_register.
Definition at line 217 of file tm_register_base.g.cc.
References lestes::std::list< T >::create(), and lestes::std::object::field_values_get().
Referenced by lestes::md::registers::tm_register::field_values_get().
00218 { 00219 ptr < field_list_list > result = ::lestes::std::object::field_values_get(); 00220 result->push_back( value_list::create() ); 00221 result->back()->push_back( objectize< tm_register_base::id_type > ::create( this->id ) ); 00222 result->push_back( value_list::create() ); 00223 result->back()->push_back( objectize< ulint > ::create( this->bitwidth ) ); 00224 result->push_back( value_list::create() ); 00225 result->back()->push_back( this->compatible_types ); 00226 result->push_back( value_list::create() ); 00227 result->back()->push_back( this->aliases ); 00228 result->push_back( value_list::create() ); 00229 result->back()->push_back( this->move_templates ); 00230 result->push_back( value_list::create() ); 00231 result->back()->push_back( objectize< lstring > ::create( this->asm_output ) ); 00232 result->push_back( value_list::create() ); 00233 result->back()->push_back( objectize< ulint > ::create( this->flags ) ); 00234 return result; 00235 }
| void lestes::md::registers::tm_register_base::gc_mark | ( | void | ) | [protected, virtual] |
Marking routine for class tm_register_base.
Marking routine is used for garbage collection.
Reimplemented from lestes::std::mem::keystone.
Reimplemented in lestes::md::registers::tm_register.
Definition at line 242 of file tm_register_base.g.cc.
References lestes::std::mem::keystone::gc_mark().
Referenced by lestes::md::registers::tm_register::gc_mark().
00243 { 00244 ::lestes::std::object::gc_mark(); 00245 }
ulint lestes::md::registers::tm_register_base::bitwidth [private] |
Bitwidth of the register.
Definition at line 135 of file tm_register_base.g.hh.
Referenced by bitwidth_get(), and bitwidth_set().
srp< ::lestes::std::set< ::lestes::md::types::tm_data_type_base::id_type > > lestes::md::registers::tm_register_base::compatible_types [private] |
List of datatypes that can be stored in the register.
Definition at line 137 of file tm_register_base.g.hh.
Referenced by compatible_types_get(), and compatible_types_set().
srp< ::lestes::std::set< tm_register_base::id_type > > lestes::md::registers::tm_register_base::aliases [private] |
List of register ids that represents the same physical register as this one does.
e.g. ia-32 architecture has register ax and eax that represents the same physical register but each has different bitwidth. This is needed within register allocation because these aliases can't be allocated together at one time.
Definition at line 143 of file tm_register_base.g.hh.
Referenced by aliases_get(), and aliases_set().
srp< ::lestes::std::set< ulint > > lestes::md::registers::tm_register_base::move_templates [private] |
List of instructions that can move value between register->register, mem->register, register->mem. Needed for spillcode generation.
Definition at line 145 of file tm_register_base.g.hh.
Referenced by lestes::md::registers::tm_register::instance(), move_templates_get(), and move_templates_set().
lstring lestes::md::registers::tm_register_base::asm_output [private] |
Asm label for the register.
Definition at line 147 of file tm_register_base.g.hh.
Referenced by asm_output_get(), and asm_output_set().
ulint lestes::md::registers::tm_register_base::flags [private] |
The register's flags.
Definition at line 149 of file tm_register_base.g.hh.
Referenced by flags_get(), flags_set(), and is_unspillable().
ptr< object::reflection_list > lestes::md::registers::tm_register_base::reflection = reflection [static, private] |
Reimplemented from lestes::std::object.
Reimplemented in lestes::md::registers::tm_register.
Definition at line 150 of file tm_register_base.g.hh.
Referenced by reflection_get().
1.5.1-20070107