source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/SelfTest/include/Decod_request.h @ 95

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

1) Update Prediction Table - New architecture (systemC) done (and tested) -> need change interface in top level
2) Change documentation on VHDL generation
3) Change VHDL constant (case std_logic and std_logic_vector)

  • Property svn:keywords set to Id
File size: 40.9 KB
Line 
1/*
2 * $Id: Decod_request.h 95 2008-12-16 16:24:26Z rosiere $
3 *
4 * [ Description ]
5 *
6 */
7
8#ifdef SYSTEMC
9#include "systemc.h"
10#endif
11
12#include "Common/include/Test.h"
13#include <string>
14#include <iostream>
15#include <list>
16
17  class entry_t
18  {
19//public : Tcontrol_t          _val                        ;
20  public : Tinstruction_t      _instruction                ;
21//public : Tcontext_t          _context_id                 ;
22  public : Tgeneral_address_t  _address_previous           ;
23  public : Tgeneral_address_t  _address                    ;
24  public : Tgeneral_address_t  _address_next               ;
25  public : Tbranch_state_t     _branch_state               ;
26  public : Tprediction_ptr_t   _branch_update_prediction_id;
27  public : Tbranch_condition_t _branch_condition           ;
28//public : Tcontrol_t          _branch_stack_write         ;
29  public : Tcontrol_t          _branch_direction           ;
30  public : Tgeneral_address_t  _branch_address_dest        ;
31  public : Tdepth_t            _depth                      ;
32  public : Ttype_t             _type                       ;
33  public : Toperation_t        _operation                  ;
34  public : Tcontrol_t          _no_execute                 ;
35  public : Tcontrol_t          _is_delay_slot              ;
36  public : Tcontrol_t          _has_immediat               ;
37  public : Tgeneral_data_t     _immediat                   ;
38  public : Tcontrol_t          _read_ra                    ;
39  public : Tgeneral_address_t  _num_reg_ra                 ;
40  public : Tcontrol_t          _read_rb                    ;
41  public : Tgeneral_address_t  _num_reg_rb                 ;
42  public : Tcontrol_t          _read_rc                    ;
43  public : Tspecial_address_t  _num_reg_rc                 ;
44  public : Tcontrol_t          _write_rd                   ;
45  public : Tgeneral_address_t  _num_reg_rd                 ;
46  public : Tcontrol_t          _write_re                   ;
47  public : Tspecial_address_t  _num_reg_re                 ;
48  public : Texception_t        _exception_use              ;
49  public : Texception_t        _exception_ifetch           ;
50  public : Texception_t        _exception_decod            ;
51  public : Tevent_type_t       _context_event_type         ;
52
53  public : entry_t (
54//                  Tcontrol_t          val                        ,
55                    Tinstruction_t      instruction                ,
56//                  Tcontext_t          context_id                 ,
57                    Tgeneral_address_t  address_previous           ,
58                    Tgeneral_address_t  address                    ,
59                    Tgeneral_address_t  address_next               ,
60                    Tbranch_state_t     branch_state               ,
61                    Tprediction_ptr_t   branch_update_prediction_id,
62                    Tbranch_condition_t branch_condition           ,
63//                  Tcontrol_t          branch_stack_write         ,
64                    Tcontrol_t          branch_direction           ,
65                    Tgeneral_address_t  branch_address_dest        ,
66                    Tdepth_t            depth                      ,
67                    Ttype_t             type                       ,
68                    Toperation_t        operation                  ,
69//                  Tcontrol_t          no_execute                 ,
70                    Tcontrol_t          is_delay_slot              ,
71                    Tcontrol_t          has_immediat               ,
72                    Tgeneral_data_t     immediat                   ,
73                    Tcontrol_t          read_ra                    ,
74                    Tgeneral_address_t  num_reg_ra                 ,
75                    Tcontrol_t          read_rb                    ,
76                    Tgeneral_address_t  num_reg_rb                 ,
77                    Tcontrol_t          read_rc                    ,
78                    Tspecial_address_t  num_reg_rc                 ,
79                    Tcontrol_t          write_rd                   ,
80                    Tgeneral_address_t  num_reg_rd                 ,
81                    Tcontrol_t          write_re                   ,
82                    Tspecial_address_t  num_reg_re                 ,
83                    Texception_t        exception_use              ,
84//                     Texception_t        exception_ifetch           ,
85//                     Texception_t        exception_decod            ,
86                    Tevent_type_t       context_event_type         )
87    {
88//       _val                         = val                        ;
89      _instruction                 = instruction                ;
90//       _context_id                  = context_id                 ;
91      _address_previous            = address_previous           ;
92      _address                     = address                    ;
93      _address_next                = address_next               ;
94      _branch_state                = branch_state               ;
95      _branch_update_prediction_id = branch_update_prediction_id;
96      _branch_condition            = branch_condition           ;
97//       _branch_stack_write          = branch_stack_write         ;
98      _branch_direction            = branch_direction           ;
99      _branch_address_dest         = branch_address_dest        ;
100      _depth                       = depth                      ;
101      _type                        = type                       ;
102      _operation                   = operation                  ;
103      _is_delay_slot               = is_delay_slot              ;
104      _has_immediat                = has_immediat               ;
105      _immediat                    = immediat                   ;
106      _read_ra                     = read_ra                    ;
107      _num_reg_ra                  = num_reg_ra                 ;
108      _read_rb                     = read_rb                    ;
109      _num_reg_rb                  = num_reg_rb                 ;
110      _read_rc                     = read_rc                    ;
111      _num_reg_rc                  = num_reg_rc                 ;
112      _write_rd                    = write_rd                   ;
113      _num_reg_rd                  = num_reg_rd                 ;
114      _write_re                    = write_re                   ;
115      _num_reg_re                  = num_reg_re                 ;
116      _exception_use               = exception_use              ;
117      _context_event_type          = context_event_type         ;
118
119      _no_execute                  = 0                          ;
120      _exception_ifetch            = EXCEPTION_IFETCH_NONE      ;
121      _exception_decod             = EXCEPTION_DECOD_NONE       ;
122    }
123  };
124
125
126class Decod_request
127{
128private : list<entry_t> request;
129
130public  :  Decod_request (void)
131  {
132    uint32_t w;
133    uint32_t x = (0x100>>2)-1;
134    uint32_t y = (0x100>>2);
135    uint32_t z = (0x100>>2)+1;
136
137#define SEQ    do {x=y; y=z; z+=1; LABEL("%.8x - previous : 0x%x (%d), current : 0x%x (%d), next : 0x%x (%d)",request.back()._instruction, x,x,y,y,z,z);} while(0);
138#define JMP(j) do {x=y; y=z; z =j; LABEL("%.8x - previous : 0x%x (%d), current : 0x%x (%d), next : 0x%x (%d)",request.back()._instruction, x,x,y,y,z,z);} while(0);
139
140    // ===== l.add      r15, r4 , r8
141    request.push_back (entry_t(
142    //instruction,address_previous,address,address_next
143    0xe1e44000,x,y,z,
144    //branch_state,branch_update_prediction_id,branch_condition,branch_stack_write,branch_direction, branch_address_dest
145    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0,0x0,
146    //depth,type,operation,is_delay_slot
147    0,TYPE_ALU,OPERATION_ALU_L_ADD,false, 
148    //has_immediat,immediat,read_ra,reg_ra,read_rb,reg_rb,read_rc,reg_rc,write_rd,reg_rd,write_re,reg_re
149    0,0x00000000,1, 4,1, 8,0,0                 ,1,15,1,SPR_LOGIC_SR_CY_OV,
150    //exception_use,context_event_type
151    EXCEPTION_USE_RANGE,EVENT_TYPE_NONE));
152    SEQ;
153
154    // ===== l.addc     r15, r4 , r31
155    request.push_back (entry_t(
156    0xe1e4f801,x,y,z,
157    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0,0x0, 
158    0,TYPE_ALU,OPERATION_ALU_L_ADD,false, 
159    0,0x00000000,1, 4,1,31,1,SPR_LOGIC_SR_CY_OV,1,15,1,SPR_LOGIC_SR_CY_OV,
160    EXCEPTION_USE_RANGE,EVENT_TYPE_NONE));
161    SEQ;
162
163    // ===== l.addi     r7 , r12, -1
164    request.push_back (entry_t(
165    0x9cecffff,x,y,z,
166    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
167    0,TYPE_ALU,OPERATION_ALU_L_ADD,false, 
168    1,0xffffffff,1,12,0, 0,0,0                 ,1,7 ,1,SPR_LOGIC_SR_CY_OV,
169    EXCEPTION_USE_RANGE,EVENT_TYPE_NONE));
170    SEQ;
171
172    // ===== l.addi     r8 , r17, 0
173    request.push_back (entry_t(
174    0x9d110000,x,y,z,
175    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
176    0,TYPE_ALU,OPERATION_ALU_L_ADD,false, 
177    1,0x00000000,1,17,0, 0,0,0                 ,1,8 ,1,SPR_LOGIC_SR_CY_OV,
178    EXCEPTION_USE_RANGE,EVENT_TYPE_NONE));
179    SEQ;
180
181    // ===== l.addi     r21, r7 , 1981
182    request.push_back (entry_t(
183    0x9ea707bd,x,y,z,
184    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
185    0,TYPE_ALU,OPERATION_ALU_L_ADD,false, 
186    1,0x000007bd,1, 7,0, 0,0,0                 ,1,21,1,SPR_LOGIC_SR_CY_OV,
187    EXCEPTION_USE_RANGE,EVENT_TYPE_NONE));
188    SEQ;
189
190    // ===== l.addic    r7 , r12, -1
191    request.push_back (entry_t(
192    0xa0ecffff,x,y,z,
193    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
194    0,TYPE_ALU,OPERATION_ALU_L_ADD,false, 
195    1,0xffffffff,1,12,0, 0,1,SPR_LOGIC_SR_CY_OV,1,7 ,1,SPR_LOGIC_SR_CY_OV,
196    EXCEPTION_USE_RANGE,EVENT_TYPE_NONE));
197    SEQ;
198
199    // ===== l.addic    r8 , r17, 0
200    request.push_back (entry_t(
201    0xa1110000,x,y,z,
202    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
203    0,TYPE_ALU,OPERATION_ALU_L_ADD,false, 
204    1,0x00000000,1,17,0, 0,1,SPR_LOGIC_SR_CY_OV,1,8 ,1,SPR_LOGIC_SR_CY_OV,
205    EXCEPTION_USE_RANGE,EVENT_TYPE_NONE));
206    SEQ;
207
208    // ===== l.addic    r21, r7 , 1981
209    request.push_back (entry_t(
210    0xa2a707bd,x,y,z,
211    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
212    0,TYPE_ALU,OPERATION_ALU_L_ADD,false, 
213    1,0x000007bd,1, 7,0, 0,1,SPR_LOGIC_SR_CY_OV,1,21,1,SPR_LOGIC_SR_CY_OV,
214    EXCEPTION_USE_RANGE,EVENT_TYPE_NONE));
215    SEQ;
216
217    // ===== l.and      r24, r0 , r14
218    request.push_back (entry_t(
219    0xe3007003,x,y,z,
220    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
221    0,TYPE_ALU,OPERATION_ALU_L_AND,false, 
222    0,0x0       ,1, 0,1,14,0,0                 ,1,24,0,0                 ,
223    EXCEPTION_USE_NONE ,EVENT_TYPE_NONE));
224    SEQ;
225
226    // ===== l.andi     r24, r4 , 1981
227    request.push_back (entry_t(
228    0xa70407bd,x,y,z,
229    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
230    0,TYPE_ALU,OPERATION_ALU_L_AND,false, 
231    1,0x000007bd,1, 4,0,0 ,0,0                 ,1,24,0,0                 ,
232    EXCEPTION_USE_NONE ,EVENT_TYPE_NONE));
233    SEQ;
234
235    // ===== l.bf 11
236    w = y+(11);
237    request.push_back (entry_t(
238    0x1000000b,x,y,z,
239    BRANCH_STATE_NONE,0,BRANCH_CONDITION_FLAG_SET,0, w,
240    0,TYPE_BRANCH,OPERATION_BRANCH_L_TEST_F,false, 
241    1,w,0, 0,0,0 ,1,SPR_LOGIC_SR_F    ,0,0 ,0,0                 ,
242    EXCEPTION_USE_NONE ,EVENT_TYPE_NONE));
243    JMP(w);
244
245    // ===== l.cmov     r30, r10, r20
246    request.push_back (entry_t(
247    0xe3caa00e,x,y,z,
248    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
249    0,TYPE_MOVE,OPERATION_MOVE_L_CMOV,true,
250    0,0x0,1,10,1,20,1,SPR_LOGIC_SR_F    ,1,30,0,0                 ,
251    EXCEPTION_USE_NONE ,EVENT_TYPE_NONE));
252    SEQ;
253
254    // ===== l.div r30,r10,r20
255    request.push_back (entry_t(
256    0xe3caa309,x,y,z,
257    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
258    0,TYPE_DIV,OPERATION_DIV_L_DIV,false,
259    0,0x0,1,10,1,20,0,0                 ,1,30,1,SPR_LOGIC_SR_CY_OV,
260    EXCEPTION_USE_RANGE,EVENT_TYPE_NONE));
261    SEQ;
262
263    // ===== l.bf -9
264    w = y+(-9);
265    request.push_back (entry_t(
266    0x13fffff7,x,y,z,
267    BRANCH_STATE_NONE,0,BRANCH_CONDITION_FLAG_SET,1, w,
268    0,TYPE_BRANCH,OPERATION_BRANCH_L_TEST_F,false, 
269    1,w,0, 0,0,0 ,1,SPR_LOGIC_SR_F    ,0,0 ,0,0                 ,
270    EXCEPTION_USE_NONE ,EVENT_TYPE_NONE));
271    JMP(w);
272
273    // ===== l.divu r30,r10,r20
274    request.push_back (entry_t(
275    0xe3caa30a,x,y,z,
276    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
277    0,TYPE_DIV,OPERATION_DIV_L_DIVU,true,
278    0,0x0,1,10,1,20,0,0                 ,1,30,1,SPR_LOGIC_SR_CY_OV,
279    EXCEPTION_USE_RANGE,EVENT_TYPE_NONE));
280    SEQ;
281
282    // ===== l.extbs r30,r10
283    request.push_back (entry_t(
284    0xe3ca004c,x,y,z,
285    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
286    0,TYPE_EXTEND,OPERATION_EXTEND_L_EXTEND_S,false,
287    1,8  ,1,10,0,0 ,0,0                 ,1,30,0,0                 ,
288    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
289    SEQ;
290
291    // ===== l.bnf 11
292    w = y+(11);
293    request.push_back (entry_t(
294    0x0c00000b,x,y,z,
295    BRANCH_STATE_NONE,0,BRANCH_CONDITION_FLAG_UNSET,0, w,
296    0,TYPE_BRANCH,OPERATION_BRANCH_L_TEST_NF,false, 
297    1,w,0, 0,0,0 ,1,SPR_LOGIC_SR_F    ,0,0 ,0,0                 ,
298    EXCEPTION_USE_NONE ,EVENT_TYPE_NONE));
299    JMP(w);
300
301    // ===== l.extbz r30,r10
302    request.push_back (entry_t(
303    0xe3ca00cc,x,y,z,
304    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
305    0,TYPE_EXTEND,OPERATION_EXTEND_L_EXTEND_Z,true ,
306    1,8  ,1,10,0,0 ,0,0                 ,1,30,0,0                 ,
307    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
308    SEQ;
309   
310    // ===== l.exths r30,r10
311    request.push_back (entry_t(
312    0xe3ca000c,x,y,z,
313    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
314    0,TYPE_EXTEND,OPERATION_EXTEND_L_EXTEND_S,false,
315    1,16 ,1,10,0,0 ,0,0                 ,1,30,0,0                 ,
316    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
317    SEQ;
318
319    // ===== l.bnf -9
320    w = y+(-9);
321    request.push_back (entry_t(
322    0x0ffffff7,x,y,z,
323    BRANCH_STATE_NONE,0,BRANCH_CONDITION_FLAG_UNSET,1, w,
324    0,TYPE_BRANCH,OPERATION_BRANCH_L_TEST_NF,false, 
325    1,w,0, 0,0,0 ,1,SPR_LOGIC_SR_F    ,0,0 ,0,0                 ,
326    EXCEPTION_USE_NONE ,EVENT_TYPE_NONE));
327    JMP(w);
328
329    // ===== l.exthz r30,r10
330    request.push_back (entry_t(
331    0xe3ca008c,x,y,z,
332    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
333    0,TYPE_EXTEND,OPERATION_EXTEND_L_EXTEND_Z,true ,
334    1,16 ,1,10,0,0 ,0,0                 ,1,30,0,0                 ,
335    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
336    SEQ;
337
338    // ===== l.extws r30,r10
339    request.push_back (entry_t(
340    0xe3ca000d,x,y,z,
341    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
342    0,TYPE_EXTEND,OPERATION_EXTEND_L_EXTEND_S,false,
343    1,32 ,1,10,0,0 ,0,0                 ,1,30,0,0                 ,
344    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
345    SEQ;
346
347    // ===== l.extwz r30,r10
348    request.push_back (entry_t(
349    0xe3ca004d,x,y,z,
350    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
351    0,TYPE_EXTEND,OPERATION_EXTEND_L_EXTEND_Z,false,
352    1,32 ,1,10,0,0 ,0,0                 ,1,30,0,0                 ,
353    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
354    SEQ;
355
356    // ===== l.csync
357    request.push_back (entry_t(
358    0x23000000,x,y,z,
359    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
360    0,TYPE_SPECIAL,OPERATION_SPECIAL_L_CSYNC,false,
361    0,0  ,0,0 ,0,0 ,0,0                 ,0,0 ,0,0                 ,
362    EXCEPTION_USE_NONE,EVENT_TYPE_CSYNC));
363    SEQ;
364
365    // ===== l.ff1 r30,r10
366    request.push_back (entry_t(
367    0xe3ca000f,x,y,z,
368    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
369    0,TYPE_FIND,OPERATION_FIND_L_FF1,false,
370    0,0  ,1,10,0,0 ,0,0                 ,1,30,0,0                 ,
371    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
372    SEQ;
373
374    // ===== l.fl1 r30,r10
375    request.push_back (entry_t(
376    0xe3ca010f,x,y,z,
377    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
378    0,TYPE_FIND,OPERATION_FIND_L_FL1,false,
379    0,0  ,1,10,0,0 ,0,0                 ,1,30,0,0                 ,
380    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
381    SEQ;
382
383    // ===== l.j 1018
384    w = y+(1018);
385    request.push_back (entry_t(
386    0x000003fa,x,y,z,
387    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,1, w,
388    0,TYPE_BRANCH,OPERATION_BRANCH_NONE,false, 
389    0,0,0, 0,0,0 ,0,0                 ,0,0 ,0,0                 ,
390    EXCEPTION_USE_NONE ,EVENT_TYPE_NONE));
391    JMP(w);
392
393    // ===== l.lbs r30,0x3fa(r10)
394    request.push_back (entry_t(
395    0x93ca03fa,x,y,z,
396    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
397    0,TYPE_MEMORY,OPERATION_MEMORY_LOAD_8_S,true,
398    1,0x3fa,1,10,0,0 ,0,0,1,30,0,0,
399    EXCEPTION_USE_MEMORY_WITHOUT_ALIGNMENT,EVENT_TYPE_NONE));
400    SEQ;
401
402    // ===== l.lbz r30,0x3fa(r10)
403    request.push_back (entry_t(
404    0x8fca03fa,x,y,z,
405    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
406    0,TYPE_MEMORY,OPERATION_MEMORY_LOAD_8_Z,false,
407    1,0x3fa,1,10,0,0 ,0,0,1,30,0,0,
408    EXCEPTION_USE_MEMORY_WITHOUT_ALIGNMENT,EVENT_TYPE_NONE));
409    SEQ;
410
411    // ===== l.j -1018
412    w = y+(-1018);
413    request.push_back (entry_t(
414    0x03fffc06,x,y,z,
415    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,1, w,
416    0,TYPE_BRANCH,OPERATION_BRANCH_NONE,false, 
417    0,0,0, 0,0,0 ,0,0                 ,0,0 ,0,0                 ,
418    EXCEPTION_USE_NONE ,EVENT_TYPE_NONE));
419    JMP(w);
420
421    // ===== l.lhs r30,0x3fa(r10)
422    request.push_back (entry_t(
423    0x9bca03fa,x,y,z,
424    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
425    0,TYPE_MEMORY,OPERATION_MEMORY_LOAD_16_S,true,
426    1,0x3fa,1,10,0,0 ,0,0,1,30,0,0,
427    EXCEPTION_USE_MEMORY_WITH_ALIGNMENT,EVENT_TYPE_NONE));
428    SEQ;
429
430    // ===== l.lhz r30,0x3fa(r10)
431    request.push_back (entry_t(
432    0x97ca03fa,x,y,z,
433    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
434    0,TYPE_MEMORY,OPERATION_MEMORY_LOAD_16_Z,false,
435    1,0x3fa,1,10,0,0 ,0,0,1,30,0,0,
436    EXCEPTION_USE_MEMORY_WITH_ALIGNMENT,EVENT_TYPE_NONE));
437    SEQ;
438
439    // ===== l.jal 1018
440    w = y+(1018);
441    request.push_back (entry_t(
442    0x040003fa,x,y,z,
443    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITH_WRITE_STACK,1, w,
444    0,TYPE_BRANCH,OPERATION_BRANCH_L_JALR,false,
445    1,z+1,0, 0,0,0 ,0,0                 ,1,9 ,0,0                 ,
446    EXCEPTION_USE_NONE ,EVENT_TYPE_NONE));
447    JMP(w);
448
449    // ===== l.lws r30,0x3fa(r10)
450    request.push_back (entry_t(
451    0x8bca03fa,x,y,z,
452    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
453    0,TYPE_MEMORY,OPERATION_MEMORY_LOAD_32_S,true,
454    1,0x3fa,1,10,0,0 ,0,0,1,30,0,0,
455    EXCEPTION_USE_MEMORY_WITH_ALIGNMENT,EVENT_TYPE_NONE));
456    SEQ;
457
458    // ===== l.lwz r30,0x3fa(r10)
459    request.push_back (entry_t(
460    0x87ca03fa,x,y,z,
461    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
462    0,TYPE_MEMORY,OPERATION_MEMORY_LOAD_32_Z,false,
463    1,0x3fa,1,10,0,0 ,0,0,1,30,0,0,
464    EXCEPTION_USE_MEMORY_WITH_ALIGNMENT,EVENT_TYPE_NONE));
465    SEQ;
466
467    // ===== l.jal -1018
468    w = y+(-1018);
469    request.push_back (entry_t(
470    0x07fffc06,x,y,z,
471    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITH_WRITE_STACK,1, w,
472    0,TYPE_BRANCH,OPERATION_BRANCH_L_JALR,false,
473    1,z+1,0, 0,0,0 ,0,0                 ,1,9 ,0,0                 ,
474    EXCEPTION_USE_NONE ,EVENT_TYPE_NONE));
475    JMP(w);
476
477    // ===== l.ld r30,1018(r10)
478    request.push_back (entry_t(
479    0x83ca03fa,x,y,z,
480    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
481    0,TYPE_MEMORY,OPERATION_MEMORY_LOAD_64_S,true,
482    1,1018,1,10,0,0 ,0,0,1,30,0,0,
483    EXCEPTION_USE_MEMORY_WITH_ALIGNMENT,EVENT_TYPE_NONE));
484    SEQ;
485
486    // ===== l.ld r30,-1018(r10)
487    request.push_back (entry_t(
488    0x83cafc06,x,y,z,
489    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
490    0,TYPE_MEMORY,OPERATION_MEMORY_LOAD_64_S,false,
491    1,static_cast<Tgeneral_data_t>(-1018),1,10,0,0 ,0,0,1,30,0,0,
492    EXCEPTION_USE_MEMORY_WITH_ALIGNMENT,EVENT_TYPE_NONE));
493    SEQ;
494
495    // ===== l.jalr r20
496    request.push_back (entry_t(
497    0x4800a000,x,y,z,
498    BRANCH_STATE_NONE,0,BRANCH_CONDITION_READ_REGISTER_WITH_WRITE_STACK,1, z, // branch_address_dest can be determined if BRANCH_STATE != NONE (also : previous prediction)
499    0,TYPE_BRANCH,OPERATION_BRANCH_L_JALR,false,
500    0,0   ,0,0 ,1,20,0,0,1,9 ,0,0,
501    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
502    SEQ;
503   
504    // ===== l.mac r10,r20
505    request.push_back (entry_t(
506    0xc40aa001,x,y,z,
507    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
508    0,TYPE_SPECIAL,OPERATION_SPECIAL_L_MAC,true,
509    0,0,1,10,1,20,0,0,0,0,0,0,
510    EXCEPTION_USE_NONE,EVENT_TYPE_SPR_ACCESS));
511    SEQ;
512   
513    // ===== l.maci r10,1018
514    request.push_back (entry_t(
515    0x4c0a03fa,x,y,z,
516    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
517    0,TYPE_SPECIAL,OPERATION_SPECIAL_L_MAC,false,
518    1,1018,1,10,0,0,0,0,0,0,0,0,
519    EXCEPTION_USE_NONE,EVENT_TYPE_SPR_ACCESS));
520    SEQ;
521
522    // ===== l.maci r10,-1018
523    request.push_back (entry_t(
524    0x4fea0406,x,y,z,
525    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
526    0,TYPE_SPECIAL,OPERATION_SPECIAL_L_MAC,false,
527    1,static_cast<Tgeneral_data_t>(-1018),1,10,0,0,0,0,0,0,0,0,
528    EXCEPTION_USE_NONE,EVENT_TYPE_SPR_ACCESS));
529    SEQ;
530   
531    // ===== l.jr r10
532    request.push_back (entry_t(
533    0x44005000,x,y,z,
534    BRANCH_STATE_NONE,0,BRANCH_CONDITION_READ_REGISTER_WITHOUT_WRITE_STACK,1, z,
535    0,TYPE_BRANCH,OPERATION_BRANCH_L_JALR,false,
536    0,0   ,0, 0,1,10,0,0,0,0 ,0,0,
537    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
538    SEQ;
539   
540    // ===== l.macrc r30
541    request.push_back (entry_t(
542    0x1bc10000,x,y,z,
543    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
544    0,TYPE_SPECIAL,OPERATION_SPECIAL_L_MACRC,true,
545    0,0,0, 0,0, 0,0,0,1,30,0,0,
546    EXCEPTION_USE_NONE,EVENT_TYPE_SPR_ACCESS));
547    SEQ;
548
549    // ===== l.mfspr r30,r10,1018
550    request.push_back (entry_t(
551    0xb7ca03fa,x,y,z,
552    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
553    0,TYPE_SPECIAL,OPERATION_SPECIAL_L_MFSPR,false,
554    1,1018,1,10,0, 0,0,0,1,30,0,0,
555    EXCEPTION_USE_NONE,EVENT_TYPE_SPR_ACCESS));
556    SEQ;
557
558    // ===== l.mfspr r30,r10,-1018
559    request.push_back (entry_t(
560    0xb7cafc06,x,y,z,
561    BRANCH_STATE_NONE,0,BRANCH_CONDITION_NONE_WITHOUT_WRITE_STACK,0, 0x0,
562    0,TYPE_SPECIAL,OPERATION_SPECIAL_L_MFSPR,false,
563    1,0xfc06,1,10,0, 0,0,0,1,30,0,0,
564    EXCEPTION_USE_NONE,EVENT_TYPE_SPR_ACCESS));
565    SEQ;
566
567    // ===== l.jr r9
568    request.push_back (entry_t(
569    0x44004800,x,y,z,
570    BRANCH_STATE_NONE,0,BRANCH_CONDITION_READ_STACK,1, z,
571    0,TYPE_BRANCH,OPERATION_BRANCH_L_JALR,false,
572    0,0   ,0, 0,1,9,0,0,0,0 ,0,0,
573    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
574    SEQ;
575         
576    // ===== l.movhi r30,0x3fa
577    request.push_back (entry_t(
578    0x1bc003fa,x,y,z,
579    0,0,0,0,0,0,
580    TYPE_MOVE,OPERATION_MOVE_L_MOVHI,true,
581    1,0x3fa,0,0, 0,0, 0,0, 1,30, 0,0,
582    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
583    SEQ;
584   
585    // ===== l.movhi r30,0xfc06
586    request.push_back (entry_t(
587    0x1bc0fc06,x,y,z,
588    0,0,0,0,0,0,
589    TYPE_MOVE,OPERATION_MOVE_L_MOVHI,false,
590    1,0xfc06,0,0, 0,0, 0,0, 1,30, 0,0,
591    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
592    SEQ;
593
594    // ===== l.msb r10,r20
595    request.push_back (entry_t(
596    0xc40aa002,x,y,z,
597    0,0,0,0,0,0,
598    TYPE_SPECIAL,OPERATION_SPECIAL_L_MSB,false,
599    0,0, 1,10, 1,20, 0,0, 0,0, 0,0,
600    EXCEPTION_USE_NONE,EVENT_TYPE_SPR_ACCESS));
601    SEQ;
602
603    // ===== l.msync
604    request.push_back (entry_t(
605    0x22000000,x,y,z,
606    0,0,0,0,0,0,
607    TYPE_SPECIAL,OPERATION_SPECIAL_L_MSYNC,false,
608    0,0, 0,0, 0,0, 0,0, 0,0, 0,0,
609    EXCEPTION_USE_NONE,EVENT_TYPE_MSYNC));
610    SEQ;
611
612    // ===== l.mtspr r10,r20,0x3fa
613    request.push_back (entry_t(
614    0xc00aa3fa,x,y,z,
615    0,0,0,0,0,0,
616    TYPE_SPECIAL,OPERATION_SPECIAL_L_MTSPR,false,
617    1,0x3fa, 1,10, 1,20, 0,0, 0,0, 0,0,
618    EXCEPTION_USE_NONE,EVENT_TYPE_SPR_ACCESS));
619    SEQ;
620
621    // ===== l.mtspr r10,r20,0xfc06
622    request.push_back (entry_t(
623    0xc3eaa406,x,y,z,
624    0,0,0,0,0,0,
625    TYPE_SPECIAL,OPERATION_SPECIAL_L_MTSPR,false,
626    1,0xfc06, 1,10, 1,20, 0,0, 0,0, 0,0,
627    EXCEPTION_USE_NONE,EVENT_TYPE_SPR_ACCESS));
628    SEQ;
629
630    // ===== l.mul r30,r10,r20
631    request.push_back (entry_t(
632    0xe3caa306,x,y,z,
633    0,0,0,0,0,0,
634    TYPE_MUL,OPERATION_MUL_L_MUL,false,
635    0,0, 1,10, 1,20, 0,0, 1,30, 1,SPR_LOGIC_SR_CY_OV,
636    EXCEPTION_USE_RANGE,EVENT_TYPE_NONE));
637    SEQ;
638
639    // ===== l.muli r30,r10,0x3fa
640    request.push_back (entry_t(
641    0xb3ca03fa,x,y,z,
642    0,0,0,0,0,0,
643    TYPE_MUL,OPERATION_MUL_L_MUL,false,
644    1,0x3fa, 1,10, 0,0, 0,0, 1,30, 1,SPR_LOGIC_SR_CY_OV,
645    EXCEPTION_USE_RANGE,EVENT_TYPE_NONE));
646    SEQ;
647
648    // ===== l.muli r30,r10,0xfffffc06
649    request.push_back (entry_t(
650    0xb3cafc06,x,y,z,
651    0,0,0,0,0,0,
652    TYPE_MUL,OPERATION_MUL_L_MUL,false,
653    1,0xfffffc06, 1,10, 0,0, 0,0, 1,30, 1,SPR_LOGIC_SR_CY_OV,
654    EXCEPTION_USE_RANGE,EVENT_TYPE_NONE));
655    SEQ;
656
657    // ===== l.mulu r30,r10,r20
658    request.push_back (entry_t(
659    0xe3caa30b,x,y,z,
660    0,0,0,0,0,0,
661    TYPE_MUL,OPERATION_MUL_L_MULU,false,
662    0,0, 1,10, 1,20, 0,0, 1,30, 1,SPR_LOGIC_SR_CY_OV,
663    EXCEPTION_USE_RANGE,EVENT_TYPE_NONE));
664    SEQ;
665
666    // ===== l.nop 0x3fa
667    request.push_back (entry_t(
668    0x150003fa,x,y,z,
669    0,0,0,0,0,0,
670    TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP,false,
671    0,0x3fa, 0,0, 0,0, 0,0, 0,0, 0,0,
672    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
673    SEQ;
674
675    // ===== l.nop 0xfc06
676    request.push_back (entry_t(
677    0x1500fc06,x,y,z,
678    0,0,0,0,0,0,
679    TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP,false,
680    0,0xfc06, 0,0, 0,0, 0,0, 0,0, 0,0,
681    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
682    SEQ;
683
684    // ===== l.or r30,r10,r20
685    request.push_back (entry_t(
686    0xe3caa004,x,y,z,
687    0,0,0,0,0,0,
688    TYPE_ALU,OPERATION_ALU_L_OR,false,
689    0,0, 1,10, 1,20, 0,0, 1,30, 0,0,
690    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
691    SEQ;
692
693    // ===== l.ori r30,r10,0x3fa
694    request.push_back (entry_t(
695    0xabca03fa,x,y,z,
696    0,0,0,0,0,0,
697    TYPE_ALU,OPERATION_ALU_L_OR,false,
698    1,0x3fa, 1,10, 0,0, 0,0, 1,30, 0,0,
699    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
700    SEQ;
701
702    // ===== l.ori r30,r10,0xfc06
703    request.push_back (entry_t(
704    0xabcafc06,x,y,z,
705    0,0,0,0,0,0,
706    TYPE_ALU,OPERATION_ALU_L_OR,false,
707    1,0xfc06, 1,10, 0,0, 0,0, 1,30, 0,0,
708    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
709    SEQ;
710
711    // ===== l.psync
712    request.push_back (entry_t(
713    0x22800000,x,y,z,
714    0,0,0,0,0,0,
715    TYPE_SPECIAL,OPERATION_SPECIAL_L_PSYNC,false,
716    0,0, 0,0, 0,0, 0,0, 0,0, 0,0,
717    EXCEPTION_USE_NONE,EVENT_TYPE_PSYNC));
718    SEQ;
719
720    // ===== l.ror r30,r10,r20
721    request.push_back (entry_t(
722    0xe3caa0c8,x,y,z,
723    0,0,0,0,0,0,
724    TYPE_SHIFT,OPERATION_SHIFT_L_ROR,false,
725    0,0, 1,10, 1,20, 0,0, 1,30, 0,0,
726    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
727    SEQ;
728
729    // ===== l.rori r30,r10,0x3f
730    request.push_back (entry_t(
731    0xbbca00ff,x,y,z,
732    0,0,0,0,0,0,
733    TYPE_SHIFT,OPERATION_SHIFT_L_ROR,false,
734    1,0x3f, 1,10, 0,0, 0,0, 1,30, 0,0,
735    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
736    SEQ;
737
738    // ===== l.rori r30,r10,0x1
739    request.push_back (entry_t(
740    0xbbca00c1,x,y,z,
741    0,0,0,0,0,0,
742    TYPE_SHIFT,OPERATION_SHIFT_L_ROR,false,
743    1,0x1, 1,10, 0,0, 0,0, 1,30, 0,0,
744    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
745    SEQ;
746
747    // ===== l.sb 0x3fa(r10),r20
748    request.push_back (entry_t(
749    0xd80aa3fa,x,y,z,
750    0,0,0,0,0,0,
751    TYPE_MEMORY,OPERATION_MEMORY_STORE_8,false,
752    1,0x3fa, 1,10, 1,20, 0,0, 0,0, 0,0,
753    EXCEPTION_USE_MEMORY_WITHOUT_ALIGNMENT,EVENT_TYPE_NONE));
754    SEQ;
755
756    // ===== l.sb 0xfffffc06(r10),r20
757    request.push_back (entry_t(
758    0xdbeaa406,x,y,z,
759    0,0,0,0,0,0,
760    TYPE_MEMORY,OPERATION_MEMORY_STORE_8,false,
761    1,0xfffffc06, 1,10, 1,20, 0,0, 0,0, 0,0,
762    EXCEPTION_USE_MEMORY_WITHOUT_ALIGNMENT,EVENT_TYPE_NONE));
763    SEQ;
764
765    // ===== l.sd 0x3fa(r10),r20
766    request.push_back (entry_t(
767    0xd00aa3fa,x,y,z,
768    0,0,0,0,0,0,
769    TYPE_MEMORY,OPERATION_MEMORY_STORE_64,false,
770    1,0x3fa, 1,10, 1,20, 0,0, 0,0, 0,0,
771    EXCEPTION_USE_MEMORY_WITH_ALIGNMENT,EVENT_TYPE_NONE));
772    SEQ;
773
774    // ===== l.sd 0xfffffc06(r10),r20
775    request.push_back (entry_t(
776    0xd3eaa406,x,y,z,
777    0,0,0,0,0,0,
778    TYPE_MEMORY,OPERATION_MEMORY_STORE_64,false,
779    1,0xfffffc06, 1,10, 1,20, 0,0, 0,0, 0,0,
780    EXCEPTION_USE_MEMORY_WITH_ALIGNMENT,EVENT_TYPE_NONE));
781    SEQ;
782
783    // ===== l.sh 0x3fa(r10),r20
784    request.push_back (entry_t(
785    0xdc0aa3fa,x,y,z,
786    0,0,0,0,0,0,
787    TYPE_MEMORY,OPERATION_MEMORY_STORE_16,false,
788    1,0x3fa, 1,10, 1,20, 0,0, 0,0, 0,0,
789    EXCEPTION_USE_MEMORY_WITH_ALIGNMENT,EVENT_TYPE_NONE));
790    SEQ;
791
792    // ===== l.sh 0xfffffc06(r10),r20
793    request.push_back (entry_t(
794    0xdfeaa406,x,y,z,
795    0,0,0,0,0,0,
796    TYPE_MEMORY,OPERATION_MEMORY_STORE_16,false,
797    1,0xfffffc06, 1,10, 1,20, 0,0, 0,0, 0,0,
798    EXCEPTION_USE_MEMORY_WITH_ALIGNMENT,EVENT_TYPE_NONE));
799    SEQ;
800
801    // ===== l.sw 0x3fa(r10),r20
802    request.push_back (entry_t(
803    0xd40aa3fa,x,y,z,
804    0,0,0,0,0,0,
805    TYPE_MEMORY,OPERATION_MEMORY_STORE_32,false,
806    1,0x3fa, 1,10, 1,20, 0,0, 0,0, 0,0,
807    EXCEPTION_USE_MEMORY_WITH_ALIGNMENT,EVENT_TYPE_NONE));
808    SEQ;
809
810    // ===== l.sw 0xfffffc06(r10),r20
811    request.push_back (entry_t(
812    0xd7eaa406,x,y,z,
813    0,0,0,0,0,0,
814    TYPE_MEMORY,OPERATION_MEMORY_STORE_32,false,
815    1,0xfffffc06, 1,10, 1,20, 0,0, 0,0, 0,0,
816    EXCEPTION_USE_MEMORY_WITH_ALIGNMENT,EVENT_TYPE_NONE));
817    SEQ;
818
819    // ===== l.sll r30,r10,r20
820    request.push_back (entry_t(
821    0xe3caa008,x,y,z,
822    0,0,0,0,0,0,
823    TYPE_SHIFT,OPERATION_SHIFT_L_SLL,false,
824    0,0, 1,10, 1,20, 0,0, 1,30, 0,0,
825    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
826    SEQ;
827
828    // ===== l.slli r30,r10,0x1
829    request.push_back (entry_t(
830    0xbbca0001,x,y,z,
831    0,0,0,0,0,0,
832    TYPE_SHIFT,OPERATION_SHIFT_L_SLL,false,
833    1,0x1, 1,10, 0,0, 0,0, 1,30, 0,0,
834    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
835    SEQ;
836
837    // ===== l.slli r30,r10,0x3f
838    request.push_back (entry_t(
839    0xbbca003f,x,y,z,
840    0,0,0,0,0,0,
841    TYPE_SHIFT,OPERATION_SHIFT_L_SLL,false,
842    1,0x3f, 1,10, 0,0, 0,0, 1,30, 0,0,
843    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
844    SEQ;
845
846    // ===== l.sra r30,r10,r20
847    request.push_back (entry_t(
848    0xe3caa088,x,y,z,
849    0,0,0,0,0,0,
850    TYPE_SHIFT,OPERATION_SHIFT_L_SRA,false,
851    0,0, 1,10, 1,20, 0,0, 1,30, 0,0,
852    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
853    SEQ;
854
855    // ===== l.srai r30,r10,0x1
856    request.push_back (entry_t(
857    0xbbca0081,x,y,z,
858    0,0,0,0,0,0,
859    TYPE_SHIFT,OPERATION_SHIFT_L_SRA,false,
860    1,0x1, 1,10, 0,0, 0,0, 1,30, 0,0,
861    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
862    SEQ;
863
864    // ===== l.srai r30,r10,0x3f
865    request.push_back (entry_t(
866    0xbbca00bf,x,y,z,
867    0,0,0,0,0,0,
868    TYPE_SHIFT,OPERATION_SHIFT_L_SRA,false,
869    1,0x3f, 1,10, 0,0, 0,0, 1,30, 0,0,
870    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
871    SEQ;
872
873    // ===== l.srl r30,r10,r20
874    request.push_back (entry_t(
875    0xe3caa048,x,y,z,
876    0,0,0,0,0,0,
877    TYPE_SHIFT,OPERATION_SHIFT_L_SRL,false,
878    0,0, 1,10, 1,20, 0,0, 1,30, 0,0,
879    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
880    SEQ;
881
882    // ===== l.srli r30,r10,0x1
883    request.push_back (entry_t(
884    0xbbca0041,x,y,z,
885    0,0,0,0,0,0,
886    TYPE_SHIFT,OPERATION_SHIFT_L_SRL,false,
887    1,0x1, 1,10, 0,0, 0,0, 1,30, 0,0,
888    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
889    SEQ;
890
891    // ===== l.srli r30,r10,0x3f
892    request.push_back (entry_t(
893    0xbbca007f,x,y,z,
894    0,0,0,0,0,0,
895    TYPE_SHIFT,OPERATION_SHIFT_L_SRL,false,
896    1,0x3f, 1,10, 0,0, 0,0, 1,30, 0,0,
897    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
898    SEQ;
899
900    // ===== l.xor r30,r10,r20
901    request.push_back (entry_t(
902    0xe3caa005,x,y,z,
903    0,0,0,0,0,0,
904    TYPE_ALU,OPERATION_ALU_L_XOR,false,
905    0,0, 1,10, 1,20, 0,0, 1,30, 0,0,
906    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
907    SEQ;
908
909    // ===== l.xori r30,r10,0x3fa
910    request.push_back (entry_t(
911    0xafca03fa,x,y,z,
912    0,0,0,0,0,0,
913    TYPE_ALU,OPERATION_ALU_L_XOR,false,
914    1,0x3fa, 1,10, 0,0, 0,0, 1,30, 0,0,
915    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
916    SEQ;
917
918    // ===== l.xori r30,r10,0xfffffc06
919    request.push_back (entry_t(
920    0xafcafc06,x,y,z,
921    0,0,0,0,0,0,
922    TYPE_ALU,OPERATION_ALU_L_XOR,false,
923    1,0xfffffc06, 1,10, 0,0, 0,0, 1,30, 0,0,
924    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
925    SEQ;
926
927    // ===== l.sub r30,r10,r20
928    request.push_back (entry_t(
929    0xe3caa002,x,y,z,
930    0,0,0,0,0,0,
931    TYPE_ALU,OPERATION_ALU_L_SUB,false,
932    0,0, 1,10, 1,20, 0,0, 1,30, 1,SPR_LOGIC_SR_CY_OV,
933    EXCEPTION_USE_RANGE,EVENT_TYPE_NONE));
934    SEQ;
935
936    // ===== l.sys 0x3fa
937    request.push_back (entry_t(
938    0x200003fa,x,y,z,
939    0,0,0,0,z,0,
940    TYPE_SPECIAL,OPERATION_SPECIAL_L_SYS,false,
941    0,0, 0,0, 0,0, 0,0, 0,0, 0,0,
942    EXCEPTION_USE_SYSCALL,EVENT_TYPE_EXCEPTION));
943    SEQ;
944
945    // ===== l.sys 0xfc06
946    request.push_back (entry_t(
947    0x2000fc06,x,y,z,
948    0,0,0,0,z,0,
949    TYPE_SPECIAL,OPERATION_SPECIAL_L_SYS,false,
950    0,0, 0,0, 0,0, 0,0, 0,0, 0,0,
951    EXCEPTION_USE_SYSCALL,EVENT_TYPE_EXCEPTION));
952    SEQ;
953
954    // ===== l.trap 0x3fa
955    request.push_back (entry_t(
956    0x210003fa,x,y,z,
957    0,0,0,0,0,0,
958    TYPE_SPECIAL,OPERATION_SPECIAL_L_TRAP,false,
959    1,0x3fa, 0,0, 0,0, 0,0, 0,0, 0,0,
960    EXCEPTION_USE_TRAP,EVENT_TYPE_NONE));
961    SEQ;
962
963    // ===== l.trap 0xfc06
964    request.push_back (entry_t(
965    0x2100fc06,x,y,z,
966    0,0,0,0,0,0,
967    TYPE_SPECIAL,OPERATION_SPECIAL_L_TRAP,false,
968    1,0xfc06, 0,0, 0,0, 0,0, 0,0, 0,0,
969    EXCEPTION_USE_TRAP,EVENT_TYPE_NONE));
970    SEQ;
971
972    // ===== l.rfe
973    request.push_back (entry_t(
974    0x24000000,x,y,z,
975    0,0,0,0,0,0,
976    TYPE_SPECIAL,OPERATION_SPECIAL_L_RFE,false,
977    0,0, 0,0, 0,0, 0,0, 0,0, 0,0,
978    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
979    SEQ;
980
981    // ===== l.sfeq r10,r20
982    request.push_back (entry_t(
983    0xe40aa000,x,y,z,
984    0,0,0,0,0,0,
985    TYPE_TEST,OPERATION_TEST_L_SFEQ,false,
986    0,0, 1,10, 1,20, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
987    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
988    SEQ;
989
990    // ===== l.sfeqi r10,0x3fa
991    request.push_back (entry_t(
992    0xbc0a03fa,x,y,z,
993    0,0,0,0,0,0,
994    TYPE_TEST,OPERATION_TEST_L_SFEQ,false,
995    1,0x3fa, 1,10, 0,0, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
996    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
997    SEQ;
998
999    // ===== l.sfeqi r10,0xfffffc06
1000    request.push_back (entry_t(
1001    0xbc0afc06,x,y,z,
1002    0,0,0,0,0,0,
1003    TYPE_TEST,OPERATION_TEST_L_SFEQ,false,
1004    1,0xfffffc06, 1,10, 0,0, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
1005    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
1006    SEQ;
1007
1008    // ===== l.sfne r10,r20
1009    request.push_back (entry_t(
1010    0xe42aa000,x,y,z,
1011    0,0,0,0,0,0,
1012    TYPE_TEST,OPERATION_TEST_L_SFNE,false,
1013    0,0, 1,10, 1,20, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
1014    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
1015    SEQ;
1016
1017    // ===== l.sfnei r10,0x3fa
1018    request.push_back (entry_t(
1019    0xbc2a03fa,x,y,z,
1020    0,0,0,0,0,0,
1021    TYPE_TEST,OPERATION_TEST_L_SFNE,false,
1022    1,0x3fa, 1,10, 0,0, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
1023    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
1024    SEQ;
1025
1026    // ===== l.sfnei r10,0xfffffc06
1027    request.push_back (entry_t(
1028    0xbc2afc06,x,y,z,
1029    0,0,0,0,0,0,
1030    TYPE_TEST,OPERATION_TEST_L_SFNE,false,
1031    1,0xfffffc06, 1,10, 0,0, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
1032    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
1033    SEQ;
1034
1035    // ===== l.sfges r10,r20
1036    request.push_back (entry_t(
1037    0xe56aa000,x,y,z,
1038    0,0,0,0,0,0,
1039    TYPE_TEST,OPERATION_TEST_L_SFGES,false,
1040    0,0, 1,10, 1,20, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
1041    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
1042    SEQ;
1043
1044    // ===== l.sfgesi r10,0x3fa
1045    request.push_back (entry_t(
1046    0xbd6a03fa,x,y,z,
1047    0,0,0,0,0,0,
1048    TYPE_TEST,OPERATION_TEST_L_SFGES,false,
1049    1,0x3fa, 1,10, 0,0, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
1050    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
1051    SEQ;
1052
1053    // ===== l.sfgesi r10,0xfffffc06
1054    request.push_back (entry_t(
1055    0xbd6afc06,x,y,z,
1056    0,0,0,0,0,0,
1057    TYPE_TEST,OPERATION_TEST_L_SFGES,false,
1058    1,0xfffffc06, 1,10, 0,0, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
1059    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
1060    SEQ;
1061
1062    // ===== l.sfgeu r10,r20
1063    request.push_back (entry_t(
1064    0xe46aa000,x,y,z,
1065    0,0,0,0,0,0,
1066    TYPE_TEST,OPERATION_TEST_L_SFGEU,false,
1067    0,0, 1,10, 1,20, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
1068    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
1069    SEQ;
1070
1071    // ===== l.sfgeui r10,0x3fa
1072    request.push_back (entry_t(
1073    0xbc6a03fa,x,y,z,
1074    0,0,0,0,0,0,
1075    TYPE_TEST,OPERATION_TEST_L_SFGEU,false,
1076    1,0x3fa, 1,10, 0,0, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
1077    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
1078    SEQ;
1079
1080    // ===== l.sfgeui r10,0xfffffc06
1081    request.push_back (entry_t(
1082    0xbc6afc06,x,y,z,
1083    0,0,0,0,0,0,
1084    TYPE_TEST,OPERATION_TEST_L_SFGEU,false,
1085    1,0xfffffc06, 1,10, 0,0, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
1086    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
1087    SEQ;
1088
1089    // ===== l.sfgts r10,r20
1090    request.push_back (entry_t(
1091    0xe54aa000,x,y,z,
1092    0,0,0,0,0,0,
1093    TYPE_TEST,OPERATION_TEST_L_SFGTS,false,
1094    0,0, 1,10, 1,20, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
1095    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
1096    SEQ;
1097
1098    // ===== l.sfgtsi r10,0x3fa
1099    request.push_back (entry_t(
1100    0xbd4a03fa,x,y,z,
1101    0,0,0,0,0,0,
1102    TYPE_TEST,OPERATION_TEST_L_SFGTS,false,
1103    1,0x3fa, 1,10, 0,0, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
1104    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
1105    SEQ;
1106
1107    // ===== l.sfgtsi r10,0xfffffc06
1108    request.push_back (entry_t(
1109    0xbd4afc06,x,y,z,
1110    0,0,0,0,0,0,
1111    TYPE_TEST,OPERATION_TEST_L_SFGTS,false,
1112    1,0xfffffc06, 1,10, 0,0, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
1113    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
1114    SEQ;
1115
1116    // ===== l.sfgtu r10,r20
1117    request.push_back (entry_t(
1118    0xe44aa000,x,y,z,
1119    0,0,0,0,0,0,
1120    TYPE_TEST,OPERATION_TEST_L_SFGTU,false,
1121    0,0, 1,10, 1,20, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
1122    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
1123    SEQ;
1124
1125    // ===== l.sfgtui r10,0x3fa
1126    request.push_back (entry_t(
1127    0xbc4a03fa,x,y,z,
1128    0,0,0,0,0,0,
1129    TYPE_TEST,OPERATION_TEST_L_SFGTU,false,
1130    1,0x3fa, 1,10, 0,0, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
1131    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
1132    SEQ;
1133
1134    // ===== l.sfgtui r10,0xfffffc06
1135    request.push_back (entry_t(
1136    0xbc4afc06,x,y,z,
1137    0,0,0,0,0,0,
1138    TYPE_TEST,OPERATION_TEST_L_SFGTU,false,
1139    1,0xfffffc06, 1,10, 0,0, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
1140    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
1141    SEQ;
1142
1143    // ===== l.sfles r10,r20
1144    request.push_back (entry_t(
1145    0xe5aaa000,x,y,z,
1146    0,0,0,0,0,0,
1147    TYPE_TEST,OPERATION_TEST_L_SFLES,false,
1148    0,0, 1,10, 1,20, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
1149    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
1150    SEQ;
1151
1152    // ===== l.sflesi r10,0x3fa
1153    request.push_back (entry_t(
1154    0xbdaa03fa,x,y,z,
1155    0,0,0,0,0,0,
1156    TYPE_TEST,OPERATION_TEST_L_SFLES,false,
1157    1,0x3fa, 1,10, 0,0, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
1158    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
1159    SEQ;
1160
1161    // ===== l.sflesi r10,0xfffffc06
1162    request.push_back (entry_t(
1163    0xbdaafc06,x,y,z,
1164    0,0,0,0,0,0,
1165    TYPE_TEST,OPERATION_TEST_L_SFLES,false,
1166    1,0xfffffc06, 1,10, 0,0, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
1167    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
1168    SEQ;
1169
1170    // ===== l.sfleu r10,r20
1171    request.push_back (entry_t(
1172    0xe4aaa000,x,y,z,
1173    0,0,0,0,0,0,
1174    TYPE_TEST,OPERATION_TEST_L_SFLEU,false,
1175    0,0, 1,10, 1,20, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
1176    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
1177    SEQ;
1178
1179    // ===== l.sfleui r10,0x3fa
1180    request.push_back (entry_t(
1181    0xbcaa03fa,x,y,z,
1182    0,0,0,0,0,0,
1183    TYPE_TEST,OPERATION_TEST_L_SFLEU,false,
1184    1,0x3fa, 1,10, 0,0, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
1185    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
1186    SEQ;
1187
1188    // ===== l.sfleui r10,0xfffffc06
1189    request.push_back (entry_t(
1190    0xbcaafc06,x,y,z,
1191    0,0,0,0,0,0,
1192    TYPE_TEST,OPERATION_TEST_L_SFLEU,false,
1193    1,0xfffffc06, 1,10, 0,0, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
1194    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
1195    SEQ;
1196
1197    // ===== l.sflts r10,r20
1198    request.push_back (entry_t(
1199    0xe58aa000,x,y,z,
1200    0,0,0,0,0,0,
1201    TYPE_TEST,OPERATION_TEST_L_SFLTS,false,
1202    0,0, 1,10, 1,20, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
1203    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
1204    SEQ;
1205
1206    // ===== l.sfltsi r10,0x3fa
1207    request.push_back (entry_t(
1208    0xbd8a03fa,x,y,z,
1209    0,0,0,0,0,0,
1210    TYPE_TEST,OPERATION_TEST_L_SFLTS,false,
1211    1,0x3fa, 1,10, 0,0, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
1212    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
1213    SEQ;
1214
1215    // ===== l.sfltsi r10,0xfffffc06
1216    request.push_back (entry_t(
1217    0xbd8afc06,x,y,z,
1218    0,0,0,0,0,0,
1219    TYPE_TEST,OPERATION_TEST_L_SFLTS,false,
1220    1,0xfffffc06, 1,10, 0,0, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
1221    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
1222    SEQ;
1223
1224    // ===== l.sfltu r10,r20
1225    request.push_back (entry_t(
1226    0xe48aa000,x,y,z,
1227    0,0,0,0,0,0,
1228    TYPE_TEST,OPERATION_TEST_L_SFLTU,false,
1229    0,0, 1,10, 1,20, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
1230    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
1231    SEQ;
1232
1233    // ===== l.sfltui r10,0x3fa
1234    request.push_back (entry_t(
1235    0xbc8a03fa,x,y,z,
1236    0,0,0,0,0,0,
1237    TYPE_TEST,OPERATION_TEST_L_SFLTU,false,
1238    1,0x3fa, 1,10, 0,0, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
1239    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
1240    SEQ;
1241
1242    // ===== l.sfltui r10,0xfffffc06
1243    request.push_back (entry_t(
1244    0xbc8afc06,x,y,z,
1245    0,0,0,0,0,0,
1246    TYPE_TEST,OPERATION_TEST_L_SFLTU,false,
1247    1,0xfffffc06, 1,10, 0,0, 0,0, 0,0, 1,SPR_LOGIC_SR_F,
1248    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
1249    SEQ;
1250
1251    // ===== l.cust4 (encrypt)
1252    request.push_back (entry_t(
1253    0x7de80000,x,y,z,
1254    0,0,0,0,0,0,
1255    TYPE_CUSTOM,OPERATION_CUSTOM_L_4,false,
1256    0,0x0, 1, 8, 0,0, 0,0, 1,15, 0,0,
1257    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
1258    SEQ;
1259
1260    // ===== l.cust8 (decrypt)
1261    request.push_back (entry_t(
1262    0xfde80000,x,y,z,
1263    0,0,0,0,0,0,
1264    TYPE_CUSTOM,OPERATION_CUSTOM_L_8,false,
1265    0,0x0, 1, 8, 0,0, 0,0, 1,15, 0,0,
1266    EXCEPTION_USE_NONE,EVENT_TYPE_NONE));
1267    SEQ;
1268  }
1269
1270public : uint32_t size (void)
1271  {
1272    return request.size();
1273  }
1274 
1275public : list<entry_t>::iterator begin (void)
1276  {
1277    return request.begin();
1278  }
1279
1280public : list<entry_t>::iterator end (void)
1281  {
1282    return request.end();
1283  }
1284
1285public : entry_t front (void)
1286  {
1287    return request.front();
1288  }
1289
1290public : void pop_front (void)
1291  {
1292    request.pop_front();
1293  }
1294
1295};
Note: See TracBrowser for help on using the repository browser.