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

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

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

  • Property svn:keywords set to Id
File size: 40.9 KB
Line 
1/*
2 * $Id: Decod_request.h 101 2009-01-15 17:19:08Z 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_ADDC,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_ADDC,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_ADDC,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_ADDC,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_MEMORY,OPERATION_MEMORY_SYNCHRONIZATION,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    1,z+1,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_MEMORY,OPERATION_MEMORY_SYNCHRONIZATION,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_MEMORY,OPERATION_MEMORY_SYNCHRONIZATION,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.