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

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

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

  • Property svn:keywords set to Id
File size: 137.4 KB
RevLine 
[78]1/*
2 * $Id: Instruction.cpp 101 2009-01-15 17:19:08Z rosiere $
3 *
4 * [ Description ]
5 *
6 * instruction MAC_UNIT (l.mac, l.maci, l.macrc, l.msb) throw a context event. Also is sequential.
7 * If your program need intensive mac_unit, you can change the implementation of this unit :
8 *  1) "decod"            : inst->_event_type = EVENT_TYPE_NONE;
9 *  2) "rename"           : add component as load_store_unit pointer management
10 *  3) "functionnal_unit" : test type instruction, if type=MAC_UNIT, insert in queue, the localisation is the ptr give by rename stage. Retire in this queue in sequence (as the store queue).
11 *
12 */
13
14#include "Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/Instruction/include/Instruction.h"
[86]15#include "Behavioural/include/Constants.h"
[88]16#include "Behavioural/include/Operation.h"
[78]17
18namespace morpheo {
19namespace behavioural {
20namespace core {
21namespace multi_front_end {
22namespace front_end {
23namespace decod_unit {
24namespace decod {
25
26#define EXTENDS(x,nb_bits) extend<Tgeneral_data_t>(32, x,true ,nb_bits)
27#define EXTENDZ(x,nb_bits) extend<Tgeneral_data_t>(32, x,false,nb_bits)
28
29  void instruction_decod               (decod_instruction_t * inst, decod_param_t * param)
30  {
[101]31    log_printf(TRACE,Decod,"instruction_decod","  * instruction   : decod");
32
[78]33//     instruction_decod_type_0 (inst,param);
34
35    uint32_t opcod = range<uint32_t>(inst->_instruction,31,26);
[101]36
37    log_printf(TRACE,Decod,"instruction_decod","    * opcod : %d (0x%x)",opcod,opcod);
38
[78]39    (* param->_function_decod[ 0][opcod]) (inst,param);
40  }
41
42//   void instruction_decod_type_0        (decod_instruction_t * inst, decod_param_t * param)
43//   {
44//     uint32_t opcod = range<uint32_t>(inst->_instruction,31,26);
45//     (* param->_function_decod[ 0][opcod]) (inst,param);
46//   }
47
48  void instruction_decod_type_1        (decod_instruction_t * inst, decod_param_t * param)
49  {
[101]50    log_printf(TRACE,Decod,"instruction_decod_type_1","  * instruction   : decod type_1");
51   
[78]52    uint32_t opcod = range<uint32_t>(inst->_instruction, 7, 0);
[101]53
54    log_printf(TRACE,Decod,"instruction_decod","    * opcod : %d (0x%x)",opcod,opcod);
55
[78]56    (* param->_function_decod[ 1][opcod]) (inst,param);
57  }
58
59  void instruction_decod_type_2        (decod_instruction_t * inst, decod_param_t * param)
60  {
[101]61    log_printf(TRACE,Decod,"instruction_decod_type_2","  * instruction   : decod type_2");
62
[78]63    uint32_t opcod = range<uint32_t>(inst->_instruction, 7, 0);
[101]64
65    log_printf(TRACE,Decod,"instruction_decod","    * opcod : %d (0x%x)",opcod,opcod);
66
[78]67    (* param->_function_decod[ 2][opcod]) (inst,param);
68  }
69
70  void instruction_decod_type_3        (decod_instruction_t * inst, decod_param_t * param)
71  {
[101]72    log_printf(TRACE,Decod,"instruction_decod_type_3","  * instruction   : decod type_3");
73
[78]74    uint32_t opcod = ((range<uint32_t>(inst->_instruction, 9, 8)<<4) |
75                      (range<uint32_t>(inst->_instruction, 3, 0)));
[101]76
77    log_printf(TRACE,Decod,"instruction_decod","    * opcod : %d (0x%x)",opcod,opcod);
78
[78]79    (* param->_function_decod[ 3][opcod]) (inst,param);
80  }
81
82  void instruction_decod_type_4        (decod_instruction_t * inst, decod_param_t * param)
83  {
[101]84    log_printf(TRACE,Decod,"instruction_decod_type_4","  * instruction   : decod type_4");
85
[78]86    uint32_t opcod = range<uint32_t>(inst->_instruction,25,21);
[101]87
88    log_printf(TRACE,Decod,"instruction_decod","    * opcod : %d (0x%x)",opcod,opcod);
89
[78]90    (* param->_function_decod[ 4][opcod]) (inst,param);
91  }
92
93  void instruction_decod_type_5        (decod_instruction_t * inst, decod_param_t * param)
94  {
[101]95    log_printf(TRACE,Decod,"instruction_decod_type_5","  * instruction   : decod type_5");
96
[78]97    uint32_t opcod = range<uint32_t>(inst->_instruction,25,21);
[101]98
99    log_printf(TRACE,Decod,"instruction_decod","    * opcod : %d (0x%x)",opcod,opcod);
100
[78]101    (* param->_function_decod[ 5][opcod]) (inst,param);
102  }
103
104  void instruction_decod_type_6        (decod_instruction_t * inst, decod_param_t * param)
105  {
[101]106    log_printf(TRACE,Decod,"instruction_decod_type_6","  * instruction   : decod type_6");
107
[78]108    uint32_t opcod = range<uint32_t>(inst->_instruction, 7, 6);
[101]109
110    log_printf(TRACE,Decod,"instruction_decod","    * opcod : %d (0x%x)",opcod,opcod);
111
[78]112    (* param->_function_decod[ 6][opcod]) (inst,param);
113  }
114
115  void instruction_decod_type_7        (decod_instruction_t * inst, decod_param_t * param)
116  {
[101]117    log_printf(TRACE,Decod,"instruction_decod_type_7","  * instruction   : decod type_7");
118
[78]119    uint32_t opcod = range<uint32_t>(inst->_instruction, 3, 0);
[101]120
121    log_printf(TRACE,Decod,"instruction_decod","    * opcod : %d (0x%x)",opcod,opcod);
122
[78]123    (* param->_function_decod[ 7][opcod]) (inst,param);
124  }
125
126  void instruction_decod_type_8        (decod_instruction_t * inst, decod_param_t * param)
127  {
[101]128    log_printf(TRACE,Decod,"instruction_decod_type_8","  * instruction   : decod type_8");
129
[78]130    uint32_t opcod = range<uint32_t>(inst->_instruction,16,16);
[101]131
132    log_printf(TRACE,Decod,"instruction_decod","    * opcod : %d (0x%x)",opcod,opcod);
133
[78]134    (* param->_function_decod[ 8][opcod]) (inst,param);
135  }
136
137  void instruction_decod_type_9        (decod_instruction_t * inst, decod_param_t * param)
138  {
[101]139    log_printf(TRACE,Decod,"instruction_decod_type_9","  * instruction   : decod type_9");
140
[78]141    uint32_t opcod = range<uint32_t>(inst->_instruction,25,23);
[101]142
143    log_printf(TRACE,Decod,"instruction_decod","    * opcod : %d (0x%x)",opcod,opcod);
144
[78]145    (* param->_function_decod[ 9][opcod]) (inst,param);
146  }
147
148  void instruction_decod_type_10       (decod_instruction_t * inst, decod_param_t * param)
149  {
[101]150    log_printf(TRACE,Decod,"instruction_decod_type_10","  * instruction   : decod type_10");
151
[78]152    uint32_t opcod = range<uint32_t>(inst->_instruction,25,24);
[101]153
154    log_printf(TRACE,Decod,"instruction_decod","    * opcod : %d (0x%x)",opcod,opcod);
155
[78]156    (* param->_function_decod[10][opcod]) (inst,param);
157  }
158
159  void instruction_decod_type_11       (decod_instruction_t * inst, decod_param_t * param)
160  {
[101]161    log_printf(TRACE,Decod,"instruction_decod_type_11","  * instruction   : decod type_11");
162
[78]163    uint32_t opcod = range<uint32_t>(inst->_instruction, 7, 6);
[101]164
165    log_printf(TRACE,Decod,"instruction_decod","    * opcod : %d (0x%x)",opcod,opcod);
166
[78]167    (* param->_function_decod[11][opcod]) (inst,param);
168  }
169
170  void instruction_decod_type_12       (decod_instruction_t * inst, decod_param_t * param)
171  {
[101]172    log_printf(TRACE,Decod,"instruction_decod_type_12","  * instruction   : decod type_12");
173
[78]174    uint32_t opcod = range<uint32_t>(inst->_instruction, 7, 6);
[101]175
176    log_printf(TRACE,Decod,"instruction_decod","    * opcod : %d (0x%x)",opcod,opcod);
177
[78]178    (* param->_function_decod[12][opcod]) (inst,param);
179  }
180
181  void instruction_decod_type_13       (decod_instruction_t * inst, decod_param_t * param)
182  {
[101]183    log_printf(TRACE,Decod,"instruction_decod_type_13","  * instruction   : decod type_13");
184
[78]185    uint32_t opcod = range<uint32_t>(inst->_instruction, 7, 6);
[101]186
187    log_printf(TRACE,Decod,"instruction_decod","    * opcod : %d (0x%x)",opcod,opcod);
188
[78]189    (* param->_function_decod[13][opcod]) (inst,param);
190  }
191
192  void instruction_illegal             (decod_instruction_t * inst, decod_param_t * param)
193  {
[101]194    log_printf(TRACE,Decod,"instruction_illegal","  * instruction   : illegal");
195
196    msgWarning(_("Instruction \"%.8x\" at address \"%.8x\" is illegal.\n"),inst->_instruction,inst->_address);
[78]197       
198    inst->_exception_use = EXCEPTION_USE_ILLEGAL_INSTRUCTION;
[88]199    inst->_exception     = EXCEPTION_ILLEGAL_INSTRUCTION;
[78]200
201    if (inst->_is_delay_slot)
202      inst->_address_next       = inst->_address_previous;
203    else
204      inst->_address_next       = inst->_address;
205
206    inst->_event_type         = EVENT_TYPE_EXCEPTION;
207  }
[86]208
209  void instruction_l_custom            (decod_instruction_t * inst, decod_param_t * param)
210  {
211    log_printf(TRACE,Decod,"instruction_l_custom","  * instruction   : custom");
212
213    uint32_t opcod = range<uint32_t>(inst->_instruction,31,26);
[88]214   
[86]215    switch (opcod)
216      {
[88]217      case OPCOD_L_CUST1 : {inst->_type = instruction_information(INSTRUCTION_L_CUST1)._type; inst->_operation = instruction_information(INSTRUCTION_L_CUST1)._operation; break;}
218      case OPCOD_L_CUST2 : {inst->_type = instruction_information(INSTRUCTION_L_CUST2)._type; inst->_operation = instruction_information(INSTRUCTION_L_CUST2)._operation; break;}
219      case OPCOD_L_CUST3 : {inst->_type = instruction_information(INSTRUCTION_L_CUST3)._type; inst->_operation = instruction_information(INSTRUCTION_L_CUST3)._operation; break;}
220      case OPCOD_L_CUST4 : {inst->_type = instruction_information(INSTRUCTION_L_CUST4)._type; inst->_operation = instruction_information(INSTRUCTION_L_CUST4)._operation; break;}
221      case OPCOD_L_CUST5 : {inst->_type = instruction_information(INSTRUCTION_L_CUST5)._type; inst->_operation = instruction_information(INSTRUCTION_L_CUST5)._operation; break;}
222      case OPCOD_L_CUST6 : {inst->_type = instruction_information(INSTRUCTION_L_CUST6)._type; inst->_operation = instruction_information(INSTRUCTION_L_CUST6)._operation; break;}
223      case OPCOD_L_CUST7 : {inst->_type = instruction_information(INSTRUCTION_L_CUST7)._type; inst->_operation = instruction_information(INSTRUCTION_L_CUST7)._operation; break;}
224      case OPCOD_L_CUST8 : {inst->_type = instruction_information(INSTRUCTION_L_CUST8)._type; inst->_operation = instruction_information(INSTRUCTION_L_CUST8)._operation; break;}
225
[86]226      default            : {throw ERRORMORPHEO("instruction_l_custom",_("Invalid Custom Opcod."));}
227      }
228   
229    (* param->_function_custom[ 0][opcod]) (inst,param);
230
231    instruction_custom(inst,param);
232  }
233
234  void instruction_lf_custom           (decod_instruction_t * inst, decod_param_t * param)
235  {
236    log_printf(TRACE,Decod,"instruction_lf_custom","  * instruction   : custom");
237
238    uint32_t opcod = range<uint32_t>(inst->_instruction, 7, 0);
239
240    switch (opcod)
241      {
[88]242//       case OPCOD_LF_CUST1_D : {inst->_type = instruction_information(INSTRUCTION_LF_CUST1_D)._type; inst->_operation = instruction_information(INSTRUCTION_LF_CUST1_D)._operation; break;}
243//       case OPCOD_LF_CUST1_S : {inst->_type = instruction_information(INSTRUCTION_LF_CUST1_S)._type; inst->_operation = instruction_information(INSTRUCTION_LF_CUST1_S)._operation; break;}
[86]244      default               : {throw ERRORMORPHEO("instruction_lf_custom",_("Invalid Custom Opcod."));}
245      }
246   
247    (* param->_function_custom[ 1][opcod]) (inst,param);
248
249    instruction_custom(inst,param);
250  }
251
252  void instruction_lv_custom           (decod_instruction_t * inst, decod_param_t * param)
253  {
254    log_printf(TRACE,Decod,"instruction_lv_custom","  * instruction   : custom");
255
256    uint32_t opcod = range<uint32_t>(inst->_instruction, 7, 0);
257
258    switch (opcod)
259      {
[88]260//       case OPCOD_LV_CUST1 : {inst->_type = instruction_information(INSTRUCTION_LV_CUST1)._type; inst->_operation = instruction_information(INSTRUCTION_LV_CUST1)._operation; break;}
261//       case OPCOD_LV_CUST2 : {inst->_type = instruction_information(INSTRUCTION_LV_CUST2)._type; inst->_operation = instruction_information(INSTRUCTION_LV_CUST2)._operation; break;}
262//       case OPCOD_LV_CUST3 : {inst->_type = instruction_information(INSTRUCTION_LV_CUST3)._type; inst->_operation = instruction_information(INSTRUCTION_LV_CUST3)._operation; break;}
263//       case OPCOD_LV_CUST4 : {inst->_type = instruction_information(INSTRUCTION_LV_CUST4)._type; inst->_operation = instruction_information(INSTRUCTION_LV_CUST4)._operation; break;}
[86]264      default             : {throw ERRORMORPHEO("instruction_lv_custom",_("Invalid Custom Opcod."));}
265      }
266   
267    (* param->_function_custom[ 2][opcod]) (inst,param);
268
269    instruction_custom(inst,param);
270  }
271
272  void instruction_custom              (decod_instruction_t * inst, decod_param_t * param)
273  {
274    // Test custom operation
275   
276    std::string msg = "";
277
278    if (inst->_exception_use !=  EXCEPTION_USE_ILLEGAL_INSTRUCTION)
279      {
280        if (inst->_type != TYPE_CUSTOM)
281          msg += _("Invalid Type.\n");
282       
283        if ((inst->_operation != OPERATION_CUSTOM_L_1   ) and
284            (inst->_operation != OPERATION_CUSTOM_L_2   ) and
285            (inst->_operation != OPERATION_CUSTOM_L_3   ) and
286            (inst->_operation != OPERATION_CUSTOM_L_4   ) and
287            (inst->_operation != OPERATION_CUSTOM_L_5   ) and
288            (inst->_operation != OPERATION_CUSTOM_L_6   ) and
289            (inst->_operation != OPERATION_CUSTOM_L_7   ) and
290            (inst->_operation != OPERATION_CUSTOM_L_8   ) and
291            (inst->_operation != OPERATION_CUSTOM_LF_1_D) and
292            (inst->_operation != OPERATION_CUSTOM_LF_1_S) and
293            (inst->_operation != OPERATION_CUSTOM_LV_1  ) and
294            (inst->_operation != OPERATION_CUSTOM_LV_2  ) and
295            (inst->_operation != OPERATION_CUSTOM_LV_3  ) and
296            (inst->_operation != OPERATION_CUSTOM_LV_4  ))
297          msg += _("Invalid Operation.\n");
298       
299        if ((inst->_exception_use !=  EXCEPTION_USE_NONE               ) and
300            (inst->_exception_use !=  EXCEPTION_USE_RANGE              ) and
301            (inst->_exception_use !=  EXCEPTION_USE_CUSTOM_0           ) and
302            (inst->_exception_use !=  EXCEPTION_USE_CUSTOM_1           ) and
303            (inst->_exception_use !=  EXCEPTION_USE_CUSTOM_2           ) and
304            (inst->_exception_use !=  EXCEPTION_USE_CUSTOM_3           ) and
305            (inst->_exception_use !=  EXCEPTION_USE_CUSTOM_4           ) and
306            (inst->_exception_use !=  EXCEPTION_USE_CUSTOM_5           ) and
307            (inst->_exception_use !=  EXCEPTION_USE_CUSTOM_6           ))
308          msg += _("Invalid Exception.\n");
309
310        if ((inst->_event_type != EVENT_TYPE_NONE      ) and
311            (inst->_event_type != EVENT_TYPE_SPR_ACCESS))
312          msg += _("Invalid Event_type.\n");
313
314        if (inst->_address_next != (inst->_address+1))
315          msg += _("Address must be in sequence.\n");
316
317        if (msg != "")
318          throw ERRORMORPHEO("instruction_custom","Invalid decod : "+msg);
319      }
320  }
[78]321 
322  // ORBIS
323  void instruction_l_add               (decod_instruction_t * inst, decod_param_t * param)
324  {
325    log_printf(TRACE,Decod,"instruction_l_add","  * instruction   : l.add");
[88]326    inst->_type               = instruction_information(INSTRUCTION_L_ADD)._type     ; //TYPE_ALU;
327    inst->_operation          = instruction_information(INSTRUCTION_L_ADD)._operation; //OPERATION_ALU_L_ADD;
[78]328    inst->_has_immediat       = 0;
[97]329    inst->_immediat           = 0; // unnecessary
[78]330    inst->_read_ra            = 1;
331    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
332    inst->_read_rb            = 1;
333    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
334    inst->_read_rc            = 0;
[97]335    inst->_num_reg_rc         = 0; //unnecessary
[78]336    inst->_write_rd           = 1;
337    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
338    inst->_write_re           = 1;
339    inst->_num_reg_re         = SPR_LOGIC_SR_CY_OV;
340    inst->_exception_use      = EXCEPTION_USE_RANGE;
[88]341    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]342//  inst->_branch_condition   = ;
343//  inst->_branch_stack_write = ;
344//  inst->_branch_direction   = ;
[97]345//  inst->_address_next       = ; // already define : PC+4
[88]346    inst->_no_execute         = 0;
[78]347    inst->_event_type         = EVENT_TYPE_NONE;
348  }
349
350  void instruction_l_addc              (decod_instruction_t * inst, decod_param_t * param)
351  {
352    log_printf(TRACE,Decod,"instruction_l_addc","  * instruction   : l.addc");
353
[88]354    inst->_type               = instruction_information(INSTRUCTION_L_ADDC)._type     ; //TYPE_ALU;
355    inst->_operation          = instruction_information(INSTRUCTION_L_ADDC)._operation; //OPERATION_ALU_L_ADD;
[78]356    inst->_has_immediat       = 0;
[97]357    inst->_immediat           = 0; // unnecessary
[78]358    inst->_read_ra            = 1;
359    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
360    inst->_read_rb            = 1;
361    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
362    inst->_read_rc            = 1;
363    inst->_num_reg_rc         = SPR_LOGIC_SR_CY_OV;
364    inst->_write_rd           = 1;
365    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
366    inst->_write_re           = 1;
367    inst->_num_reg_re         = SPR_LOGIC_SR_CY_OV;
368    inst->_exception_use      = EXCEPTION_USE_RANGE;
[88]369    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]370//  inst->_branch_condition   = ;
371//  inst->_branch_stack_write = ;
372//  inst->_branch_direction   = ;
[97]373//  inst->_address_next       = ; // already define : PC+4
[88]374    inst->_no_execute         = 0;
[78]375    inst->_event_type         = EVENT_TYPE_NONE;
376  }
377
378  void instruction_l_addi              (decod_instruction_t * inst, decod_param_t * param)
379  {
380    log_printf(TRACE,Decod,"instruction_l_addi","  * instruction   : l.addi");
381
[88]382    inst->_type               = instruction_information(INSTRUCTION_L_ADDI)._type     ; //TYPE_ALU;
383    inst->_operation          = instruction_information(INSTRUCTION_L_ADDI)._operation; //OPERATION_ALU_L_ADD;
[78]384    inst->_has_immediat       = 1;
385    inst->_immediat           = EXTENDS(inst->_instruction,16);
386    inst->_read_ra            = 1;
387    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
388    inst->_read_rb            = 0;
[97]389    inst->_num_reg_rb         = 0; //unnecessary
[78]390    inst->_read_rc            = 0;
[97]391    inst->_num_reg_rc         = 0; //unnecessary
[78]392    inst->_write_rd           = 1;
393    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
394    inst->_write_re           = 1;
395    inst->_num_reg_re         = SPR_LOGIC_SR_CY_OV;
396    inst->_exception_use      = EXCEPTION_USE_RANGE;
[88]397    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]398//  inst->_branch_condition   = ;
399//  inst->_branch_stack_write = ;
400//  inst->_branch_direction   = ;
[97]401//  inst->_address_next       = ; // already define : PC+4
[88]402    inst->_no_execute         = 0;
[78]403    inst->_event_type         = EVENT_TYPE_NONE;
404  }
405
406  void instruction_l_addic             (decod_instruction_t * inst, decod_param_t * param)
407  {
408    log_printf(TRACE,Decod,"instruction_l_addic","  * instruction   : l.addic");
409
[88]410    inst->_type               = instruction_information(INSTRUCTION_L_ADDIC)._type     ; //TYPE_ALU;
411    inst->_operation          = instruction_information(INSTRUCTION_L_ADDIC)._operation; //OPERATION_ALU_L_ADD;
[78]412    inst->_has_immediat       = 1;
413    inst->_immediat           = EXTENDS(inst->_instruction,16);
414    inst->_read_ra            = 1;
415    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
416    inst->_read_rb            = 0;
[97]417    inst->_num_reg_rb         = 0; //unnecessary
[78]418    inst->_read_rc            = 1;
419    inst->_num_reg_rc         = SPR_LOGIC_SR_CY_OV;
420    inst->_write_rd           = 1;
421    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
422    inst->_write_re           = 1;
423    inst->_num_reg_re         = SPR_LOGIC_SR_CY_OV;
424    inst->_exception_use      = EXCEPTION_USE_RANGE;
[88]425    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]426//  inst->_branch_condition   = ;
427//  inst->_branch_stack_write = ;
428//  inst->_branch_direction   = ;
[97]429//  inst->_address_next       = ; // already define : PC+4
[88]430    inst->_no_execute         = 0;
[78]431    inst->_event_type         = EVENT_TYPE_NONE;
432  }
433
434  void instruction_l_and               (decod_instruction_t * inst, decod_param_t * param)
435  {
436    log_printf(TRACE,Decod,"instruction_l_and","  * instruction   : l.and");
437
[88]438    inst->_type               = instruction_information(INSTRUCTION_L_AND)._type     ; //TYPE_ALU;
439    inst->_operation          = instruction_information(INSTRUCTION_L_AND)._operation; //OPERATION_ALU_L_AND;
[78]440    inst->_has_immediat       = 0;
[97]441    inst->_immediat           = 0; // unnecessary
[78]442    inst->_read_ra            = 1;
443    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
444    inst->_read_rb            = 1;
445    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
446    inst->_read_rc            = 0;
[97]447    inst->_num_reg_rc         = 0; //unnecessary
[78]448    inst->_write_rd           = 1;
449    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
450    inst->_write_re           = 0;
[97]451    inst->_num_reg_re         = 0; //unnecessary
[78]452    inst->_exception_use      = EXCEPTION_USE_NONE;
[88]453    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]454//  inst->_branch_condition   = ;
455//  inst->_branch_stack_write = ;
456//  inst->_branch_direction   = ;
[97]457//  inst->_address_next       = ; // already define : PC+4
[88]458    inst->_no_execute         = 0;
[78]459    inst->_event_type         = EVENT_TYPE_NONE;
460  }
461
462  void instruction_l_andi              (decod_instruction_t * inst, decod_param_t * param)
463  {
464    log_printf(TRACE,Decod,"instruction_l_andi","  * instruction   : l.andi");
465
[88]466    inst->_type               = instruction_information(INSTRUCTION_L_ANDI)._type     ; //TYPE_ALU;
467    inst->_operation          = instruction_information(INSTRUCTION_L_ANDI)._operation; //OPERATION_ALU_L_AND;
[78]468    inst->_has_immediat       = 1;
469    inst->_immediat           = EXTENDZ(inst->_instruction,16);
470    inst->_read_ra            = 1;
471    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
472    inst->_read_rb            = 0;
[97]473    inst->_num_reg_rb         = 0; //unnecessary
[78]474    inst->_read_rc            = 0;
[97]475    inst->_num_reg_rc         = 0; //unnecessary
[78]476    inst->_write_rd           = 1;
477    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
478    inst->_write_re           = 0;
[97]479    inst->_num_reg_re         = 0; //unnecessary
[78]480    inst->_exception_use      = EXCEPTION_USE_NONE;
[88]481    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]482//  inst->_branch_condition   = ;
483//  inst->_branch_stack_write = ;
484//  inst->_branch_direction   = ;
[97]485//  inst->_address_next       = ; // already define : PC+4
[88]486    inst->_no_execute         = 0;
[78]487    inst->_event_type         = EVENT_TYPE_NONE;
488  }
489
490  void instruction_l_bf                (decod_instruction_t * inst, decod_param_t * param)
491  {
492    log_printf(TRACE,Decod,"instruction_l_bf","  * instruction   : l.bf");
493
[88]494    Tgeneral_data_t address_next = signed(param->_size_data,inst->_address+EXTENDS(inst->_instruction,26)// <<2
495                                                   );
[78]496
[88]497    inst->_type               = instruction_information(INSTRUCTION_L_BF)._type     ; //TYPE_BRANCH;
498    inst->_operation          = instruction_information(INSTRUCTION_L_BF)._operation; //OPERATION_BRANCH_L_TEST_F;
[78]499    inst->_has_immediat       = 1;
500    inst->_immediat           = address_next;
501    inst->_read_ra            = 0;
[97]502    inst->_num_reg_ra         = 0; //unnecessary
[78]503    inst->_read_rb            = 0;
[97]504    inst->_num_reg_rb         = 0; //unnecessary
[78]505    inst->_read_rc            = 1;
506    inst->_num_reg_rc         = SPR_LOGIC_SR_F;
507    inst->_write_rd           = 0;
[97]508    inst->_num_reg_rd         = 0; //unnecessary
[78]509    inst->_write_re           = 0;
[97]510    inst->_num_reg_re         = 0; //unnecessary
[78]511    inst->_exception_use      = EXCEPTION_USE_NONE;
[88]512    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]513    inst->_branch_condition   = BRANCH_CONDITION_FLAG_SET;
514//  inst->_branch_stack_write = 0;
515
516    inst->_branch_direction   = range<Tgeneral_data_t   >(inst->_instruction,25,25);
517    inst->_address_next       = address_next;
[88]518    inst->_no_execute         = 0;
[78]519    inst->_event_type         = EVENT_TYPE_NONE;
520  }
521
522  void instruction_l_bnf               (decod_instruction_t * inst, decod_param_t * param)
523  {
524    log_printf(TRACE,Decod,"instruction_l_bnf","  * instruction   : l.bnf");
525
[88]526    Tgeneral_data_t address_next = signed(param->_size_data,inst->_address+EXTENDS(inst->_instruction,26)// <<2
527                                                   );
[78]528
[88]529    inst->_type               = instruction_information(INSTRUCTION_L_BNF)._type     ; //TYPE_BRANCH;
530    inst->_operation          = instruction_information(INSTRUCTION_L_BNF)._operation; //OPERATION_BRANCH_L_TEST_NF;
[78]531    inst->_has_immediat       = 1;
532    inst->_immediat           = address_next;
533    inst->_read_ra            = 0;
[97]534    inst->_num_reg_ra         = 0; //unnecessary
[78]535    inst->_read_rb            = 0;
[97]536    inst->_num_reg_rb         = 0; //unnecessary
[78]537    inst->_read_rc            = 1;
538    inst->_num_reg_rc         = SPR_LOGIC_SR_F;
539    inst->_write_rd           = 0;
540    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
541    inst->_write_re           = 0;
[97]542    inst->_num_reg_re         = 0; //unnecessary
[78]543    inst->_exception_use      = EXCEPTION_USE_NONE;
[88]544    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]545    inst->_branch_condition   = BRANCH_CONDITION_FLAG_UNSET;
546//  inst->_branch_stack_write = 0;
547    inst->_branch_direction   = range<Tgeneral_data_t   >(inst->_instruction,25,25);
548    inst->_address_next       = address_next;
[88]549    inst->_no_execute         = 0;
[78]550    inst->_event_type         = EVENT_TYPE_NONE;
551  }
552
553  void instruction_l_cmov              (decod_instruction_t * inst, decod_param_t * param)
554  {
555    log_printf(TRACE,Decod,"instruction_l_cmov","  * instruction   : l.cmov");
556
[88]557    inst->_type               = instruction_information(INSTRUCTION_L_CMOV)._type     ; //TYPE_MOVE;
558    inst->_operation          = instruction_information(INSTRUCTION_L_CMOV)._operation; //OPERATION_MOVE_L_CMOV;
[78]559    inst->_has_immediat       = 0;
[97]560    inst->_immediat           = 0; // unnecessary
[78]561    inst->_read_ra            = 1;
562    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
563    inst->_read_rb            = 1;
564    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
565    inst->_read_rc            = 1;
566    inst->_num_reg_rc         = SPR_LOGIC_SR_F;
567    inst->_write_rd           = 1;
568    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
569    inst->_write_re           = 0;
[97]570    inst->_num_reg_re         = 0; //unnecessary
[78]571    inst->_exception_use      = EXCEPTION_USE_NONE;
[88]572    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]573//  inst->_branch_condition   = ;
574//  inst->_branch_stack_write = ;
575//  inst->_branch_direction   = ;
[97]576//  inst->_address_next       = ; // already define : PC+4
[88]577    inst->_no_execute         = 0;
[78]578    inst->_event_type         = EVENT_TYPE_NONE;
579  }
580
581  void instruction_l_csync             (decod_instruction_t * inst, decod_param_t * param)
582  {
583    log_printf(TRACE,Decod,"instruction_l_csync","  * instruction   : l.csync");
584
585    if (range<Tinstruction_t>(inst->_instruction,23) != 0)
586      {
587        instruction_illegal (inst, param);
588      }
589    else
590      {
[88]591    inst->_type               = instruction_information(INSTRUCTION_L_CSYNC)._type     ; //TYPE_SPECIAL;
592    inst->_operation          = instruction_information(INSTRUCTION_L_CSYNC)._operation; //OPERATION_SPECIAL_L_CSYNC;
[78]593    inst->_has_immediat       = 0;
[97]594    inst->_immediat           = 0; // unnecessary
[78]595    inst->_read_ra            = 0;
[97]596    inst->_num_reg_ra         = 0; //unnecessary
[78]597    inst->_read_rb            = 0;
[97]598    inst->_num_reg_rb         = 0; //unnecessary
[78]599    inst->_read_rc            = 0;
[97]600    inst->_num_reg_rc         = 0; //unnecessary
[78]601    inst->_write_rd           = 0;
[97]602    inst->_num_reg_rd         = 0; //unnecessary
[78]603    inst->_write_re           = 0;
[97]604    inst->_num_reg_re         = 0; //unnecessary
[78]605    inst->_exception_use      = EXCEPTION_USE_NONE;
[88]606    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]607//  inst->_branch_condition   = ;
608//  inst->_branch_stack_write = ;
609//  inst->_branch_direction   = ;
[97]610//  inst->_address_next       = ; // already define : PC+4 // don't change
[88]611    inst->_no_execute         = 0;
[78]612    inst->_event_type         = EVENT_TYPE_CSYNC;
613      }
614  }
615
616//   void instruction_l_cust1             (decod_instruction_t * inst, decod_param_t * param)
617//   void instruction_l_cust2             (decod_instruction_t * inst, decod_param_t * param)
618//   void instruction_l_cust3             (decod_instruction_t * inst, decod_param_t * param)
619//   void instruction_l_cust4             (decod_instruction_t * inst, decod_param_t * param)
620//   void instruction_l_cust5             (decod_instruction_t * inst, decod_param_t * param)
621//   void instruction_l_cust6             (decod_instruction_t * inst, decod_param_t * param)
622//   void instruction_l_cust7             (decod_instruction_t * inst, decod_param_t * param)
623//   void instruction_l_cust8             (decod_instruction_t * inst, decod_param_t * param)
624
625  void instruction_l_div               (decod_instruction_t * inst, decod_param_t * param)
626  {
627    log_printf(TRACE,Decod,"instruction_l_div","  * instruction   : l.div");
628
[88]629    inst->_type               = instruction_information(INSTRUCTION_L_DIV)._type     ; //TYPE_DIV;
630    inst->_operation          = instruction_information(INSTRUCTION_L_DIV)._operation; //OPERATION_DIV_L_DIV;
[78]631    inst->_has_immediat       = 0;
[97]632    inst->_immediat           = 0; // unnecessary
[78]633    inst->_read_ra            = 1;
634    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
635    inst->_read_rb            = 1;
636    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
637    inst->_read_rc            = 0;
[97]638    inst->_num_reg_rc         = 0; //unnecessary
[78]639    inst->_write_rd           = 1;
640    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
641    inst->_write_re           = 1;
642    inst->_num_reg_re         = SPR_LOGIC_SR_CY_OV;
643    inst->_exception_use      = EXCEPTION_USE_RANGE;
[88]644    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]645//  inst->_branch_condition   = ;
646//  inst->_branch_stack_write = ;
647//  inst->_branch_direction   = ;
[97]648//  inst->_address_next       = ; // already define : PC+4
[88]649    inst->_no_execute         = 0;
[78]650    inst->_event_type         = EVENT_TYPE_NONE;
651  }
652
653  void instruction_l_divu              (decod_instruction_t * inst, decod_param_t * param)
654  {
655    log_printf(TRACE,Decod,"instruction_l_divu","  * instruction   : l.divu");
656
[88]657    inst->_type               = instruction_information(INSTRUCTION_L_DIVU)._type     ; //TYPE_DIV;
658    inst->_operation          = instruction_information(INSTRUCTION_L_DIVU)._operation; //OPERATION_DIV_L_DIVU;
[78]659    inst->_has_immediat       = 0;
[97]660    inst->_immediat           = 0; // unnecessary
[78]661    inst->_read_ra            = 1;
662    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
663    inst->_read_rb            = 1;
664    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
665    inst->_read_rc            = 0;
[97]666    inst->_num_reg_rc         = 0; //unnecessary
[78]667    inst->_write_rd           = 1;
668    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
669    inst->_write_re           = 1;
670    inst->_num_reg_re         = SPR_LOGIC_SR_CY_OV;
671    inst->_exception_use      = EXCEPTION_USE_RANGE;
[88]672    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]673//  inst->_branch_condition   = ;
674//  inst->_branch_stack_write = ;
675//  inst->_branch_direction   = ;
[97]676//  inst->_address_next       = ; // already define : PC+4
[88]677    inst->_no_execute         = 0;
[78]678    inst->_event_type         = EVENT_TYPE_NONE;
679  }
680
681  void instruction_l_extbs             (decod_instruction_t * inst, decod_param_t * param)
682  {
683    log_printf(TRACE,Decod,"instruction_l_extbs","  * instruction   : l.extbs");
684
[88]685    inst->_type               = instruction_information(INSTRUCTION_L_EXTBS)._type     ; //TYPE_EXTEND;
686    inst->_operation          = instruction_information(INSTRUCTION_L_EXTBS)._operation; //OPERATION_EXTEND_L_EXTEND_S;
[78]687    inst->_has_immediat       = 1;
688    inst->_immediat           = 8;
689    inst->_read_ra            = 1;
690    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
691    inst->_read_rb            = 0;
[97]692    inst->_num_reg_rb         = 0; //unnecessary
[78]693    inst->_read_rc            = 0;
[97]694    inst->_num_reg_rc         = 0; //unnecessary
[78]695    inst->_write_rd           = 1;
696    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
697    inst->_write_re           = 0;
[97]698    inst->_num_reg_re         = 0; //unnecessary
[78]699    inst->_exception_use      = EXCEPTION_USE_NONE;
[88]700    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]701//  inst->_branch_condition   = ;
702//  inst->_branch_stack_write = ;
703//  inst->_branch_direction   = ;
[97]704//  inst->_address_next       = ; // already define : PC+4
[88]705    inst->_no_execute         = 0;
[78]706    inst->_event_type         = EVENT_TYPE_NONE;
707  }
708
709  void instruction_l_extbz             (decod_instruction_t * inst, decod_param_t * param)
710  {
711    log_printf(TRACE,Decod,"instruction_l_extbz","  * instruction   : l.extbz");
712
[88]713    inst->_type               = instruction_information(INSTRUCTION_L_EXTBZ)._type     ; //TYPE_EXTEND;
714    inst->_operation          = instruction_information(INSTRUCTION_L_EXTBZ)._operation; //OPERATION_EXTEND_L_EXTEND_Z;
[78]715    inst->_has_immediat       = 1;
716    inst->_immediat           = 8;
717    inst->_read_ra            = 1;
718    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
719    inst->_read_rb            = 0;
[97]720    inst->_num_reg_rb         = 0; //unnecessary
[78]721    inst->_read_rc            = 0;
[97]722    inst->_num_reg_rc         = 0; //unnecessary
[78]723    inst->_write_rd           = 1;
724    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
725    inst->_write_re           = 0;
[97]726    inst->_num_reg_re         = 0; //unnecessary
[78]727    inst->_exception_use      = EXCEPTION_USE_NONE;
[88]728    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]729//  inst->_branch_condition   = ;
730//  inst->_branch_stack_write = ;
731//  inst->_branch_direction   = ;
[97]732//  inst->_address_next       = ; // already define : PC+4
[88]733    inst->_no_execute         = 0;
[78]734    inst->_event_type         = EVENT_TYPE_NONE;
735  }
736
737  void instruction_l_exths             (decod_instruction_t * inst, decod_param_t * param)
738  {
739    log_printf(TRACE,Decod,"instruction_l_exths","  * instruction   : l.exths");
740
[88]741    inst->_type               = instruction_information(INSTRUCTION_L_EXTHS)._type     ; //TYPE_EXTEND;
742    inst->_operation          = instruction_information(INSTRUCTION_L_EXTHS)._operation; //OPERATION_EXTEND_L_EXTEND_S;
[78]743    inst->_has_immediat       = 1;
744    inst->_immediat           = 16;
745    inst->_read_ra            = 1;
746    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
747    inst->_read_rb            = 0;
[97]748    inst->_num_reg_rb         = 0; //unnecessary
[78]749    inst->_read_rc            = 0;
[97]750    inst->_num_reg_rc         = 0; //unnecessary
[78]751    inst->_write_rd           = 1;
752    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
753    inst->_write_re           = 0;
[97]754    inst->_num_reg_re         = 0; //unnecessary
[78]755    inst->_exception_use      = EXCEPTION_USE_NONE;
[88]756    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]757//  inst->_branch_condition   = ;
758//  inst->_branch_stack_write = ;
759//  inst->_branch_direction   = ;
[97]760//  inst->_address_next       = ; // already define : PC+4
[88]761    inst->_no_execute         = 0;
[78]762    inst->_event_type         = EVENT_TYPE_NONE;
763  }
764
765  void instruction_l_exthz             (decod_instruction_t * inst, decod_param_t * param)
766  {
767    log_printf(TRACE,Decod,"instruction_l_exthz","  * instruction   : l.exthz");
768
[88]769    inst->_type               = instruction_information(INSTRUCTION_L_EXTHZ)._type     ; //TYPE_EXTEND;
770    inst->_operation          = instruction_information(INSTRUCTION_L_EXTHZ)._operation; //OPERATION_EXTEND_L_EXTEND_Z;
[78]771    inst->_has_immediat       = 1;
772    inst->_immediat           = 16;
773    inst->_read_ra            = 1;
774    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
775    inst->_read_rb            = 0;
[97]776    inst->_num_reg_rb         = 0; //unnecessary
[78]777    inst->_read_rc            = 0;
[97]778    inst->_num_reg_rc         = 0; //unnecessary
[78]779    inst->_write_rd           = 1;
780    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
781    inst->_write_re           = 0;
[97]782    inst->_num_reg_re         = 0; //unnecessary
[78]783    inst->_exception_use      = EXCEPTION_USE_NONE;
[88]784    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]785//  inst->_branch_condition   = ;
786//  inst->_branch_stack_write = ;
787//  inst->_branch_direction   = ;
[97]788//  inst->_address_next       = ; // already define : PC+4
[88]789    inst->_no_execute         = 0;
[78]790    inst->_event_type         = EVENT_TYPE_NONE;
791  }
792
793  void instruction_l_extws             (decod_instruction_t * inst, decod_param_t * param)
794  {
795    log_printf(TRACE,Decod,"instruction_l_extws","  * instruction   : l.extws");
796
[88]797    inst->_type               = instruction_information(INSTRUCTION_L_EXTWS)._type     ; //TYPE_EXTEND;
798    inst->_operation          = instruction_information(INSTRUCTION_L_EXTWS)._operation; //OPERATION_EXTEND_L_EXTEND_S;
[78]799    inst->_has_immediat       = 1;
800    inst->_immediat           = 32;
801    inst->_read_ra            = 1;
802    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
803    inst->_read_rb            = 0;
[97]804    inst->_num_reg_rb         = 0; //unnecessary
[78]805    inst->_read_rc            = 0;
[97]806    inst->_num_reg_rc         = 0; //unnecessary
[78]807    inst->_write_rd           = 1;
808    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
809    inst->_write_re           = 0;
[97]810    inst->_num_reg_re         = 0; //unnecessary
[78]811    inst->_exception_use      = EXCEPTION_USE_NONE;
[88]812    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]813//  inst->_branch_condition   = ;
814//  inst->_branch_stack_write = ;
815//  inst->_branch_direction   = ;
[97]816//  inst->_address_next       = ; // already define : PC+4
[88]817    inst->_no_execute         = 0;
[78]818    inst->_event_type         = EVENT_TYPE_NONE;
819  }
820
821  void instruction_l_extwz             (decod_instruction_t * inst, decod_param_t * param)
822  {
823    log_printf(TRACE,Decod,"instruction_l_extwz","  * instruction   : l.extwz");
824
[88]825    inst->_type               = instruction_information(INSTRUCTION_L_EXTWZ)._type     ; //TYPE_EXTEND;
826    inst->_operation          = instruction_information(INSTRUCTION_L_EXTWZ)._operation; //OPERATION_EXTEND_L_EXTEND_Z;
[78]827    inst->_has_immediat       = 1;
828    inst->_immediat           = 32;
829    inst->_read_ra            = 1;
830    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
831    inst->_read_rb            = 0;
[97]832    inst->_num_reg_rb         = 0; //unnecessary
[78]833    inst->_read_rc            = 0;
[97]834    inst->_num_reg_rc         = 0; //unnecessary
[78]835    inst->_write_rd           = 1;
836    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
837    inst->_write_re           = 0;
[97]838    inst->_num_reg_re         = 0; //unnecessary
[78]839    inst->_exception_use      = EXCEPTION_USE_NONE;
[88]840    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]841//  inst->_branch_condition   = ;
842//  inst->_branch_stack_write = ;
843//  inst->_branch_direction   = ;
[97]844//  inst->_address_next       = ; // already define : PC+4
[88]845    inst->_no_execute         = 0;
[78]846    inst->_event_type         = EVENT_TYPE_NONE;
847  }
848
849  void instruction_l_ff1               (decod_instruction_t * inst, decod_param_t * param)
850  {
851    log_printf(TRACE,Decod,"instruction_l_ff1","  * instruction   : l.ff1");
852
[88]853    inst->_type               = instruction_information(INSTRUCTION_L_FF1)._type     ; //TYPE_FIND;
854    inst->_operation          = instruction_information(INSTRUCTION_L_FF1)._operation; //OPERATION_FIND_L_FF1;
[78]855    inst->_has_immediat       = 0;
[97]856    inst->_immediat           = 0; // unnecessary
[78]857    inst->_read_ra            = 1;
858    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
859    inst->_read_rb            = 0;
[97]860    inst->_num_reg_rb         = 0; //unnecessary
[78]861    inst->_read_rc            = 0;
[97]862    inst->_num_reg_rc         = 0; //unnecessary
[78]863    inst->_write_rd           = 1;
864    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
865    inst->_write_re           = 0;
[97]866    inst->_num_reg_re         = 0; //unnecessary
[78]867    inst->_exception_use      = EXCEPTION_USE_NONE;
[88]868    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]869//  inst->_branch_condition   = ;
870//  inst->_branch_stack_write = ;
871//  inst->_branch_direction   = ;
[97]872//  inst->_address_next       = ; // already define : PC+4
[88]873    inst->_no_execute         = 0;
[78]874    inst->_event_type         = EVENT_TYPE_NONE;
875  }
876
877  void instruction_l_fl1               (decod_instruction_t * inst, decod_param_t * param)
878  {
879    log_printf(TRACE,Decod,"instruction_l_fl1","  * instruction   : l.fl1");
880
[88]881    inst->_type               = instruction_information(INSTRUCTION_L_FL1)._type     ; //TYPE_FIND;
882    inst->_operation          = instruction_information(INSTRUCTION_L_FL1)._operation; //OPERATION_FIND_L_FL1;
[78]883    inst->_has_immediat       = 0;
[97]884    inst->_immediat           = 0; // unnecessary
[78]885    inst->_read_ra            = 1;
886    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
887    inst->_read_rb            = 0;
[97]888    inst->_num_reg_rb         = 0; //unnecessary
[78]889    inst->_read_rc            = 0;
[97]890    inst->_num_reg_rc         = 0; //unnecessary
[78]891    inst->_write_rd           = 1;
892    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
893    inst->_write_re           = 0;
[97]894    inst->_num_reg_re         = 0; //unnecessary
[78]895    inst->_exception_use      = EXCEPTION_USE_NONE;
[88]896    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]897//  inst->_branch_condition   = ;
898//  inst->_branch_stack_write = ;
899//  inst->_branch_direction   = ;
[97]900//  inst->_address_next       = ; // already define : PC+4
[88]901    inst->_no_execute         = 0;
[78]902    inst->_event_type         = EVENT_TYPE_NONE;
903  }
904
905  void instruction_l_j                 (decod_instruction_t * inst, decod_param_t * param)
906  {
907    log_printf(TRACE,Decod,"instruction_l_j","  * instruction   : l.j");
908
[88]909    inst->_type               = instruction_information(INSTRUCTION_L_J)._type     ; //TYPE_BRANCH;
910    inst->_operation          = instruction_information(INSTRUCTION_L_J)._operation; //OPERATION_BRANCH_NONE;
[78]911    inst->_has_immediat       = 0;
[97]912    inst->_immediat           = 0; // unnecessary
[78]913    inst->_read_ra            = 0;
[97]914    inst->_num_reg_ra         = 0; //unnecessary
[78]915    inst->_read_rb            = 0;
[97]916    inst->_num_reg_rb         = 0; //unnecessary
[78]917    inst->_read_rc            = 0;
[97]918    inst->_num_reg_rc         = 0; //unnecessary
[78]919    inst->_write_rd           = 0;
[97]920    inst->_num_reg_rd         = 0; //unnecessary
[78]921    inst->_write_re           = 0;
[97]922    inst->_num_reg_re         = 0; //unnecessary
[78]923    inst->_exception_use      = EXCEPTION_USE_NONE;
[88]924    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]925    inst->_branch_condition   = BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK;
926//  inst->_branch_stack_write = 0;
927    inst->_branch_direction   = 1;
[88]928    inst->_address_next       = signed(param->_size_data,inst->_address+EXTENDS(inst->_instruction,26)// <<2
929                                                               );
930    inst->_no_execute         = 1;
[78]931    inst->_event_type         = EVENT_TYPE_NONE;
932  }
933
934  void instruction_l_jal               (decod_instruction_t * inst, decod_param_t * param)
935  {
936    log_printf(TRACE,Decod,"instruction_l_jal","  * instruction   : l.jal");
937
[88]938    inst->_type               = instruction_information(INSTRUCTION_L_JAL)._type     ; //TYPE_BRANCH;
939    inst->_operation          = instruction_information(INSTRUCTION_L_JAL)._operation; //OPERATION_BRANCH_L_JALR;
[78]940    inst->_has_immediat       = 1;
[86]941    inst->_immediat           = inst->_address_next+1;
[78]942    inst->_read_ra            = 0;
[97]943    inst->_num_reg_ra         = 0; //unnecessary
[78]944    inst->_read_rb            = 0;
[97]945    inst->_num_reg_rb         = 0; //unnecessary
[78]946    inst->_read_rc            = 0;
[97]947    inst->_num_reg_rc         = 0; //unnecessary
[78]948    inst->_write_rd           = 1;
949    inst->_num_reg_rd         = 9; // Link register
950    inst->_write_re           = 0;
[97]951    inst->_num_reg_re         = 0; //unnecessary
[78]952    inst->_exception_use      = EXCEPTION_USE_NONE;
[88]953    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]954    inst->_branch_condition   = BRANCH_CONDITION_NONE_WITH_WRITE_STACK; // Always jump
955//  inst->_branch_stack_write = 1;
956    inst->_branch_direction   = 1;
[88]957    inst->_address_next       = signed(param->_size_data,inst->_address+EXTENDS(inst->_instruction,26)// <<2
958                                                );
959    inst->_no_execute         = 0;
[78]960    inst->_event_type         = EVENT_TYPE_NONE;
961  }
962
963  void instruction_l_jalr              (decod_instruction_t * inst, decod_param_t * param)
964  {
965    log_printf(TRACE,Decod,"instruction_l_jalr","  * instruction   : l.jalr");
966
967    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
968
969    if (inst->_num_reg_rb == 9)
970      {
971        instruction_illegal (inst, param);
972      }
973    else
974      {
[88]975    inst->_type               = instruction_information(INSTRUCTION_L_JALR)._type     ; //TYPE_BRANCH;
976    inst->_operation          = instruction_information(INSTRUCTION_L_JALR)._operation; //OPERATION_BRANCH_L_JALR;
[100]977    inst->_has_immediat       = 1;
978    inst->_immediat           = inst->_address_next+1;
[78]979    inst->_read_ra            = 0;
[97]980    inst->_num_reg_ra         = 0; //unnecessary
[78]981    inst->_read_rb            = 1;
982//  inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
983    inst->_read_rc            = 0;
[97]984    inst->_num_reg_rc         = 0; //unnecessary
[78]985    inst->_write_rd           = 1;
986    inst->_num_reg_rd         = 9; // Link register
987    inst->_write_re           = 0;
[97]988    inst->_num_reg_re         = 0; //unnecessary
[78]989    inst->_exception_use      = EXCEPTION_USE_NONE;
[88]990    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]991//  inst->_branch_condition   = (inst->_num_reg_rb == 9)?BRANCH_CONDITION_READ_STACK:BRANCH_CONDITION_READ_REGISTER;
992    inst->_branch_condition   = BRANCH_CONDITION_READ_REGISTER_WITH_WRITE_STACK;
993//  inst->_branch_stack_write = 1;
994    inst->_branch_direction   = 1;
[97]995//  inst->_address_next       = ; // already define : PC+4
[88]996    inst->_no_execute         = 0;
[78]997    inst->_event_type         = EVENT_TYPE_NONE;
998      }
999  }
1000
1001  void instruction_l_jr                (decod_instruction_t * inst, decod_param_t * param)
1002  {
1003    log_printf(TRACE,Decod,"instruction_l_jr","  * instruction   : l.jr");
1004
[88]1005    inst->_type               = instruction_information(INSTRUCTION_L_JR)._type     ; //TYPE_BRANCH;
1006    inst->_operation          = instruction_information(INSTRUCTION_L_JR)._operation; //OPERATION_BRANCH_L_JALR;
[78]1007    inst->_has_immediat       = 0;
[97]1008    inst->_immediat           = 0; // unnecessary
[78]1009    inst->_read_ra            = 0;
[97]1010    inst->_num_reg_ra         = 0; //unnecessary
[78]1011    inst->_read_rb            = 1;
1012    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
1013    inst->_read_rc            = 0;
[97]1014    inst->_num_reg_rc         = 0; //unnecessary
[78]1015    inst->_write_rd           = 0;
[97]1016    inst->_num_reg_rd         = 0; //unnecessary
[78]1017    inst->_write_re           = 0;
[97]1018    inst->_num_reg_re         = 0; //unnecessary
[78]1019    inst->_exception_use      = EXCEPTION_USE_NONE;
[88]1020    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]1021    inst->_branch_condition   = (inst->_num_reg_rb == 9)?BRANCH_CONDITION_READ_STACK:BRANCH_CONDITION_READ_REGISTER_WITHOUT_WRITE_STACK;
1022//  inst->_branch_stack_write = 0;
1023    inst->_branch_direction   = 1;
[97]1024//  inst->_address_next       = ; // already define : PC+4
[88]1025    inst->_no_execute         = 0;
[78]1026    inst->_event_type         = EVENT_TYPE_NONE;
1027  }
1028
1029  void instruction_l_lbs               (decod_instruction_t * inst, decod_param_t * param)
1030  {
1031    log_printf(TRACE,Decod,"instruction_l_lbs","  * instruction   : l.lbs");
1032
[88]1033    inst->_type               = instruction_information(INSTRUCTION_L_LBS)._type     ; //TYPE_MEMORY;
1034    inst->_operation          = instruction_information(INSTRUCTION_L_LBS)._operation; //OPERATION_MEMORY_LOAD_8_S;
[78]1035    inst->_has_immediat       = 1;
1036    inst->_immediat           = EXTENDS(inst->_instruction,16);
1037    inst->_read_ra            = 1;
1038    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
1039    inst->_read_rb            = 0;
[97]1040    inst->_num_reg_rb         = 0; //unnecessary
[78]1041    inst->_read_rc            = 0;
[97]1042    inst->_num_reg_rc         = 0; //unnecessary
[78]1043    inst->_write_rd           = 1;
1044    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
1045    inst->_write_re           = 0;
[97]1046    inst->_num_reg_re         = 0; //unnecessary
[78]1047    inst->_exception_use      = EXCEPTION_USE_MEMORY_WITHOUT_ALIGNMENT;
[88]1048    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]1049//  inst->_branch_condition   = ;
1050//  inst->_branch_stack_write = ;
1051//  inst->_branch_direction   = ;
[97]1052//  inst->_address_next       = ; // already define : PC+4
[88]1053    inst->_no_execute         = 0;
[78]1054    inst->_event_type         = EVENT_TYPE_NONE;
1055  }
1056
1057  void instruction_l_lbz               (decod_instruction_t * inst, decod_param_t * param)
1058  {
1059    log_printf(TRACE,Decod,"instruction_l_lbz","  * instruction   : l.lbz");
1060
[88]1061    inst->_type               = instruction_information(INSTRUCTION_L_LBZ)._type     ; //TYPE_MEMORY;
1062    inst->_operation          = instruction_information(INSTRUCTION_L_LBZ)._operation; //OPERATION_MEMORY_LOAD_8_Z;
[78]1063    inst->_has_immediat       = 1;
1064    inst->_immediat           = EXTENDS(inst->_instruction,16);
1065    inst->_read_ra            = 1;
1066    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
1067    inst->_read_rb            = 0;
[97]1068    inst->_num_reg_rb         = 0; //unnecessary
[78]1069    inst->_read_rc            = 0;
[97]1070    inst->_num_reg_rc         = 0; //unnecessary
[78]1071    inst->_write_rd           = 1;
1072    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
1073    inst->_write_re           = 0;
[97]1074    inst->_num_reg_re         = 0; //unnecessary
[78]1075    inst->_exception_use      = EXCEPTION_USE_MEMORY_WITHOUT_ALIGNMENT;
[88]1076    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]1077//  inst->_branch_condition   = ;
1078//  inst->_branch_stack_write = ;
1079//  inst->_branch_direction   = ;
[97]1080//  inst->_address_next       = ; // already define : PC+4
[88]1081    inst->_no_execute         = 0;
[78]1082    inst->_event_type         = EVENT_TYPE_NONE;
1083  }
1084 
1085  void instruction_l_ld                (decod_instruction_t * inst, decod_param_t * param)
1086  {
1087    log_printf(TRACE,Decod,"instruction_l_ld","  * instruction   : l.ld");
1088
[88]1089    inst->_type               = instruction_information(INSTRUCTION_L_LD)._type     ; //TYPE_MEMORY;
1090    inst->_operation          = instruction_information(INSTRUCTION_L_LD)._operation; //OPERATION_MEMORY_LOAD_64_S;
[78]1091    inst->_has_immediat       = 1;
1092    inst->_immediat           = EXTENDS(inst->_instruction,16);
1093    inst->_read_ra            = 1;
1094    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
1095    inst->_read_rb            = 0;
[97]1096    inst->_num_reg_rb         = 0; //unnecessary
[78]1097    inst->_read_rc            = 0;
[97]1098    inst->_num_reg_rc         = 0; //unnecessary
[78]1099    inst->_write_rd           = 1;
1100    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
1101    inst->_write_re           = 0;
[97]1102    inst->_num_reg_re         = 0; //unnecessary
[78]1103    inst->_exception_use      = EXCEPTION_USE_MEMORY_WITH_ALIGNMENT;
[88]1104    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]1105//  inst->_branch_condition   = ;
1106//  inst->_branch_stack_write = ;
1107//  inst->_branch_direction   = ;
[97]1108//  inst->_address_next       = ; // already define : PC+4
[88]1109    inst->_no_execute         = 0;
[78]1110    inst->_event_type         = EVENT_TYPE_NONE;
1111  }
1112 
1113  void instruction_l_lhs               (decod_instruction_t * inst, decod_param_t * param)
1114  {
1115    log_printf(TRACE,Decod,"instruction_l_lhs","  * instruction   : l.lhs");
1116
[88]1117    inst->_type               = instruction_information(INSTRUCTION_L_LHS)._type     ; //TYPE_MEMORY;
1118    inst->_operation          = instruction_information(INSTRUCTION_L_LHS)._operation; //OPERATION_MEMORY_LOAD_16_S;
[78]1119    inst->_has_immediat       = 1;
1120    inst->_immediat           = EXTENDS(inst->_instruction,16);
1121    inst->_read_ra            = 1;
1122    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
1123    inst->_read_rb            = 0;
[97]1124    inst->_num_reg_rb         = 0; //unnecessary
[78]1125    inst->_read_rc            = 0;
[97]1126    inst->_num_reg_rc         = 0; //unnecessary
[78]1127    inst->_write_rd           = 1;
1128    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
1129    inst->_write_re           = 0;
[97]1130    inst->_num_reg_re         = 0; //unnecessary
[78]1131    inst->_exception_use      = EXCEPTION_USE_MEMORY_WITH_ALIGNMENT;
[88]1132    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]1133//  inst->_branch_condition   = ;
1134//  inst->_branch_stack_write = ;
1135//  inst->_branch_direction   = ;
[97]1136//  inst->_address_next       = ; // already define : PC+4
[88]1137    inst->_no_execute         = 0;
[78]1138    inst->_event_type         = EVENT_TYPE_NONE;
1139  }
1140 
1141  void instruction_l_lhz               (decod_instruction_t * inst, decod_param_t * param)
1142  {
1143    log_printf(TRACE,Decod,"instruction_l_lhz","  * instruction   : l.lhz");
1144
[88]1145    inst->_type               = instruction_information(INSTRUCTION_L_LHZ)._type     ; //TYPE_MEMORY;
1146    inst->_operation          = instruction_information(INSTRUCTION_L_LHZ)._operation; //OPERATION_MEMORY_LOAD_16_Z;
[78]1147    inst->_has_immediat       = 1;
1148    inst->_immediat           = EXTENDS(inst->_instruction,16);
1149    inst->_read_ra            = 1;
1150    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
1151    inst->_read_rb            = 0;
[97]1152    inst->_num_reg_rb         = 0; //unnecessary
[78]1153    inst->_read_rc            = 0;
[97]1154    inst->_num_reg_rc         = 0; //unnecessary
[78]1155    inst->_write_rd           = 1;
1156    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
1157    inst->_write_re           = 0;
[97]1158    inst->_num_reg_re         = 0; //unnecessary
[78]1159    inst->_exception_use      = EXCEPTION_USE_MEMORY_WITH_ALIGNMENT;
[88]1160    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]1161//  inst->_branch_condition   = ;
1162//  inst->_branch_stack_write = ;
1163//  inst->_branch_direction   = ;
[97]1164//  inst->_address_next       = ; // already define : PC+4
[88]1165    inst->_no_execute         = 0;
[78]1166    inst->_event_type         = EVENT_TYPE_NONE;
1167  }
1168 
1169  void instruction_l_lws               (decod_instruction_t * inst, decod_param_t * param)
1170  {
1171    log_printf(TRACE,Decod,"instruction_l_lws","  * instruction   : l.lws");
1172
[88]1173    inst->_type               = instruction_information(INSTRUCTION_L_LWS)._type     ; //TYPE_MEMORY;
1174    inst->_operation          = instruction_information(INSTRUCTION_L_LWS)._operation; //OPERATION_MEMORY_LOAD_32_S;
[78]1175    inst->_has_immediat       = 1;
1176    inst->_immediat           = EXTENDS(inst->_instruction,16);
1177    inst->_read_ra            = 1;
1178    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
1179    inst->_read_rb            = 0;
[97]1180    inst->_num_reg_rb         = 0; //unnecessary
[78]1181    inst->_read_rc            = 0;
[97]1182    inst->_num_reg_rc         = 0; //unnecessary
[78]1183    inst->_write_rd           = 1;
1184    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
1185    inst->_write_re           = 0;
[97]1186    inst->_num_reg_re         = 0; //unnecessary
[78]1187    inst->_exception_use      = EXCEPTION_USE_MEMORY_WITH_ALIGNMENT;
[88]1188    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]1189//  inst->_branch_condition   = ;
1190//  inst->_branch_stack_write = ;
1191//  inst->_branch_direction   = ;
[97]1192//  inst->_address_next       = ; // already define : PC+4
[88]1193    inst->_no_execute         = 0;
[78]1194    inst->_event_type         = EVENT_TYPE_NONE;
1195  }
1196
1197  void instruction_l_lwz               (decod_instruction_t * inst, decod_param_t * param)
1198  {
1199    log_printf(TRACE,Decod,"instruction_l_lwz","  * instruction   : l.lwz");
1200
[88]1201    inst->_type               = instruction_information(INSTRUCTION_L_LWZ)._type     ; //TYPE_MEMORY;
1202    inst->_operation          = instruction_information(INSTRUCTION_L_LWZ)._operation; //OPERATION_MEMORY_LOAD_32_Z;
[78]1203    inst->_has_immediat       = 1;
1204    inst->_immediat           = EXTENDS(inst->_instruction,16);
1205    inst->_read_ra            = 1;
1206    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
1207    inst->_read_rb            = 0;
[97]1208    inst->_num_reg_rb         = 0; //unnecessary
[78]1209    inst->_read_rc            = 0;
[97]1210    inst->_num_reg_rc         = 0; //unnecessary
[78]1211    inst->_write_rd           = 1;
1212    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
1213    inst->_write_re           = 0;
[97]1214    inst->_num_reg_re         = 0; //unnecessary
[78]1215    inst->_exception_use      = EXCEPTION_USE_MEMORY_WITH_ALIGNMENT;
[88]1216    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]1217//  inst->_branch_condition   = ;
1218//  inst->_branch_stack_write = ;
1219//  inst->_branch_direction   = ;
[97]1220//  inst->_address_next       = ; // already define : PC+4
[88]1221    inst->_no_execute         = 0;
[78]1222    inst->_event_type         = EVENT_TYPE_NONE;
1223  }
1224
1225  void instruction_l_mac               (decod_instruction_t * inst, decod_param_t * param)
1226  {
1227    log_printf(TRACE,Decod,"instruction_l_mac","  * instruction   : l.mac");
1228
[88]1229    inst->_type               = instruction_information(INSTRUCTION_L_MAC)._type     ; //TYPE_SPECIAL;
1230    inst->_operation          = instruction_information(INSTRUCTION_L_MAC)._operation; //OPERATION_SPECIAL_L_MAC;
[78]1231    inst->_has_immediat       = 0;
[97]1232    inst->_immediat           = 0; // unnecessary
[78]1233    inst->_read_ra            = 1;
1234    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
1235    inst->_read_rb            = 1;
1236    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
1237    inst->_read_rc            = 0;
[97]1238    inst->_num_reg_rc         = 0; //unnecessary
[78]1239    inst->_write_rd           = 0;
[97]1240    inst->_num_reg_rd         = 0; //unnecessary
[78]1241    inst->_write_re           = 0;
[97]1242    inst->_num_reg_re         = 0; //unnecessary
[78]1243    inst->_exception_use      = EXCEPTION_USE_NONE;
[88]1244    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]1245//  inst->_branch_condition   = ;
1246//  inst->_branch_stack_write = ;
1247//  inst->_branch_direction   = ;
[97]1248//  inst->_address_next       = ; // already define : PC+4 // don't change
[88]1249    inst->_no_execute         = 0;
[78]1250    inst->_event_type         = EVENT_TYPE_SPR_ACCESS;
1251  }
1252
1253  void instruction_l_maci              (decod_instruction_t * inst, decod_param_t * param)
1254  {
1255    log_printf(TRACE,Decod,"instruction_l_maci","  * instruction   : l.maci");
1256
[88]1257    inst->_type               = instruction_information(INSTRUCTION_L_MACI)._type     ; //TYPE_SPECIAL;
1258    inst->_operation          = instruction_information(INSTRUCTION_L_MACI)._operation; //OPERATION_SPECIAL_L_MAC;
[78]1259    inst->_has_immediat       = 1;
1260    inst->_immediat           = EXTENDS(((range<Tgeneral_data_t   >(inst->_instruction,25,21)<<11)|
1261                                         (range<Tgeneral_data_t   >(inst->_instruction,10, 0))),16);
1262    inst->_read_ra            = 1;
1263    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
1264    inst->_read_rb            = 0;
[97]1265    inst->_num_reg_rb         = 0; //unnecessary
[78]1266    inst->_read_rc            = 0;
[97]1267    inst->_num_reg_rc         = 0; //unnecessary
[78]1268    inst->_write_rd           = 0;
[97]1269    inst->_num_reg_rd         = 0; //unnecessary
[78]1270    inst->_write_re           = 0;
[97]1271    inst->_num_reg_re         = 0; //unnecessary
[78]1272    inst->_exception_use      = EXCEPTION_USE_NONE;
[88]1273    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]1274//  inst->_branch_condition   = ;
1275//  inst->_branch_stack_write = ;
1276//  inst->_branch_direction   = ;
[97]1277//  inst->_address_next       = ; // already define : PC+4 // don't change
[88]1278    inst->_no_execute         = 0;
[78]1279    inst->_event_type         = EVENT_TYPE_SPR_ACCESS;
1280  }
1281
1282  void instruction_l_macrc             (decod_instruction_t * inst, decod_param_t * param)
1283  {
1284    log_printf(TRACE,Decod,"instruction_l_macrc","  * instruction   : l.macrc");
1285
1286    if (range<uint32_t>(inst->_instruction,15, 0) != 0)
1287      {
1288        instruction_illegal (inst, param);
1289      }
1290    else
1291      {
[88]1292    inst->_type               = instruction_information(INSTRUCTION_L_MACRC)._type     ; //TYPE_SPECIAL;
1293    inst->_operation          = instruction_information(INSTRUCTION_L_MACRC)._operation; //OPERATION_SPECIAL_L_MACRC;
[78]1294    inst->_has_immediat       = 0;
[97]1295    inst->_immediat           = 0; // unnecessary
[78]1296    inst->_read_ra            = 0;
[97]1297    inst->_num_reg_ra         = 0; //unnecessary
[78]1298    inst->_read_rb            = 0;
[97]1299    inst->_num_reg_rb         = 0; //unnecessary
[78]1300    inst->_read_rc            = 0;
[97]1301    inst->_num_reg_rc         = 0; //unnecessary
[78]1302    inst->_write_rd           = 1;
1303    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
1304    inst->_write_re           = 0;
[97]1305    inst->_num_reg_re         = 0; //unnecessary
[78]1306    inst->_exception_use      = EXCEPTION_USE_NONE;
[88]1307    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]1308//  inst->_branch_condition   = ;
1309//  inst->_branch_stack_write = ;
1310//  inst->_branch_direction   = ;
[97]1311//  inst->_address_next       = ; // already define : PC+4 // don't change
[88]1312    inst->_no_execute         = 0;
[78]1313    inst->_event_type         = EVENT_TYPE_SPR_ACCESS;
1314      }
1315  }
1316
1317  void instruction_l_mfspr             (decod_instruction_t * inst, decod_param_t * param)
1318  {
1319    log_printf(TRACE,Decod,"instruction_l_mfspr","  * instruction   : l.mfspr");
1320
[88]1321    inst->_type               = instruction_information(INSTRUCTION_L_MFSPR)._type     ; //TYPE_SPECIAL;
1322    inst->_operation          = instruction_information(INSTRUCTION_L_MFSPR)._operation; //OPERATION_SPECIAL_L_MFSPR;
[78]1323    inst->_has_immediat       = 1;
1324    inst->_immediat           = EXTENDZ(inst->_instruction,16);
1325    inst->_read_ra            = 1;
1326    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
1327    inst->_read_rb            = 0;
[97]1328    inst->_num_reg_rb         = 0; //unnecessary
[78]1329    inst->_read_rc            = 0;
[97]1330    inst->_num_reg_rc         = 0; //unnecessary
[78]1331    inst->_write_rd           = 1;
1332    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
1333    inst->_write_re           = 0;
[97]1334    inst->_num_reg_re         = 0; //unnecessary
[78]1335    inst->_exception_use      = EXCEPTION_USE_NONE;
[88]1336    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]1337//  inst->_branch_condition   = ;
1338//  inst->_branch_stack_write = ;
1339//  inst->_branch_direction   = ;
[97]1340//  inst->_address_next       = ; // already define : PC+4 // don't change
[88]1341    inst->_no_execute         = 0;
[78]1342    inst->_event_type         = EVENT_TYPE_SPR_ACCESS;
1343  }
1344
1345  void instruction_l_movhi             (decod_instruction_t * inst, decod_param_t * param)
1346  {
1347    log_printf(TRACE,Decod,"instruction_l_movhi","  * instruction   : l.movhi");
1348
[88]1349    inst->_type               = instruction_information(INSTRUCTION_L_MOVHI)._type     ; //TYPE_MOVE;
1350    inst->_operation          = instruction_information(INSTRUCTION_L_MOVHI)._operation; //OPERATION_MOVE_L_MOVHI;
[78]1351    inst->_has_immediat       = 1;
1352    inst->_immediat           = EXTENDZ(inst->_instruction,16);
1353    inst->_read_ra            = 0;
[97]1354    inst->_num_reg_ra         = 0; //unnecessary
[78]1355    inst->_read_rb            = 0;
[97]1356    inst->_num_reg_rb         = 0; //unnecessary
[78]1357    inst->_read_rc            = 0;
[97]1358    inst->_num_reg_rc         = 0; //unnecessary
[78]1359    inst->_write_rd           = 1;
1360    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
1361    inst->_write_re           = 0;
[97]1362    inst->_num_reg_re         = 0; //unnecessary
[78]1363    inst->_exception_use      = EXCEPTION_USE_NONE;
[88]1364    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]1365//  inst->_branch_condition   = ;
1366//  inst->_branch_stack_write = ;
1367//  inst->_branch_direction   = ;
[97]1368//  inst->_address_next       = ; // already define : PC+4
[88]1369    inst->_no_execute         = 0;
[78]1370    inst->_event_type         = EVENT_TYPE_NONE;
1371  }
1372
1373  void instruction_l_msb               (decod_instruction_t * inst, decod_param_t * param)
1374  {
1375    log_printf(TRACE,Decod,"instruction_l_msb","  * instruction   : l.msb");
1376
[88]1377    inst->_type               = instruction_information(INSTRUCTION_L_MSB)._type     ; //TYPE_SPECIAL;
1378    inst->_operation          = instruction_information(INSTRUCTION_L_MSB)._operation; //OPERATION_SPECIAL_L_MSB;
[78]1379    inst->_has_immediat       = 0;
[97]1380    inst->_immediat           = 0; // unnecessary
[78]1381    inst->_read_ra            = 1;
1382    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
1383    inst->_read_rb            = 1;
1384    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
1385    inst->_read_rc            = 0;
[97]1386    inst->_num_reg_rc         = 0; //unnecessary
[78]1387    inst->_write_rd           = 0;
[97]1388    inst->_num_reg_rd         = 0; //unnecessary
[78]1389    inst->_write_re           = 0;
[97]1390    inst->_num_reg_re         = 0; //unnecessary
[78]1391    inst->_exception_use      = EXCEPTION_USE_NONE;
[88]1392    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]1393//  inst->_branch_condition   = ;
1394//  inst->_branch_stack_write = ;
1395//  inst->_branch_direction   = ;
[97]1396//  inst->_address_next       = ; // already define : PC+4 // don't change
[88]1397    inst->_no_execute         = 0;
[78]1398    inst->_event_type         = EVENT_TYPE_SPR_ACCESS;
1399  }
1400
1401  void instruction_l_msync             (decod_instruction_t * inst, decod_param_t * param)
1402  {
1403    log_printf(TRACE,Decod,"instruction_l_msync","  * instruction   : l.msync");
1404
1405    if (range<uint32_t>(inst->_instruction,22, 0) != 0)
1406      {
1407        instruction_illegal (inst, param);
1408      }
1409    else
1410      {
[88]1411    inst->_type               = instruction_information(INSTRUCTION_L_MSYNC)._type     ; //TYPE_SPECIAL;
1412    inst->_operation          = instruction_information(INSTRUCTION_L_MSYNC)._operation; //OPERATION_SPECIAL_L_MSYNC;
[78]1413    inst->_has_immediat       = 0;
[97]1414    inst->_immediat           = 0; // unnecessary
[78]1415    inst->_read_ra            = 0;
[97]1416    inst->_num_reg_ra         = 0; //unnecessary
[78]1417    inst->_read_rb            = 0;
[97]1418    inst->_num_reg_rb         = 0; //unnecessary
[78]1419    inst->_read_rc            = 0;
[97]1420    inst->_num_reg_rc         = 0; //unnecessary
[78]1421    inst->_write_rd           = 0;
[97]1422    inst->_num_reg_rd         = 0; //unnecessary
[78]1423    inst->_write_re           = 0;
[97]1424    inst->_num_reg_re         = 0; //unnecessary
[78]1425    inst->_exception_use      = EXCEPTION_USE_NONE;
[88]1426    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]1427//  inst->_branch_condition   = ;
1428//  inst->_branch_stack_write = ;
1429//  inst->_branch_direction   = ;
[97]1430//  inst->_address_next       = ; // already define : PC+4 // don't change
[88]1431    inst->_no_execute         = 0;
[78]1432    inst->_event_type         = EVENT_TYPE_MSYNC;
1433      }
1434  }
1435
1436  void instruction_l_mtspr             (decod_instruction_t * inst, decod_param_t * param)
1437  {
1438    log_printf(TRACE,Decod,"instruction_l_mtspr","  * instruction   : l.mtspr");
1439
[88]1440    inst->_type               = instruction_information(INSTRUCTION_L_MTSPR)._type     ; //TYPE_SPECIAL;
1441    inst->_operation          = instruction_information(INSTRUCTION_L_MTSPR)._operation; //OPERATION_SPECIAL_L_MTSPR;
[78]1442    inst->_has_immediat       = 1;
1443    inst->_immediat           = EXTENDZ(((range<Tgeneral_data_t   >(inst->_instruction,25,21)<<11)|
1444                                         (range<Tgeneral_data_t   >(inst->_instruction,10, 0))),16);
1445    inst->_read_ra            = 1;
1446    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
1447    inst->_read_rb            = 1;
1448    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
1449    inst->_read_rc            = 0;
[97]1450    inst->_num_reg_rc         = 0; //unnecessary
[78]1451    inst->_write_rd           = 0;
[97]1452    inst->_num_reg_rd         = 0; //unnecessary
[78]1453    inst->_write_re           = 0;
[97]1454    inst->_num_reg_re         = 0; //unnecessary
[78]1455    inst->_exception_use      = EXCEPTION_USE_NONE;
[88]1456    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]1457//  inst->_branch_condition   = ;
1458//  inst->_branch_stack_write = ;
1459//  inst->_branch_direction   = ;
[97]1460//  inst->_address_next       = ; // already define : PC+4 // don't change
[88]1461    inst->_no_execute         = 0;
[78]1462    inst->_event_type         = EVENT_TYPE_SPR_ACCESS;
1463  }
1464   
1465  void instruction_l_mul               (decod_instruction_t * inst, decod_param_t * param)
1466  {
1467    log_printf(TRACE,Decod,"instruction_l_mul","  * instruction   : l.mul");
1468
[88]1469    inst->_type               = instruction_information(INSTRUCTION_L_MUL)._type     ; //TYPE_MUL;
1470    inst->_operation          = instruction_information(INSTRUCTION_L_MUL)._operation; //OPERATION_MUL_L_MUL;
[78]1471    inst->_has_immediat       = 0;
[97]1472    inst->_immediat           = 0; // unnecessary
[78]1473    inst->_read_ra            = 1;
1474    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
1475    inst->_read_rb            = 1;
1476    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
1477    inst->_read_rc            = 0;
[97]1478    inst->_num_reg_rc         = 0; //unnecessary
[78]1479    inst->_write_rd           = 1;
1480    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
1481    inst->_write_re           = 1;
1482    inst->_num_reg_re         = SPR_LOGIC_SR_CY_OV;
1483    inst->_exception_use      = EXCEPTION_USE_RANGE;
[88]1484    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]1485//  inst->_branch_condition   = ;
1486//  inst->_branch_stack_write = ;
1487//  inst->_branch_direction   = ;
[97]1488//  inst->_address_next       = ; // already define : PC+4
[88]1489    inst->_no_execute         = 0;
[78]1490    inst->_event_type         = EVENT_TYPE_NONE;
1491  }
1492
1493  void instruction_l_muli              (decod_instruction_t * inst, decod_param_t * param)
1494  {
1495    log_printf(TRACE,Decod,"instruction_l_muli","  * instruction   : l.muli");
1496
[88]1497    inst->_type               = instruction_information(INSTRUCTION_L_MULI)._type     ; //TYPE_MUL;
1498    inst->_operation          = instruction_information(INSTRUCTION_L_MULI)._operation; //OPERATION_MUL_L_MUL;
[78]1499    inst->_has_immediat       = 1;
1500    inst->_immediat           = EXTENDS(inst->_instruction,16);
1501    inst->_read_ra            = 1;
1502    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
1503    inst->_read_rb            = 0;
[97]1504    inst->_num_reg_rb         = 0; //unnecessary
[78]1505    inst->_read_rc            = 0;
[97]1506    inst->_num_reg_rc         = 0; //unnecessary
[78]1507    inst->_write_rd           = 1;
1508    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
1509    inst->_write_re           = 1;
1510    inst->_num_reg_re         = SPR_LOGIC_SR_CY_OV;
1511    inst->_exception_use      = EXCEPTION_USE_RANGE;
[88]1512    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]1513//  inst->_branch_condition   = ;
1514//  inst->_branch_stack_write = ;
1515//  inst->_branch_direction   = ;
[97]1516//  inst->_address_next       = ; // already define : PC+4
[88]1517    inst->_no_execute         = 0;
[78]1518    inst->_event_type         = EVENT_TYPE_NONE;
1519  }
1520
1521  void instruction_l_mulu              (decod_instruction_t * inst, decod_param_t * param)
1522  {
1523    log_printf(TRACE,Decod,"instruction_l_mulu","  * instruction   : l.mulu");
1524
[88]1525    inst->_type               = instruction_information(INSTRUCTION_L_MULU)._type     ; //TYPE_MUL;
1526    inst->_operation          = instruction_information(INSTRUCTION_L_MULU)._operation; //OPERATION_MUL_L_MULU;
[78]1527    inst->_has_immediat       = 0;
[97]1528    inst->_immediat           = 0; // unnecessary
[78]1529    inst->_read_ra            = 1;
1530    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
1531    inst->_read_rb            = 1;
1532    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
1533    inst->_read_rc            = 0;
[97]1534    inst->_num_reg_rc         = 0; //unnecessary
[78]1535    inst->_write_rd           = 1;
1536    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
1537    inst->_write_re           = 1;
1538    inst->_num_reg_re         = SPR_LOGIC_SR_CY_OV;
1539    inst->_exception_use      = EXCEPTION_USE_RANGE;
[88]1540    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]1541//  inst->_branch_condition   = ;
1542//  inst->_branch_stack_write = ;
1543//  inst->_branch_direction   = ;
[97]1544//  inst->_address_next       = ; // already define : PC+4
[88]1545    inst->_no_execute         = 0;
[78]1546    inst->_event_type         = EVENT_TYPE_NONE;
1547  }
1548
1549  void instruction_l_nop               (decod_instruction_t * inst, decod_param_t * param)
1550  {
1551    log_printf(TRACE,Decod,"instruction_l_nop","  * instruction   : l.nop");
1552
[88]1553    inst->_type               = instruction_information(INSTRUCTION_L_NOP)._type     ; //TYPE_SPECIAL;
1554    inst->_operation          = instruction_information(INSTRUCTION_L_NOP)._operation; //OPERATION_SPECIAL_L_NOP;
[78]1555//  inst->_has_immediat       = 1;
1556//  inst->_immediat           = EXTENDZ(inst->_instruction,16);
1557    inst->_has_immediat       = 0;
[97]1558    inst->_immediat           = 0; // unnecessary
[78]1559    inst->_read_ra            = 0;
[97]1560    inst->_num_reg_ra         = 0; //unnecessary
[78]1561    inst->_read_rb            = 0;
[97]1562    inst->_num_reg_rb         = 0; //unnecessary
[78]1563    inst->_read_rc            = 0;
[97]1564    inst->_num_reg_rc         = 0; //unnecessary
[78]1565    inst->_write_rd           = 0;
[97]1566    inst->_num_reg_rd         = 0; //unnecessary
[78]1567    inst->_write_re           = 0;
[97]1568    inst->_num_reg_re         = 0; //unnecessary
[78]1569    inst->_exception_use      = EXCEPTION_USE_NONE;
[88]1570    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]1571//  inst->_branch_condition   = ;
1572//  inst->_branch_stack_write = ;
1573//  inst->_branch_direction   = ;
[97]1574//  inst->_address_next       = ; // already define : PC+4
[88]1575    inst->_no_execute         = 1;
[78]1576    inst->_event_type         = EVENT_TYPE_NONE;
1577  }
1578
1579  void instruction_l_or                (decod_instruction_t * inst, decod_param_t * param)
1580  {
1581    log_printf(TRACE,Decod,"instruction_l_or","  * instruction   : l.or");
1582
[88]1583    inst->_type               = instruction_information(INSTRUCTION_L_OR)._type     ; //TYPE_ALU;
1584    inst->_operation          = instruction_information(INSTRUCTION_L_OR)._operation; //OPERATION_ALU_L_OR;
[78]1585    inst->_has_immediat       = 0;
[97]1586    inst->_immediat           = 0; // unnecessary
[78]1587    inst->_read_ra            = 1;
1588    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
1589    inst->_read_rb            = 1;
1590    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
1591    inst->_read_rc            = 0;
[97]1592    inst->_num_reg_rc         = 0; //unnecessary
[78]1593    inst->_write_rd           = 1;
1594    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
1595    inst->_write_re           = 0;
[97]1596    inst->_num_reg_re         = 0; //unnecessary
[78]1597    inst->_exception_use      = EXCEPTION_USE_NONE;
[88]1598    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]1599//  inst->_branch_condition   = ;
1600//  inst->_branch_stack_write = ;
1601//  inst->_branch_direction   = ;
[97]1602//  inst->_address_next       = ; // already define : PC+4
[88]1603    inst->_no_execute         = 0;
[78]1604    inst->_event_type         = EVENT_TYPE_NONE;
1605  }
1606
1607  void instruction_l_ori               (decod_instruction_t * inst, decod_param_t * param)
1608  {
1609    log_printf(TRACE,Decod,"instruction_l_ori","  * instruction   : l.ori");
1610
[88]1611    inst->_type               = instruction_information(INSTRUCTION_L_ORI)._type     ; //TYPE_ALU;
1612    inst->_operation          = instruction_information(INSTRUCTION_L_ORI)._operation; //OPERATION_ALU_L_OR;
[78]1613    inst->_has_immediat       = 1;
1614    inst->_immediat           = EXTENDZ(inst->_instruction,16);
1615    inst->_read_ra            = 1;
1616    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
1617    inst->_read_rb            = 0;
[97]1618    inst->_num_reg_rb         = 0; //unnecessary
[78]1619    inst->_read_rc            = 0;
[97]1620    inst->_num_reg_rc         = 0; //unnecessary
[78]1621    inst->_write_rd           = 1;
1622    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
1623    inst->_write_re           = 0;
[97]1624    inst->_num_reg_re         = 0; //unnecessary
[78]1625    inst->_exception_use      = EXCEPTION_USE_NONE;
[88]1626    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]1627//  inst->_branch_condition   = ;
1628//  inst->_branch_stack_write = ;
1629//  inst->_branch_direction   = ;
[97]1630//  inst->_address_next       = ; // already define : PC+4
[88]1631    inst->_no_execute         = 0;
[78]1632    inst->_event_type         = EVENT_TYPE_NONE;
1633  }
1634
1635  void instruction_l_psync             (decod_instruction_t * inst, decod_param_t * param)
1636  {
1637    log_printf(TRACE,Decod,"instruction_l_psync","  * instruction   : l.psync");
1638
1639    if (range<uint32_t>(inst->_instruction,22, 0) != 0)
1640      {
1641        instruction_illegal (inst, param);
1642      }
1643    else
1644      {
[88]1645    inst->_type               = instruction_information(INSTRUCTION_L_PSYNC)._type     ; //TYPE_SPECIAL;
1646    inst->_operation          = instruction_information(INSTRUCTION_L_PSYNC)._operation; //OPERATION_SPECIAL_L_PSYNC;
[78]1647    inst->_has_immediat       = 0;
[97]1648    inst->_immediat           = 0; // unnecessary
[78]1649    inst->_read_ra            = 0;
[97]1650    inst->_num_reg_ra         = 0; //unnecessary
[78]1651    inst->_read_rb            = 0;
[97]1652    inst->_num_reg_rb         = 0; //unnecessary
[78]1653    inst->_read_rc            = 0;
[97]1654    inst->_num_reg_rc         = 0; //unnecessary
[78]1655    inst->_write_rd           = 0;
[97]1656    inst->_num_reg_rd         = 0; //unnecessary
[78]1657    inst->_write_re           = 0;
[97]1658    inst->_num_reg_re         = 0; //unnecessary
[78]1659    inst->_exception_use      = EXCEPTION_USE_NONE;
[88]1660    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]1661//  inst->_branch_condition   = ;
1662//  inst->_branch_stack_write = ;
1663//  inst->_branch_direction   = ;
[97]1664//  inst->_address_next       = ; // already define : PC+4 // don't change
[88]1665    inst->_no_execute         = 0;
[78]1666    inst->_event_type         = EVENT_TYPE_PSYNC;
1667      }
1668  }
1669
1670  void instruction_l_rfe               (decod_instruction_t * inst, decod_param_t * param)
1671  {
1672    log_printf(TRACE,Decod,"instruction_l_rfe","  * instruction   : l.rfe");
1673
[88]1674    inst->_type               = instruction_information(INSTRUCTION_L_RFE)._type     ; //TYPE_SPECIAL;
1675    inst->_operation          = instruction_information(INSTRUCTION_L_RFE)._operation; //OPERATION_SPECIAL_L_RFE;
[78]1676    inst->_has_immediat       = 0;
[97]1677    inst->_immediat           = 0; // unnecessary
[78]1678    inst->_read_ra            = 0;
[97]1679    inst->_num_reg_ra         = 0; //unnecessary
[78]1680    inst->_read_rb            = 0;
[97]1681    inst->_num_reg_rb         = 0; //unnecessary
[78]1682    inst->_read_rc            = 0;
[97]1683    inst->_num_reg_rc         = 0; //unnecessary
[78]1684    inst->_write_rd           = 0;
[97]1685    inst->_num_reg_rd         = 0; //unnecessary
[78]1686    inst->_write_re           = 0;
[97]1687    inst->_num_reg_re         = 0; //unnecessary
[78]1688    inst->_exception_use      = EXCEPTION_USE_NONE;
[88]1689    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]1690//  inst->_branch_condition   = ;
1691//  inst->_branch_stack_write = ;
1692//  inst->_branch_direction   = ;
[97]1693//  inst->_address_next       = ; // already define : PC+4 // don't change
[88]1694    inst->_no_execute         = 1;
[78]1695    inst->_event_type         = EVENT_TYPE_NONE; // can't anticip this instruction : must read EPCR in rename stage
1696  }
1697
1698  void instruction_l_ror               (decod_instruction_t * inst, decod_param_t * param)
1699  {
1700    log_printf(TRACE,Decod,"instruction_l_ror","  * instruction   : l.ror");
1701
[88]1702    inst->_type               = instruction_information(INSTRUCTION_L_ROR)._type     ; //TYPE_SHIFT;
1703    inst->_operation          = instruction_information(INSTRUCTION_L_ROR)._operation; //OPERATION_SHIFT_L_ROR;
[78]1704    inst->_has_immediat       = 0;
[97]1705    inst->_immediat           = 0; // unnecessary
[78]1706    inst->_read_ra            = 1;
1707    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
1708    inst->_read_rb            = 1;
1709    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
1710    inst->_read_rc            = 0;
[97]1711    inst->_num_reg_rc         = 0; //unnecessary
[78]1712    inst->_write_rd           = 1;
1713    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
1714    inst->_write_re           = 0;
[97]1715    inst->_num_reg_re         = 0; //unnecessary
[78]1716    inst->_exception_use      = EXCEPTION_USE_NONE;
[88]1717    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]1718//  inst->_branch_condition   = ;
1719//  inst->_branch_stack_write = ;
1720//  inst->_branch_direction   = ;
[97]1721//  inst->_address_next       = ; // already define : PC+4
[88]1722    inst->_no_execute         = 0;
[78]1723    inst->_event_type         = EVENT_TYPE_NONE;
1724  }
1725
1726  void instruction_l_rori              (decod_instruction_t * inst, decod_param_t * param)
1727  {
1728    log_printf(TRACE,Decod,"instruction_l_rori","  * instruction   : l.rori");
1729
[88]1730    inst->_type               = instruction_information(INSTRUCTION_L_RORI)._type     ; //TYPE_SHIFT;
1731    inst->_operation          = instruction_information(INSTRUCTION_L_RORI)._operation; //OPERATION_SHIFT_L_ROR;
[78]1732    inst->_has_immediat       = 1;
1733    inst->_immediat           = range<Tgeneral_data_t   >(inst->_instruction, 5, 0);
1734    inst->_read_ra            = 1;
1735    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
1736    inst->_read_rb            = 0;
[97]1737    inst->_num_reg_rb         = 0; //unnecessary
[78]1738    inst->_read_rc            = 0;
[97]1739    inst->_num_reg_rc         = 0; //unnecessary
[78]1740    inst->_write_rd           = 1;
1741    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
1742    inst->_write_re           = 0;
[97]1743    inst->_num_reg_re         = 0; //unnecessary
[78]1744    inst->_exception_use      = EXCEPTION_USE_NONE;
[88]1745    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]1746//  inst->_branch_condition   = ;
1747//  inst->_branch_stack_write = ;
1748//  inst->_branch_direction   = ;
[97]1749//  inst->_address_next       = ; // already define : PC+4
[88]1750    inst->_no_execute         = 0;
[78]1751    inst->_event_type         = EVENT_TYPE_NONE;
1752  }
1753
1754  void instruction_l_sb                (decod_instruction_t * inst, decod_param_t * param)
1755  {
1756    log_printf(TRACE,Decod,"instruction_l_sb","  * instruction   : l.sb");
1757
[88]1758    inst->_type               = instruction_information(INSTRUCTION_L_SB)._type     ; //TYPE_MEMORY;
1759    inst->_operation          = instruction_information(INSTRUCTION_L_SB)._operation; //OPERATION_MEMORY_STORE_8;
[78]1760    inst->_has_immediat       = 1;
1761    inst->_immediat           = EXTENDS(((range<Tgeneral_data_t   >(inst->_instruction,25,21)<<11)|
1762                                         (range<Tgeneral_data_t   >(inst->_instruction,10, 0))),16);
1763    inst->_read_ra            = 1;
1764    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
1765    inst->_read_rb            = 1;
1766    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
1767    inst->_read_rc            = 0;
[97]1768    inst->_num_reg_rc         = 0; //unnecessary
[78]1769    inst->_write_rd           = 0;
[97]1770    inst->_num_reg_rd         = 0; //unnecessary
[78]1771    inst->_write_re           = 0;
[97]1772    inst->_num_reg_re         = 0; //unnecessary
[78]1773    inst->_exception_use      = EXCEPTION_USE_MEMORY_WITHOUT_ALIGNMENT;
[88]1774    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]1775//  inst->_branch_condition   = ;
1776//  inst->_branch_stack_write = ;
1777//  inst->_branch_direction   = ;
[97]1778//  inst->_address_next       = ; // already define : PC+4
[88]1779    inst->_no_execute         = 0;
[78]1780    inst->_event_type         = EVENT_TYPE_NONE;
1781  }
1782
1783  void instruction_l_sd                (decod_instruction_t * inst, decod_param_t * param)
1784  {
1785    log_printf(TRACE,Decod,"instruction_l_sb","  * instruction   : l.sb");
1786
[88]1787    inst->_type               = instruction_information(INSTRUCTION_L_SD)._type     ; //TYPE_MEMORY;
1788    inst->_operation          = instruction_information(INSTRUCTION_L_SD)._operation; //OPERATION_MEMORY_STORE_64;
[78]1789    inst->_has_immediat       = 1;
1790    inst->_immediat           = EXTENDS(((range<Tgeneral_data_t   >(inst->_instruction,25,21)<<11)|
1791                                         (range<Tgeneral_data_t   >(inst->_instruction,10, 0))),16);
1792    inst->_read_ra            = 1;
1793    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
1794    inst->_read_rb            = 1; 
1795    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
1796    inst->_read_rc            = 0;
[97]1797    inst->_num_reg_rc         = 0; //unnecessary
[78]1798    inst->_write_rd           = 0;
[97]1799    inst->_num_reg_rd         = 0; //unnecessary
[78]1800    inst->_write_re           = 0;
[97]1801    inst->_num_reg_re         = 0; //unnecessary
[78]1802    inst->_exception_use      = EXCEPTION_USE_MEMORY_WITH_ALIGNMENT;
[88]1803    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]1804//  inst->_branch_condition   = ;
1805//  inst->_branch_stack_write = ;
1806//  inst->_branch_direction   = ;
[97]1807//  inst->_address_next       = ; // already define : PC+4
[88]1808    inst->_no_execute         = 0;
[78]1809    inst->_event_type         = EVENT_TYPE_NONE;
1810  }
1811
1812  void instruction_l_sfeq              (decod_instruction_t * inst, decod_param_t * param)
1813  {
1814    log_printf(TRACE,Decod,"instruction_l_sfeq","  * instruction   : l.sfeq");
1815
[88]1816    inst->_type               = instruction_information(INSTRUCTION_L_SFEQ)._type     ; //TYPE_TEST;
1817    inst->_operation          = instruction_information(INSTRUCTION_L_SFEQ)._operation; //OPERATION_TEST_L_SFEQ;
[78]1818    inst->_has_immediat       = 0;
[97]1819    inst->_immediat           = 0; // unnecessary
[78]1820    inst->_read_ra            = 1;
1821    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
1822    inst->_read_rb            = 1;
1823    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
1824    inst->_read_rc            = 0;
[97]1825    inst->_num_reg_rc         = 0; //unnecessary
[78]1826    inst->_write_rd           = 0;
[97]1827    inst->_num_reg_rd         = 0; //unnecessary
[78]1828    inst->_write_re           = 1;
1829    inst->_num_reg_re         = SPR_LOGIC_SR_F;
1830    inst->_exception_use      = EXCEPTION_USE_NONE;
[88]1831    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]1832//  inst->_branch_condition   = ;
1833//  inst->_branch_stack_write = ;
1834//  inst->_branch_direction   = ;
[97]1835//  inst->_address_next       = ; // already define : PC+4
[88]1836    inst->_no_execute         = 0;
[78]1837    inst->_event_type         = EVENT_TYPE_NONE;
1838  }
1839
1840  void instruction_l_sfeqi             (decod_instruction_t * inst, decod_param_t * param)
1841  {
1842    log_printf(TRACE,Decod,"instruction_l_sfeqi","  * instruction   : l.sfeqi");
1843
[88]1844    inst->_type               = instruction_information(INSTRUCTION_L_SFEQI)._type     ; //TYPE_TEST;
1845    inst->_operation          = instruction_information(INSTRUCTION_L_SFEQI)._operation; //OPERATION_TEST_L_SFEQ;
[78]1846    inst->_has_immediat       = 1;
1847    inst->_immediat           = EXTENDS(inst->_instruction,16);
1848    inst->_read_ra            = 1;
1849    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
1850    inst->_read_rb            = 0;
[97]1851    inst->_num_reg_rb         = 0; //unnecessary
[78]1852    inst->_read_rc            = 0;
[97]1853    inst->_num_reg_rc         = 0; //unnecessary
[78]1854    inst->_write_rd           = 0;
[97]1855    inst->_num_reg_rd         = 0; //unnecessary
[78]1856    inst->_write_re           = 1;
1857    inst->_num_reg_re         = SPR_LOGIC_SR_F;
1858    inst->_exception_use      = EXCEPTION_USE_NONE;
[88]1859    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]1860//  inst->_branch_condition   = ;
1861//  inst->_branch_stack_write = ;
1862//  inst->_branch_direction   = ;
[97]1863//  inst->_address_next       = ; // already define : PC+4
[88]1864    inst->_no_execute         = 0;
[78]1865    inst->_event_type         = EVENT_TYPE_NONE;
1866  }
1867
1868  void instruction_l_sfges             (decod_instruction_t * inst, decod_param_t * param)
1869  {
1870    log_printf(TRACE,Decod,"instruction_l_sfges","  * instruction   : l.sfges");
1871
[88]1872    inst->_type               = instruction_information(INSTRUCTION_L_SFGES)._type     ; //TYPE_TEST;
1873    inst->_operation          = instruction_information(INSTRUCTION_L_SFGES)._operation; //OPERATION_TEST_L_SFGES;
[78]1874    inst->_has_immediat       = 0;
[97]1875    inst->_immediat           = 0; // unnecessary
[78]1876    inst->_read_ra            = 1;
1877    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
1878    inst->_read_rb            = 1;
1879    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
1880    inst->_read_rc            = 0;
[97]1881    inst->_num_reg_rc         = 0; //unnecessary
[78]1882    inst->_write_rd           = 0;
[97]1883    inst->_num_reg_rd         = 0; //unnecessary
[78]1884    inst->_write_re           = 1;
1885    inst->_num_reg_re         = SPR_LOGIC_SR_F;
1886    inst->_exception_use      = EXCEPTION_USE_NONE;
[88]1887    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]1888//  inst->_branch_condition   = ;
1889//  inst->_branch_stack_write = ;
1890//  inst->_branch_direction   = ;
[97]1891//  inst->_address_next       = ; // already define : PC+4
[88]1892    inst->_no_execute         = 0;
[78]1893    inst->_event_type         = EVENT_TYPE_NONE;
1894  }
1895
1896  void instruction_l_sfgesi            (decod_instruction_t * inst, decod_param_t * param)
1897  {
1898    log_printf(TRACE,Decod,"instruction_l_sfgesi","  * instruction   : l.sfgesi");
1899
[88]1900    inst->_type               = instruction_information(INSTRUCTION_L_SFGESI)._type     ; //TYPE_TEST;
1901    inst->_operation          = instruction_information(INSTRUCTION_L_SFGESI)._operation; //OPERATION_TEST_L_SFGES;
[78]1902    inst->_has_immediat       = 1;
1903    inst->_immediat           = EXTENDS(inst->_instruction,16);
1904    inst->_read_ra            = 1;
1905    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
1906    inst->_read_rb            = 0;
[97]1907    inst->_num_reg_rb         = 0; //unnecessary
[78]1908    inst->_read_rc            = 0;
[97]1909    inst->_num_reg_rc         = 0; //unnecessary
[78]1910    inst->_write_rd           = 0;
[97]1911    inst->_num_reg_rd         = 0; //unnecessary
[78]1912    inst->_write_re           = 1;
1913    inst->_num_reg_re         = SPR_LOGIC_SR_F;
1914    inst->_exception_use      = EXCEPTION_USE_NONE;
[88]1915    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]1916//  inst->_branch_condition   = ;
1917//  inst->_branch_stack_write = ;
1918//  inst->_branch_direction   = ;
[97]1919//  inst->_address_next       = ; // already define : PC+4
[88]1920    inst->_no_execute         = 0;
[78]1921    inst->_event_type         = EVENT_TYPE_NONE;
1922  }
1923
1924  void instruction_l_sfgeu             (decod_instruction_t * inst, decod_param_t * param)
1925  {
1926    log_printf(TRACE,Decod,"instruction_l_sfgeu","  * instruction   : l.sfgeu");
1927
[88]1928    inst->_type               = instruction_information(INSTRUCTION_L_SFGEU)._type     ; //TYPE_TEST;
1929    inst->_operation          = instruction_information(INSTRUCTION_L_SFGEU)._operation; //OPERATION_TEST_L_SFGEU;
[78]1930    inst->_has_immediat       = 0;
[97]1931    inst->_immediat           = 0; // unnecessary
[78]1932    inst->_read_ra            = 1;
1933    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
1934    inst->_read_rb            = 1;
1935    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
1936    inst->_read_rc            = 0;
[97]1937    inst->_num_reg_rc         = 0; //unnecessary
[78]1938    inst->_write_rd           = 0;
[97]1939    inst->_num_reg_rd         = 0; //unnecessary
[78]1940    inst->_write_re           = 1;
1941    inst->_num_reg_re         = SPR_LOGIC_SR_F;
1942    inst->_exception_use      = EXCEPTION_USE_NONE;
[88]1943    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]1944//  inst->_branch_condition   = ;
1945//  inst->_branch_stack_write = ;
1946//  inst->_branch_direction   = ;
[97]1947//  inst->_address_next       = ; // already define : PC+4
[88]1948    inst->_no_execute         = 0;
[78]1949    inst->_event_type         = EVENT_TYPE_NONE;
1950  }
1951
1952  void instruction_l_sfgeui            (decod_instruction_t * inst, decod_param_t * param)
1953  {
1954    log_printf(TRACE,Decod,"instruction_l_sfgeui","  * instruction   : l.sfgeui");
1955
[88]1956    inst->_type               = instruction_information(INSTRUCTION_L_SFGEUI)._type     ; //TYPE_TEST;
1957    inst->_operation          = instruction_information(INSTRUCTION_L_SFGEUI)._operation; //OPERATION_TEST_L_SFGEU;
[78]1958    inst->_has_immediat       = 1;
1959    inst->_immediat           = EXTENDS(inst->_instruction,16);
1960    inst->_read_ra            = 1;
1961    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
1962    inst->_read_rb            = 0;
[97]1963    inst->_num_reg_rb         = 0; //unnecessary
[78]1964    inst->_read_rc            = 0;
[97]1965    inst->_num_reg_rc         = 0; //unnecessary
[78]1966    inst->_write_rd           = 0;
[97]1967    inst->_num_reg_rd         = 0; //unnecessary
[78]1968    inst->_write_re           = 1;
1969    inst->_num_reg_re         = SPR_LOGIC_SR_F;
1970    inst->_exception_use      = EXCEPTION_USE_NONE;
[88]1971    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]1972//  inst->_branch_condition   = ;
1973//  inst->_branch_stack_write = ;
1974//  inst->_branch_direction   = ;
[97]1975//  inst->_address_next       = ; // already define : PC+4
[88]1976    inst->_no_execute         = 0;
[78]1977    inst->_event_type         = EVENT_TYPE_NONE;
1978  }
1979
1980  void instruction_l_sfgts             (decod_instruction_t * inst, decod_param_t * param)
1981  {
1982    log_printf(TRACE,Decod,"instruction_l_sfgts","  * instruction   : l.sfgts");
1983
[88]1984    inst->_type               = instruction_information(INSTRUCTION_L_SFGTS)._type     ; //TYPE_TEST;
1985    inst->_operation          = instruction_information(INSTRUCTION_L_SFGTS)._operation; //OPERATION_TEST_L_SFGTS;
[78]1986    inst->_has_immediat       = 0;
[97]1987    inst->_immediat           = 0; // unnecessary
[78]1988    inst->_read_ra            = 1;
1989    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
1990    inst->_read_rb            = 1;
1991    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
1992    inst->_read_rc            = 0;
[97]1993    inst->_num_reg_rc         = 0; //unnecessary
[78]1994    inst->_write_rd           = 0;
[97]1995    inst->_num_reg_rd         = 0; //unnecessary
[78]1996    inst->_write_re           = 1;
1997    inst->_num_reg_re         = SPR_LOGIC_SR_F;
1998    inst->_exception_use      = EXCEPTION_USE_NONE;
[88]1999    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]2000//  inst->_branch_condition   = ;
2001//  inst->_branch_stack_write = ;
2002//  inst->_branch_direction   = ;
[97]2003//  inst->_address_next       = ; // already define : PC+4
[88]2004    inst->_no_execute         = 0;
[78]2005    inst->_event_type         = EVENT_TYPE_NONE;
2006  }
2007
2008  void instruction_l_sfgtsi            (decod_instruction_t * inst, decod_param_t * param)
2009  {
2010    log_printf(TRACE,Decod,"instruction_l_sfgtsi","  * instruction   : l.sfgtsi");
2011
[88]2012    inst->_type               = instruction_information(INSTRUCTION_L_SFGTSI)._type     ; //TYPE_TEST;
2013    inst->_operation          = instruction_information(INSTRUCTION_L_SFGTSI)._operation; //OPERATION_TEST_L_SFGTS;
[78]2014    inst->_has_immediat       = 1;
2015    inst->_immediat           = EXTENDS(inst->_instruction,16);
2016    inst->_read_ra            = 1;
2017    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
2018    inst->_read_rb            = 0;
[97]2019    inst->_num_reg_rb         = 0; //unnecessary
[78]2020    inst->_read_rc            = 0;
[97]2021    inst->_num_reg_rc         = 0; //unnecessary
[78]2022    inst->_write_rd           = 0;
[97]2023    inst->_num_reg_rd         = 0; //unnecessary
[78]2024    inst->_write_re           = 1;
2025    inst->_num_reg_re         = SPR_LOGIC_SR_F;
2026    inst->_exception_use      = EXCEPTION_USE_NONE;
[88]2027    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]2028//  inst->_branch_condition   = ;
2029//  inst->_branch_stack_write = ;
2030//  inst->_branch_direction   = ;
[97]2031//  inst->_address_next       = ; // already define : PC+4
[88]2032    inst->_no_execute         = 0;
[78]2033    inst->_event_type         = EVENT_TYPE_NONE;
2034  }
2035
2036  void instruction_l_sfgtu             (decod_instruction_t * inst, decod_param_t * param)
2037  {
2038    log_printf(TRACE,Decod,"instruction_l_sfgtu","  * instruction   : l.sfgtu");
2039
[88]2040    inst->_type               = instruction_information(INSTRUCTION_L_SFGTU)._type     ; //TYPE_TEST;
2041    inst->_operation          = instruction_information(INSTRUCTION_L_SFGTU)._operation; //OPERATION_TEST_L_SFGTU;
[78]2042    inst->_has_immediat       = 0;
[97]2043    inst->_immediat           = 0; // unnecessary
[78]2044    inst->_read_ra            = 1;
2045    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
2046    inst->_read_rb            = 1;
2047    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
2048    inst->_read_rc            = 0;
[97]2049    inst->_num_reg_rc         = 0; //unnecessary
[78]2050    inst->_write_rd           = 0;
[97]2051    inst->_num_reg_rd         = 0; //unnecessary
[78]2052    inst->_write_re           = 1;
2053    inst->_num_reg_re         = SPR_LOGIC_SR_F;
2054    inst->_exception_use      = EXCEPTION_USE_NONE;
[88]2055    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]2056//  inst->_branch_condition   = ;
2057//  inst->_branch_stack_write = ;
2058//  inst->_branch_direction   = ;
[97]2059//  inst->_address_next       = ; // already define : PC+4
[88]2060    inst->_no_execute         = 0;
[78]2061    inst->_event_type         = EVENT_TYPE_NONE;
2062  }
2063
2064  void instruction_l_sfgtui            (decod_instruction_t * inst, decod_param_t * param)
2065  {
2066    log_printf(TRACE,Decod,"instruction_l_sfgtui","  * instruction   : l.sfgtui");
2067
[88]2068    inst->_type               = instruction_information(INSTRUCTION_L_SFGTUI)._type     ; //TYPE_TEST;
2069    inst->_operation          = instruction_information(INSTRUCTION_L_SFGTUI)._operation; //OPERATION_TEST_L_SFGTU;
[78]2070    inst->_has_immediat       = 1;
2071    inst->_immediat           = EXTENDS(inst->_instruction,16);
2072    inst->_read_ra            = 1;
2073    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
2074    inst->_read_rb            = 0;
[97]2075    inst->_num_reg_rb         = 0; //unnecessary
[78]2076    inst->_read_rc            = 0;
[97]2077    inst->_num_reg_rc         = 0; //unnecessary
[78]2078    inst->_write_rd           = 0;
[97]2079    inst->_num_reg_rd         = 0; //unnecessary
[78]2080    inst->_write_re           = 1;
2081    inst->_num_reg_re         = SPR_LOGIC_SR_F;
2082    inst->_exception_use      = EXCEPTION_USE_NONE;
[88]2083    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]2084//  inst->_branch_condition   = ;
2085//  inst->_branch_stack_write = ;
2086//  inst->_branch_direction   = ;
[97]2087//  inst->_address_next       = ; // already define : PC+4
[88]2088    inst->_no_execute         = 0;
[78]2089    inst->_event_type         = EVENT_TYPE_NONE;
2090  }
2091
2092  void instruction_l_sfles             (decod_instruction_t * inst, decod_param_t * param)
2093  {
2094    log_printf(TRACE,Decod,"instruction_l_sfles","  * instruction   : l.sfles");
2095
[88]2096    inst->_type               = instruction_information(INSTRUCTION_L_SFLES)._type     ; //TYPE_TEST;
2097    inst->_operation          = instruction_information(INSTRUCTION_L_SFLES)._operation; //OPERATION_TEST_L_SFLES;
[78]2098    inst->_has_immediat       = 0;
[97]2099    inst->_immediat           = 0; // unnecessary
[78]2100    inst->_read_ra            = 1;
2101    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
2102    inst->_read_rb            = 1;
2103    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
2104    inst->_read_rc            = 0;
[97]2105    inst->_num_reg_rc         = 0; //unnecessary
[78]2106    inst->_write_rd           = 0;
[97]2107    inst->_num_reg_rd         = 0; //unnecessary
[78]2108    inst->_write_re           = 1;
2109    inst->_num_reg_re         = SPR_LOGIC_SR_F;
2110    inst->_exception_use      = EXCEPTION_USE_NONE;
[88]2111    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]2112//  inst->_branch_condition   = ;
2113//  inst->_branch_stack_write = ;
2114//  inst->_branch_direction   = ;
[97]2115//  inst->_address_next       = ; // already define : PC+4
[88]2116    inst->_no_execute         = 0;
[78]2117    inst->_event_type         = EVENT_TYPE_NONE;
2118  }
2119
2120  void instruction_l_sflesi            (decod_instruction_t * inst, decod_param_t * param)
2121  {
2122    log_printf(TRACE,Decod,"instruction_l_sflesi","  * instruction   : l.sflesi");
2123
[88]2124    inst->_type               = instruction_information(INSTRUCTION_L_SFLESI)._type     ; //TYPE_TEST;
2125    inst->_operation          = instruction_information(INSTRUCTION_L_SFLESI)._operation; //OPERATION_TEST_L_SFLES;
[78]2126    inst->_has_immediat       = 1;
2127    inst->_immediat           = EXTENDS(inst->_instruction,16);
2128    inst->_read_ra            = 1;
2129    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
2130    inst->_read_rb            = 0;
[97]2131    inst->_num_reg_rb         = 0; //unnecessary
[78]2132    inst->_read_rc            = 0;
[97]2133    inst->_num_reg_rc         = 0; //unnecessary
[78]2134    inst->_write_rd           = 0;
[97]2135    inst->_num_reg_rd         = 0; //unnecessary
[78]2136    inst->_write_re           = 1;
2137    inst->_num_reg_re         = SPR_LOGIC_SR_F;
2138    inst->_exception_use      = EXCEPTION_USE_NONE;
[88]2139    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]2140//  inst->_branch_condition   = ;
2141//  inst->_branch_stack_write = ;
2142//  inst->_branch_direction   = ;
[97]2143//  inst->_address_next       = ; // already define : PC+4
[88]2144    inst->_no_execute         = 0;
[78]2145    inst->_event_type         = EVENT_TYPE_NONE;
2146  }
2147
2148  void instruction_l_sfleu             (decod_instruction_t * inst, decod_param_t * param)
2149  {
2150    log_printf(TRACE,Decod,"instruction_l_sfleu","  * instruction   : l.sfleu");
2151
[88]2152    inst->_type               = instruction_information(INSTRUCTION_L_SFLEU)._type     ; //TYPE_TEST;
2153    inst->_operation          = instruction_information(INSTRUCTION_L_SFLEU)._operation; //OPERATION_TEST_L_SFLEU;
[78]2154    inst->_has_immediat       = 0;
[97]2155    inst->_immediat           = 0; // unnecessary
[78]2156    inst->_read_ra            = 1;
2157    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
2158    inst->_read_rb            = 1;
2159    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
2160    inst->_read_rc            = 0;
[97]2161    inst->_num_reg_rc         = 0; //unnecessary
[78]2162    inst->_write_rd           = 0;
[97]2163    inst->_num_reg_rd         = 0; //unnecessary
[78]2164    inst->_write_re           = 1;
2165    inst->_num_reg_re         = SPR_LOGIC_SR_F;
2166    inst->_exception_use      = EXCEPTION_USE_NONE;
[88]2167    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]2168//  inst->_branch_condition   = ;
2169//  inst->_branch_stack_write = ;
2170//  inst->_branch_direction   = ;
[97]2171//  inst->_address_next       = ; // already define : PC+4
[88]2172    inst->_no_execute         = 0;
[78]2173    inst->_event_type         = EVENT_TYPE_NONE;
2174  }
2175
2176  void instruction_l_sfleui            (decod_instruction_t * inst, decod_param_t * param)
2177  {
2178    log_printf(TRACE,Decod,"instruction_l_sfleui","  * instruction   : l.sfleui");
2179
[88]2180    inst->_type               = instruction_information(INSTRUCTION_L_SFLEUI)._type     ; //TYPE_TEST;
2181    inst->_operation          = instruction_information(INSTRUCTION_L_SFLEUI)._operation; //OPERATION_TEST_L_SFLEU;
[78]2182    inst->_has_immediat       = 1;
2183    inst->_immediat           = EXTENDS(inst->_instruction,16);
2184    inst->_read_ra            = 1;
2185    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
2186    inst->_read_rb            = 0;
[97]2187    inst->_num_reg_rb         = 0; //unnecessary
[78]2188    inst->_read_rc            = 0;
[97]2189    inst->_num_reg_rc         = 0; //unnecessary
[78]2190    inst->_write_rd           = 0;
[97]2191    inst->_num_reg_rd         = 0; //unnecessary
[78]2192    inst->_write_re           = 1;
2193    inst->_num_reg_re         = SPR_LOGIC_SR_F;
2194    inst->_exception_use      = EXCEPTION_USE_NONE;
[88]2195    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]2196//  inst->_branch_condition   = ;
2197//  inst->_branch_stack_write = ;
2198//  inst->_branch_direction   = ;
[97]2199//  inst->_address_next       = ; // already define : PC+4
[88]2200    inst->_no_execute         = 0;
[78]2201    inst->_event_type         = EVENT_TYPE_NONE;
2202  }
2203
2204  void instruction_l_sflts             (decod_instruction_t * inst, decod_param_t * param)
2205  {
2206    log_printf(TRACE,Decod,"instruction_l_sflts","  * instruction   : l.sflts");
2207
[88]2208    inst->_type               = instruction_information(INSTRUCTION_L_SFLTS)._type     ; //TYPE_TEST;
2209    inst->_operation          = instruction_information(INSTRUCTION_L_SFLTS)._operation; //OPERATION_TEST_L_SFLTS;
[78]2210    inst->_has_immediat       = 0;
[97]2211    inst->_immediat           = 0; // unnecessary
[78]2212    inst->_read_ra            = 1;
2213    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
2214    inst->_read_rb            = 1;
2215    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
2216    inst->_read_rc            = 0;
[97]2217    inst->_num_reg_rc         = 0; //unnecessary
[78]2218    inst->_write_rd           = 0;
[97]2219    inst->_num_reg_rd         = 0; //unnecessary
[78]2220    inst->_write_re           = 1;
2221    inst->_num_reg_re         = SPR_LOGIC_SR_F;
2222    inst->_exception_use      = EXCEPTION_USE_NONE;
[88]2223    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]2224//  inst->_branch_condition   = ;
2225//  inst->_branch_stack_write = ;
2226//  inst->_branch_direction   = ;
[97]2227//  inst->_address_next       = ; // already define : PC+4
[88]2228    inst->_no_execute         = 0;
[78]2229    inst->_event_type         = EVENT_TYPE_NONE;
2230  }
2231
2232  void instruction_l_sfltsi            (decod_instruction_t * inst, decod_param_t * param)
2233  {
2234    log_printf(TRACE,Decod,"instruction_l_sfltsi","  * instruction   : l.sfltsi");
2235
[88]2236    inst->_type               = instruction_information(INSTRUCTION_L_SFLTSI)._type     ; //TYPE_TEST;
2237    inst->_operation          = instruction_information(INSTRUCTION_L_SFLTSI)._operation; //OPERATION_TEST_L_SFLTS;
[78]2238    inst->_has_immediat       = 1;
2239    inst->_immediat           = EXTENDS(inst->_instruction,16);
2240    inst->_read_ra            = 1;
2241    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
2242    inst->_read_rb            = 0;
[97]2243    inst->_num_reg_rb         = 0; //unnecessary
[78]2244    inst->_read_rc            = 0;
[97]2245    inst->_num_reg_rc         = 0; //unnecessary
[78]2246    inst->_write_rd           = 0;
[97]2247    inst->_num_reg_rd         = 0; //unnecessary
[78]2248    inst->_write_re           = 1;
2249    inst->_num_reg_re         = SPR_LOGIC_SR_F;
2250    inst->_exception_use      = EXCEPTION_USE_NONE;
[88]2251    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]2252//  inst->_branch_condition   = ;
2253//  inst->_branch_stack_write = ;
2254//  inst->_branch_direction   = ;
[97]2255//  inst->_address_next       = ; // already define : PC+4
[88]2256    inst->_no_execute         = 0;
[78]2257    inst->_event_type         = EVENT_TYPE_NONE;
2258  }
2259
2260  void instruction_l_sfltu             (decod_instruction_t * inst, decod_param_t * param)
2261  {
2262    log_printf(TRACE,Decod,"instruction_l_sfltu","  * instruction   : l.sfltu");
2263
[88]2264    inst->_type               = instruction_information(INSTRUCTION_L_SFLTU)._type     ; //TYPE_TEST;
2265    inst->_operation          = instruction_information(INSTRUCTION_L_SFLTU)._operation; //OPERATION_TEST_L_SFLTU;
[78]2266    inst->_has_immediat       = 0;
[97]2267    inst->_immediat           = 0; // unnecessary
[78]2268    inst->_read_ra            = 1;
2269    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
2270    inst->_read_rb            = 1;
2271    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
2272    inst->_read_rc            = 0;
[97]2273    inst->_num_reg_rc         = 0; //unnecessary
[78]2274    inst->_write_rd           = 0;
[97]2275    inst->_num_reg_rd         = 0; //unnecessary
[78]2276    inst->_write_re           = 1;
2277    inst->_num_reg_re         = SPR_LOGIC_SR_F;
2278    inst->_exception_use      = EXCEPTION_USE_NONE;
[88]2279    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]2280//  inst->_branch_condition   = ;
2281//  inst->_branch_stack_write = ;
2282//  inst->_branch_direction   = ;
[97]2283//  inst->_address_next       = ; // already define : PC+4
[88]2284    inst->_no_execute         = 0;
[78]2285    inst->_event_type         = EVENT_TYPE_NONE;
2286  }
2287
2288  void instruction_l_sfltui            (decod_instruction_t * inst, decod_param_t * param)
2289  {
2290    log_printf(TRACE,Decod,"instruction_l_sfltui","  * instruction   : l.sfltui");
2291
[88]2292    inst->_type               = instruction_information(INSTRUCTION_L_SFLTUI)._type     ; //TYPE_TEST;
2293    inst->_operation          = instruction_information(INSTRUCTION_L_SFLTUI)._operation; //OPERATION_TEST_L_SFLTU;
[78]2294    inst->_has_immediat       = 1;
2295    inst->_immediat           = EXTENDS(inst->_instruction,16);
2296    inst->_read_ra            = 1;
2297    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
2298    inst->_read_rb            = 0;
[97]2299    inst->_num_reg_rb         = 0; //unnecessary
[78]2300    inst->_read_rc            = 0;
[97]2301    inst->_num_reg_rc         = 0; //unnecessary
[78]2302    inst->_write_rd           = 0;
[97]2303    inst->_num_reg_rd         = 0; //unnecessary
[78]2304    inst->_write_re           = 1;
2305    inst->_num_reg_re         = SPR_LOGIC_SR_F;
2306    inst->_exception_use      = EXCEPTION_USE_NONE;
[88]2307    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]2308//  inst->_branch_condition   = ;
2309//  inst->_branch_stack_write = ;
2310//  inst->_branch_direction   = ;
[97]2311//  inst->_address_next       = ; // already define : PC+4
[88]2312    inst->_no_execute         = 0;
[78]2313    inst->_event_type         = EVENT_TYPE_NONE;
2314  }
2315
2316  void instruction_l_sfne              (decod_instruction_t * inst, decod_param_t * param)
2317  {
2318    log_printf(TRACE,Decod,"instruction_l_sfne","  * instruction   : l.sfne");
2319
[88]2320    inst->_type               = instruction_information(INSTRUCTION_L_SFNE)._type     ; //TYPE_TEST;
2321    inst->_operation          = instruction_information(INSTRUCTION_L_SFNE)._operation; //OPERATION_TEST_L_SFNE;
[78]2322    inst->_has_immediat       = 0;
[97]2323    inst->_immediat           = 0; // unnecessary
[78]2324    inst->_read_ra            = 1;
2325    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
2326    inst->_read_rb            = 1;
2327    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
2328    inst->_read_rc            = 0;
[97]2329    inst->_num_reg_rc         = 0; //unnecessary
[78]2330    inst->_write_rd           = 0;
[97]2331    inst->_num_reg_rd         = 0; //unnecessary
[78]2332    inst->_write_re           = 1;
2333    inst->_num_reg_re         = SPR_LOGIC_SR_F;
2334    inst->_exception_use      = EXCEPTION_USE_NONE;
[88]2335    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]2336//  inst->_branch_condition   = ;
2337//  inst->_branch_stack_write = ;
2338//  inst->_branch_direction   = ;
[97]2339//  inst->_address_next       = ; // already define : PC+4
[88]2340    inst->_no_execute         = 0;
[78]2341    inst->_event_type         = EVENT_TYPE_NONE;
2342  }
2343
2344  void instruction_l_sfnei             (decod_instruction_t * inst, decod_param_t * param)
2345  {
2346    log_printf(TRACE,Decod,"instruction_l_sfnei","  * instruction   : l.sfnei");
2347
[88]2348    inst->_type               = instruction_information(INSTRUCTION_L_SFNEI)._type     ; //TYPE_TEST;
2349    inst->_operation          = instruction_information(INSTRUCTION_L_SFNEI)._operation; //OPERATION_TEST_L_SFNE;
[78]2350    inst->_has_immediat       = 1;
2351    inst->_immediat           = EXTENDS(inst->_instruction,16);
2352    inst->_read_ra            = 1;
2353    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
2354    inst->_read_rb            = 0;
[97]2355    inst->_num_reg_rb         = 0; //unnecessary
[78]2356    inst->_read_rc            = 0;
[97]2357    inst->_num_reg_rc         = 0; //unnecessary
[78]2358    inst->_write_rd           = 0;
[97]2359    inst->_num_reg_rd         = 0; //unnecessary
[78]2360    inst->_write_re           = 1;
2361    inst->_num_reg_re         = SPR_LOGIC_SR_F;
2362    inst->_exception_use      = EXCEPTION_USE_NONE;
[88]2363    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]2364//  inst->_branch_condition   = ;
2365//  inst->_branch_stack_write = ;
2366//  inst->_branch_direction   = ;
[97]2367//  inst->_address_next       = ; // already define : PC+4
[88]2368    inst->_no_execute         = 0;
[78]2369    inst->_event_type         = EVENT_TYPE_NONE;
2370  }
2371
2372  void instruction_l_sh                (decod_instruction_t * inst, decod_param_t * param)
2373  {
2374    log_printf(TRACE,Decod,"instruction_l_sh","  * instruction   : l.sh");
2375
[88]2376    inst->_type               = instruction_information(INSTRUCTION_L_SH)._type     ; //TYPE_MEMORY;
2377    inst->_operation          = instruction_information(INSTRUCTION_L_SH)._operation; //OPERATION_MEMORY_STORE_16;
[78]2378    inst->_has_immediat       = 1;
2379    inst->_immediat           = EXTENDS(((range<Tgeneral_data_t   >(inst->_instruction,25,21)<<11)|
2380                                         (range<Tgeneral_data_t   >(inst->_instruction,10, 0))),16);
2381    inst->_read_ra            = 1;
2382    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
2383    inst->_read_rb            = 1; 
2384    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
2385    inst->_read_rc            = 0;
[97]2386    inst->_num_reg_rc         = 0; //unnecessary
[78]2387    inst->_write_rd           = 0;
[97]2388    inst->_num_reg_rd         = 0; //unnecessary
[78]2389    inst->_write_re           = 0;
[97]2390    inst->_num_reg_re         = 0; //unnecessary
[78]2391    inst->_exception_use      = EXCEPTION_USE_MEMORY_WITH_ALIGNMENT;
[88]2392    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]2393//  inst->_branch_condition   = ;
2394//  inst->_branch_stack_write = ;
2395//  inst->_branch_direction   = ;
[97]2396//  inst->_address_next       = ; // already define : PC+4
[88]2397    inst->_no_execute         = 0;
[78]2398    inst->_event_type         = EVENT_TYPE_NONE;
2399  }
2400
2401  void instruction_l_sll               (decod_instruction_t * inst, decod_param_t * param)
2402  {
2403    log_printf(TRACE,Decod,"instruction_l_sll","  * instruction   : l.sll");
2404
[88]2405    inst->_type               = instruction_information(INSTRUCTION_L_SLL)._type     ; //TYPE_SHIFT;
2406    inst->_operation          = instruction_information(INSTRUCTION_L_SLL)._operation; //OPERATION_SHIFT_L_SLL;
[78]2407    inst->_has_immediat       = 0;
[97]2408    inst->_immediat           = 0; // unnecessary
[78]2409    inst->_read_ra            = 1;
2410    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
2411    inst->_read_rb            = 1;
2412    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
2413    inst->_read_rc            = 0;
[97]2414    inst->_num_reg_rc         = 0; //unnecessary
[78]2415    inst->_write_rd           = 1;
2416    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
2417    inst->_write_re           = 0;
[97]2418    inst->_num_reg_re         = 0; //unnecessary
[78]2419    inst->_exception_use      = EXCEPTION_USE_NONE;
[88]2420    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]2421//  inst->_branch_condition   = ;
2422//  inst->_branch_stack_write = ;
2423//  inst->_branch_direction   = ;
[97]2424//  inst->_address_next       = ; // already define : PC+4
[88]2425    inst->_no_execute         = 0;
[78]2426    inst->_event_type         = EVENT_TYPE_NONE;
2427  }
2428
2429  void instruction_l_slli              (decod_instruction_t * inst, decod_param_t * param)
2430  {
2431    log_printf(TRACE,Decod,"instruction_l_slli","  * instruction   : l.slli");
2432
[88]2433    inst->_type               = instruction_information(INSTRUCTION_L_SLLI)._type     ; //TYPE_SHIFT;
2434    inst->_operation          = instruction_information(INSTRUCTION_L_SLLI)._operation; //OPERATION_SHIFT_L_SLL;
[78]2435    inst->_has_immediat       = 1;
2436    inst->_immediat           = range<Tgeneral_data_t   >(inst->_instruction, 5, 0);
2437    inst->_read_ra            = 1;
2438    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
2439    inst->_read_rb            = 0;
[97]2440    inst->_num_reg_rb         = 0; //unnecessary
[78]2441    inst->_read_rc            = 0;
[97]2442    inst->_num_reg_rc         = 0; //unnecessary
[78]2443    inst->_write_rd           = 1;
2444    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
2445    inst->_write_re           = 0;
[97]2446    inst->_num_reg_re         = 0; //unnecessary
[78]2447    inst->_exception_use      = EXCEPTION_USE_NONE;
[88]2448    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]2449//  inst->_branch_condition   = ;
2450//  inst->_branch_stack_write = ;
2451//  inst->_branch_direction   = ;
[97]2452//  inst->_address_next       = ; // already define : PC+4
[88]2453    inst->_no_execute         = 0;
[78]2454    inst->_event_type         = EVENT_TYPE_NONE;
2455  }
2456
2457  void instruction_l_sra               (decod_instruction_t * inst, decod_param_t * param)
2458  {
2459    log_printf(TRACE,Decod,"instruction_l_sra","  * instruction   : l.sra");
2460
[88]2461    inst->_type               = instruction_information(INSTRUCTION_L_SRA)._type     ; //TYPE_SHIFT;
2462    inst->_operation          = instruction_information(INSTRUCTION_L_SRA)._operation; //OPERATION_SHIFT_L_SRA;
[78]2463    inst->_has_immediat       = 0;
[97]2464    inst->_immediat           = 0; // unnecessary
[78]2465    inst->_read_ra            = 1;
2466    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
2467    inst->_read_rb            = 1;
2468    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
2469    inst->_read_rc            = 0;
[97]2470    inst->_num_reg_rc         = 0; //unnecessary
[78]2471    inst->_write_rd           = 1;
2472    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
2473    inst->_write_re           = 0;
[97]2474    inst->_num_reg_re         = 0; //unnecessary
[78]2475    inst->_exception_use      = EXCEPTION_USE_NONE;
[88]2476    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]2477//  inst->_branch_condition   = ;
2478//  inst->_branch_stack_write = ;
2479//  inst->_branch_direction   = ;
[97]2480//  inst->_address_next       = ; // already define : PC+4
[88]2481    inst->_no_execute         = 0;
[78]2482    inst->_event_type         = EVENT_TYPE_NONE;
2483  }
2484
2485  void instruction_l_srai              (decod_instruction_t * inst, decod_param_t * param)
2486  {
2487    log_printf(TRACE,Decod,"instruction_l_srai","  * instruction   : l.srai");
2488
[88]2489    inst->_type               = instruction_information(INSTRUCTION_L_SRAI)._type     ; //TYPE_SHIFT;
2490    inst->_operation          = instruction_information(INSTRUCTION_L_SRAI)._operation; //OPERATION_SHIFT_L_SRA;
[78]2491    inst->_has_immediat       = 1;
2492    inst->_immediat           = range<Tgeneral_data_t   >(inst->_instruction, 5, 0);
2493    inst->_read_ra            = 1;
2494    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
2495    inst->_read_rb            = 0;
[97]2496    inst->_num_reg_rb         = 0; //unnecessary
[78]2497    inst->_read_rc            = 0;
[97]2498    inst->_num_reg_rc         = 0; //unnecessary
[78]2499    inst->_write_rd           = 1;
2500    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
2501    inst->_write_re           = 0;
[97]2502    inst->_num_reg_re         = 0; //unnecessary
[78]2503    inst->_exception_use      = EXCEPTION_USE_NONE;
[88]2504    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]2505//  inst->_branch_condition   = ;
2506//  inst->_branch_stack_write = ;
2507//  inst->_branch_direction   = ;
[97]2508//  inst->_address_next       = ; // already define : PC+4
[88]2509    inst->_no_execute         = 0;
[78]2510    inst->_event_type         = EVENT_TYPE_NONE;
2511  }
2512
2513  void instruction_l_srl               (decod_instruction_t * inst, decod_param_t * param)
2514  {
2515    log_printf(TRACE,Decod,"instruction_l_srl","  * instruction   : l.srl");
2516
[88]2517    inst->_type               = instruction_information(INSTRUCTION_L_SRL)._type     ; //TYPE_SHIFT;
2518    inst->_operation          = instruction_information(INSTRUCTION_L_SRL)._operation; //OPERATION_SHIFT_L_SRL;
[78]2519    inst->_has_immediat       = 0;
[97]2520    inst->_immediat           = 0; // unnecessary
[78]2521    inst->_read_ra            = 1;
2522    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
2523    inst->_read_rb            = 1;
2524    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
2525    inst->_read_rc            = 0;
[97]2526    inst->_num_reg_rc         = 0; //unnecessary
[78]2527    inst->_write_rd           = 1;
2528    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
2529    inst->_write_re           = 0;
[97]2530    inst->_num_reg_re         = 0; //unnecessary
[78]2531    inst->_exception_use      = EXCEPTION_USE_NONE;
[88]2532    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]2533//  inst->_branch_condition   = ;
2534//  inst->_branch_stack_write = ;
2535//  inst->_branch_direction   = ;
[97]2536//  inst->_address_next       = ; // already define : PC+4
[88]2537    inst->_no_execute         = 0;
[78]2538    inst->_event_type         = EVENT_TYPE_NONE;
2539  }
2540
2541  void instruction_l_srli              (decod_instruction_t * inst, decod_param_t * param)
2542  {
2543    log_printf(TRACE,Decod,"instruction_l_srli","  * instruction   : l.srli");
2544
[88]2545    inst->_type               = instruction_information(INSTRUCTION_L_SRLI)._type     ; //TYPE_SHIFT;
2546    inst->_operation          = instruction_information(INSTRUCTION_L_SRLI)._operation; //OPERATION_SHIFT_L_SRL;
[78]2547    inst->_has_immediat       = 1;
2548    inst->_immediat           = range<Tgeneral_data_t   >(inst->_instruction, 5, 0);
2549    inst->_read_ra            = 1;
2550    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
2551    inst->_read_rb            = 0;
[97]2552    inst->_num_reg_rb         = 0; //unnecessary
[78]2553    inst->_read_rc            = 0;
[97]2554    inst->_num_reg_rc         = 0; //unnecessary
[78]2555    inst->_write_rd           = 1;
2556    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
2557    inst->_write_re           = 0;
[97]2558    inst->_num_reg_re         = 0; //unnecessary
[78]2559    inst->_exception_use      = EXCEPTION_USE_NONE;
[88]2560    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]2561//  inst->_branch_condition   = ;
2562//  inst->_branch_stack_write = ;
2563//  inst->_branch_direction   = ;
[97]2564//  inst->_address_next       = ; // already define : PC+4
[88]2565    inst->_no_execute         = 0;
[78]2566    inst->_event_type         = EVENT_TYPE_NONE;
2567  }
2568   
2569  void instruction_l_sub               (decod_instruction_t * inst, decod_param_t * param)
2570  {
2571    log_printf(TRACE,Decod,"instruction_l_sub","  * instruction   : l.sub");
2572
[88]2573    inst->_type               = instruction_information(INSTRUCTION_L_SUB)._type     ; //TYPE_ALU;
2574    inst->_operation          = instruction_information(INSTRUCTION_L_SUB)._operation; //OPERATION_ALU_L_SUB;
[78]2575    inst->_has_immediat       = 0;
[97]2576    inst->_immediat           = 0; // unnecessary
[78]2577    inst->_read_ra            = 1;
2578    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
2579    inst->_read_rb            = 1;
2580    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
2581    inst->_read_rc            = 0;
[97]2582    inst->_num_reg_rc         = 0; //unnecessary
[78]2583    inst->_write_rd           = 1;
2584    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
2585    inst->_write_re           = 1;
2586    inst->_num_reg_re         = SPR_LOGIC_SR_CY_OV;
2587    inst->_exception_use      = EXCEPTION_USE_RANGE;
[88]2588    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]2589//  inst->_branch_condition   = ;
2590//  inst->_branch_stack_write = ;
2591//  inst->_branch_direction   = ;
[97]2592//  inst->_address_next       = ; // already define : PC+4
[88]2593    inst->_no_execute         = 0;
[78]2594    inst->_event_type         = EVENT_TYPE_NONE;
2595  }
2596
2597  void instruction_l_sw                (decod_instruction_t * inst, decod_param_t * param)
2598  {
2599    log_printf(TRACE,Decod,"instruction_l_sw","  * instruction   : l.sw");
2600
[88]2601    inst->_type               = instruction_information(INSTRUCTION_L_SW)._type     ; //TYPE_MEMORY;
2602    inst->_operation          = instruction_information(INSTRUCTION_L_SW)._operation; //OPERATION_MEMORY_STORE_32;
[78]2603    inst->_has_immediat       = 1;
2604    inst->_immediat           = EXTENDS(((range<Tgeneral_data_t   >(inst->_instruction,25,21)<<11)|
2605                                         (range<Tgeneral_data_t   >(inst->_instruction,10, 0))),16);
2606    inst->_read_ra            = 1;
2607    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
2608    inst->_read_rb            = 1; 
2609    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
2610    inst->_read_rc            = 0;
[97]2611    inst->_num_reg_rc         = 0; //unnecessary
[78]2612    inst->_write_rd           = 0;
[97]2613    inst->_num_reg_rd         = 0; //unnecessary
[78]2614    inst->_write_re           = 0;
[97]2615    inst->_num_reg_re         = 0; //unnecessary
[78]2616    inst->_exception_use      = EXCEPTION_USE_MEMORY_WITH_ALIGNMENT;
[88]2617    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]2618//  inst->_branch_condition   = ;
2619//  inst->_branch_stack_write = ;
2620//  inst->_branch_direction   = ;
[97]2621//  inst->_address_next       = ; // already define : PC+4
[88]2622    inst->_no_execute         = 0;
[78]2623    inst->_event_type         = EVENT_TYPE_NONE;
2624  }
2625
2626  void instruction_l_sys               (decod_instruction_t * inst, decod_param_t * param)
2627  {
2628    log_printf(TRACE,Decod,"instruction_l_sys","  * instruction   : l.sys");
2629
2630    if (range<uint32_t>(inst->_instruction,22,16) != 0)
2631      {
2632        instruction_illegal (inst, param);
2633      }
2634    else
2635      {
[88]2636    inst->_type               = instruction_information(INSTRUCTION_L_SYS)._type     ; //TYPE_SPECIAL;
2637    inst->_operation          = instruction_information(INSTRUCTION_L_SYS)._operation; //OPERATION_SPECIAL_L_SYS;
[78]2638//  inst->_has_immediat       = 1;
2639//  inst->_immediat           = EXTENDZ(inst->_instruction,16);
2640    inst->_has_immediat       = 0;
[97]2641    inst->_immediat           = 0; // unnecessary
[78]2642    inst->_read_ra            = 0;
[97]2643    inst->_num_reg_ra         = 0; //unnecessary
[78]2644    inst->_read_rb            = 0;
[97]2645    inst->_num_reg_rb         = 0; //unnecessary
[78]2646    inst->_read_rc            = 0;
[97]2647    inst->_num_reg_rc         = 0; //unnecessary
[78]2648    inst->_write_rd           = 0;
[97]2649    inst->_num_reg_rd         = 0; //unnecessary
[78]2650    inst->_write_re           = 0;
[97]2651    inst->_num_reg_re         = 0; //unnecessary
[78]2652    inst->_exception_use      = EXCEPTION_USE_SYSCALL;
[88]2653    inst->_exception          = EXCEPTION_SYSCALL;
[78]2654//  inst->_branch_condition   = ;
2655//  inst->_branch_stack_write = ;
2656//  inst->_branch_direction   = ;
2657
2658//     if (inst->_is_delay_slot)
2659//       inst->_address_next       = inst->_address_previous;
2660//     else
2661//       inst->_address_next       = inst->_address;
2662
2663
[97]2664//  inst->_address_next       = ; // already define : PC+4 // don't change
[88]2665    inst->_no_execute         = 1;
[78]2666    inst->_event_type         = EVENT_TYPE_EXCEPTION;
2667      }
2668  }
2669
2670  void instruction_l_trap              (decod_instruction_t * inst, decod_param_t * param)
2671  {
2672    log_printf(TRACE,Decod,"instruction_l_trap","  * instruction   : l.trap");
2673
2674    if (range<uint32_t>(inst->_instruction,22,16) != 0)
2675      {
2676        instruction_illegal (inst, param);
2677      }
2678    else
2679      {
[88]2680    inst->_type               = instruction_information(INSTRUCTION_L_TRAP)._type     ; //TYPE_SPECIAL;
2681    inst->_operation          = instruction_information(INSTRUCTION_L_TRAP)._operation; //OPERATION_SPECIAL_L_TRAP;
[78]2682    inst->_has_immediat       = 1;
2683    inst->_immediat           = EXTENDZ(inst->_instruction,16);
2684    inst->_read_ra            = 0;
[97]2685    inst->_num_reg_ra         = 0; //unnecessary
[78]2686    inst->_read_rb            = 0;
[97]2687    inst->_num_reg_rb         = 0; //unnecessary
[78]2688    inst->_read_rc            = 0; // read all SR
[97]2689    inst->_num_reg_rc         = 0; //unnecessary
[78]2690    inst->_write_rd           = 0;
[97]2691    inst->_num_reg_rd         = 0; //unnecessary
[78]2692    inst->_write_re           = 0;
[97]2693    inst->_num_reg_re         = 0; //unnecessary
[78]2694    inst->_exception_use      = EXCEPTION_USE_TRAP;
[88]2695    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]2696//  inst->_branch_condition   = ;
2697//  inst->_branch_stack_write = ;
2698//  inst->_branch_direction   = ;
[97]2699//  inst->_address_next       = ; // already define : PC+4
[88]2700    inst->_no_execute         = 1;
[78]2701    inst->_event_type         = EVENT_TYPE_NONE;
2702      }
2703  }
2704
2705  void instruction_l_xor               (decod_instruction_t * inst, decod_param_t * param)
2706  {
2707    log_printf(TRACE,Decod,"instruction_l_xor","  * instruction   : l.xor");
2708
[88]2709    inst->_type               = instruction_information(INSTRUCTION_L_XOR)._type     ; //TYPE_ALU;
2710    inst->_operation          = instruction_information(INSTRUCTION_L_XOR)._operation; //OPERATION_ALU_L_XOR;
[78]2711    inst->_has_immediat       = 0;
[97]2712    inst->_immediat           = 0; // unnecessary
[78]2713    inst->_read_ra            = 1;
2714    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
2715    inst->_read_rb            = 1;
2716    inst->_num_reg_rb         = range<Tgeneral_address_t>(inst->_instruction,15,11);
2717    inst->_read_rc            = 0;
[97]2718    inst->_num_reg_rc         = 0; //unnecessary
[78]2719    inst->_write_rd           = 1;
2720    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
2721    inst->_write_re           = 0;
[97]2722    inst->_num_reg_re         = 0; //unnecessary
[78]2723    inst->_exception_use      = EXCEPTION_USE_NONE;
[88]2724    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]2725//  inst->_branch_condition   = ;
2726//  inst->_branch_stack_write = ;
2727//  inst->_branch_direction   = ;
[97]2728//  inst->_address_next       = ; // already define : PC+4
[88]2729    inst->_no_execute         = 0;
[78]2730    inst->_event_type         = EVENT_TYPE_NONE;
2731  }
2732
2733  void instruction_l_xori              (decod_instruction_t * inst, decod_param_t * param)
2734  {
2735    log_printf(TRACE,Decod,"instruction_l_xori","  * instruction   : l.xori");
2736
[88]2737    inst->_type               = instruction_information(INSTRUCTION_L_XORI)._type     ; //TYPE_ALU;
2738    inst->_operation          = instruction_information(INSTRUCTION_L_XORI)._operation; //OPERATION_ALU_L_XOR;
[78]2739    inst->_has_immediat       = 1;
2740    inst->_immediat           = EXTENDS(inst->_instruction,16);
2741    inst->_read_ra            = 1;
2742    inst->_num_reg_ra         = range<Tgeneral_address_t>(inst->_instruction,20,16);
2743    inst->_read_rb            = 0;
[97]2744    inst->_num_reg_rb         = 0; //unnecessary
[78]2745    inst->_read_rc            = 0;
[97]2746    inst->_num_reg_rc         = 0; //unnecessary
[78]2747    inst->_write_rd           = 1;
2748    inst->_num_reg_rd         = range<Tgeneral_address_t>(inst->_instruction,25,21);
2749    inst->_write_re           = 0;
[97]2750    inst->_num_reg_re         = 0; //unnecessary
[78]2751    inst->_exception_use      = EXCEPTION_USE_NONE;
[88]2752    inst->_exception          = EXCEPTION_DECOD_NONE;
[78]2753//  inst->_branch_condition   = ;
2754//  inst->_branch_stack_write = ;
2755//  inst->_branch_direction   = ;
[97]2756//  inst->_address_next       = ; // already define : PC+4
[88]2757    inst->_no_execute         = 0;
[78]2758    inst->_event_type         = EVENT_TYPE_NONE;
2759  }
2760
2761//   // ORFPX
2762//   void instruction_lf_add_d            (decod_instruction_t * inst, decod_param_t * param)
2763//   void instruction_lf_add_s            (decod_instruction_t * inst, decod_param_t * param)
2764//   void instruction_lf_cust1_d          (decod_instruction_t * inst, decod_param_t * param)
2765//   void instruction_lf_cust1_s          (decod_instruction_t * inst, decod_param_t * param)
2766//   void instruction_lf_div_d            (decod_instruction_t * inst, decod_param_t * param)
2767//   void instruction_lf_div_s            (decod_instruction_t * inst, decod_param_t * param)
2768//   void instruction_lf_ftoi_d           (decod_instruction_t * inst, decod_param_t * param)
2769//   void instruction_lf_ftoi_s           (decod_instruction_t * inst, decod_param_t * param)
2770//   void instruction_lf_itof_d           (decod_instruction_t * inst, decod_param_t * param)
2771//   void instruction_lf_itof_s           (decod_instruction_t * inst, decod_param_t * param)
2772//   void instruction_lf_madd_d           (decod_instruction_t * inst, decod_param_t * param)
2773//   void instruction_lf_madd_s           (decod_instruction_t * inst, decod_param_t * param)
2774//   void instruction_lf_mul_d            (decod_instruction_t * inst, decod_param_t * param)
2775//   void instruction_lf_mul_s            (decod_instruction_t * inst, decod_param_t * param)
2776//   void instruction_lf_rem_d            (decod_instruction_t * inst, decod_param_t * param)
2777//   void instruction_lf_rem_s            (decod_instruction_t * inst, decod_param_t * param)
2778//   void instruction_lf_sfeq_d           (decod_instruction_t * inst, decod_param_t * param)
2779//   void instruction_lf_sfeq_s           (decod_instruction_t * inst, decod_param_t * param)
2780//   void instruction_lf_sfge_d           (decod_instruction_t * inst, decod_param_t * param)
2781//   void instruction_lf_sfge_s           (decod_instruction_t * inst, decod_param_t * param)
2782//   void instruction_lf_sfgt_d           (decod_instruction_t * inst, decod_param_t * param)
2783//   void instruction_lf_sfgt_s           (decod_instruction_t * inst, decod_param_t * param)
2784//   void instruction_lf_sfle_d           (decod_instruction_t * inst, decod_param_t * param)
2785//   void instruction_lf_sfle_s           (decod_instruction_t * inst, decod_param_t * param)
2786//   void instruction_lf_sflt_d           (decod_instruction_t * inst, decod_param_t * param)
2787//   void instruction_lf_sflt_s           (decod_instruction_t * inst, decod_param_t * param)
2788//   void instruction_lf_sfne_d           (decod_instruction_t * inst, decod_param_t * param)
2789//   void instruction_lf_sfne_s           (decod_instruction_t * inst, decod_param_t * param)
2790//   void instruction_lf_sub_d            (decod_instruction_t * inst, decod_param_t * param)
2791//   void instruction_lf_sub_s            (decod_instruction_t * inst, decod_param_t * param)
2792
2793//   // ORVDX
2794//   void instruction_lv_add_b            (decod_instruction_t * inst, decod_param_t * param)
2795//   void instruction_lv_add_h            (decod_instruction_t * inst, decod_param_t * param)
2796//   void instruction_lv_adds_b           (decod_instruction_t * inst, decod_param_t * param)
2797//   void instruction_lv_adds_h           (decod_instruction_t * inst, decod_param_t * param)
2798//   void instruction_lv_addu_b           (decod_instruction_t * inst, decod_param_t * param)
2799//   void instruction_lv_addu_h           (decod_instruction_t * inst, decod_param_t * param)
2800//   void instruction_lv_addus_b          (decod_instruction_t * inst, decod_param_t * param)
2801//   void instruction_lv_addus_h          (decod_instruction_t * inst, decod_param_t * param)
2802//   void instruction_lv_all_eq_b         (decod_instruction_t * inst, decod_param_t * param)
2803//   void instruction_lv_all_eq_h         (decod_instruction_t * inst, decod_param_t * param)
2804//   void instruction_lv_all_ge_b         (decod_instruction_t * inst, decod_param_t * param)
2805//   void instruction_lv_all_ge_h         (decod_instruction_t * inst, decod_param_t * param)
2806//   void instruction_lv_all_gt_b         (decod_instruction_t * inst, decod_param_t * param)
2807//   void instruction_lv_all_gt_h         (decod_instruction_t * inst, decod_param_t * param)
2808//   void instruction_lv_all_le_b         (decod_instruction_t * inst, decod_param_t * param)
2809//   void instruction_lv_all_le_h         (decod_instruction_t * inst, decod_param_t * param)
2810//   void instruction_lv_all_lt_b         (decod_instruction_t * inst, decod_param_t * param)
2811//   void instruction_lv_all_lt_h         (decod_instruction_t * inst, decod_param_t * param)
2812//   void instruction_lv_all_ne_b         (decod_instruction_t * inst, decod_param_t * param)
2813//   void instruction_lv_all_ne_h         (decod_instruction_t * inst, decod_param_t * param)
2814//   void instruction_lv_and              (decod_instruction_t * inst, decod_param_t * param)
2815//   void instruction_lv_any_eq_b         (decod_instruction_t * inst, decod_param_t * param)
2816//   void instruction_lv_any_eq_h         (decod_instruction_t * inst, decod_param_t * param)
2817//   void instruction_lv_any_ge_b         (decod_instruction_t * inst, decod_param_t * param)
2818//   void instruction_lv_any_ge_h         (decod_instruction_t * inst, decod_param_t * param)
2819//   void instruction_lv_any_gt_b         (decod_instruction_t * inst, decod_param_t * param)
2820//   void instruction_lv_any_gt_h         (decod_instruction_t * inst, decod_param_t * param)
2821//   void instruction_lv_any_le_b         (decod_instruction_t * inst, decod_param_t * param)
2822//   void instruction_lv_any_le_h         (decod_instruction_t * inst, decod_param_t * param)
2823//   void instruction_lv_any_lt_b         (decod_instruction_t * inst, decod_param_t * param)
2824//   void instruction_lv_any_lt_h         (decod_instruction_t * inst, decod_param_t * param)
2825//   void instruction_lv_any_ne_b         (decod_instruction_t * inst, decod_param_t * param)
2826//   void instruction_lv_any_ne_h         (decod_instruction_t * inst, decod_param_t * param)
2827//   void instruction_lv_avg_b            (decod_instruction_t * inst, decod_param_t * param)
2828//   void instruction_lv_avg_h            (decod_instruction_t * inst, decod_param_t * param)
2829//   void instruction_lv_cmp_eq_b         (decod_instruction_t * inst, decod_param_t * param)
2830//   void instruction_lv_cmp_eq_h         (decod_instruction_t * inst, decod_param_t * param)
2831//   void instruction_lv_cmp_ge_b         (decod_instruction_t * inst, decod_param_t * param)
2832//   void instruction_lv_cmp_ge_h         (decod_instruction_t * inst, decod_param_t * param)
2833//   void instruction_lv_cmp_gt_b         (decod_instruction_t * inst, decod_param_t * param)
2834//   void instruction_lv_cmp_gt_h         (decod_instruction_t * inst, decod_param_t * param)
2835//   void instruction_lv_cmp_le_b         (decod_instruction_t * inst, decod_param_t * param)
2836//   void instruction_lv_cmp_le_h         (decod_instruction_t * inst, decod_param_t * param)
2837//   void instruction_lv_cmp_lt_b         (decod_instruction_t * inst, decod_param_t * param)
2838//   void instruction_lv_cmp_lt_h         (decod_instruction_t * inst, decod_param_t * param)
2839//   void instruction_lv_cmp_ne_b         (decod_instruction_t * inst, decod_param_t * param)
2840//   void instruction_lv_cmp_ne_h         (decod_instruction_t * inst, decod_param_t * param)
2841//   void instruction_lv_cust1            (decod_instruction_t * inst, decod_param_t * param)
2842//   void instruction_lv_cust2            (decod_instruction_t * inst, decod_param_t * param)
2843//   void instruction_lv_cust3            (decod_instruction_t * inst, decod_param_t * param)
2844//   void instruction_lv_cust4            (decod_instruction_t * inst, decod_param_t * param)
2845//   void instruction_lv_madds_h          (decod_instruction_t * inst, decod_param_t * param)
2846//   void instruction_lv_max_b            (decod_instruction_t * inst, decod_param_t * param)
2847//   void instruction_lv_max_h            (decod_instruction_t * inst, decod_param_t * param)
2848//   void instruction_lv_merge_b          (decod_instruction_t * inst, decod_param_t * param)
2849//   void instruction_lv_merge_h          (decod_instruction_t * inst, decod_param_t * param)
2850//   void instruction_lv_min_b            (decod_instruction_t * inst, decod_param_t * param)
2851//   void instruction_lv_min_h            (decod_instruction_t * inst, decod_param_t * param)
2852//   void instruction_lv_msubs_h          (decod_instruction_t * inst, decod_param_t * param)
2853//   void instruction_lv_muls_h           (decod_instruction_t * inst, decod_param_t * param)
2854//   void instruction_lv_nand             (decod_instruction_t * inst, decod_param_t * param)
2855//   void instruction_lv_nor              (decod_instruction_t * inst, decod_param_t * param)
2856//   void instruction_lv_or               (decod_instruction_t * inst, decod_param_t * param)
2857//   void instruction_lv_pack_b           (decod_instruction_t * inst, decod_param_t * param)
2858//   void instruction_lv_pack_h           (decod_instruction_t * inst, decod_param_t * param)
2859//   void instruction_lv_packs_b          (decod_instruction_t * inst, decod_param_t * param)
2860//   void instruction_lv_packs_h          (decod_instruction_t * inst, decod_param_t * param)
2861//   void instruction_lv_packus_b         (decod_instruction_t * inst, decod_param_t * param)
2862//   void instruction_lv_packus_h         (decod_instruction_t * inst, decod_param_t * param)
2863//   void instruction_lv_perm_n           (decod_instruction_t * inst, decod_param_t * param)
2864//   void instruction_lv_rl_b             (decod_instruction_t * inst, decod_param_t * param)
2865//   void instruction_lv_rl_h             (decod_instruction_t * inst, decod_param_t * param)
2866//   void instruction_lv_sll              (decod_instruction_t * inst, decod_param_t * param)
2867//   void instruction_lv_sll_b            (decod_instruction_t * inst, decod_param_t * param)
2868//   void instruction_lv_sll_h            (decod_instruction_t * inst, decod_param_t * param)
2869//   void instruction_lv_sra_b            (decod_instruction_t * inst, decod_param_t * param)
2870//   void instruction_lv_sra_h            (decod_instruction_t * inst, decod_param_t * param)
2871//   void instruction_lv_srl              (decod_instruction_t * inst, decod_param_t * param)
2872//   void instruction_lv_srl_b            (decod_instruction_t * inst, decod_param_t * param)
2873//   void instruction_lv_srl_h            (decod_instruction_t * inst, decod_param_t * param)
2874//   void instruction_lv_sub_b            (decod_instruction_t * inst, decod_param_t * param)
2875//   void instruction_lv_sub_h            (decod_instruction_t * inst, decod_param_t * param)
2876//   void instruction_lv_subs_b           (decod_instruction_t * inst, decod_param_t * param)
2877//   void instruction_lv_subs_h           (decod_instruction_t * inst, decod_param_t * param)
2878//   void instruction_lv_subu_b           (decod_instruction_t * inst, decod_param_t * param)
2879//   void instruction_lv_subu_h           (decod_instruction_t * inst, decod_param_t * param)
2880//   void instruction_lv_subus_b          (decod_instruction_t * inst, decod_param_t * param)
2881//   void instruction_lv_subus_h          (decod_instruction_t * inst, decod_param_t * param)
2882//   void instruction_lv_unpack_b         (decod_instruction_t * inst, decod_param_t * param)
2883//   void instruction_lv_unpack_h         (decod_instruction_t * inst, decod_param_t * param)
2884//   void instruction_lv_xor              (decod_instruction_t * inst, decod_param_t * param)
2885
2886}; // end namespace decod
2887}; // end namespace decod_unit
2888}; // end namespace front_end
2889}; // end namespace multi_front_end
2890}; // end namespace core
2891}; // end namespace behavioural
2892}; // end namespace morpheo             
Note: See TracBrowser for help on using the repository browser.