source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/src/Decod_allocation.cpp @ 101

Last change on this file since 101 was 101, checked in by rosiere, 15 years ago

1) Add soc test
2) fix bug (Pc management, Decod and execute, Update prediction ...)

  • Property svn:keywords set to Id
File size: 47.8 KB
Line 
1/*
2 * $id: Decod_allocation.cpp 86 2008-05-14 17:08:56Z rosiere $
3 *
4 * [ Description ]
5 *
6 */
7
8#include "Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/include/Decod.h"
9#include "Behavioural/include/Allocation.h"
10
11namespace morpheo                    {
12namespace behavioural {
13namespace core {
14namespace multi_front_end {
15namespace front_end {
16namespace decod_unit {
17namespace decod {
18
19
20
21#undef  FUNCTION
22#define FUNCTION "Decod::allocation"
23  void Decod::allocation (
24#ifdef STATISTICS
25                               morpheo::behavioural::Parameters_Statistics * param_statistics
26#else
27                               void
28#endif
29                               )
30  {
31    log_printf(FUNC,Decod,FUNCTION,"Begin");
32
33    _component   = new Component (_usage);
34
35    Entity * entity = _component->set_entity (_name       
36                                              ,"Decod"
37#ifdef POSITION
38                                              ,COMBINATORY
39#endif
40                                              );
41
42    _interfaces = entity->set_interfaces();
43
44    // ~~~~~[ Interface : "" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
45    {
46      Interface * interface = _interfaces->set_interface(""
47#ifdef POSITION
48                                                         ,IN
49                                                         ,SOUTH,
50                                                         "Generalist interface"
51#endif
52                                                         );
53     
54      in_CLOCK        = interface->set_signal_clk              ("clock" ,1, CLOCK_VHDL_YES);
55      in_NRESET       = interface->set_signal_in  <Tcontrol_t> ("nreset",1, RESET_VHDL_YES);
56    }
57
58    // ~~~~~[ Interface : "ifetch" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
59    {
60      ALLOC2_INTERFACE("ifetch", IN, WEST, "Instruction's bundle", _param->_nb_context, _param->_nb_inst_fetch[it1]);
61
62     
63      _ALLOC2_VALACK_IN ( in_IFETCH_VAL        ,VAL, _param->_nb_context, _param->_nb_inst_fetch[it1]);
64      _ALLOC2_VALACK_OUT(out_IFETCH_ACK        ,ACK, _param->_nb_context, _param->_nb_inst_fetch[it1]);
65      _ALLOC2_SIGNAL_IN ( in_IFETCH_INSTRUCTION,"instruction", Tinstruction_t, _param->_size_instruction,_param->_nb_context, _param->_nb_inst_fetch[it1]);
66    }
67    {
68      ALLOC1_INTERFACE("ifetch", IN, WEST, "Instruction's bundle", _param->_nb_context);
69     
70      ALLOC1_SIGNAL_IN (in_IFETCH_CONTEXT_ID                 ,"context_id"                 ,Tcontext_t         ,_param->_size_context_id      );
71      ALLOC1_SIGNAL_IN (in_IFETCH_ADDRESS                    ,"address"                    ,Tgeneral_address_t ,_param->_size_instruction_address    );
72//    ALLOC1_SIGNAL_IN (in_IFETCH_ADDRESS_NEXT               ,"address_next"               ,Tgeneral_address_t ,_param->_size_instruction_address    );
73      ALLOC1_SIGNAL_IN (in_IFETCH_INST_IFETCH_PTR            ,"inst_ifetch_ptr"            ,Tinst_ifetch_ptr_t ,_param->_size_inst_ifetch_ptr );
74      ALLOC1_SIGNAL_IN (in_IFETCH_BRANCH_STATE               ,"branch_state"               ,Tbranch_state_t    ,_param->_size_branch_state    );
75      ALLOC1_SIGNAL_IN (in_IFETCH_BRANCH_UPDATE_PREDICTION_ID,"branch_update_prediction_id",Tprediction_ptr_t  ,_param->_size_depth           );
76      ALLOC1_SIGNAL_IN (in_IFETCH_EXCEPTION                  ,"exception"                  ,Texception_t       ,_param->_size_exception_ifetch);
77    }
78
79    // ~~~~~[ Interface : "decod" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~           
80    {
81      ALLOC1_INTERFACE("decod", OUT, EAST, "Instructiont decoded", _param->_nb_inst_decod);
82
83      ALLOC1_VALACK_OUT(out_DECOD_VAL          ,VAL);
84      ALLOC1_VALACK_IN ( in_DECOD_ACK          ,ACK);
85      ALLOC1_SIGNAL_OUT(out_DECOD_CONTEXT_ID   ,"context_id"   ,Tcontext_t        ,_param->_size_context_id            );
86      ALLOC1_SIGNAL_OUT(out_DECOD_DEPTH        ,"depth"        ,Tdepth_t          ,_param->_size_depth                 );
87      ALLOC1_SIGNAL_OUT(out_DECOD_TYPE         ,"type"         ,Ttype_t           ,_param->_size_type                  );
88      ALLOC1_SIGNAL_OUT(out_DECOD_OPERATION    ,"operation"    ,Toperation_t      ,_param->_size_operation             );
89      ALLOC1_SIGNAL_OUT(out_DECOD_NO_EXECUTE   ,"no_execute"   ,Tcontrol_t        ,1                                   );
90      ALLOC1_SIGNAL_OUT(out_DECOD_IS_DELAY_SLOT,"is_delay_slot",Tcontrol_t        ,1                                   );
91      ALLOC1_SIGNAL_OUT(out_DECOD_ADDRESS      ,"address"      ,Tgeneral_data_t   ,_param->_size_instruction_address   );
92      ALLOC1_SIGNAL_OUT(out_DECOD_HAS_IMMEDIAT ,"has_immediat" ,Tcontrol_t        ,1                                   );
93      ALLOC1_SIGNAL_OUT(out_DECOD_IMMEDIAT     ,"immediat"     ,Tgeneral_data_t   ,_param->_size_general_data          );
94      ALLOC1_SIGNAL_OUT(out_DECOD_READ_RA      ,"read_ra"      ,Tcontrol_t        ,1                                   );
95      ALLOC1_SIGNAL_OUT(out_DECOD_NUM_REG_RA   ,"num_reg_ra"   ,Tgeneral_address_t,_param->_size_general_register_logic);
96      ALLOC1_SIGNAL_OUT(out_DECOD_READ_RB      ,"read_rb"      ,Tcontrol_t        ,1                                   );
97      ALLOC1_SIGNAL_OUT(out_DECOD_NUM_REG_RB   ,"num_reg_rb"   ,Tgeneral_address_t,_param->_size_general_register_logic);
98      ALLOC1_SIGNAL_OUT(out_DECOD_READ_RC      ,"read_rc"      ,Tcontrol_t        ,1                                   );
99      ALLOC1_SIGNAL_OUT(out_DECOD_NUM_REG_RC   ,"num_reg_rc"   ,Tspecial_address_t,_param->_size_special_register_logic);
100      ALLOC1_SIGNAL_OUT(out_DECOD_WRITE_RD     ,"write_rd"     ,Tcontrol_t        ,1                                   );
101      ALLOC1_SIGNAL_OUT(out_DECOD_NUM_REG_RD   ,"num_reg_rd"   ,Tgeneral_address_t,_param->_size_general_register_logic);
102      ALLOC1_SIGNAL_OUT(out_DECOD_WRITE_RE     ,"write_re"     ,Tcontrol_t        ,1                                   );
103      ALLOC1_SIGNAL_OUT(out_DECOD_NUM_REG_RE   ,"num_reg_re"   ,Tspecial_address_t,_param->_size_special_register_logic);
104      ALLOC1_SIGNAL_OUT(out_DECOD_EXCEPTION_USE,"exception_use",Texception_t      ,_param->_size_exception_use         );
105      ALLOC1_SIGNAL_OUT(out_DECOD_EXCEPTION    ,"exception"    ,Texception_t      ,_param->_size_exception_decod       );
106    }
107
108    // ~~~~~[ Interface : "predict" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
109    {
110      ALLOC1_INTERFACE("predict",OUT,NORTH,"Decod a branch -> inform the branch predictor.",_param->_nb_inst_decod);
111
112      ALLOC1_VALACK_OUT(out_PREDICT_VAL                        ,VAL);
113      ALLOC1_VALACK_IN ( in_PREDICT_ACK                        ,ACK);
114      ALLOC1_SIGNAL_OUT(out_PREDICT_CONTEXT_ID                 ,"context_id"                 ,Tcontext_t         ,_param->_size_context_id      );
115      ALLOC1_SIGNAL_OUT(out_PREDICT_MATCH_INST_IFETCH_PTR      ,"match_inst_ifetch_ptr"      ,Tcontrol_t         ,1                             );
116      ALLOC1_SIGNAL_OUT(out_PREDICT_BRANCH_STATE               ,"branch_state"               ,Tbranch_state_t    ,_param->_size_branch_state    );
117      ALLOC1_SIGNAL_OUT(out_PREDICT_BRANCH_UPDATE_PREDICTION_ID,"branch_update_prediction_id",Tprediction_ptr_t  ,_param->_size_depth           );
118      ALLOC1_SIGNAL_OUT(out_PREDICT_BRANCH_CONDITION           ,"branch_condition"           ,Tbranch_condition_t,_param->_size_branch_condition);
119//    ALLOC1_SIGNAL_OUT(out_PREDICT_BRANCH_STACK_WRITE         ,"branch_stack_write"         ,Tcontrol_t         ,1                             );
120      ALLOC1_SIGNAL_OUT(out_PREDICT_BRANCH_DIRECTION           ,"branch_direction"           ,Tcontrol_t         ,1                             );
121      ALLOC1_SIGNAL_OUT(out_PREDICT_ADDRESS_SRC                ,"address_src"                ,Tgeneral_data_t    ,_param->_size_instruction_address    );
122      ALLOC1_SIGNAL_OUT(out_PREDICT_ADDRESS_DEST               ,"address_dest"               ,Tgeneral_data_t    ,_param->_size_instruction_address    );
123//    ALLOC1_SIGNAL_IN ( in_PREDICT_CAN_CONTINUE               ,"can_continue"               ,Tcontrol_t         ,1                             );
124    }
125   
126    // ~~~~~[ Interface : "context" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
127    {
128      ALLOC1_INTERFACE("context", IN, NORTH, "context's information", _param->_nb_context);
129
130      ALLOC1_SIGNAL_IN (in_CONTEXT_DECOD_ENABLE,"decod_enable",Tcontrol_t,1);
131      ALLOC1_SIGNAL_IN (in_CONTEXT_DEPTH_VAL   ,"depth_val"   ,Tcontrol_t,1);
132      ALLOC1_SIGNAL_IN (in_CONTEXT_DEPTH       ,"depth"       ,Tdepth_t  ,_param->_size_depth);
133    }
134
135    // ~~~~~[ Interface : "context_event" ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~           
136    {
137      ALLOC_INTERFACE("context_event", OUT, NORTH, "context's evenement");
138
139      ALLOC_VALACK_OUT(out_CONTEXT_EVENT_VAL          ,VAL);
140      ALLOC_VALACK_IN ( in_CONTEXT_EVENT_ACK          ,ACK);
141      ALLOC_SIGNAL_OUT(out_CONTEXT_EVENT_CONTEXT_ID   ,"context_id"   ,Tcontext_t     ,_param->_size_context_id  );
142      ALLOC_SIGNAL_OUT(out_CONTEXT_EVENT_DEPTH        ,"depth"        ,Tdepth_t       ,_param->_size_depth       );
143      ALLOC_SIGNAL_OUT(out_CONTEXT_EVENT_TYPE         ,"type"         ,Tevent_type_t  ,_param->_size_event_type  );
144      ALLOC_SIGNAL_OUT(out_CONTEXT_EVENT_IS_DELAY_SLOT,"is_delay_slot",Tcontrol_t     ,1                         );
145      ALLOC_SIGNAL_OUT(out_CONTEXT_EVENT_ADDRESS      ,"address"      ,Tgeneral_data_t,_param->_size_instruction_address);
146      ALLOC_SIGNAL_OUT(out_CONTEXT_EVENT_ADDRESS_EPCR ,"address_epcr" ,Tgeneral_data_t,_param->_size_instruction_address);
147    }
148
149
150    // ~~~~~[ Internal ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
151    if (usage_is_set(_usage,USE_SYSTEMC))
152      {
153    reg_CONTEXT_ADDRESS_PREVIOUS      = new Tgeneral_data_t [_param->_nb_context];
154    reg_CONTEXT_IS_DELAY_SLOT         = new Tcontrol_t      [_param->_nb_context];
155
156    internal_CONTEXT_HAVE_TRANSACTION = new Tcontrol_t      [_param->_nb_context];
157    internal_CONTEXT_ADDRESS_PREVIOUS = new Tgeneral_data_t [_param->_nb_context];
158    internal_CONTEXT_IS_DELAY_SLOT    = new Tcontrol_t      [_param->_nb_context];
159
160#ifdef STATISTICS
161    internal_DECOD_VAL                = new Tcontrol_t      [_param->_nb_inst_decod];
162#endif
163      }
164
165    // ~~~~~[ Component ]~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   
166    _priority = new generic::priority::Priority (_name+"_priority"      ,
167                                                 _param->_priority      ,
168                                                 _param->_load_balancing,
169                                                 _param->_nb_context    ,
170                                                 _param->_nb_inst_fetch ,
171                                                 _param->_nb_context_select);
172
173    const uint32_t nb_opcod_type = 14;
174    const uint32_t tab_opcod_type [] = {MAX_OPCOD_0,
175                                        MAX_OPCOD_1 ,
176                                        MAX_OPCOD_2 ,
177                                        MAX_OPCOD_3 ,
178                                        MAX_OPCOD_4 ,
179                                        MAX_OPCOD_5 ,
180                                        MAX_OPCOD_6 ,
181                                        MAX_OPCOD_7 ,
182                                        MAX_OPCOD_8 ,
183                                        MAX_OPCOD_9 ,
184                                        MAX_OPCOD_10,
185                                        MAX_OPCOD_11,
186                                        MAX_OPCOD_12,
187                                        MAX_OPCOD_13};
188   
189    _function_decod  = new function_decod_t *** [_param->_nb_context];
190    _function_custom = new function_decod_t *** [_param->_nb_context];
191    for (uint32_t i=0; i<_param->_nb_context; i++)
192      {
193        _function_decod  [i] = new function_decod_t ** [nb_opcod_type];
194        _function_custom [i] = new function_decod_t ** [nb_opcod_type];
195        for (uint32_t j=0; j<nb_opcod_type; j++)
196          {
197            _function_decod  [i][j] = new function_decod_t * [tab_opcod_type[j]];
198            _function_custom [i][j] = new function_decod_t * [tab_opcod_type[j]];
199            for (uint32_t k=0; k<tab_opcod_type[j]; k++)
200              {
201                _function_decod  [i][j][k] = &(instruction_illegal);
202                _function_custom [i][j][k] = &(instruction_illegal);
203              }
204          }
205
206        // Create indirection
207        _function_decod[i][0][OPCOD_1 ] = &(instruction_decod_type_1 ); // Instruction ORFPX32/64               
208        _function_decod[i][0][OPCOD_2 ] = &(instruction_decod_type_2 ); // Instruction ORVDX64                   
209        _function_decod[i][0][OPCOD_3 ] = &(instruction_decod_type_3 ); // Instructions Register-Register         
210        _function_decod[i][0][OPCOD_4 ] = &(instruction_decod_type_4 ); // Instructions "set flag" with register
211        _function_decod[i][0][OPCOD_5 ] = &(instruction_decod_type_5 ); // Instructions "set flag" with immediat
212        _function_decod[i][0][OPCOD_6 ] = &(instruction_decod_type_6 ); // Instruction Shift/Rotate with immediat
213        _function_decod[i][0][OPCOD_7 ] = &(instruction_decod_type_7 ); // Instructions multiply with HI-LO       
214        _function_decod[i][0][OPCOD_8 ] = &(instruction_decod_type_8 ); // Instructions acces at HI-LO     
215        _function_decod[i][0][OPCOD_9 ] = &(instruction_decod_type_9 ); // Instructions special             
216        _function_decod[i][0][OPCOD_10] = &(instruction_decod_type_10); // Instructions no operation             
217        _function_decod[i][3][OPCOD_11] = &(instruction_decod_type_11); // Instruction Shift/Rotate with register
218        _function_decod[i][3][OPCOD_12] = &(instruction_decod_type_12); // Instructions extend                   
219        _function_decod[i][3][OPCOD_13] = &(instruction_decod_type_13); // Instructions extend (64b)             
220
221        if (_param->_instruction_implemeted[i][INSTRUCTION_L_ADD      ]) _function_decod[i][ 3][OPCOD_L_ADD      ] = &(instruction_l_add            );
222        if (_param->_instruction_implemeted[i][INSTRUCTION_L_ADDC     ]) _function_decod[i][ 3][OPCOD_L_ADDC     ] = &(instruction_l_addc           );
223        if (_param->_instruction_implemeted[i][INSTRUCTION_L_ADDI     ]) _function_decod[i][ 0][OPCOD_L_ADDI     ] = &(instruction_l_addi           );
224        if (_param->_instruction_implemeted[i][INSTRUCTION_L_ADDIC    ]) _function_decod[i][ 0][OPCOD_L_ADDIC    ] = &(instruction_l_addic          );
225        if (_param->_instruction_implemeted[i][INSTRUCTION_L_AND      ]) _function_decod[i][ 3][OPCOD_L_AND      ] = &(instruction_l_and            );
226        if (_param->_instruction_implemeted[i][INSTRUCTION_L_ANDI     ]) _function_decod[i][ 0][OPCOD_L_ANDI     ] = &(instruction_l_andi           );
227        if (_param->_instruction_implemeted[i][INSTRUCTION_L_BF       ]) _function_decod[i][ 0][OPCOD_L_BF       ] = &(instruction_l_bf             );
228        if (_param->_instruction_implemeted[i][INSTRUCTION_L_BNF      ]) _function_decod[i][ 0][OPCOD_L_BNF      ] = &(instruction_l_bnf            );
229        if (_param->_instruction_implemeted[i][INSTRUCTION_L_CMOV     ]) _function_decod[i][ 3][OPCOD_L_CMOV     ] = &(instruction_l_cmov           );
230        if (_param->_instruction_implemeted[i][INSTRUCTION_L_CSYNC    ]) _function_decod[i][ 9][OPCOD_L_CSYNC    ] = &(instruction_l_csync          );
231        if (_param->_instruction_implemeted[i][INSTRUCTION_L_DIV      ]) _function_decod[i][ 3][OPCOD_L_DIV      ] = &(instruction_l_div            );
232        if (_param->_instruction_implemeted[i][INSTRUCTION_L_DIVU     ]) _function_decod[i][ 3][OPCOD_L_DIVU     ] = &(instruction_l_divu           );
233        if (_param->_instruction_implemeted[i][INSTRUCTION_L_EXTBS    ]) _function_decod[i][12][OPCOD_L_EXTBS    ] = &(instruction_l_extbs          );
234        if (_param->_instruction_implemeted[i][INSTRUCTION_L_EXTBZ    ]) _function_decod[i][12][OPCOD_L_EXTBZ    ] = &(instruction_l_extbz          );
235        if (_param->_instruction_implemeted[i][INSTRUCTION_L_EXTHS    ]) _function_decod[i][12][OPCOD_L_EXTHS    ] = &(instruction_l_exths          );
236        if (_param->_instruction_implemeted[i][INSTRUCTION_L_EXTHZ    ]) _function_decod[i][12][OPCOD_L_EXTHZ    ] = &(instruction_l_exthz          );
237        if (_param->_instruction_implemeted[i][INSTRUCTION_L_EXTWS    ]) _function_decod[i][13][OPCOD_L_EXTWS    ] = &(instruction_l_extws          );
238        if (_param->_instruction_implemeted[i][INSTRUCTION_L_EXTWZ    ]) _function_decod[i][13][OPCOD_L_EXTWZ    ] = &(instruction_l_extwz          );
239        if (_param->_instruction_implemeted[i][INSTRUCTION_L_FF1      ]) _function_decod[i][ 3][OPCOD_L_FF1      ] = &(instruction_l_ff1            );
240        if (_param->_instruction_implemeted[i][INSTRUCTION_L_FL1      ]) _function_decod[i][ 3][OPCOD_L_FL1      ] = &(instruction_l_fl1            );
241        if (_param->_instruction_implemeted[i][INSTRUCTION_L_J        ]) _function_decod[i][ 0][OPCOD_L_J        ] = &(instruction_l_j              );
242        if (_param->_instruction_implemeted[i][INSTRUCTION_L_JAL      ]) _function_decod[i][ 0][OPCOD_L_JAL      ] = &(instruction_l_jal            );
243        if (_param->_instruction_implemeted[i][INSTRUCTION_L_JALR     ]) _function_decod[i][ 0][OPCOD_L_JALR     ] = &(instruction_l_jalr           );
244        if (_param->_instruction_implemeted[i][INSTRUCTION_L_JR       ]) _function_decod[i][ 0][OPCOD_L_JR       ] = &(instruction_l_jr             );
245        if (_param->_instruction_implemeted[i][INSTRUCTION_L_LBS      ]) _function_decod[i][ 0][OPCOD_L_LBS      ] = &(instruction_l_lbs            );
246        if (_param->_instruction_implemeted[i][INSTRUCTION_L_LBZ      ]) _function_decod[i][ 0][OPCOD_L_LBZ      ] = &(instruction_l_lbz            );
247        if (_param->_instruction_implemeted[i][INSTRUCTION_L_LD       ]) _function_decod[i][ 0][OPCOD_L_LD       ] = &(instruction_l_ld             );
248        if (_param->_instruction_implemeted[i][INSTRUCTION_L_LHS      ]) _function_decod[i][ 0][OPCOD_L_LHS      ] = &(instruction_l_lhs            );
249        if (_param->_instruction_implemeted[i][INSTRUCTION_L_LHZ      ]) _function_decod[i][ 0][OPCOD_L_LHZ      ] = &(instruction_l_lhz            );
250        if (_param->_instruction_implemeted[i][INSTRUCTION_L_LWS      ]) _function_decod[i][ 0][OPCOD_L_LWS      ] = &(instruction_l_lws            );
251        if (_param->_instruction_implemeted[i][INSTRUCTION_L_LWZ      ]) _function_decod[i][ 0][OPCOD_L_LWZ      ] = &(instruction_l_lwz            );
252        if (_param->_instruction_implemeted[i][INSTRUCTION_L_MAC      ]) _function_decod[i][ 7][OPCOD_L_MAC      ] = &(instruction_l_mac            );
253        if (_param->_instruction_implemeted[i][INSTRUCTION_L_MACI     ]) _function_decod[i][ 0][OPCOD_L_MACI     ] = &(instruction_l_maci           );
254        if (_param->_instruction_implemeted[i][INSTRUCTION_L_MACRC    ]) _function_decod[i][ 8][OPCOD_L_MACRC    ] = &(instruction_l_macrc          );
255        if (_param->_instruction_implemeted[i][INSTRUCTION_L_MFSPR    ]) _function_decod[i][ 0][OPCOD_L_MFSPR    ] = &(instruction_l_mfspr          );
256        if (_param->_instruction_implemeted[i][INSTRUCTION_L_MOVHI    ]) _function_decod[i][ 8][OPCOD_L_MOVHI    ] = &(instruction_l_movhi          );
257        if (_param->_instruction_implemeted[i][INSTRUCTION_L_MSB      ]) _function_decod[i][ 7][OPCOD_L_MSB      ] = &(instruction_l_msb            );
258        if (_param->_instruction_implemeted[i][INSTRUCTION_L_MSYNC    ]) _function_decod[i][ 9][OPCOD_L_MSYNC    ] = &(instruction_l_msync          );
259        if (_param->_instruction_implemeted[i][INSTRUCTION_L_MTSPR    ]) _function_decod[i][ 0][OPCOD_L_MTSPR    ] = &(instruction_l_mtspr          );
260        if (_param->_instruction_implemeted[i][INSTRUCTION_L_MUL      ]) _function_decod[i][ 3][OPCOD_L_MUL      ] = &(instruction_l_mul            );
261        if (_param->_instruction_implemeted[i][INSTRUCTION_L_MULI     ]) _function_decod[i][ 0][OPCOD_L_MULI     ] = &(instruction_l_muli           );
262        if (_param->_instruction_implemeted[i][INSTRUCTION_L_MULU     ]) _function_decod[i][ 3][OPCOD_L_MULU     ] = &(instruction_l_mulu           );
263        if (_param->_instruction_implemeted[i][INSTRUCTION_L_NOP      ]) _function_decod[i][10][OPCOD_L_NOP      ] = &(instruction_l_nop            );
264        if (_param->_instruction_implemeted[i][INSTRUCTION_L_OR       ]) _function_decod[i][ 3][OPCOD_L_OR       ] = &(instruction_l_or             );
265        if (_param->_instruction_implemeted[i][INSTRUCTION_L_ORI      ]) _function_decod[i][ 0][OPCOD_L_ORI      ] = &(instruction_l_ori            );
266        if (_param->_instruction_implemeted[i][INSTRUCTION_L_PSYNC    ]) _function_decod[i][ 9][OPCOD_L_PSYNC    ] = &(instruction_l_psync          );
267        if (_param->_instruction_implemeted[i][INSTRUCTION_L_RFE      ]) _function_decod[i][ 0][OPCOD_L_RFE      ] = &(instruction_l_rfe            );
268        if (_param->_instruction_implemeted[i][INSTRUCTION_L_ROR      ]) _function_decod[i][11][OPCOD_L_ROR      ] = &(instruction_l_ror            );
269        if (_param->_instruction_implemeted[i][INSTRUCTION_L_RORI     ]) _function_decod[i][ 6][OPCOD_L_RORI     ] = &(instruction_l_rori           );
270        if (_param->_instruction_implemeted[i][INSTRUCTION_L_SB       ]) _function_decod[i][ 0][OPCOD_L_SB       ] = &(instruction_l_sb             );
271        if (_param->_instruction_implemeted[i][INSTRUCTION_L_SD       ]) _function_decod[i][ 0][OPCOD_L_SD       ] = &(instruction_l_sd             );
272        if (_param->_instruction_implemeted[i][INSTRUCTION_L_SFEQ     ]) _function_decod[i][ 4][OPCOD_L_SFEQ     ] = &(instruction_l_sfeq           );
273        if (_param->_instruction_implemeted[i][INSTRUCTION_L_SFEQI    ]) _function_decod[i][ 5][OPCOD_L_SFEQI    ] = &(instruction_l_sfeqi          );
274        if (_param->_instruction_implemeted[i][INSTRUCTION_L_SFGES    ]) _function_decod[i][ 4][OPCOD_L_SFGES    ] = &(instruction_l_sfges          );
275        if (_param->_instruction_implemeted[i][INSTRUCTION_L_SFGESI   ]) _function_decod[i][ 5][OPCOD_L_SFGESI   ] = &(instruction_l_sfgesi         );
276        if (_param->_instruction_implemeted[i][INSTRUCTION_L_SFGEU    ]) _function_decod[i][ 4][OPCOD_L_SFGEU    ] = &(instruction_l_sfgeu          );
277        if (_param->_instruction_implemeted[i][INSTRUCTION_L_SFGEUI   ]) _function_decod[i][ 5][OPCOD_L_SFGEUI   ] = &(instruction_l_sfgeui         );
278        if (_param->_instruction_implemeted[i][INSTRUCTION_L_SFGTS    ]) _function_decod[i][ 4][OPCOD_L_SFGTS    ] = &(instruction_l_sfgts          );
279        if (_param->_instruction_implemeted[i][INSTRUCTION_L_SFGTSI   ]) _function_decod[i][ 5][OPCOD_L_SFGTSI   ] = &(instruction_l_sfgtsi         );
280        if (_param->_instruction_implemeted[i][INSTRUCTION_L_SFGTU    ]) _function_decod[i][ 4][OPCOD_L_SFGTU    ] = &(instruction_l_sfgtu          );
281        if (_param->_instruction_implemeted[i][INSTRUCTION_L_SFGTUI   ]) _function_decod[i][ 5][OPCOD_L_SFGTUI   ] = &(instruction_l_sfgtui         );
282        if (_param->_instruction_implemeted[i][INSTRUCTION_L_SFLES    ]) _function_decod[i][ 4][OPCOD_L_SFLES    ] = &(instruction_l_sfles          );
283        if (_param->_instruction_implemeted[i][INSTRUCTION_L_SFLESI   ]) _function_decod[i][ 5][OPCOD_L_SFLESI   ] = &(instruction_l_sflesi         );
284        if (_param->_instruction_implemeted[i][INSTRUCTION_L_SFLEU    ]) _function_decod[i][ 4][OPCOD_L_SFLEU    ] = &(instruction_l_sfleu          );
285        if (_param->_instruction_implemeted[i][INSTRUCTION_L_SFLEUI   ]) _function_decod[i][ 5][OPCOD_L_SFLEUI   ] = &(instruction_l_sfleui         );
286        if (_param->_instruction_implemeted[i][INSTRUCTION_L_SFLTS    ]) _function_decod[i][ 4][OPCOD_L_SFLTS    ] = &(instruction_l_sflts          );
287        if (_param->_instruction_implemeted[i][INSTRUCTION_L_SFLTSI   ]) _function_decod[i][ 5][OPCOD_L_SFLTSI   ] = &(instruction_l_sfltsi         );
288        if (_param->_instruction_implemeted[i][INSTRUCTION_L_SFLTU    ]) _function_decod[i][ 4][OPCOD_L_SFLTU    ] = &(instruction_l_sfltu          );
289        if (_param->_instruction_implemeted[i][INSTRUCTION_L_SFLTUI   ]) _function_decod[i][ 5][OPCOD_L_SFLTUI   ] = &(instruction_l_sfltui         );
290        if (_param->_instruction_implemeted[i][INSTRUCTION_L_SFNE     ]) _function_decod[i][ 4][OPCOD_L_SFNE     ] = &(instruction_l_sfne           );
291        if (_param->_instruction_implemeted[i][INSTRUCTION_L_SFNEI    ]) _function_decod[i][ 5][OPCOD_L_SFNEI    ] = &(instruction_l_sfnei          );
292        if (_param->_instruction_implemeted[i][INSTRUCTION_L_SH       ]) _function_decod[i][ 0][OPCOD_L_SH       ] = &(instruction_l_sh             );
293        if (_param->_instruction_implemeted[i][INSTRUCTION_L_SLL      ]) _function_decod[i][11][OPCOD_L_SLL      ] = &(instruction_l_sll            );
294        if (_param->_instruction_implemeted[i][INSTRUCTION_L_SLLI     ]) _function_decod[i][ 6][OPCOD_L_SLLI     ] = &(instruction_l_slli           );
295        if (_param->_instruction_implemeted[i][INSTRUCTION_L_SRA      ]) _function_decod[i][11][OPCOD_L_SRA      ] = &(instruction_l_sra            );
296        if (_param->_instruction_implemeted[i][INSTRUCTION_L_SRAI     ]) _function_decod[i][ 6][OPCOD_L_SRAI     ] = &(instruction_l_srai           );
297        if (_param->_instruction_implemeted[i][INSTRUCTION_L_SRL      ]) _function_decod[i][11][OPCOD_L_SRL      ] = &(instruction_l_srl            );
298        if (_param->_instruction_implemeted[i][INSTRUCTION_L_SRLI     ]) _function_decod[i][ 6][OPCOD_L_SRLI     ] = &(instruction_l_srli           );
299        if (_param->_instruction_implemeted[i][INSTRUCTION_L_SUB      ]) _function_decod[i][ 3][OPCOD_L_SUB      ] = &(instruction_l_sub            );
300        if (_param->_instruction_implemeted[i][INSTRUCTION_L_SW       ]) _function_decod[i][ 0][OPCOD_L_SW       ] = &(instruction_l_sw             );
301        if (_param->_instruction_implemeted[i][INSTRUCTION_L_SYS      ]) _function_decod[i][ 9][OPCOD_L_SYS      ] = &(instruction_l_sys            );
302        if (_param->_instruction_implemeted[i][INSTRUCTION_L_TRAP     ]) _function_decod[i][ 9][OPCOD_L_TRAP     ] = &(instruction_l_trap           );
303        if (_param->_instruction_implemeted[i][INSTRUCTION_L_XOR      ]) _function_decod[i][ 3][OPCOD_L_XOR      ] = &(instruction_l_xor            );
304        if (_param->_instruction_implemeted[i][INSTRUCTION_L_XORI     ]) _function_decod[i][ 0][OPCOD_L_XORI     ] = &(instruction_l_xori           );
305//      if (_param->_instruction_implemeted[i][INSTRUCTION_LF_ADD_D   ]) _function_decod[i][ 1][OPCOD_LF_ADD_D   ] = &(instruction_lf_add_d    );
306//      if (_param->_instruction_implemeted[i][INSTRUCTION_LF_ADD_S   ]) _function_decod[i][ 1][OPCOD_LF_ADD_S   ] = &(instruction_lf_add_s    );
307//      if (_param->_instruction_implemeted[i][INSTRUCTION_LF_DIV_D   ]) _function_decod[i][ 1][OPCOD_LF_DIV_D   ] = &(instruction_lf_div_d    );
308//      if (_param->_instruction_implemeted[i][INSTRUCTION_LF_DIV_S   ]) _function_decod[i][ 1][OPCOD_LF_DIV_S   ] = &(instruction_lf_div_s    );
309//      if (_param->_instruction_implemeted[i][INSTRUCTION_LF_FTOI_D  ]) _function_decod[i][ 1][OPCOD_LF_FTOI_D  ] = &(instruction_lf_ftoi_d   );
310//      if (_param->_instruction_implemeted[i][INSTRUCTION_LF_FTOI_S  ]) _function_decod[i][ 1][OPCOD_LF_FTOI_S  ] = &(instruction_lf_ftoi_s   );
311//      if (_param->_instruction_implemeted[i][INSTRUCTION_LF_ITOF_D  ]) _function_decod[i][ 1][OPCOD_LF_ITOF_D  ] = &(instruction_lf_itof_d   );
312//      if (_param->_instruction_implemeted[i][INSTRUCTION_LF_ITOF_S  ]) _function_decod[i][ 1][OPCOD_LF_ITOF_S  ] = &(instruction_lf_itof_s   );
313//      if (_param->_instruction_implemeted[i][INSTRUCTION_LF_MADD_D  ]) _function_decod[i][ 1][OPCOD_LF_MADD_D  ] = &(instruction_lf_madd_d   );
314//      if (_param->_instruction_implemeted[i][INSTRUCTION_LF_MADD_S  ]) _function_decod[i][ 1][OPCOD_LF_MADD_S  ] = &(instruction_lf_madd_s   );
315//      if (_param->_instruction_implemeted[i][INSTRUCTION_LF_MUL_D   ]) _function_decod[i][ 1][OPCOD_LF_MUL_D   ] = &(instruction_lf_mul_d    );
316//      if (_param->_instruction_implemeted[i][INSTRUCTION_LF_MUL_S   ]) _function_decod[i][ 1][OPCOD_LF_MUL_S   ] = &(instruction_lf_mul_s    );
317//      if (_param->_instruction_implemeted[i][INSTRUCTION_LF_REM_D   ]) _function_decod[i][ 1][OPCOD_LF_REM_D   ] = &(instruction_lf_rem_d    );
318//      if (_param->_instruction_implemeted[i][INSTRUCTION_LF_REM_S   ]) _function_decod[i][ 1][OPCOD_LF_REM_S   ] = &(instruction_lf_rem_s    );
319//      if (_param->_instruction_implemeted[i][INSTRUCTION_LF_SFEQ_D  ]) _function_decod[i][ 1][OPCOD_LF_SFEQ_D  ] = &(instruction_lf_sfeq_d   );
320//      if (_param->_instruction_implemeted[i][INSTRUCTION_LF_SFEQ_S  ]) _function_decod[i][ 1][OPCOD_LF_SFEQ_S  ] = &(instruction_lf_sfeq_s   );
321//      if (_param->_instruction_implemeted[i][INSTRUCTION_LF_SFGE_D  ]) _function_decod[i][ 1][OPCOD_LF_SFGE_D  ] = &(instruction_lf_sfge_d   );
322//      if (_param->_instruction_implemeted[i][INSTRUCTION_LF_SFGE_S  ]) _function_decod[i][ 1][OPCOD_LF_SFGE_S  ] = &(instruction_lf_sfge_s   );
323//      if (_param->_instruction_implemeted[i][INSTRUCTION_LF_SFGT_D  ]) _function_decod[i][ 1][OPCOD_LF_SFGT_D  ] = &(instruction_lf_sfgt_d   );
324//      if (_param->_instruction_implemeted[i][INSTRUCTION_LF_SFGT_S  ]) _function_decod[i][ 1][OPCOD_LF_SFGT_S  ] = &(instruction_lf_sfgt_s   );
325//      if (_param->_instruction_implemeted[i][INSTRUCTION_LF_SFLE_D  ]) _function_decod[i][ 1][OPCOD_LF_SFLE_D  ] = &(instruction_lf_sfle_d   );
326//      if (_param->_instruction_implemeted[i][INSTRUCTION_LF_SFLE_S  ]) _function_decod[i][ 1][OPCOD_LF_SFLE_S  ] = &(instruction_lf_sfle_s   );
327//      if (_param->_instruction_implemeted[i][INSTRUCTION_LF_SFLT_D  ]) _function_decod[i][ 1][OPCOD_LF_SFLT_D  ] = &(instruction_lf_sflt_d   );
328//      if (_param->_instruction_implemeted[i][INSTRUCTION_LF_SFLT_S  ]) _function_decod[i][ 1][OPCOD_LF_SFLT_S  ] = &(instruction_lf_sflt_s   );
329//      if (_param->_instruction_implemeted[i][INSTRUCTION_LF_SFNE_D  ]) _function_decod[i][ 1][OPCOD_LF_SFNE_D  ] = &(instruction_lf_sfne_d   );
330//      if (_param->_instruction_implemeted[i][INSTRUCTION_LF_SFNE_S  ]) _function_decod[i][ 1][OPCOD_LF_SFNE_S  ] = &(instruction_lf_sfne_s   );
331//      if (_param->_instruction_implemeted[i][INSTRUCTION_LF_SUB_D   ]) _function_decod[i][ 1][OPCOD_LF_SUB_D   ] = &(instruction_lf_sub_d    );
332//      if (_param->_instruction_implemeted[i][INSTRUCTION_LF_SUB_S   ]) _function_decod[i][ 1][OPCOD_LF_SUB_S   ] = &(instruction_lf_sub_s    );
333//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_ADD_B   ]) _function_decod[i][ 2][OPCOD_LV_ADD_B   ] = &(instruction_lv_add_b    );
334//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_ADD_H   ]) _function_decod[i][ 2][OPCOD_LV_ADD_H   ] = &(instruction_lv_add_h    );
335//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_ADDS_B  ]) _function_decod[i][ 2][OPCOD_LV_ADDS_B  ] = &(instruction_lv_adds_b   );
336//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_ADDS_H  ]) _function_decod[i][ 2][OPCOD_LV_ADDS_H  ] = &(instruction_lv_adds_h   );
337//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_ADDU_B  ]) _function_decod[i][ 2][OPCOD_LV_ADDU_B  ] = &(instruction_lv_addu_b   );
338//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_ADDU_H  ]) _function_decod[i][ 2][OPCOD_LV_ADDU_H  ] = &(instruction_lv_addu_h   );
339//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_ADDUS_B ]) _function_decod[i][ 2][OPCOD_LV_ADDUS_B ] = &(instruction_lv_addus_b  );
340//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_ADDUS_H ]) _function_decod[i][ 2][OPCOD_LV_ADDUS_H ] = &(instruction_lv_addus_h  );
341//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_ALL_EQ_B]) _function_decod[i][ 2][OPCOD_LV_ALL_EQ_B] = &(instruction_lv_all_eq_b );
342//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_ALL_EQ_H]) _function_decod[i][ 2][OPCOD_LV_ALL_EQ_H] = &(instruction_lv_all_eq_h );
343//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_ALL_GE_B]) _function_decod[i][ 2][OPCOD_LV_ALL_GE_B] = &(instruction_lv_all_ge_b );
344//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_ALL_GE_H]) _function_decod[i][ 2][OPCOD_LV_ALL_GE_H] = &(instruction_lv_all_ge_h );
345//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_ALL_GT_B]) _function_decod[i][ 2][OPCOD_LV_ALL_GT_B] = &(instruction_lv_all_gt_b );
346//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_ALL_GT_H]) _function_decod[i][ 2][OPCOD_LV_ALL_GT_H] = &(instruction_lv_all_gt_h );
347//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_ALL_LE_B]) _function_decod[i][ 2][OPCOD_LV_ALL_LE_B] = &(instruction_lv_all_le_b );
348//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_ALL_LE_H]) _function_decod[i][ 2][OPCOD_LV_ALL_LE_H] = &(instruction_lv_all_le_h );
349//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_ALL_LT_B]) _function_decod[i][ 2][OPCOD_LV_ALL_LT_B] = &(instruction_lv_all_lt_b );
350//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_ALL_LT_H]) _function_decod[i][ 2][OPCOD_LV_ALL_LT_H] = &(instruction_lv_all_lt_h );
351//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_ALL_NE_B]) _function_decod[i][ 2][OPCOD_LV_ALL_NE_B] = &(instruction_lv_all_ne_b );
352//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_ALL_NE_H]) _function_decod[i][ 2][OPCOD_LV_ALL_NE_H] = &(instruction_lv_all_ne_h );
353//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_AND     ]) _function_decod[i][ 2][OPCOD_LV_AND     ] = &(instruction_lv_and           );
354//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_ANY_EQ_B]) _function_decod[i][ 2][OPCOD_LV_ANY_EQ_B] = &(instruction_lv_any_eq_b );
355//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_ANY_EQ_H]) _function_decod[i][ 2][OPCOD_LV_ANY_EQ_H] = &(instruction_lv_any_eq_h );
356//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_ANY_GE_B]) _function_decod[i][ 2][OPCOD_LV_ANY_GE_B] = &(instruction_lv_any_ge_b );
357//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_ANY_GE_H]) _function_decod[i][ 2][OPCOD_LV_ANY_GE_H] = &(instruction_lv_any_ge_h );
358//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_ANY_GT_B]) _function_decod[i][ 2][OPCOD_LV_ANY_GT_B] = &(instruction_lv_any_gt_b );
359//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_ANY_GT_H]) _function_decod[i][ 2][OPCOD_LV_ANY_GT_H] = &(instruction_lv_any_gt_h );
360//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_ANY_LE_B]) _function_decod[i][ 2][OPCOD_LV_ANY_LE_B] = &(instruction_lv_any_le_b );
361//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_ANY_LE_H]) _function_decod[i][ 2][OPCOD_LV_ANY_LE_H] = &(instruction_lv_any_le_h );
362//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_ANY_LT_B]) _function_decod[i][ 2][OPCOD_LV_ANY_LT_B] = &(instruction_lv_any_lt_b );
363//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_ANY_LT_H]) _function_decod[i][ 2][OPCOD_LV_ANY_LT_H] = &(instruction_lv_any_lt_h );
364//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_ANY_NE_B]) _function_decod[i][ 2][OPCOD_LV_ANY_NE_B] = &(instruction_lv_any_ne_b );
365//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_ANY_NE_H]) _function_decod[i][ 2][OPCOD_LV_ANY_NE_H] = &(instruction_lv_any_ne_h );
366//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_AVG_B   ]) _function_decod[i][ 2][OPCOD_LV_AVG_B   ] = &(instruction_lv_avg_b    );
367//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_AVG_H   ]) _function_decod[i][ 2][OPCOD_LV_AVG_H   ] = &(instruction_lv_avg_h    );
368//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_CMP_EQ_B]) _function_decod[i][ 2][OPCOD_LV_CMP_EQ_B] = &(instruction_lv_cmp_eq_b );
369//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_CMP_EQ_H]) _function_decod[i][ 2][OPCOD_LV_CMP_EQ_H] = &(instruction_lv_cmp_eq_h );
370//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_CMP_GE_B]) _function_decod[i][ 2][OPCOD_LV_CMP_GE_B] = &(instruction_lv_cmp_ge_b );
371//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_CMP_GE_H]) _function_decod[i][ 2][OPCOD_LV_CMP_GE_H] = &(instruction_lv_cmp_ge_h );
372//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_CMP_GT_B]) _function_decod[i][ 2][OPCOD_LV_CMP_GT_B] = &(instruction_lv_cmp_gt_b );
373//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_CMP_GT_H]) _function_decod[i][ 2][OPCOD_LV_CMP_GT_H] = &(instruction_lv_cmp_gt_h );
374//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_CMP_LE_B]) _function_decod[i][ 2][OPCOD_LV_CMP_LE_B] = &(instruction_lv_cmp_le_b );
375//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_CMP_LE_H]) _function_decod[i][ 2][OPCOD_LV_CMP_LE_H] = &(instruction_lv_cmp_le_h );
376//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_CMP_LT_B]) _function_decod[i][ 2][OPCOD_LV_CMP_LT_B] = &(instruction_lv_cmp_lt_b );
377//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_CMP_LT_H]) _function_decod[i][ 2][OPCOD_LV_CMP_LT_H] = &(instruction_lv_cmp_lt_h );
378//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_CMP_NE_B]) _function_decod[i][ 2][OPCOD_LV_CMP_NE_B] = &(instruction_lv_cmp_ne_b );
379//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_CMP_NE_H]) _function_decod[i][ 2][OPCOD_LV_CMP_NE_H] = &(instruction_lv_cmp_ne_h );
380//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_MADDS_H ]) _function_decod[i][ 2][OPCOD_LV_MADDS_H ] = &(instruction_lv_madds_h  );
381//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_MAX_B   ]) _function_decod[i][ 2][OPCOD_LV_MAX_B   ] = &(instruction_lv_max_b    );
382//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_MAX_H   ]) _function_decod[i][ 2][OPCOD_LV_MAX_H   ] = &(instruction_lv_max_h    );
383//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_MERGE_B ]) _function_decod[i][ 2][OPCOD_LV_MERGE_B ] = &(instruction_lv_merge_b  );
384//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_MERGE_H ]) _function_decod[i][ 2][OPCOD_LV_MERGE_H ] = &(instruction_lv_merge_h  );
385//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_MIN_B   ]) _function_decod[i][ 2][OPCOD_LV_MIN_B   ] = &(instruction_lv_min_b    );
386//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_MIN_H   ]) _function_decod[i][ 2][OPCOD_LV_MIN_H   ] = &(instruction_lv_min_h    );
387//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_MSUBS_H ]) _function_decod[i][ 2][OPCOD_LV_MSUBS_H ] = &(instruction_lv_msubs_h  );
388//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_MULS_H  ]) _function_decod[i][ 2][OPCOD_LV_MULS_H  ] = &(instruction_lv_muls_h   );
389//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_NAND    ]) _function_decod[i][ 2][OPCOD_LV_NAND    ] = &(instruction_lv_nand          );
390//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_NOR     ]) _function_decod[i][ 2][OPCOD_LV_NOR     ] = &(instruction_lv_nor           );
391//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_OR      ]) _function_decod[i][ 2][OPCOD_LV_OR      ] = &(instruction_lv_or            );
392//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_PACK_B  ]) _function_decod[i][ 2][OPCOD_LV_PACK_B  ] = &(instruction_lv_pack_b   );
393//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_PACK_H  ]) _function_decod[i][ 2][OPCOD_LV_PACK_H  ] = &(instruction_lv_pack_h   );
394//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_PACKS_B ]) _function_decod[i][ 2][OPCOD_LV_PACKS_B ] = &(instruction_lv_packs_b  );
395//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_PACKS_H ]) _function_decod[i][ 2][OPCOD_LV_PACKS_H ] = &(instruction_lv_packs_h  );
396//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_PACKUS_B]) _function_decod[i][ 2][OPCOD_LV_PACKUS_B] = &(instruction_lv_packus_b );
397//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_PACKUS_H]) _function_decod[i][ 2][OPCOD_LV_PACKUS_H] = &(instruction_lv_packus_h );
398//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_PERM_N  ]) _function_decod[i][ 2][OPCOD_LV_PERM_N  ] = &(instruction_lv_perm_n   );
399//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_RL_B    ]) _function_decod[i][ 2][OPCOD_LV_RL_B    ] = &(instruction_lv_rl_b          );
400//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_RL_H    ]) _function_decod[i][ 2][OPCOD_LV_RL_H    ] = &(instruction_lv_rl_h          );
401//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_SLL     ]) _function_decod[i][ 2][OPCOD_LV_SLL     ] = &(instruction_lv_sll           );
402//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_SLL_B   ]) _function_decod[i][ 2][OPCOD_LV_SLL_B   ] = &(instruction_lv_sll_b    );
403//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_SLL_H   ]) _function_decod[i][ 2][OPCOD_LV_SLL_H   ] = &(instruction_lv_sll_h    );
404//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_SRA_B   ]) _function_decod[i][ 2][OPCOD_LV_SRA_B   ] = &(instruction_lv_sra_b    );
405//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_SRA_H   ]) _function_decod[i][ 2][OPCOD_LV_SRA_H   ] = &(instruction_lv_sra_h    );
406//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_SRL     ]) _function_decod[i][ 2][OPCOD_LV_SRL     ] = &(instruction_lv_srl           );
407//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_SRL_B   ]) _function_decod[i][ 2][OPCOD_LV_SRL_B   ] = &(instruction_lv_srl_b    );
408//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_SRL_H   ]) _function_decod[i][ 2][OPCOD_LV_SRL_H   ] = &(instruction_lv_srl_h    );
409//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_SUB_B   ]) _function_decod[i][ 2][OPCOD_LV_SUB_B   ] = &(instruction_lv_sub_b    );
410//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_SUB_H   ]) _function_decod[i][ 2][OPCOD_LV_SUB_H   ] = &(instruction_lv_sub_h    );
411//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_SUBS_B  ]) _function_decod[i][ 2][OPCOD_LV_SUBS_B  ] = &(instruction_lv_subs_b   );
412//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_SUBS_H  ]) _function_decod[i][ 2][OPCOD_LV_SUBS_H  ] = &(instruction_lv_subs_h   );
413//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_SUBU_B  ]) _function_decod[i][ 2][OPCOD_LV_SUBU_B  ] = &(instruction_lv_subu_b   );
414//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_SUBU_H  ]) _function_decod[i][ 2][OPCOD_LV_SUBU_H  ] = &(instruction_lv_subu_h   );
415//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_SUBUS_B ]) _function_decod[i][ 2][OPCOD_LV_SUBUS_B ] = &(instruction_lv_subus_b  );
416//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_SUBUS_H ]) _function_decod[i][ 2][OPCOD_LV_SUBUS_H ] = &(instruction_lv_subus_h  );
417//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_UNPACK_B]) _function_decod[i][ 2][OPCOD_LV_UNPACK_B] = &(instruction_lv_unpack_b );
418//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_UNPACK_H]) _function_decod[i][ 2][OPCOD_LV_UNPACK_H] = &(instruction_lv_unpack_h );
419//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_XOR     ]) _function_decod[i][ 2][OPCOD_LV_XOR     ] = &(instruction_lv_xor      );
420
421        // Custom Instruction
422        if (_param->_instruction_implemeted[i][INSTRUCTION_L_CUST1    ]) _function_decod [i][ 0][OPCOD_L_CUST1    ] = &(instruction_l_custom );
423        if (_param->_instruction_implemeted[i][INSTRUCTION_L_CUST2    ]) _function_decod [i][ 0][OPCOD_L_CUST2    ] = &(instruction_l_custom );
424        if (_param->_instruction_implemeted[i][INSTRUCTION_L_CUST3    ]) _function_decod [i][ 0][OPCOD_L_CUST3    ] = &(instruction_l_custom );
425        if (_param->_instruction_implemeted[i][INSTRUCTION_L_CUST4    ]) _function_decod [i][ 0][OPCOD_L_CUST4    ] = &(instruction_l_custom );
426        if (_param->_instruction_implemeted[i][INSTRUCTION_L_CUST5    ]) _function_decod [i][ 0][OPCOD_L_CUST5    ] = &(instruction_l_custom );
427        if (_param->_instruction_implemeted[i][INSTRUCTION_L_CUST6    ]) _function_decod [i][ 0][OPCOD_L_CUST6    ] = &(instruction_l_custom );
428        if (_param->_instruction_implemeted[i][INSTRUCTION_L_CUST7    ]) _function_decod [i][ 0][OPCOD_L_CUST7    ] = &(instruction_l_custom );
429        if (_param->_instruction_implemeted[i][INSTRUCTION_L_CUST8    ]) _function_decod [i][ 0][OPCOD_L_CUST8    ] = &(instruction_l_custom );
430//      if (_param->_instruction_implemeted[i][INSTRUCTION_LF_CUST1_D ]) _function_decod [i][ 1][OPCOD_LF_CUST1_D ] = &(instruction_lf_custom);
431//      if (_param->_instruction_implemeted[i][INSTRUCTION_LF_CUST1_S ]) _function_decod [i][ 1][OPCOD_LF_CUST1_S ] = &(instruction_lf_custom);
432//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_CUST1   ]) _function_decod [i][ 2][OPCOD_LV_CUST1   ] = &(instruction_lv_custom);
433//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_CUST2   ]) _function_decod [i][ 2][OPCOD_LV_CUST2   ] = &(instruction_lv_custom);
434//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_CUST3   ]) _function_decod [i][ 2][OPCOD_LV_CUST3   ] = &(instruction_lv_custom);
435//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_CUST4   ]) _function_decod [i][ 2][OPCOD_LV_CUST4   ] = &(instruction_lv_custom);
436
437        if (_param->_instruction_implemeted[i][INSTRUCTION_L_CUST1    ]) _function_custom[i][ 0][OPCOD_L_CUST1    ] = _param->_get_custom_information()._get_custom_decod(OPERATION_CUSTOM_L_1   );
438        if (_param->_instruction_implemeted[i][INSTRUCTION_L_CUST2    ]) _function_custom[i][ 0][OPCOD_L_CUST2    ] = _param->_get_custom_information()._get_custom_decod(OPERATION_CUSTOM_L_2   );
439        if (_param->_instruction_implemeted[i][INSTRUCTION_L_CUST3    ]) _function_custom[i][ 0][OPCOD_L_CUST3    ] = _param->_get_custom_information()._get_custom_decod(OPERATION_CUSTOM_L_3   );
440        if (_param->_instruction_implemeted[i][INSTRUCTION_L_CUST4    ]) _function_custom[i][ 0][OPCOD_L_CUST4    ] = _param->_get_custom_information()._get_custom_decod(OPERATION_CUSTOM_L_4   );
441        if (_param->_instruction_implemeted[i][INSTRUCTION_L_CUST5    ]) _function_custom[i][ 0][OPCOD_L_CUST5    ] = _param->_get_custom_information()._get_custom_decod(OPERATION_CUSTOM_L_5   );
442        if (_param->_instruction_implemeted[i][INSTRUCTION_L_CUST6    ]) _function_custom[i][ 0][OPCOD_L_CUST6    ] = _param->_get_custom_information()._get_custom_decod(OPERATION_CUSTOM_L_6   );
443        if (_param->_instruction_implemeted[i][INSTRUCTION_L_CUST7    ]) _function_custom[i][ 0][OPCOD_L_CUST7    ] = _param->_get_custom_information()._get_custom_decod(OPERATION_CUSTOM_L_7   );
444        if (_param->_instruction_implemeted[i][INSTRUCTION_L_CUST8    ]) _function_custom[i][ 0][OPCOD_L_CUST8    ] = _param->_get_custom_information()._get_custom_decod(OPERATION_CUSTOM_L_8   );
445//      if (_param->_instruction_implemeted[i][INSTRUCTION_LF_CUST1_D ]) _function_custom[i][ 1][OPCOD_LF_CUST1_D ] = _param->_get_custom_information()._get_custom_decod(OPERATION_CUSTOM_LF_1_D);
446//      if (_param->_instruction_implemeted[i][INSTRUCTION_LF_CUST1_S ]) _function_custom[i][ 1][OPCOD_LF_CUST1_S ] = _param->_get_custom_information()._get_custom_decod(OPERATION_CUSTOM_LF_1_S);
447//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_CUST1   ]) _function_custom[i][ 2][OPCOD_LV_CUST1   ] = _param->_get_custom_information()._get_custom_decod(OPERATION_CUSTOM_LV_1  );
448//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_CUST2   ]) _function_custom[i][ 2][OPCOD_LV_CUST2   ] = _param->_get_custom_information()._get_custom_decod(OPERATION_CUSTOM_LV_2  );
449//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_CUST3   ]) _function_custom[i][ 2][OPCOD_LV_CUST3   ] = _param->_get_custom_information()._get_custom_decod(OPERATION_CUSTOM_LV_3  );
450//      if (_param->_instruction_implemeted[i][INSTRUCTION_LV_CUST4   ]) _function_custom[i][ 2][OPCOD_LV_CUST4   ] = _param->_get_custom_information()._get_custom_decod(OPERATION_CUSTOM_LV_4  );
451      }
452
453    _decod_instruction = new decod_instruction_t;
454
455    _decod_param = new decod_param_t * [_param->_nb_context];
456    for (uint32_t i=0; i<_param->_nb_context; i++)
457      _decod_param [i] = new decod_param_t (_param->_size_general_data,
458                                            _function_decod [i],
459                                            _function_custom[i]);
460
461#ifdef POSITION
462    if (usage_is_set(_usage,USE_POSITION))
463      _component->generate_file();
464#endif
465
466    log_printf(FUNC,Decod,FUNCTION,"End");
467  };
468
469}; // end namespace decod
470}; // end namespace decod_unit
471}; // end namespace front_end
472}; // end namespace multi_front_end
473}; // end namespace core
474
475}; // end namespace behavioural
476}; // end namespace morpheo             
Note: See TracBrowser for help on using the repository browser.