Changeset 118 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Stat_List_unit_genMoore.cpp
- Timestamp:
- May 21, 2009, 12:01:32 AM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/src/Stat_List_unit_genMoore.cpp
r112 r118 8 8 9 9 #include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/include/Stat_List_unit.h" 10 #include <set> 10 11 11 12 namespace morpheo { … … 18 19 namespace stat_list_unit { 19 20 21 #define STAT_LIST_SCAN_ALL 20 22 21 23 #undef FUNCTION … … 26 28 log_function(Stat_List_unit,FUNCTION,_name.c_str()); 27 29 28 uint32_t gpr_ptr = reg_GPR_PTR_FREE; 29 uint32_t spr_ptr = reg_SPR_PTR_FREE; 30 uint32_t gpr_ptr = reg_GPR_PTR_FREE; 31 uint32_t spr_ptr = reg_SPR_PTR_FREE; 32 #ifdef STAT_LIST_SCAN_ALL 33 std::set<Tgeneral_address_t> list_gpr_free; 34 std::set<Tspecial_address_t> list_spr_free; 35 #endif 30 36 31 37 for (uint32_t i=0; i<_param->_nb_reg_free; i++) 32 38 { 39 log_printf(TRACE,Stat_List_unit,FUNCTION," * PUSH [%d]",i); 40 33 41 uint32_t offset = i*_param->_nb_bank_by_port_free; 34 42 35 43 // PUSH_GPR 36 44 { 37 uint32_t bank_gpr; 38 39 for (bank_gpr=offset; bank_gpr<offset+_param->_nb_bank_by_port_free; bank_gpr++) 40 if (gpr_stat_list[bank_gpr][gpr_ptr].can_free()) 41 break; 42 43 bool val = (bank_gpr != offset+_param->_nb_bank_by_port_free); 44 45 bool val = false; 46 uint32_t bank_gpr = offset; 47 48 #ifdef STAT_LIST_SCAN_ALL 49 for (uint32_t _gpr_ptr=0; _gpr_ptr<_param->_nb_general_register_by_bank; ++_gpr_ptr) 50 { 51 gpr_ptr = (gpr_ptr+1)%_param->_nb_general_register_by_bank; 52 #endif 53 for (bank_gpr = offset; bank_gpr<offset+_param->_nb_bank_by_port_free; bank_gpr++) 54 if (gpr_stat_list[bank_gpr][gpr_ptr].can_free()) 55 { 56 #ifdef STAT_LIST_SCAN_ALL 57 Tgeneral_address_t num_reg = ((bank_gpr<<_param->_shift_gpr) | gpr_ptr); 58 if (list_gpr_free.find(num_reg) == list_gpr_free.end()) 59 { 60 list_gpr_free.insert(num_reg); 61 #endif 62 val = true; 63 break; 64 #ifdef STAT_LIST_SCAN_ALL 65 } 66 #endif 67 } 68 #ifdef STAT_LIST_SCAN_ALL 69 if (val) 70 break; 71 } 72 #endif 73 74 log_printf(TRACE,Stat_List_unit,FUNCTION," * val : %d",val); 75 log_printf(TRACE,Stat_List_unit,FUNCTION," * bank_gpr : %d",bank_gpr); 76 log_printf(TRACE,Stat_List_unit,FUNCTION," * gpr_ptr : %d",gpr_ptr); 77 log_printf(TRACE,Stat_List_unit,FUNCTION," * num_reg : %d",((bank_gpr<<_param->_shift_gpr) | gpr_ptr)); 78 45 79 internal_PUSH_GPR_VAL [i] = val; 46 80 internal_PUSH_GPR_NUM_BANK [i] = bank_gpr; 81 internal_PUSH_GPR_NUM_REG [i] = gpr_ptr ; 47 82 48 83 PORT_WRITE(out_PUSH_GPR_VAL [i], val); … … 53 88 // PUSH_SPR 54 89 { 55 uint32_t bank_spr; 56 57 for (bank_spr=offset; bank_spr<offset+_param->_nb_bank_by_port_free; bank_spr++) 58 if (spr_stat_list[bank_spr][spr_ptr].can_free()) 59 break; 90 bool val = false; 91 uint32_t bank_spr = offset; 60 92 61 bool val = (bank_spr != (offset+_param->_nb_bank_by_port_free)); 62 93 #ifdef STAT_LIST_SCAN_ALL 94 for (uint32_t _spr_ptr=0; _spr_ptr<_param->_nb_special_register_by_bank; ++_spr_ptr) 95 { 96 spr_ptr = (spr_ptr+1)%_param->_nb_special_register_by_bank; 97 #endif 98 for (bank_spr = offset; bank_spr<offset+_param->_nb_bank_by_port_free; bank_spr++) 99 if (spr_stat_list[bank_spr][spr_ptr].can_free()) 100 { 101 #ifdef STAT_LIST_SCAN_ALL 102 Tspecial_address_t num_reg = ((bank_spr<<_param->_shift_spr) | spr_ptr); 103 if (list_spr_free.find(num_reg) == list_spr_free.end()) 104 { 105 list_spr_free.insert(num_reg); 106 #endif 107 val = true; 108 break; 109 #ifdef STAT_LIST_SCAN_ALL 110 } 111 #endif 112 } 113 #ifdef STAT_LIST_SCAN_ALL 114 if (val) 115 break; 116 } 117 #endif 118 119 log_printf(TRACE,Stat_List_unit,FUNCTION," * val : %d",val); 120 log_printf(TRACE,Stat_List_unit,FUNCTION," * bank_spr : %d",bank_spr); 121 log_printf(TRACE,Stat_List_unit,FUNCTION," * spr_ptr : %d",spr_ptr); 122 log_printf(TRACE,Stat_List_unit,FUNCTION," * num_reg : %d",((bank_spr<<_param->_shift_spr) | spr_ptr)); 123 63 124 internal_PUSH_SPR_VAL [i] = val; 64 125 internal_PUSH_SPR_NUM_BANK [i] = bank_spr; 126 internal_PUSH_SPR_NUM_REG [i] = spr_ptr ; 65 127 66 128 PORT_WRITE(out_PUSH_SPR_VAL [i], val); … … 68 130 PORT_WRITE(out_PUSH_SPR_NUM_REG[i], ((bank_spr<<_param->_shift_spr) | spr_ptr)); 69 131 } 132 133 70 134 } 71 135
Note: See TracChangeset
for help on using the changeset viewer.