/*
 * $Id: Rename_select_deallocation.cpp 88 2008-12-10 18:31:39Z rosiere $
 *
 * [ Description ]
 * 
 */

#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Rename_select/include/Rename_select.h"

namespace morpheo                    {
namespace behavioural {
namespace core {
namespace multi_ooo_engine {
namespace ooo_engine {
namespace rename_unit {
namespace rename_select {


#undef  FUNCTION
#define FUNCTION "Rename_select::deallocation"
  void Rename_select::deallocation (void)
  {
    log_printf(FUNC,Rename_select,FUNCTION,"Begin");

    if (usage_is_set(_usage,USE_SYSTEMC))
      {
	delete    in_CLOCK ;
	delete    in_NRESET;

	delete []  in_RENAME_IN_VAL           ;
	delete [] out_RENAME_IN_ACK           ;
	if (_param->_have_port_front_end_id)
	delete []  in_RENAME_IN_FRONT_END_ID  ;
	if (_param->_have_port_context_id)
	delete []  in_RENAME_IN_CONTEXT_ID    ;
	if (_param->_have_port_depth)
	delete []  in_RENAME_IN_DEPTH         ;
	delete []  in_RENAME_IN_TYPE          ;
	delete []  in_RENAME_IN_OPERATION     ;
	delete []  in_RENAME_IN_NO_EXECUTE    ;
	delete []  in_RENAME_IN_IS_DELAY_SLOT ;
	delete []  in_RENAME_IN_ADDRESS       ;
	delete []  in_RENAME_IN_HAS_IMMEDIAT  ;
	delete []  in_RENAME_IN_IMMEDIAT      ;
	delete []  in_RENAME_IN_READ_RA       ;
	delete []  in_RENAME_IN_NUM_REG_RA    ;
	delete []  in_RENAME_IN_READ_RB       ;
	delete []  in_RENAME_IN_NUM_REG_RB    ;
	delete []  in_RENAME_IN_READ_RC       ;
	delete []  in_RENAME_IN_NUM_REG_RC    ;
	delete []  in_RENAME_IN_WRITE_RD      ;
	delete []  in_RENAME_IN_NUM_REG_RD    ;
	delete []  in_RENAME_IN_WRITE_RE      ;
	delete []  in_RENAME_IN_NUM_REG_RE    ;
	delete []  in_RENAME_IN_EXCEPTION_USE ;
	delete []  in_RENAME_IN_EXCEPTION     ;

	delete [] out_RENAME_OUT_VAL          ;
	delete []  in_RENAME_OUT_ACK          ;
	if (_param->_have_port_front_end_id)
	delete [] out_RENAME_OUT_FRONT_END_ID ;
	if (_param->_have_port_context_id)
	delete [] out_RENAME_OUT_CONTEXT_ID   ;
	if (_param->_have_port_depth)
	delete [] out_RENAME_OUT_DEPTH        ;
	delete [] out_RENAME_OUT_TYPE         ;
	delete [] out_RENAME_OUT_OPERATION    ;
	delete [] out_RENAME_OUT_ADDRESS      ;
	delete [] out_RENAME_OUT_HAS_IMMEDIAT ;
	delete [] out_RENAME_OUT_IMMEDIAT     ;
	delete [] out_RENAME_OUT_READ_RA      ;
	delete [] out_RENAME_OUT_NUM_REG_RA   ;
	delete [] out_RENAME_OUT_READ_RB      ;
	delete [] out_RENAME_OUT_NUM_REG_RB   ;
	delete [] out_RENAME_OUT_READ_RC      ;
	delete [] out_RENAME_OUT_NUM_REG_RC   ;
	delete [] out_RENAME_OUT_WRITE_RD     ;
	delete [] out_RENAME_OUT_NUM_REG_RD   ;
	delete [] out_RENAME_OUT_WRITE_RE     ;
	delete [] out_RENAME_OUT_NUM_REG_RE   ;
	delete [] out_RENAME_OUT_EXCEPTION_USE;
      }
    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    
    delete _priority;
    delete _component;

    log_printf(FUNC,Rename_select,FUNCTION,"End");
  };

}; // end namespace rename_select
}; // end namespace rename_unit
}; // end namespace ooo_engine
}; // end namespace multi_ooo_engine
}; // end namespace core

}; // end namespace behavioural
}; // end namespace morpheo              
