source: trunk/IPs/systemC/processor/Morpheo/Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/Instruction/include/Instruction.h

Last change on this file was 86, checked in by rosiere, 16 years ago

Decod :

  • Correct selftest
  • Set Instruction address on (32/64)-2 bits,
  • Decod Custom Instruction : valid and tested. (add an test to verify the decod information)
  • Property svn:keywords set to Id
File size: 22.1 KB
Line 
1#ifndef morpheo_behavioural_core_multi_front_end_front_end_decod_unit_decod_instruction_Instruction_h
2#define morpheo_behavioural_core_multi_front_end_front_end_decod_unit_decod_instruction_Instruction_h
3
4/*
5 * $Id: Instruction.h 86 2008-05-14 17:08:56Z rosiere $
6 *
7 * [ Description ]
8 *
9 */
10
11#include "Common/include/Debug.h"
12#include "Behavioural/Core/Multi_Front_end/Front_end/Decod_unit/Decod/Instruction/include/Types.h"
13
14namespace morpheo {
15namespace behavioural {
16namespace core {
17namespace multi_front_end {
18namespace front_end {
19namespace decod_unit {
20namespace decod {
21
22  void instruction_decod               (decod_instruction_t * inst, decod_param_t * param);
23//void instruction_decod_type_0        (decod_instruction_t * inst, decod_param_t * param);
24  void instruction_decod_type_1        (decod_instruction_t * inst, decod_param_t * param);
25  void instruction_decod_type_2        (decod_instruction_t * inst, decod_param_t * param);
26  void instruction_decod_type_3        (decod_instruction_t * inst, decod_param_t * param);
27  void instruction_decod_type_4        (decod_instruction_t * inst, decod_param_t * param);
28  void instruction_decod_type_5        (decod_instruction_t * inst, decod_param_t * param);
29  void instruction_decod_type_6        (decod_instruction_t * inst, decod_param_t * param);
30  void instruction_decod_type_7        (decod_instruction_t * inst, decod_param_t * param);
31  void instruction_decod_type_8        (decod_instruction_t * inst, decod_param_t * param);
32  void instruction_decod_type_9        (decod_instruction_t * inst, decod_param_t * param);
33  void instruction_decod_type_10       (decod_instruction_t * inst, decod_param_t * param);
34  void instruction_decod_type_11       (decod_instruction_t * inst, decod_param_t * param);
35  void instruction_decod_type_12       (decod_instruction_t * inst, decod_param_t * param);
36  void instruction_decod_type_13       (decod_instruction_t * inst, decod_param_t * param);
37
38  void instruction_illegal             (decod_instruction_t * inst, decod_param_t * param);
39
40  void instruction_l_custom            (decod_instruction_t * inst, decod_param_t * param);
41  void instruction_lf_custom           (decod_instruction_t * inst, decod_param_t * param);
42  void instruction_lv_custom           (decod_instruction_t * inst, decod_param_t * param);
43  void instruction_custom              (decod_instruction_t * inst, decod_param_t * param);
44 
45  // ORBIS
46  void instruction_l_add               (decod_instruction_t * inst, decod_param_t * param);
47  void instruction_l_addc              (decod_instruction_t * inst, decod_param_t * param);
48  void instruction_l_addi              (decod_instruction_t * inst, decod_param_t * param);
49  void instruction_l_addic             (decod_instruction_t * inst, decod_param_t * param);
50  void instruction_l_and               (decod_instruction_t * inst, decod_param_t * param);
51  void instruction_l_andi              (decod_instruction_t * inst, decod_param_t * param);
52  void instruction_l_bf                (decod_instruction_t * inst, decod_param_t * param);
53  void instruction_l_bnf               (decod_instruction_t * inst, decod_param_t * param);
54  void instruction_l_cmov              (decod_instruction_t * inst, decod_param_t * param);
55  void instruction_l_csync             (decod_instruction_t * inst, decod_param_t * param);
56//   void instruction_l_cust1             (decod_instruction_t * inst, decod_param_t * param);
57//   void instruction_l_cust2             (decod_instruction_t * inst, decod_param_t * param);
58//   void instruction_l_cust3             (decod_instruction_t * inst, decod_param_t * param);
59//   void instruction_l_cust4             (decod_instruction_t * inst, decod_param_t * param);
60//   void instruction_l_cust5             (decod_instruction_t * inst, decod_param_t * param);
61//   void instruction_l_cust6             (decod_instruction_t * inst, decod_param_t * param);
62//   void instruction_l_cust7             (decod_instruction_t * inst, decod_param_t * param);
63//   void instruction_l_cust8             (decod_instruction_t * inst, decod_param_t * param);
64  void instruction_l_div               (decod_instruction_t * inst, decod_param_t * param);
65  void instruction_l_divu              (decod_instruction_t * inst, decod_param_t * param);
66  void instruction_l_extbs             (decod_instruction_t * inst, decod_param_t * param);
67  void instruction_l_extbz             (decod_instruction_t * inst, decod_param_t * param);
68  void instruction_l_exths             (decod_instruction_t * inst, decod_param_t * param);
69  void instruction_l_exthz             (decod_instruction_t * inst, decod_param_t * param);
70  void instruction_l_extws             (decod_instruction_t * inst, decod_param_t * param);
71  void instruction_l_extwz             (decod_instruction_t * inst, decod_param_t * param);
72  void instruction_l_ff1               (decod_instruction_t * inst, decod_param_t * param);
73  void instruction_l_fl1               (decod_instruction_t * inst, decod_param_t * param);
74  void instruction_l_j                 (decod_instruction_t * inst, decod_param_t * param);
75  void instruction_l_jal               (decod_instruction_t * inst, decod_param_t * param);
76  void instruction_l_jalr              (decod_instruction_t * inst, decod_param_t * param);
77  void instruction_l_jr                (decod_instruction_t * inst, decod_param_t * param);
78  void instruction_l_lbs               (decod_instruction_t * inst, decod_param_t * param);
79  void instruction_l_lbz               (decod_instruction_t * inst, decod_param_t * param);
80  void instruction_l_ld                (decod_instruction_t * inst, decod_param_t * param);
81  void instruction_l_lhs               (decod_instruction_t * inst, decod_param_t * param);
82  void instruction_l_lhz               (decod_instruction_t * inst, decod_param_t * param);
83  void instruction_l_lws               (decod_instruction_t * inst, decod_param_t * param);
84  void instruction_l_lwz               (decod_instruction_t * inst, decod_param_t * param);
85  void instruction_l_mac               (decod_instruction_t * inst, decod_param_t * param);
86  void instruction_l_maci              (decod_instruction_t * inst, decod_param_t * param);
87  void instruction_l_macrc             (decod_instruction_t * inst, decod_param_t * param);
88  void instruction_l_mfspr             (decod_instruction_t * inst, decod_param_t * param);
89  void instruction_l_movhi             (decod_instruction_t * inst, decod_param_t * param);
90  void instruction_l_msb               (decod_instruction_t * inst, decod_param_t * param);
91  void instruction_l_msync             (decod_instruction_t * inst, decod_param_t * param);
92  void instruction_l_mtspr             (decod_instruction_t * inst, decod_param_t * param);
93  void instruction_l_mul               (decod_instruction_t * inst, decod_param_t * param);
94  void instruction_l_muli              (decod_instruction_t * inst, decod_param_t * param);
95  void instruction_l_mulu              (decod_instruction_t * inst, decod_param_t * param);
96  void instruction_l_nop               (decod_instruction_t * inst, decod_param_t * param);
97  void instruction_l_or                (decod_instruction_t * inst, decod_param_t * param);
98  void instruction_l_ori               (decod_instruction_t * inst, decod_param_t * param);
99  void instruction_l_psync             (decod_instruction_t * inst, decod_param_t * param);
100  void instruction_l_rfe               (decod_instruction_t * inst, decod_param_t * param);
101  void instruction_l_ror               (decod_instruction_t * inst, decod_param_t * param);
102  void instruction_l_rori              (decod_instruction_t * inst, decod_param_t * param);
103  void instruction_l_sb                (decod_instruction_t * inst, decod_param_t * param);
104  void instruction_l_sd                (decod_instruction_t * inst, decod_param_t * param);
105  void instruction_l_sfeq              (decod_instruction_t * inst, decod_param_t * param);
106  void instruction_l_sfeqi             (decod_instruction_t * inst, decod_param_t * param);
107  void instruction_l_sfges             (decod_instruction_t * inst, decod_param_t * param);
108  void instruction_l_sfgesi            (decod_instruction_t * inst, decod_param_t * param);
109  void instruction_l_sfgeu             (decod_instruction_t * inst, decod_param_t * param);
110  void instruction_l_sfgeui            (decod_instruction_t * inst, decod_param_t * param);
111  void instruction_l_sfgts             (decod_instruction_t * inst, decod_param_t * param);
112  void instruction_l_sfgtsi            (decod_instruction_t * inst, decod_param_t * param);
113  void instruction_l_sfgtu             (decod_instruction_t * inst, decod_param_t * param);
114  void instruction_l_sfgtui            (decod_instruction_t * inst, decod_param_t * param);
115  void instruction_l_sfles             (decod_instruction_t * inst, decod_param_t * param);
116  void instruction_l_sflesi            (decod_instruction_t * inst, decod_param_t * param);
117  void instruction_l_sfleu             (decod_instruction_t * inst, decod_param_t * param);
118  void instruction_l_sfleui            (decod_instruction_t * inst, decod_param_t * param);
119  void instruction_l_sflts             (decod_instruction_t * inst, decod_param_t * param);
120  void instruction_l_sfltsi            (decod_instruction_t * inst, decod_param_t * param);
121  void instruction_l_sfltu             (decod_instruction_t * inst, decod_param_t * param);
122  void instruction_l_sfltui            (decod_instruction_t * inst, decod_param_t * param);
123  void instruction_l_sfne              (decod_instruction_t * inst, decod_param_t * param);
124  void instruction_l_sfnei             (decod_instruction_t * inst, decod_param_t * param);
125  void instruction_l_sh                (decod_instruction_t * inst, decod_param_t * param);
126  void instruction_l_sll               (decod_instruction_t * inst, decod_param_t * param);
127  void instruction_l_slli              (decod_instruction_t * inst, decod_param_t * param);
128  void instruction_l_sra               (decod_instruction_t * inst, decod_param_t * param);
129  void instruction_l_srai              (decod_instruction_t * inst, decod_param_t * param);
130  void instruction_l_srl               (decod_instruction_t * inst, decod_param_t * param);
131  void instruction_l_srli              (decod_instruction_t * inst, decod_param_t * param);
132  void instruction_l_sub               (decod_instruction_t * inst, decod_param_t * param);
133  void instruction_l_sw                (decod_instruction_t * inst, decod_param_t * param);
134  void instruction_l_sys               (decod_instruction_t * inst, decod_param_t * param);
135  void instruction_l_trap              (decod_instruction_t * inst, decod_param_t * param);
136  void instruction_l_xor               (decod_instruction_t * inst, decod_param_t * param);
137  void instruction_l_xori              (decod_instruction_t * inst, decod_param_t * param);
138
139  // ORFPX
140//   void instruction_lf_add_d            (decod_instruction_t * inst, decod_param_t * param);
141//   void instruction_lf_add_s            (decod_instruction_t * inst, decod_param_t * param);
142//   void instruction_lf_cust1_d          (decod_instruction_t * inst, decod_param_t * param);
143//   void instruction_lf_cust1_s          (decod_instruction_t * inst, decod_param_t * param);
144//   void instruction_lf_div_d            (decod_instruction_t * inst, decod_param_t * param);
145//   void instruction_lf_div_s            (decod_instruction_t * inst, decod_param_t * param);
146//   void instruction_lf_ftoi_d           (decod_instruction_t * inst, decod_param_t * param);
147//   void instruction_lf_ftoi_s           (decod_instruction_t * inst, decod_param_t * param);
148//   void instruction_lf_itof_d           (decod_instruction_t * inst, decod_param_t * param);
149//   void instruction_lf_itof_s           (decod_instruction_t * inst, decod_param_t * param);
150//   void instruction_lf_madd_d           (decod_instruction_t * inst, decod_param_t * param);
151//   void instruction_lf_madd_s           (decod_instruction_t * inst, decod_param_t * param);
152//   void instruction_lf_mul_d            (decod_instruction_t * inst, decod_param_t * param);
153//   void instruction_lf_mul_s            (decod_instruction_t * inst, decod_param_t * param);
154//   void instruction_lf_rem_d            (decod_instruction_t * inst, decod_param_t * param);
155//   void instruction_lf_rem_s            (decod_instruction_t * inst, decod_param_t * param);
156//   void instruction_lf_sfeq_d           (decod_instruction_t * inst, decod_param_t * param);
157//   void instruction_lf_sfeq_s           (decod_instruction_t * inst, decod_param_t * param);
158//   void instruction_lf_sfge_d           (decod_instruction_t * inst, decod_param_t * param);
159//   void instruction_lf_sfge_s           (decod_instruction_t * inst, decod_param_t * param);
160//   void instruction_lf_sfgt_d           (decod_instruction_t * inst, decod_param_t * param);
161//   void instruction_lf_sfgt_s           (decod_instruction_t * inst, decod_param_t * param);
162//   void instruction_lf_sfle_d           (decod_instruction_t * inst, decod_param_t * param);
163//   void instruction_lf_sfle_s           (decod_instruction_t * inst, decod_param_t * param);
164//   void instruction_lf_sflt_d           (decod_instruction_t * inst, decod_param_t * param);
165//   void instruction_lf_sflt_s           (decod_instruction_t * inst, decod_param_t * param);
166//   void instruction_lf_sfne_d           (decod_instruction_t * inst, decod_param_t * param);
167//   void instruction_lf_sfne_s           (decod_instruction_t * inst, decod_param_t * param);
168//   void instruction_lf_sub_d            (decod_instruction_t * inst, decod_param_t * param);
169//   void instruction_lf_sub_s            (decod_instruction_t * inst, decod_param_t * param);
170
171  // ORVDX
172//   void instruction_lv_add_b            (decod_instruction_t * inst, decod_param_t * param);
173//   void instruction_lv_add_h            (decod_instruction_t * inst, decod_param_t * param);
174//   void instruction_lv_adds_b           (decod_instruction_t * inst, decod_param_t * param);
175//   void instruction_lv_adds_h           (decod_instruction_t * inst, decod_param_t * param);
176//   void instruction_lv_addu_b           (decod_instruction_t * inst, decod_param_t * param);
177//   void instruction_lv_addu_h           (decod_instruction_t * inst, decod_param_t * param);
178//   void instruction_lv_addus_b          (decod_instruction_t * inst, decod_param_t * param);
179//   void instruction_lv_addus_h          (decod_instruction_t * inst, decod_param_t * param);
180//   void instruction_lv_all_eq_b         (decod_instruction_t * inst, decod_param_t * param);
181//   void instruction_lv_all_eq_h         (decod_instruction_t * inst, decod_param_t * param);
182//   void instruction_lv_all_ge_b         (decod_instruction_t * inst, decod_param_t * param);
183//   void instruction_lv_all_ge_h         (decod_instruction_t * inst, decod_param_t * param);
184//   void instruction_lv_all_gt_b         (decod_instruction_t * inst, decod_param_t * param);
185//   void instruction_lv_all_gt_h         (decod_instruction_t * inst, decod_param_t * param);
186//   void instruction_lv_all_le_b         (decod_instruction_t * inst, decod_param_t * param);
187//   void instruction_lv_all_le_h         (decod_instruction_t * inst, decod_param_t * param);
188//   void instruction_lv_all_lt_b         (decod_instruction_t * inst, decod_param_t * param);
189//   void instruction_lv_all_lt_h         (decod_instruction_t * inst, decod_param_t * param);
190//   void instruction_lv_all_ne_b         (decod_instruction_t * inst, decod_param_t * param);
191//   void instruction_lv_all_ne_h         (decod_instruction_t * inst, decod_param_t * param);
192//   void instruction_lv_and              (decod_instruction_t * inst, decod_param_t * param);
193//   void instruction_lv_any_eq_b         (decod_instruction_t * inst, decod_param_t * param);
194//   void instruction_lv_any_eq_h         (decod_instruction_t * inst, decod_param_t * param);
195//   void instruction_lv_any_ge_b         (decod_instruction_t * inst, decod_param_t * param);
196//   void instruction_lv_any_ge_h         (decod_instruction_t * inst, decod_param_t * param);
197//   void instruction_lv_any_gt_b         (decod_instruction_t * inst, decod_param_t * param);
198//   void instruction_lv_any_gt_h         (decod_instruction_t * inst, decod_param_t * param);
199//   void instruction_lv_any_le_b         (decod_instruction_t * inst, decod_param_t * param);
200//   void instruction_lv_any_le_h         (decod_instruction_t * inst, decod_param_t * param);
201//   void instruction_lv_any_lt_b         (decod_instruction_t * inst, decod_param_t * param);
202//   void instruction_lv_any_lt_h         (decod_instruction_t * inst, decod_param_t * param);
203//   void instruction_lv_any_ne_b         (decod_instruction_t * inst, decod_param_t * param);
204//   void instruction_lv_any_ne_h         (decod_instruction_t * inst, decod_param_t * param);
205//   void instruction_lv_avg_b            (decod_instruction_t * inst, decod_param_t * param);
206//   void instruction_lv_avg_h            (decod_instruction_t * inst, decod_param_t * param);
207//   void instruction_lv_cmp_eq_b         (decod_instruction_t * inst, decod_param_t * param);
208//   void instruction_lv_cmp_eq_h         (decod_instruction_t * inst, decod_param_t * param);
209//   void instruction_lv_cmp_ge_b         (decod_instruction_t * inst, decod_param_t * param);
210//   void instruction_lv_cmp_ge_h         (decod_instruction_t * inst, decod_param_t * param);
211//   void instruction_lv_cmp_gt_b         (decod_instruction_t * inst, decod_param_t * param);
212//   void instruction_lv_cmp_gt_h         (decod_instruction_t * inst, decod_param_t * param);
213//   void instruction_lv_cmp_le_b         (decod_instruction_t * inst, decod_param_t * param);
214//   void instruction_lv_cmp_le_h         (decod_instruction_t * inst, decod_param_t * param);
215//   void instruction_lv_cmp_lt_b         (decod_instruction_t * inst, decod_param_t * param);
216//   void instruction_lv_cmp_lt_h         (decod_instruction_t * inst, decod_param_t * param);
217//   void instruction_lv_cmp_ne_b         (decod_instruction_t * inst, decod_param_t * param);
218//   void instruction_lv_cmp_ne_h         (decod_instruction_t * inst, decod_param_t * param);
219//   void instruction_lv_cust1            (decod_instruction_t * inst, decod_param_t * param);
220//   void instruction_lv_cust2            (decod_instruction_t * inst, decod_param_t * param);
221//   void instruction_lv_cust3            (decod_instruction_t * inst, decod_param_t * param);
222//   void instruction_lv_cust4            (decod_instruction_t * inst, decod_param_t * param);
223//   void instruction_lv_madds_h          (decod_instruction_t * inst, decod_param_t * param);
224//   void instruction_lv_max_b            (decod_instruction_t * inst, decod_param_t * param);
225//   void instruction_lv_max_h            (decod_instruction_t * inst, decod_param_t * param);
226//   void instruction_lv_merge_b          (decod_instruction_t * inst, decod_param_t * param);
227//   void instruction_lv_merge_h          (decod_instruction_t * inst, decod_param_t * param);
228//   void instruction_lv_min_b            (decod_instruction_t * inst, decod_param_t * param);
229//   void instruction_lv_min_h            (decod_instruction_t * inst, decod_param_t * param);
230//   void instruction_lv_msubs_h          (decod_instruction_t * inst, decod_param_t * param);
231//   void instruction_lv_muls_h           (decod_instruction_t * inst, decod_param_t * param);
232//   void instruction_lv_nand             (decod_instruction_t * inst, decod_param_t * param);
233//   void instruction_lv_nor              (decod_instruction_t * inst, decod_param_t * param);
234//   void instruction_lv_or               (decod_instruction_t * inst, decod_param_t * param);
235//   void instruction_lv_pack_b           (decod_instruction_t * inst, decod_param_t * param);
236//   void instruction_lv_pack_h           (decod_instruction_t * inst, decod_param_t * param);
237//   void instruction_lv_packs_b          (decod_instruction_t * inst, decod_param_t * param);
238//   void instruction_lv_packs_h          (decod_instruction_t * inst, decod_param_t * param);
239//   void instruction_lv_packus_b         (decod_instruction_t * inst, decod_param_t * param);
240//   void instruction_lv_packus_h         (decod_instruction_t * inst, decod_param_t * param);
241//   void instruction_lv_perm_n           (decod_instruction_t * inst, decod_param_t * param);
242//   void instruction_lv_rl_b             (decod_instruction_t * inst, decod_param_t * param);
243//   void instruction_lv_rl_h             (decod_instruction_t * inst, decod_param_t * param);
244//   void instruction_lv_sll              (decod_instruction_t * inst, decod_param_t * param);
245//   void instruction_lv_sll_b            (decod_instruction_t * inst, decod_param_t * param);
246//   void instruction_lv_sll_h            (decod_instruction_t * inst, decod_param_t * param);
247//   void instruction_lv_sra_b            (decod_instruction_t * inst, decod_param_t * param);
248//   void instruction_lv_sra_h            (decod_instruction_t * inst, decod_param_t * param);
249//   void instruction_lv_srl              (decod_instruction_t * inst, decod_param_t * param);
250//   void instruction_lv_srl_b            (decod_instruction_t * inst, decod_param_t * param);
251//   void instruction_lv_srl_h            (decod_instruction_t * inst, decod_param_t * param);
252//   void instruction_lv_sub_b            (decod_instruction_t * inst, decod_param_t * param);
253//   void instruction_lv_sub_h            (decod_instruction_t * inst, decod_param_t * param);
254//   void instruction_lv_subs_b           (decod_instruction_t * inst, decod_param_t * param);
255//   void instruction_lv_subs_h           (decod_instruction_t * inst, decod_param_t * param);
256//   void instruction_lv_subu_b           (decod_instruction_t * inst, decod_param_t * param);
257//   void instruction_lv_subu_h           (decod_instruction_t * inst, decod_param_t * param);
258//   void instruction_lv_subus_b          (decod_instruction_t * inst, decod_param_t * param);
259//   void instruction_lv_subus_h          (decod_instruction_t * inst, decod_param_t * param);
260//   void instruction_lv_unpack_b         (decod_instruction_t * inst, decod_param_t * param);
261//   void instruction_lv_unpack_h         (decod_instruction_t * inst, decod_param_t * param);
262//   void instruction_lv_xor              (decod_instruction_t * inst, decod_param_t * param);
263
264}; // end namespace decod
265}; // end namespace decod_unit
266}; // end namespace front_end
267}; // end namespace multi_front_end
268}; // end namespace core
269}; // end namespace behavioural
270}; // end namespace morpheo             
271
272#endif
Note: See TracBrowser for help on using the repository browser.