Changeset 107 for trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Direction_Glue/src/Direction_Glue_genMealy_predict.cpp
- Timestamp:
- Feb 11, 2009, 12:03:25 AM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/Direction/Direction_Glue/src/Direction_Glue_genMealy_predict.cpp
r81 r107 23 23 void Direction_Glue::genMealy_predict (void) 24 24 { 25 log_printf(FUNC,Direction_Glue,FUNCTION,"Begin"); 25 log_begin(Direction_Glue,FUNCTION); 26 log_function(Direction_Glue,FUNCTION,_name.c_str()); 26 27 27 28 // constant direction : never / always 28 switch (_param->_predictor_scheme)29 for (uint32_t i=0; i<_param->_nb_inst_predict; i++) 29 30 { 30 case PREDICTOR_STATIC : 31 { 32 for (uint32_t i=0; i<_param->_nb_inst_predict; i++) 33 PORT_WRITE(out_PREDICT_DIRECTION [i], PORT_READ(in_PREDICT_STATIC [i])); 34 35 break; 36 } 37 case PREDICTOR_LAST_TAKE : 38 { 39 for (uint32_t i=0; i<_param->_nb_inst_predict; i++) 40 PORT_WRITE(out_PREDICT_DIRECTION [i], PORT_READ(in_PREDICT_LAST_TAKE [i])); 31 log_printf(TRACE,Direction_Glue,FUNCTION," * PREDICT [%d]",i); 41 32 42 break; 43 } 44 case PREDICTOR_COUNTER : 45 case PREDICTOR_LOCAL : 46 case PREDICTOR_GLOBAL : 47 case PREDICTOR_META : 48 case PREDICTOR_CUSTOM : 49 { 50 for (uint32_t i=0; i<_param->_nb_inst_predict; i++) 51 { 52 // not use : 53 // in_PREDICT_LAST_TAKE 54 // in_PREDICT_STATIC 33 Tcontrol_t direction; 34 35 switch (_param->_predictor_scheme) 36 { 37 // defined as constant in Direction_Glue.cpp 38 // case PREDICTOR_NEVER_TAKE : 39 // { 40 // direction = 0; 41 // break; 42 // } 43 // case PREDICTOR_ALWAYS_TAKE : 44 // { 45 // direction = 1; 46 // break; 47 // } 48 case PREDICTOR_STATIC : 49 { 50 direction = PORT_READ(in_PREDICT_STATIC [i]); 51 break; 52 } 53 case PREDICTOR_LAST_TAKE : 54 { 55 direction = PORT_READ(in_PREDICT_LAST_TAKE [i]); 56 break; 57 } 58 case PREDICTOR_COUNTER : 59 case PREDICTOR_LOCAL : 60 case PREDICTOR_GLOBAL : 61 case PREDICTOR_META : 62 case PREDICTOR_CUSTOM : 63 { 64 // not use : 65 // in_PREDICT_LAST_TAKE 66 // in_PREDICT_STATIC 67 68 direction = PORT_READ(in_PREDICT_PREDICTOR_DIRECTION [i]); 55 69 56 70 PORT_WRITE(out_PREDICT_PREDICTOR_VAL [i], PORT_READ(in_PREDICT_VAL [i])); … … 58 72 PORT_WRITE(out_PREDICT_PREDICTOR_ADDRESS_SRC [i], PORT_READ(in_PREDICT_ADDRESS_SRC [i])); 59 73 PORT_WRITE(out_PREDICT_HISTORY [i], PORT_READ(in_PREDICT_PREDICTOR_HISTORY [i])); 60 PORT_WRITE(out_PREDICT_DIRECTION [i], PORT_READ(in_PREDICT_PREDICTOR_DIRECTION [i])); 61 } 74 75 break; 76 } 77 default : 78 { 79 ERRORMORPHEO(FUNCTION,"No valid predictor scheme"); 80 break; 81 } 82 } 83 84 log_printf(TRACE,Direction_Glue,FUNCTION," * direction : %d",direction); 62 85 63 break; 64 } 65 default : 66 { 67 ERRORMORPHEO(FUNCTION,"No valid predictor scheme"); 68 break; 69 } 86 PORT_WRITE(out_PREDICT_DIRECTION [i], direction); 70 87 } 71 88 72 73 74 log_printf(FUNC,Direction_Glue,FUNCTION,"End"); 89 log_end(Direction_Glue,FUNCTION); 75 90 }; 76 91
Note: See TracChangeset
for help on using the changeset viewer.