source: 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 @ 81

Last change on this file since 81 was 81, checked in by rosiere, 16 years ago
  • Finish Environment (and test)
  • Continue predictor_unit
  • Add external tools
  • svn keyword "Id" set
  • Property svn:keywords set to Id
File size: 2.1 KB
Line 
1#ifdef SYSTEMC
2/*
3 * $Id: Stat_List_unit_genMoore.cpp 81 2008-04-15 18:40:01Z rosiere $
4 *
5 * [ Description ]
6 *
7 */
8
9#include "Behavioural/Core/Multi_OOO_Engine/OOO_Engine/Rename_unit/Register_translation_unit/Stat_List_unit/include/Stat_List_unit.h"
10
11namespace morpheo                    {
12namespace behavioural {
13namespace core {
14namespace multi_ooo_engine {
15namespace ooo_engine {
16namespace rename_unit {
17namespace register_translation_unit {
18namespace stat_list_unit {
19
20
21#undef  FUNCTION
22#define FUNCTION "Stat_List_unit::genMoore"
23  void Stat_List_unit::genMoore (void)
24  {
25    log_printf(FUNC,Stat_List_unit,FUNCTION,"Begin");
26
27    uint32_t gpr_ptr = internal_GPR_PTR_FREE;
28    uint32_t spr_ptr = internal_SPR_PTR_FREE;
29
30    for (uint32_t i=0; i<_param->_nb_reg_free; i++)
31      {
32        uint32_t offset  = i*_param->_nb_bank_by_port_free;
33
34        // PUSH_GPR
35        {
36          uint32_t bank_gpr;
37         
38          for (bank_gpr=offset; bank_gpr<offset+_param->_nb_bank_by_port_free; bank_gpr++)
39            if (gpr_stat_list[bank_gpr][gpr_ptr].can_free())
40              break;
41         
42          bool val = (bank_gpr != offset+_param->_nb_bank_by_port_free);
43         
44          internal_PUSH_GPR_VAL      [i] = val;
45          internal_PUSH_GPR_NUM_BANK [i] = bank_gpr;
46
47          PORT_WRITE(out_PUSH_GPR_VAL [i], val);
48          if (val)
49            PORT_WRITE(out_PUSH_GPR_NUM_REG[i], ((bank_gpr<<_param->_shift_gpr) | gpr_ptr));
50        }
51
52        // PUSH_SPR
53        {
54          uint32_t bank_spr;
55         
56          for (bank_spr=offset; bank_spr<offset+_param->_nb_bank_by_port_free; bank_spr++)
57            if (spr_stat_list[bank_spr][spr_ptr].can_free())
58              break;
59
60          bool val = (bank_spr != (offset+_param->_nb_bank_by_port_free));
61         
62          internal_PUSH_SPR_VAL      [i] = val;
63          internal_PUSH_SPR_NUM_BANK [i] = bank_spr;
64
65          PORT_WRITE(out_PUSH_SPR_VAL [i], val);
66          if (val)
67            PORT_WRITE(out_PUSH_SPR_NUM_REG[i], ((bank_spr<<_param->_shift_spr) | spr_ptr));
68        }
69      }
70   
71    log_printf(FUNC,Stat_List_unit,FUNCTION,"End");
72  };
73
74}; // end namespace stat_list_unit
75}; // end namespace register_translation_unit
76}; // end namespace rename_unit
77}; // end namespace ooo_engine
78}; // end namespace multi_ooo_engine
79}; // end namespace core
80
81}; // end namespace behavioural
82}; // end namespace morpheo             
83#endif
Note: See TracBrowser for help on using the repository browser.