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

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

Add :

  • Execute_loop (must be test systemC)
  • Prediction
    • Direction : predifined scheme
    • Branch Target Buffer
  • iFetch_unit
    • ifetch_queue
    • pc management
  • Decod_unit
    • coming soon : support for custom operation
  • Rename_unit
    • RAT
    • Free_list
    • Dependence RAW check
    • Load store unit pointer
  • New Environnement (hierarchy_memory will remove in a next version)


Modif :

  • Manage Custom Operation
  • All component in execute_loop to use the new statistics management

Not Finish :

  • Return Address Stack
  • Environnement
File size: 21.7 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$
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  // ORBIS
41  void instruction_l_add               (decod_instruction_t * inst, decod_param_t * param);
42  void instruction_l_addc              (decod_instruction_t * inst, decod_param_t * param);
43  void instruction_l_addi              (decod_instruction_t * inst, decod_param_t * param);
44  void instruction_l_addic             (decod_instruction_t * inst, decod_param_t * param);
45  void instruction_l_and               (decod_instruction_t * inst, decod_param_t * param);
46  void instruction_l_andi              (decod_instruction_t * inst, decod_param_t * param);
47  void instruction_l_bf                (decod_instruction_t * inst, decod_param_t * param);
48  void instruction_l_bnf               (decod_instruction_t * inst, decod_param_t * param);
49  void instruction_l_cmov              (decod_instruction_t * inst, decod_param_t * param);
50  void instruction_l_csync             (decod_instruction_t * inst, decod_param_t * param);
51//   void instruction_l_cust1             (decod_instruction_t * inst, decod_param_t * param);
52//   void instruction_l_cust2             (decod_instruction_t * inst, decod_param_t * param);
53//   void instruction_l_cust3             (decod_instruction_t * inst, decod_param_t * param);
54//   void instruction_l_cust4             (decod_instruction_t * inst, decod_param_t * param);
55//   void instruction_l_cust5             (decod_instruction_t * inst, decod_param_t * param);
56//   void instruction_l_cust6             (decod_instruction_t * inst, decod_param_t * param);
57//   void instruction_l_cust7             (decod_instruction_t * inst, decod_param_t * param);
58//   void instruction_l_cust8             (decod_instruction_t * inst, decod_param_t * param);
59  void instruction_l_div               (decod_instruction_t * inst, decod_param_t * param);
60  void instruction_l_divu              (decod_instruction_t * inst, decod_param_t * param);
61  void instruction_l_extbs             (decod_instruction_t * inst, decod_param_t * param);
62  void instruction_l_extbz             (decod_instruction_t * inst, decod_param_t * param);
63  void instruction_l_exths             (decod_instruction_t * inst, decod_param_t * param);
64  void instruction_l_exthz             (decod_instruction_t * inst, decod_param_t * param);
65  void instruction_l_extws             (decod_instruction_t * inst, decod_param_t * param);
66  void instruction_l_extwz             (decod_instruction_t * inst, decod_param_t * param);
67  void instruction_l_ff1               (decod_instruction_t * inst, decod_param_t * param);
68  void instruction_l_fl1               (decod_instruction_t * inst, decod_param_t * param);
69  void instruction_l_j                 (decod_instruction_t * inst, decod_param_t * param);
70  void instruction_l_jal               (decod_instruction_t * inst, decod_param_t * param);
71  void instruction_l_jalr              (decod_instruction_t * inst, decod_param_t * param);
72  void instruction_l_jr                (decod_instruction_t * inst, decod_param_t * param);
73  void instruction_l_lbs               (decod_instruction_t * inst, decod_param_t * param);
74  void instruction_l_lbz               (decod_instruction_t * inst, decod_param_t * param);
75  void instruction_l_ld                (decod_instruction_t * inst, decod_param_t * param);
76  void instruction_l_lhs               (decod_instruction_t * inst, decod_param_t * param);
77  void instruction_l_lhz               (decod_instruction_t * inst, decod_param_t * param);
78  void instruction_l_lws               (decod_instruction_t * inst, decod_param_t * param);
79  void instruction_l_lwz               (decod_instruction_t * inst, decod_param_t * param);
80  void instruction_l_mac               (decod_instruction_t * inst, decod_param_t * param);
81  void instruction_l_maci              (decod_instruction_t * inst, decod_param_t * param);
82  void instruction_l_macrc             (decod_instruction_t * inst, decod_param_t * param);
83  void instruction_l_mfspr             (decod_instruction_t * inst, decod_param_t * param);
84  void instruction_l_movhi             (decod_instruction_t * inst, decod_param_t * param);
85  void instruction_l_msb               (decod_instruction_t * inst, decod_param_t * param);
86  void instruction_l_msync             (decod_instruction_t * inst, decod_param_t * param);
87  void instruction_l_mtspr             (decod_instruction_t * inst, decod_param_t * param);
88  void instruction_l_mul               (decod_instruction_t * inst, decod_param_t * param);
89  void instruction_l_muli              (decod_instruction_t * inst, decod_param_t * param);
90  void instruction_l_mulu              (decod_instruction_t * inst, decod_param_t * param);
91  void instruction_l_nop               (decod_instruction_t * inst, decod_param_t * param);
92  void instruction_l_or                (decod_instruction_t * inst, decod_param_t * param);
93  void instruction_l_ori               (decod_instruction_t * inst, decod_param_t * param);
94  void instruction_l_psync             (decod_instruction_t * inst, decod_param_t * param);
95  void instruction_l_rfe               (decod_instruction_t * inst, decod_param_t * param);
96  void instruction_l_ror               (decod_instruction_t * inst, decod_param_t * param);
97  void instruction_l_rori              (decod_instruction_t * inst, decod_param_t * param);
98  void instruction_l_sb                (decod_instruction_t * inst, decod_param_t * param);
99  void instruction_l_sd                (decod_instruction_t * inst, decod_param_t * param);
100  void instruction_l_sfeq              (decod_instruction_t * inst, decod_param_t * param);
101  void instruction_l_sfeqi             (decod_instruction_t * inst, decod_param_t * param);
102  void instruction_l_sfges             (decod_instruction_t * inst, decod_param_t * param);
103  void instruction_l_sfgesi            (decod_instruction_t * inst, decod_param_t * param);
104  void instruction_l_sfgeu             (decod_instruction_t * inst, decod_param_t * param);
105  void instruction_l_sfgeui            (decod_instruction_t * inst, decod_param_t * param);
106  void instruction_l_sfgts             (decod_instruction_t * inst, decod_param_t * param);
107  void instruction_l_sfgtsi            (decod_instruction_t * inst, decod_param_t * param);
108  void instruction_l_sfgtu             (decod_instruction_t * inst, decod_param_t * param);
109  void instruction_l_sfgtui            (decod_instruction_t * inst, decod_param_t * param);
110  void instruction_l_sfles             (decod_instruction_t * inst, decod_param_t * param);
111  void instruction_l_sflesi            (decod_instruction_t * inst, decod_param_t * param);
112  void instruction_l_sfleu             (decod_instruction_t * inst, decod_param_t * param);
113  void instruction_l_sfleui            (decod_instruction_t * inst, decod_param_t * param);
114  void instruction_l_sflts             (decod_instruction_t * inst, decod_param_t * param);
115  void instruction_l_sfltsi            (decod_instruction_t * inst, decod_param_t * param);
116  void instruction_l_sfltu             (decod_instruction_t * inst, decod_param_t * param);
117  void instruction_l_sfltui            (decod_instruction_t * inst, decod_param_t * param);
118  void instruction_l_sfne              (decod_instruction_t * inst, decod_param_t * param);
119  void instruction_l_sfnei             (decod_instruction_t * inst, decod_param_t * param);
120  void instruction_l_sh                (decod_instruction_t * inst, decod_param_t * param);
121  void instruction_l_sll               (decod_instruction_t * inst, decod_param_t * param);
122  void instruction_l_slli              (decod_instruction_t * inst, decod_param_t * param);
123  void instruction_l_sra               (decod_instruction_t * inst, decod_param_t * param);
124  void instruction_l_srai              (decod_instruction_t * inst, decod_param_t * param);
125  void instruction_l_srl               (decod_instruction_t * inst, decod_param_t * param);
126  void instruction_l_srli              (decod_instruction_t * inst, decod_param_t * param);
127  void instruction_l_sub               (decod_instruction_t * inst, decod_param_t * param);
128  void instruction_l_sw                (decod_instruction_t * inst, decod_param_t * param);
129  void instruction_l_sys               (decod_instruction_t * inst, decod_param_t * param);
130  void instruction_l_trap              (decod_instruction_t * inst, decod_param_t * param);
131  void instruction_l_xor               (decod_instruction_t * inst, decod_param_t * param);
132  void instruction_l_xori              (decod_instruction_t * inst, decod_param_t * param);
133
134  // ORFPX
135//   void instruction_lf_add_d            (decod_instruction_t * inst, decod_param_t * param);
136//   void instruction_lf_add_s            (decod_instruction_t * inst, decod_param_t * param);
137//   void instruction_lf_cust1_d          (decod_instruction_t * inst, decod_param_t * param);
138//   void instruction_lf_cust1_s          (decod_instruction_t * inst, decod_param_t * param);
139//   void instruction_lf_div_d            (decod_instruction_t * inst, decod_param_t * param);
140//   void instruction_lf_div_s            (decod_instruction_t * inst, decod_param_t * param);
141//   void instruction_lf_ftoi_d           (decod_instruction_t * inst, decod_param_t * param);
142//   void instruction_lf_ftoi_s           (decod_instruction_t * inst, decod_param_t * param);
143//   void instruction_lf_itof_d           (decod_instruction_t * inst, decod_param_t * param);
144//   void instruction_lf_itof_s           (decod_instruction_t * inst, decod_param_t * param);
145//   void instruction_lf_madd_d           (decod_instruction_t * inst, decod_param_t * param);
146//   void instruction_lf_madd_s           (decod_instruction_t * inst, decod_param_t * param);
147//   void instruction_lf_mul_d            (decod_instruction_t * inst, decod_param_t * param);
148//   void instruction_lf_mul_s            (decod_instruction_t * inst, decod_param_t * param);
149//   void instruction_lf_rem_d            (decod_instruction_t * inst, decod_param_t * param);
150//   void instruction_lf_rem_s            (decod_instruction_t * inst, decod_param_t * param);
151//   void instruction_lf_sfeq_d           (decod_instruction_t * inst, decod_param_t * param);
152//   void instruction_lf_sfeq_s           (decod_instruction_t * inst, decod_param_t * param);
153//   void instruction_lf_sfge_d           (decod_instruction_t * inst, decod_param_t * param);
154//   void instruction_lf_sfge_s           (decod_instruction_t * inst, decod_param_t * param);
155//   void instruction_lf_sfgt_d           (decod_instruction_t * inst, decod_param_t * param);
156//   void instruction_lf_sfgt_s           (decod_instruction_t * inst, decod_param_t * param);
157//   void instruction_lf_sfle_d           (decod_instruction_t * inst, decod_param_t * param);
158//   void instruction_lf_sfle_s           (decod_instruction_t * inst, decod_param_t * param);
159//   void instruction_lf_sflt_d           (decod_instruction_t * inst, decod_param_t * param);
160//   void instruction_lf_sflt_s           (decod_instruction_t * inst, decod_param_t * param);
161//   void instruction_lf_sfne_d           (decod_instruction_t * inst, decod_param_t * param);
162//   void instruction_lf_sfne_s           (decod_instruction_t * inst, decod_param_t * param);
163//   void instruction_lf_sub_d            (decod_instruction_t * inst, decod_param_t * param);
164//   void instruction_lf_sub_s            (decod_instruction_t * inst, decod_param_t * param);
165
166  // ORVDX
167//   void instruction_lv_add_b            (decod_instruction_t * inst, decod_param_t * param);
168//   void instruction_lv_add_h            (decod_instruction_t * inst, decod_param_t * param);
169//   void instruction_lv_adds_b           (decod_instruction_t * inst, decod_param_t * param);
170//   void instruction_lv_adds_h           (decod_instruction_t * inst, decod_param_t * param);
171//   void instruction_lv_addu_b           (decod_instruction_t * inst, decod_param_t * param);
172//   void instruction_lv_addu_h           (decod_instruction_t * inst, decod_param_t * param);
173//   void instruction_lv_addus_b          (decod_instruction_t * inst, decod_param_t * param);
174//   void instruction_lv_addus_h          (decod_instruction_t * inst, decod_param_t * param);
175//   void instruction_lv_all_eq_b         (decod_instruction_t * inst, decod_param_t * param);
176//   void instruction_lv_all_eq_h         (decod_instruction_t * inst, decod_param_t * param);
177//   void instruction_lv_all_ge_b         (decod_instruction_t * inst, decod_param_t * param);
178//   void instruction_lv_all_ge_h         (decod_instruction_t * inst, decod_param_t * param);
179//   void instruction_lv_all_gt_b         (decod_instruction_t * inst, decod_param_t * param);
180//   void instruction_lv_all_gt_h         (decod_instruction_t * inst, decod_param_t * param);
181//   void instruction_lv_all_le_b         (decod_instruction_t * inst, decod_param_t * param);
182//   void instruction_lv_all_le_h         (decod_instruction_t * inst, decod_param_t * param);
183//   void instruction_lv_all_lt_b         (decod_instruction_t * inst, decod_param_t * param);
184//   void instruction_lv_all_lt_h         (decod_instruction_t * inst, decod_param_t * param);
185//   void instruction_lv_all_ne_b         (decod_instruction_t * inst, decod_param_t * param);
186//   void instruction_lv_all_ne_h         (decod_instruction_t * inst, decod_param_t * param);
187//   void instruction_lv_and              (decod_instruction_t * inst, decod_param_t * param);
188//   void instruction_lv_any_eq_b         (decod_instruction_t * inst, decod_param_t * param);
189//   void instruction_lv_any_eq_h         (decod_instruction_t * inst, decod_param_t * param);
190//   void instruction_lv_any_ge_b         (decod_instruction_t * inst, decod_param_t * param);
191//   void instruction_lv_any_ge_h         (decod_instruction_t * inst, decod_param_t * param);
192//   void instruction_lv_any_gt_b         (decod_instruction_t * inst, decod_param_t * param);
193//   void instruction_lv_any_gt_h         (decod_instruction_t * inst, decod_param_t * param);
194//   void instruction_lv_any_le_b         (decod_instruction_t * inst, decod_param_t * param);
195//   void instruction_lv_any_le_h         (decod_instruction_t * inst, decod_param_t * param);
196//   void instruction_lv_any_lt_b         (decod_instruction_t * inst, decod_param_t * param);
197//   void instruction_lv_any_lt_h         (decod_instruction_t * inst, decod_param_t * param);
198//   void instruction_lv_any_ne_b         (decod_instruction_t * inst, decod_param_t * param);
199//   void instruction_lv_any_ne_h         (decod_instruction_t * inst, decod_param_t * param);
200//   void instruction_lv_avg_b            (decod_instruction_t * inst, decod_param_t * param);
201//   void instruction_lv_avg_h            (decod_instruction_t * inst, decod_param_t * param);
202//   void instruction_lv_cmp_eq_b         (decod_instruction_t * inst, decod_param_t * param);
203//   void instruction_lv_cmp_eq_h         (decod_instruction_t * inst, decod_param_t * param);
204//   void instruction_lv_cmp_ge_b         (decod_instruction_t * inst, decod_param_t * param);
205//   void instruction_lv_cmp_ge_h         (decod_instruction_t * inst, decod_param_t * param);
206//   void instruction_lv_cmp_gt_b         (decod_instruction_t * inst, decod_param_t * param);
207//   void instruction_lv_cmp_gt_h         (decod_instruction_t * inst, decod_param_t * param);
208//   void instruction_lv_cmp_le_b         (decod_instruction_t * inst, decod_param_t * param);
209//   void instruction_lv_cmp_le_h         (decod_instruction_t * inst, decod_param_t * param);
210//   void instruction_lv_cmp_lt_b         (decod_instruction_t * inst, decod_param_t * param);
211//   void instruction_lv_cmp_lt_h         (decod_instruction_t * inst, decod_param_t * param);
212//   void instruction_lv_cmp_ne_b         (decod_instruction_t * inst, decod_param_t * param);
213//   void instruction_lv_cmp_ne_h         (decod_instruction_t * inst, decod_param_t * param);
214//   void instruction_lv_cust1            (decod_instruction_t * inst, decod_param_t * param);
215//   void instruction_lv_cust2            (decod_instruction_t * inst, decod_param_t * param);
216//   void instruction_lv_cust3            (decod_instruction_t * inst, decod_param_t * param);
217//   void instruction_lv_cust4            (decod_instruction_t * inst, decod_param_t * param);
218//   void instruction_lv_madds_h          (decod_instruction_t * inst, decod_param_t * param);
219//   void instruction_lv_max_b            (decod_instruction_t * inst, decod_param_t * param);
220//   void instruction_lv_max_h            (decod_instruction_t * inst, decod_param_t * param);
221//   void instruction_lv_merge_b          (decod_instruction_t * inst, decod_param_t * param);
222//   void instruction_lv_merge_h          (decod_instruction_t * inst, decod_param_t * param);
223//   void instruction_lv_min_b            (decod_instruction_t * inst, decod_param_t * param);
224//   void instruction_lv_min_h            (decod_instruction_t * inst, decod_param_t * param);
225//   void instruction_lv_msubs_h          (decod_instruction_t * inst, decod_param_t * param);
226//   void instruction_lv_muls_h           (decod_instruction_t * inst, decod_param_t * param);
227//   void instruction_lv_nand             (decod_instruction_t * inst, decod_param_t * param);
228//   void instruction_lv_nor              (decod_instruction_t * inst, decod_param_t * param);
229//   void instruction_lv_or               (decod_instruction_t * inst, decod_param_t * param);
230//   void instruction_lv_pack_b           (decod_instruction_t * inst, decod_param_t * param);
231//   void instruction_lv_pack_h           (decod_instruction_t * inst, decod_param_t * param);
232//   void instruction_lv_packs_b          (decod_instruction_t * inst, decod_param_t * param);
233//   void instruction_lv_packs_h          (decod_instruction_t * inst, decod_param_t * param);
234//   void instruction_lv_packus_b         (decod_instruction_t * inst, decod_param_t * param);
235//   void instruction_lv_packus_h         (decod_instruction_t * inst, decod_param_t * param);
236//   void instruction_lv_perm_n           (decod_instruction_t * inst, decod_param_t * param);
237//   void instruction_lv_rl_b             (decod_instruction_t * inst, decod_param_t * param);
238//   void instruction_lv_rl_h             (decod_instruction_t * inst, decod_param_t * param);
239//   void instruction_lv_sll              (decod_instruction_t * inst, decod_param_t * param);
240//   void instruction_lv_sll_b            (decod_instruction_t * inst, decod_param_t * param);
241//   void instruction_lv_sll_h            (decod_instruction_t * inst, decod_param_t * param);
242//   void instruction_lv_sra_b            (decod_instruction_t * inst, decod_param_t * param);
243//   void instruction_lv_sra_h            (decod_instruction_t * inst, decod_param_t * param);
244//   void instruction_lv_srl              (decod_instruction_t * inst, decod_param_t * param);
245//   void instruction_lv_srl_b            (decod_instruction_t * inst, decod_param_t * param);
246//   void instruction_lv_srl_h            (decod_instruction_t * inst, decod_param_t * param);
247//   void instruction_lv_sub_b            (decod_instruction_t * inst, decod_param_t * param);
248//   void instruction_lv_sub_h            (decod_instruction_t * inst, decod_param_t * param);
249//   void instruction_lv_subs_b           (decod_instruction_t * inst, decod_param_t * param);
250//   void instruction_lv_subs_h           (decod_instruction_t * inst, decod_param_t * param);
251//   void instruction_lv_subu_b           (decod_instruction_t * inst, decod_param_t * param);
252//   void instruction_lv_subu_h           (decod_instruction_t * inst, decod_param_t * param);
253//   void instruction_lv_subus_b          (decod_instruction_t * inst, decod_param_t * param);
254//   void instruction_lv_subus_h          (decod_instruction_t * inst, decod_param_t * param);
255//   void instruction_lv_unpack_b         (decod_instruction_t * inst, decod_param_t * param);
256//   void instruction_lv_unpack_h         (decod_instruction_t * inst, decod_param_t * param);
257//   void instruction_lv_xor              (decod_instruction_t * inst, decod_param_t * param);
258
259}; // end namespace decod
260}; // end namespace decod_unit
261}; // end namespace front_end
262}; // end namespace multi_front_end
263}; // end namespace core
264}; // end namespace behavioural
265}; // end namespace morpheo             
266
267#endif
Note: See TracBrowser for help on using the repository browser.