Changeset 76 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/src/Functionnal_unit_allocation.cpp
- Timestamp:
- Feb 2, 2008, 12:39:01 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Execute_loop/Execute_loop/Multi_Execute_unit/Execute_unit/Functionnal_unit/src/Functionnal_unit_allocation.cpp
r75 r76 153 153 } 154 154 155 _function_execute = new function_execute_t * [MAX_OPERATION];155 _function_execute = new function_execute_t ** [MAX_TYPE]; 156 156 157 157 // Initialisation 158 for (uint32_t i=0; i<MAX_OPERATION; i++) 159 _function_execute [i] = &(operation_unimplemented); 160 161 if (_param->_timing[OPERATION_ALU_L_ADD ]._latence > 0) _function_execute[OPERATION_ALU_L_ADD ] = &(operation_l_add ); 162 if (_param->_timing[OPERATION_ALU_L_ADDC ]._latence > 0) _function_execute[OPERATION_ALU_L_ADDC ] = &(operation_l_addc ); 163 if (_param->_timing[OPERATION_ALU_L_SUB ]._latence > 0) _function_execute[OPERATION_ALU_L_SUB ] = &(operation_l_sub ); 164 // if (_param->_timing[OPERATION_ALU_L_MUL ]._latence > 0) _function_execute[OPERATION_ALU_L_MUL ] = &(operation_l_mul ); 165 // if (_param->_timing[OPERATION_ALU_L_MULU ]._latence > 0) _function_execute[OPERATION_ALU_L_MULU ] = &(operation_l_mulu ); 166 // if (_param->_timing[OPERATION_ALU_L_DIV ]._latence > 0) _function_execute[OPERATION_ALU_L_DIV ] = &(operation_l_div ); 167 // if (_param->_timing[OPERATION_ALU_L_DIVU ]._latence > 0) _function_execute[OPERATION_ALU_L_DIVU ] = &(operation_l_divu ); 168 if (_param->_timing[OPERATION_ALU_L_AND ]._latence > 0) _function_execute[OPERATION_ALU_L_AND ] = &(operation_l_and ); 169 if (_param->_timing[OPERATION_ALU_L_OR ]._latence > 0) _function_execute[OPERATION_ALU_L_OR ] = &(operation_l_or ); 170 if (_param->_timing[OPERATION_ALU_L_XOR ]._latence > 0) _function_execute[OPERATION_ALU_L_XOR ] = &(operation_l_xor ); 171 if (_param->_timing[OPERATION_ALU_L_TEST_F ]._latence > 0) _function_execute[OPERATION_ALU_L_TEST_F ] = &(operation_l_test_f ); 172 if (_param->_timing[OPERATION_ALU_L_TEST_NF ]._latence > 0) _function_execute[OPERATION_ALU_L_TEST_NF ] = &(operation_l_test_nf ); 173 if (_param->_timing[OPERATION_ALU_L_JALR ]._latence > 0) _function_execute[OPERATION_ALU_L_JALR ] = &(operation_l_jalr ); 174 if (_param->_timing[OPERATION_ALU_L_SLL ]._latence > 0) _function_execute[OPERATION_ALU_L_SLL ] = &(operation_l_sll ); 175 if (_param->_timing[OPERATION_ALU_L_SRA ]._latence > 0) _function_execute[OPERATION_ALU_L_SRA ] = &(operation_l_sra ); 176 if (_param->_timing[OPERATION_ALU_L_SRL ]._latence > 0) _function_execute[OPERATION_ALU_L_SRL ] = &(operation_l_srl ); 177 if (_param->_timing[OPERATION_ALU_L_ROR ]._latence > 0) _function_execute[OPERATION_ALU_L_ROR ] = &(operation_l_ror ); 178 if (_param->_timing[OPERATION_ALU_L_MOVHI ]._latence > 0) _function_execute[OPERATION_ALU_L_MOVHI ] = &(operation_l_movhi ); 179 if (_param->_timing[OPERATION_ALU_L_EXTEND_S]._latence > 0) _function_execute[OPERATION_ALU_L_EXTEND_S] = &(operation_l_extend_s); 180 if (_param->_timing[OPERATION_ALU_L_EXTEND_Z]._latence > 0) _function_execute[OPERATION_ALU_L_EXTEND_Z] = &(operation_l_extend_z); 181 if (_param->_timing[OPERATION_ALU_L_CMOV ]._latence > 0) _function_execute[OPERATION_ALU_L_CMOV ] = &(operation_l_cmov ); 182 if (_param->_timing[OPERATION_ALU_L_FF1 ]._latence > 0) _function_execute[OPERATION_ALU_L_FF1 ] = &(operation_l_ff1 ); 183 if (_param->_timing[OPERATION_ALU_L_FL1 ]._latence > 0) _function_execute[OPERATION_ALU_L_FL1 ] = &(operation_l_fl1 ); 184 if (_param->_timing[OPERATION_ALU_L_MFSPR ]._latence > 0) _function_execute[OPERATION_ALU_L_MFSPR ] = &(operation_l_mfspr ); 185 if (_param->_timing[OPERATION_ALU_L_MTSPR ]._latence > 0) _function_execute[OPERATION_ALU_L_MTSPR ] = &(operation_l_mtspr ); 186 if (_param->_timing[OPERATION_ALU_L_SFEQ ]._latence > 0) _function_execute[OPERATION_ALU_L_SFEQ ] = &(operation_l_sfeq ); 187 if (_param->_timing[OPERATION_ALU_L_SFNE ]._latence > 0) _function_execute[OPERATION_ALU_L_SFNE ] = &(operation_l_sfne ); 188 if (_param->_timing[OPERATION_ALU_L_SFGEU ]._latence > 0) _function_execute[OPERATION_ALU_L_SFGEU ] = &(operation_l_sfgeu ); 189 if (_param->_timing[OPERATION_ALU_L_SFGTU ]._latence > 0) _function_execute[OPERATION_ALU_L_SFGTU ] = &(operation_l_sfgtu ); 190 if (_param->_timing[OPERATION_ALU_L_SFLEU ]._latence > 0) _function_execute[OPERATION_ALU_L_SFLEU ] = &(operation_l_sfleu ); 191 if (_param->_timing[OPERATION_ALU_L_SFLTU ]._latence > 0) _function_execute[OPERATION_ALU_L_SFLTU ] = &(operation_l_sfltu ); 192 if (_param->_timing[OPERATION_ALU_L_SFGES ]._latence > 0) _function_execute[OPERATION_ALU_L_SFGES ] = &(operation_l_sfges ); 193 if (_param->_timing[OPERATION_ALU_L_SFGTS ]._latence > 0) _function_execute[OPERATION_ALU_L_SFGTS ] = &(operation_l_sfgts ); 194 if (_param->_timing[OPERATION_ALU_L_SFLES ]._latence > 0) _function_execute[OPERATION_ALU_L_SFLES ] = &(operation_l_sfles ); 195 if (_param->_timing[OPERATION_ALU_L_SFLTS ]._latence > 0) _function_execute[OPERATION_ALU_L_SFLTS ] = &(operation_l_sflts ); 196 if (_param->_timing[OPERATION_ALU_L_MAC ]._latence > 0) _function_execute[OPERATION_ALU_L_MAC ] = &(operation_l_mac ); 197 if (_param->_timing[OPERATION_ALU_L_MACRC ]._latence > 0) _function_execute[OPERATION_ALU_L_MACRC ] = &(operation_l_macrc ); 198 if (_param->_timing[OPERATION_ALU_L_MSB ]._latence > 0) _function_execute[OPERATION_ALU_L_MSB ] = &(operation_l_msb ); 158 for (uint32_t i=0; i<MAX_TYPE; i++) 159 { 160 _function_execute [i] = new function_execute_t * [MAX_OPERATION]; 161 162 for (uint32_t j=0; j<MAX_OPERATION; j++) 163 _function_execute [i][j] = &(operation_unimplemented); 164 } 165 166 if (_param->_timing[TYPE_ALU ][OPERATION_ALU_L_ADD ]._latence > 0) 167 _function_execute[TYPE_ALU ][OPERATION_ALU_L_ADD ] = &(operation_l_add ); 168 if (_param->_timing[TYPE_ALU ][OPERATION_ALU_L_ADDC ]._latence > 0) 169 _function_execute[TYPE_ALU ][OPERATION_ALU_L_ADDC ] = &(operation_l_addc ); 170 // if (_param->_timing[TYPE_ALU ][OPERATION_ALU_L_SUB ]._latence > 0) 171 // _function_execute[TYPE_ALU ][OPERATION_ALU_L_SUB ] = &(operation_l_sub ); 172 if (_param->_timing[TYPE_ALU ][OPERATION_ALU_L_AND ]._latence > 0) 173 _function_execute[TYPE_ALU ][OPERATION_ALU_L_AND ] = &(operation_l_and ); 174 if (_param->_timing[TYPE_ALU ][OPERATION_ALU_L_OR ]._latence > 0) 175 _function_execute[TYPE_ALU ][OPERATION_ALU_L_OR ] = &(operation_l_or ); 176 if (_param->_timing[TYPE_ALU ][OPERATION_ALU_L_XOR ]._latence > 0) 177 _function_execute[TYPE_ALU ][OPERATION_ALU_L_XOR ] = &(operation_l_xor ); 178 if (_param->_timing[TYPE_SHIFT ][OPERATION_SHIFT_L_SLL ]._latence > 0) 179 _function_execute[TYPE_SHIFT ][OPERATION_SHIFT_L_SLL ] = &(operation_l_sll ); 180 if (_param->_timing[TYPE_SHIFT ][OPERATION_SHIFT_L_SRA ]._latence > 0) 181 _function_execute[TYPE_SHIFT ][OPERATION_SHIFT_L_SRA ] = &(operation_l_sra ); 182 if (_param->_timing[TYPE_SHIFT ][OPERATION_SHIFT_L_SRL ]._latence > 0) 183 _function_execute[TYPE_SHIFT ][OPERATION_SHIFT_L_SRL ] = &(operation_l_srl ); 184 if (_param->_timing[TYPE_SHIFT ][OPERATION_SHIFT_L_ROR ]._latence > 0) 185 _function_execute[TYPE_SHIFT ][OPERATION_SHIFT_L_ROR ] = &(operation_l_ror ); 186 if (_param->_timing[TYPE_MOVE ][OPERATION_MOVE_L_MOVHI ]._latence > 0) 187 _function_execute[TYPE_MOVE ][OPERATION_MOVE_L_MOVHI ] = &(operation_l_movhi ); 188 if (_param->_timing[TYPE_MOVE ][OPERATION_MOVE_L_CMOV ]._latence > 0) 189 _function_execute[TYPE_MOVE ][OPERATION_MOVE_L_CMOV ] = &(operation_l_cmov ); 190 if (_param->_timing[TYPE_TEST ][OPERATION_TEST_L_SFGEU ]._latence > 0) 191 _function_execute[TYPE_TEST ][OPERATION_TEST_L_SFGEU ] = &(operation_l_sfgeu ); 192 if (_param->_timing[TYPE_TEST ][OPERATION_TEST_L_SFGTU ]._latence > 0) 193 _function_execute[TYPE_TEST ][OPERATION_TEST_L_SFGTU ] = &(operation_l_sfgtu ); 194 if (_param->_timing[TYPE_TEST ][OPERATION_TEST_L_SFLEU ]._latence > 0) 195 _function_execute[TYPE_TEST ][OPERATION_TEST_L_SFLEU ] = &(operation_l_sfleu ); 196 if (_param->_timing[TYPE_TEST ][OPERATION_TEST_L_SFLTU ]._latence > 0) 197 _function_execute[TYPE_TEST ][OPERATION_TEST_L_SFLTU ] = &(operation_l_sfltu ); 198 if (_param->_timing[TYPE_TEST ][OPERATION_TEST_L_SFGES ]._latence > 0) 199 _function_execute[TYPE_TEST ][OPERATION_TEST_L_SFGES ] = &(operation_l_sfges ); 200 if (_param->_timing[TYPE_TEST ][OPERATION_TEST_L_SFGTS ]._latence > 0) 201 _function_execute[TYPE_TEST ][OPERATION_TEST_L_SFGTS ] = &(operation_l_sfgts ); 202 if (_param->_timing[TYPE_TEST ][OPERATION_TEST_L_SFLES ]._latence > 0) 203 _function_execute[TYPE_TEST ][OPERATION_TEST_L_SFLES ] = &(operation_l_sfles ); 204 if (_param->_timing[TYPE_TEST ][OPERATION_TEST_L_SFLTS ]._latence > 0) 205 _function_execute[TYPE_TEST ][OPERATION_TEST_L_SFLTS ] = &(operation_l_sflts ); 206 if (_param->_timing[TYPE_TEST ][OPERATION_TEST_L_SFEQ ]._latence > 0) 207 _function_execute[TYPE_TEST ][OPERATION_TEST_L_SFEQ ] = &(operation_l_sfeq ); 208 if (_param->_timing[TYPE_TEST ][OPERATION_TEST_L_SFNE ]._latence > 0) 209 _function_execute[TYPE_TEST ][OPERATION_TEST_L_SFNE ] = &(operation_l_sfne ); 210 // if (_param->_timing[TYPE_MUL_DIV][OPERATION_MUL_DIV_L_MUL ]._latence > 0) 211 // _function_execute[TYPE_MUL_DIV][OPERATION_MUL_DIV_L_MUL ] = &(operation_l_mul ); 212 // if (_param->_timing[TYPE_MUL_DIV][OPERATION_MUL_DIV_L_MULU ]._latence > 0) 213 // _function_execute[TYPE_MUL_DIV][OPERATION_MUL_DIV_L_MULU ] = &(operation_l_mulu ); 214 // if (_param->_timing[TYPE_MUL_DIV][OPERATION_MUL_DIV_L_DIV ]._latence > 0) 215 // _function_execute[TYPE_MUL_DIV][OPERATION_MUL_DIV_L_DIV ] = &(operation_l_div ); 216 // if (_param->_timing[TYPE_MUL_DIV][OPERATION_MUL_DIV_L_DIVU ]._latence > 0) 217 // _function_execute[TYPE_MUL_DIV][OPERATION_MUL_DIV_L_DIVU ] = &(operation_l_divu ); 218 if (_param->_timing[TYPE_EXTEND ][OPERATION_EXTEND_L_EXTEND_S ]._latence > 0) 219 _function_execute[TYPE_EXTEND ][OPERATION_EXTEND_L_EXTEND_S ] = &(operation_l_extend_s); 220 if (_param->_timing[TYPE_EXTEND ][OPERATION_EXTEND_L_EXTEND_Z ]._latence > 0) 221 _function_execute[TYPE_EXTEND ][OPERATION_EXTEND_L_EXTEND_Z ] = &(operation_l_extend_z); 222 if (_param->_timing[TYPE_FIND ][OPERATION_FIND_L_FF1 ]._latence > 0) 223 _function_execute[TYPE_FIND ][OPERATION_FIND_L_FF1 ] = &(operation_l_ff1 ); 224 if (_param->_timing[TYPE_FIND ][OPERATION_FIND_L_FL1 ]._latence > 0) 225 _function_execute[TYPE_FIND ][OPERATION_FIND_L_FL1 ] = &(operation_l_fl1 ); 226 if (_param->_timing[TYPE_SPECIAL][OPERATION_SPECIAL_L_MFSPR ]._latence > 0) 227 _function_execute[TYPE_SPECIAL][OPERATION_SPECIAL_L_MFSPR ] = &(operation_l_mfspr ); 228 if (_param->_timing[TYPE_SPECIAL][OPERATION_SPECIAL_L_MTSPR ]._latence > 0) 229 _function_execute[TYPE_SPECIAL][OPERATION_SPECIAL_L_MTSPR ] = &(operation_l_mtspr ); 230 if (_param->_timing[TYPE_SPECIAL][OPERATION_SPECIAL_L_MAC ]._latence > 0) 231 _function_execute[TYPE_SPECIAL][OPERATION_SPECIAL_L_MAC ] = &(operation_l_mac ); 232 if (_param->_timing[TYPE_SPECIAL][OPERATION_SPECIAL_L_MACRC ]._latence > 0) 233 _function_execute[TYPE_SPECIAL][OPERATION_SPECIAL_L_MACRC ] = &(operation_l_macrc ); 234 if (_param->_timing[TYPE_SPECIAL][OPERATION_SPECIAL_L_MSB ]._latence > 0) 235 _function_execute[TYPE_SPECIAL][OPERATION_SPECIAL_L_MSB ] = &(operation_l_msb ); 236 if (_param->_timing[TYPE_BRANCH ][OPERATION_BRANCH_L_TEST_F ]._latence > 0) 237 _function_execute[TYPE_BRANCH ][OPERATION_BRANCH_L_TEST_F ] = &(operation_l_test_f ); 238 if (_param->_timing[TYPE_BRANCH ][OPERATION_BRANCH_L_TEST_NF ]._latence > 0) 239 _function_execute[TYPE_BRANCH ][OPERATION_BRANCH_L_TEST_NF ] = &(operation_l_test_nf ); 240 if (_param->_timing[TYPE_BRANCH ][OPERATION_BRANCH_L_JALR ]._latence > 0) 241 _function_execute[TYPE_BRANCH ][OPERATION_BRANCH_L_JALR ] = &(operation_l_jalr ); 242 199 243 200 244
Note: See TracChangeset
for help on using the changeset viewer.