/* * $Id: Parameters_print.cpp 146 2011-02-01 20:57:54Z rosiere $ * * [ Description ] * */ #include "Behavioural/Core/Multi_Front_end/Front_end/Prediction_unit/include/Parameters.h" #include "Behavioural/include/XML.h" namespace morpheo { namespace behavioural { namespace core { namespace multi_front_end { namespace front_end { namespace prediction_unit { #undef FUNCTION #define FUNCTION "Prediction_unit::print" std::string Parameters::print (uint32_t depth) { log_printf(FUNC,Prediction_unit,FUNCTION,"Begin"); XML xml ("prediction_unit"); xml.balise_open("prediction_unit"); xml.singleton_begin("nb_context "); xml.attribut("value",toString(_nb_context )); xml.singleton_end(); xml.singleton_begin("nb_decod_unit "); xml.attribut("value",toString(_nb_decod_unit )); xml.singleton_end(); xml.singleton_begin("size_address "); xml.attribut("value",toString(_size_address )); xml.singleton_end(); xml.singleton_begin("nb_inst_branch_predict "); xml.attribut("value",toString(_nb_inst_branch_predict )); xml.singleton_end(); xml.singleton_begin("nb_inst_branch_decod "); xml.attribut("value",toString(_nb_inst_branch_decod )); xml.singleton_end(); xml.singleton_begin("nb_inst_branch_update "); xml.attribut("value",toString(_nb_inst_branch_update )); xml.singleton_end(); xml.singleton_begin("nb_inst_branch_complete "); xml.attribut("value",toString(_nb_inst_branch_complete )); xml.singleton_end(); xml.singleton_begin("btb_size_queue "); xml.attribut("value",toString(_btb_size_queue )); xml.singleton_end(); xml.singleton_begin("btb_associativity "); xml.attribut("value",toString(_btb_associativity )); xml.singleton_end(); xml.singleton_begin("btb_size_counter "); xml.attribut("value",toString(_btb_size_counter )); xml.singleton_end(); xml.singleton_begin("btb_victim_scheme "); xml.attribut("value",toString(_btb_victim_scheme )); xml.singleton_end(); xml.singleton_begin("dir_predictor_scheme "); xml.attribut("value",toString(_dir_predictor_scheme )); xml.singleton_end(); xml.comment("predictor_scheme : "); xml.comment(" * predictor_never_take : don't use \"predictor_{0,1,2}\" parameters."); xml.comment(" * predictor_always_take : don't use \"predictor_{0,1,2}\" parameters."); xml.comment(" * predictor_static : don't use \"predictor_{0,1,2}\" parameters."); xml.comment(" * predictor_last_take : don't use \"predictor_{0,1,2}\" parameters."); xml.comment(" * predictor_counter : use \"predictor_0\" parameters."); xml.comment(" * predictor_local : use \"predictor_0\" parameters."); xml.comment(" * predictor_global : use \"predictor_0\" parameters."); xml.comment(" * predictor_meta : use \"predictor_{0,1,2}\" parameters."); xml.comment(" * predictor_custom : use \"predictor_{0,1,2}\" parameters."); for (uint32_t i=0; i<3; i++) { xml.singleton_begin("dir_predictor_"+toString(i)+"_have_bht "); xml.attribut("value",toString(_dir_have_bht [i])); xml.singleton_end(); xml.singleton_begin("dir_predictor_"+toString(i)+"_bht_size_shifter "); xml.attribut("value",toString(_dir_bht_size_shifter [i])); xml.singleton_end(); xml.singleton_begin("dir_predictor_"+toString(i)+"_bht_nb_shifter "); xml.attribut("value",toString(_dir_bht_nb_shifter [i])); xml.singleton_end(); xml.singleton_begin("dir_predictor_"+toString(i)+"_have_pht "); xml.attribut("value",toString(_dir_have_pht [i])); xml.singleton_end(); xml.singleton_begin("dir_predictor_"+toString(i)+"_pht_size_counter "); xml.attribut("value",toString(_dir_pht_size_counter [i])); xml.singleton_end(); xml.singleton_begin("dir_predictor_"+toString(i)+"_pht_nb_counter "); xml.attribut("value",toString(_dir_pht_nb_counter [i])); xml.singleton_end(); xml.singleton_begin("dir_predictor_"+toString(i)+"_pht_size_address_share"); xml.attribut("value",toString(_dir_pht_size_address_share [i])); xml.singleton_end(); xml.singleton_begin("dir_predictor_"+toString(i)+"_pht_scheme "); xml.attribut("value",toString(_dir_pht_scheme [i])); xml.singleton_end(); } for (uint32_t i=0;i<_nb_context; i++) { xml. balise_open_begin("component"); xml. attribut("type","context"); xml. attribut("id" ,toString(i)); xml. balise_open_end(); xml. singleton_begin("nb_instruction "); xml.attribut("value",toString(_nb_instruction [i])); xml.singleton_end(); xml. singleton_begin("ras_size_queue "); xml.attribut("value",toString(_ras_size_queue [i])); xml.singleton_end(); xml. singleton_begin("upt_size_queue "); xml.attribut("value",toString(_upt_size_queue [i])); xml.singleton_end(); xml. singleton_begin("ufpt_size_queue "); xml.attribut("value",toString(_ufpt_size_queue [i])); xml.singleton_end(); xml. balise_close(); } for (uint32_t i=0;i<_nb_decod_unit; i++) { xml. balise_open_begin("component"); xml. attribut("type","decod_unit"); xml. attribut("id" ,toString(i)); xml. balise_open_end(); xml. singleton_begin("nb_inst_decod "); xml.attribut("value",toString(_nb_inst_decod [i])); xml.singleton_end(); xml. balise_close(); } xml.balise_close(); log_printf(FUNC,Prediction_unit,FUNCTION,"End"); return xml.get_body(depth); }; #undef FUNCTION #define FUNCTION "Prediction_unit::operator<<" std::ostream& operator<< (std::ostream& output_stream , morpheo::behavioural::core::multi_front_end::front_end::prediction_unit::Parameters & x) { log_printf(FUNC,Prediction_unit,FUNCTION,"Begin"); output_stream << x.print(0); log_printf(FUNC,Prediction_unit,FUNCTION,"End"); return output_stream; }; }; // end namespace prediction_unit }; // end namespace front_end }; // end namespace multi_front_end }; // end namespace core }; // end namespace behavioural }; // end namespace morpheo