source: trunk/IPs/systemC/processor/Morpheo/Behavioural/src/Types.cpp @ 88

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

Almost complete design
with Test and test platform

  • Property svn:keywords set to Id
File size: 25.5 KB
Line 
1/*
2 * $Id: Types.cpp 88 2008-12-10 18:31:39Z rosiere $
3 *
4 * [ Description ]
5 *
6 */
7
8#include "Behavioural/include/Types.h"
9#include "Common/include/Translation.h"
10
11namespace morpheo {
12namespace behavioural {
13
14#undef  FUNCTION
15#define FUNCTION "instruction_information"
16  instruction_t instruction_information (uint32_t instruction)
17  {
18    switch (instruction)
19      {
20      case INSTRUCTION_L_ADD       : return instruction_t (TYPE_ALU    ,OPERATION_ALU_L_ADD             ,ORBIS32,1);
21      case INSTRUCTION_L_ADDC      : return instruction_t (TYPE_ALU    ,OPERATION_ALU_L_ADD             ,ORBIS32,1);
22      case INSTRUCTION_L_ADDI      : return instruction_t (TYPE_ALU    ,OPERATION_ALU_L_ADD             ,ORBIS32,1);
23      case INSTRUCTION_L_ADDIC     : return instruction_t (TYPE_ALU    ,OPERATION_ALU_L_ADD             ,ORBIS32,1);
24      case INSTRUCTION_L_AND       : return instruction_t (TYPE_ALU    ,OPERATION_ALU_L_AND             ,ORBIS32,1);
25      case INSTRUCTION_L_ANDI      : return instruction_t (TYPE_ALU    ,OPERATION_ALU_L_AND             ,ORBIS32,1);
26      case INSTRUCTION_L_BF        : return instruction_t (TYPE_BRANCH ,OPERATION_BRANCH_L_TEST_F       ,ORBIS32,1);
27      case INSTRUCTION_L_BNF       : return instruction_t (TYPE_BRANCH ,OPERATION_BRANCH_L_TEST_NF      ,ORBIS32,1);
28      case INSTRUCTION_L_CMOV      : return instruction_t (TYPE_MOVE   ,OPERATION_MOVE_L_CMOV           ,ORBIS32,2);
29      case INSTRUCTION_L_CSYNC     : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_CSYNC       ,ORBIS32,2);
30      case INSTRUCTION_L_CUST1     : return instruction_t (TYPE_CUSTOM ,OPERATION_CUSTOM_L_1            ,ORBIS32,2);
31      case INSTRUCTION_L_CUST2     : return instruction_t (TYPE_CUSTOM ,OPERATION_CUSTOM_L_2            ,ORBIS32,2);
32      case INSTRUCTION_L_CUST3     : return instruction_t (TYPE_CUSTOM ,OPERATION_CUSTOM_L_3            ,ORBIS32,2);
33      case INSTRUCTION_L_CUST4     : return instruction_t (TYPE_CUSTOM ,OPERATION_CUSTOM_L_4            ,ORBIS32,2);
34      case INSTRUCTION_L_CUST5     : return instruction_t (TYPE_CUSTOM ,OPERATION_CUSTOM_L_5            ,ORBIS32,2);
35      case INSTRUCTION_L_CUST6     : return instruction_t (TYPE_CUSTOM ,OPERATION_CUSTOM_L_6            ,ORBIS32,2);
36      case INSTRUCTION_L_CUST7     : return instruction_t (TYPE_CUSTOM ,OPERATION_CUSTOM_L_7            ,ORBIS32,2);
37      case INSTRUCTION_L_CUST8     : return instruction_t (TYPE_CUSTOM ,OPERATION_CUSTOM_L_8            ,ORBIS32,2);
38      case INSTRUCTION_L_DIV       : return instruction_t (TYPE_DIV    ,OPERATION_DIV_L_DIV             ,ORBIS32,2);
39      case INSTRUCTION_L_DIVU      : return instruction_t (TYPE_DIV    ,OPERATION_DIV_L_DIVU            ,ORBIS32,2);
40      case INSTRUCTION_L_EXTBS     : return instruction_t (TYPE_EXTEND ,OPERATION_EXTEND_L_EXTEND_S     ,ORBIS32,2);
41      case INSTRUCTION_L_EXTBZ     : return instruction_t (TYPE_EXTEND ,OPERATION_EXTEND_L_EXTEND_Z     ,ORBIS32,2);
42      case INSTRUCTION_L_EXTHS     : return instruction_t (TYPE_EXTEND ,OPERATION_EXTEND_L_EXTEND_S     ,ORBIS32,2);
43      case INSTRUCTION_L_EXTHZ     : return instruction_t (TYPE_EXTEND ,OPERATION_EXTEND_L_EXTEND_Z     ,ORBIS32,2);
44      case INSTRUCTION_L_EXTWS     : return instruction_t (TYPE_EXTEND ,OPERATION_EXTEND_L_EXTEND_S     ,ORBIS64,2);
45      case INSTRUCTION_L_EXTWZ     : return instruction_t (TYPE_EXTEND ,OPERATION_EXTEND_L_EXTEND_Z     ,ORBIS64,2);
46      case INSTRUCTION_L_FF1       : return instruction_t (TYPE_FIND   ,OPERATION_FIND_L_FF1            ,ORBIS32,2);
47      case INSTRUCTION_L_FL1       : return instruction_t (TYPE_FIND   ,OPERATION_FIND_L_FL1            ,ORBIS32,2);
48      case INSTRUCTION_L_J         : return instruction_t (TYPE_BRANCH ,OPERATION_BRANCH_NONE           ,ORBIS32,1);
49      case INSTRUCTION_L_JAL       : return instruction_t (TYPE_BRANCH ,OPERATION_BRANCH_L_JALR         ,ORBIS32,1);
50      case INSTRUCTION_L_JALR      : return instruction_t (TYPE_BRANCH ,OPERATION_BRANCH_L_JALR         ,ORBIS32,1);
51      case INSTRUCTION_L_JR        : return instruction_t (TYPE_BRANCH ,OPERATION_BRANCH_L_JALR         ,ORBIS32,1);
52      case INSTRUCTION_L_LBS       : return instruction_t (TYPE_MEMORY ,OPERATION_MEMORY_LOAD_8_S       ,ORBIS32,1);
53      case INSTRUCTION_L_LBZ       : return instruction_t (TYPE_MEMORY ,OPERATION_MEMORY_LOAD_8_Z       ,ORBIS32,1);
54      case INSTRUCTION_L_LD        : return instruction_t (TYPE_MEMORY ,OPERATION_MEMORY_LOAD_64_S      ,ORBIS64,1);
55      case INSTRUCTION_L_LHS       : return instruction_t (TYPE_MEMORY ,OPERATION_MEMORY_LOAD_16_S      ,ORBIS32,1);
56      case INSTRUCTION_L_LHZ       : return instruction_t (TYPE_MEMORY ,OPERATION_MEMORY_LOAD_16_Z      ,ORBIS32,1);
57      case INSTRUCTION_L_LWS       : return instruction_t (TYPE_MEMORY ,OPERATION_MEMORY_LOAD_32_S      ,ORBIS32,1);
58      case INSTRUCTION_L_LWZ       : return instruction_t (TYPE_MEMORY ,OPERATION_MEMORY_LOAD_32_Z      ,ORBIS32,1);
59      case INSTRUCTION_L_MAC       : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_MAC         ,ORBIS32,2);
60      case INSTRUCTION_L_MACI      : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_MAC         ,ORBIS32,2);
61      case INSTRUCTION_L_MACRC     : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_MACRC       ,ORBIS32,2);
62      case INSTRUCTION_L_MFSPR     : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_MFSPR       ,ORBIS32,1);
63      case INSTRUCTION_L_MOVHI     : return instruction_t (TYPE_MOVE   ,OPERATION_MOVE_L_MOVHI          ,ORBIS32,1);
64      case INSTRUCTION_L_MSB       : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_MSB         ,ORBIS32,2);
65      case INSTRUCTION_L_MSYNC     : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_MSYNC       ,ORBIS32,2);
66      case INSTRUCTION_L_MTSPR     : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_MTSPR       ,ORBIS32,1);
67      case INSTRUCTION_L_MUL       : return instruction_t (TYPE_MUL    ,OPERATION_MUL_L_MUL             ,ORBIS32,1);
68      case INSTRUCTION_L_MULI      : return instruction_t (TYPE_MUL    ,OPERATION_MUL_L_MUL             ,ORBIS32,1);
69      case INSTRUCTION_L_MULU      : return instruction_t (TYPE_MUL    ,OPERATION_MUL_L_MULU            ,ORBIS32,1);
70      case INSTRUCTION_L_NOP       : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORBIS32,1);
71      case INSTRUCTION_L_OR        : return instruction_t (TYPE_ALU    ,OPERATION_ALU_L_OR              ,ORBIS32,1);
72      case INSTRUCTION_L_ORI       : return instruction_t (TYPE_ALU    ,OPERATION_ALU_L_OR              ,ORBIS32,1);
73      case INSTRUCTION_L_PSYNC     : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_PSYNC       ,ORBIS32,2);
74      case INSTRUCTION_L_RFE       : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_RFE         ,ORBIS32,1);
75      case INSTRUCTION_L_ROR       : return instruction_t (TYPE_SHIFT  ,OPERATION_SHIFT_L_ROR           ,ORBIS32,2);
76      case INSTRUCTION_L_RORI      : return instruction_t (TYPE_SHIFT  ,OPERATION_SHIFT_L_ROR           ,ORBIS32,2);
77      case INSTRUCTION_L_SB        : return instruction_t (TYPE_MEMORY ,OPERATION_MEMORY_STORE_8        ,ORBIS32,1);
78      case INSTRUCTION_L_SD        : return instruction_t (TYPE_MEMORY ,OPERATION_MEMORY_STORE_64       ,ORBIS64,1);
79      case INSTRUCTION_L_SFEQ      : return instruction_t (TYPE_TEST   ,OPERATION_TEST_L_SFEQ           ,ORBIS32,1);
80      case INSTRUCTION_L_SFEQI     : return instruction_t (TYPE_TEST   ,OPERATION_TEST_L_SFEQ           ,ORBIS32,1);
81      case INSTRUCTION_L_SFGES     : return instruction_t (TYPE_TEST   ,OPERATION_TEST_L_SFGES          ,ORBIS32,1);
82      case INSTRUCTION_L_SFGESI    : return instruction_t (TYPE_TEST   ,OPERATION_TEST_L_SFGES          ,ORBIS32,2);
83      case INSTRUCTION_L_SFGEU     : return instruction_t (TYPE_TEST   ,OPERATION_TEST_L_SFGEU          ,ORBIS32,1);
84      case INSTRUCTION_L_SFGEUI    : return instruction_t (TYPE_TEST   ,OPERATION_TEST_L_SFGEU          ,ORBIS32,2);
85      case INSTRUCTION_L_SFGTS     : return instruction_t (TYPE_TEST   ,OPERATION_TEST_L_SFGTS          ,ORBIS32,1);
86      case INSTRUCTION_L_SFGTSI    : return instruction_t (TYPE_TEST   ,OPERATION_TEST_L_SFGTS          ,ORBIS32,2);
87      case INSTRUCTION_L_SFGTU     : return instruction_t (TYPE_TEST   ,OPERATION_TEST_L_SFGTU          ,ORBIS32,1);
88      case INSTRUCTION_L_SFGTUI    : return instruction_t (TYPE_TEST   ,OPERATION_TEST_L_SFGTU          ,ORBIS32,2);
89      case INSTRUCTION_L_SFLES     : return instruction_t (TYPE_TEST   ,OPERATION_TEST_L_SFLES          ,ORBIS32,1);
90      case INSTRUCTION_L_SFLESI    : return instruction_t (TYPE_TEST   ,OPERATION_TEST_L_SFLES          ,ORBIS32,2);
91      case INSTRUCTION_L_SFLEU     : return instruction_t (TYPE_TEST   ,OPERATION_TEST_L_SFLEU          ,ORBIS32,1);
92      case INSTRUCTION_L_SFLEUI    : return instruction_t (TYPE_TEST   ,OPERATION_TEST_L_SFLEU          ,ORBIS32,2);
93      case INSTRUCTION_L_SFLTS     : return instruction_t (TYPE_TEST   ,OPERATION_TEST_L_SFLTS          ,ORBIS32,1);
94      case INSTRUCTION_L_SFLTSI    : return instruction_t (TYPE_TEST   ,OPERATION_TEST_L_SFLTS          ,ORBIS32,2);
95      case INSTRUCTION_L_SFLTU     : return instruction_t (TYPE_TEST   ,OPERATION_TEST_L_SFLTU          ,ORBIS32,1);
96      case INSTRUCTION_L_SFLTUI    : return instruction_t (TYPE_TEST   ,OPERATION_TEST_L_SFLTU          ,ORBIS32,2);
97      case INSTRUCTION_L_SFNE      : return instruction_t (TYPE_TEST   ,OPERATION_TEST_L_SFNE           ,ORBIS32,1);
98      case INSTRUCTION_L_SFNEI     : return instruction_t (TYPE_TEST   ,OPERATION_TEST_L_SFNE           ,ORBIS32,2);
99      case INSTRUCTION_L_SH        : return instruction_t (TYPE_MEMORY ,OPERATION_MEMORY_STORE_16       ,ORBIS32,1);
100      case INSTRUCTION_L_SLL       : return instruction_t (TYPE_SHIFT  ,OPERATION_SHIFT_L_SLL           ,ORBIS32,1);
101      case INSTRUCTION_L_SLLI      : return instruction_t (TYPE_SHIFT  ,OPERATION_SHIFT_L_SLL           ,ORBIS32,1);
102      case INSTRUCTION_L_SRA       : return instruction_t (TYPE_SHIFT  ,OPERATION_SHIFT_L_SRA           ,ORBIS32,1);
103      case INSTRUCTION_L_SRAI      : return instruction_t (TYPE_SHIFT  ,OPERATION_SHIFT_L_SRA           ,ORBIS32,1);
104      case INSTRUCTION_L_SRL       : return instruction_t (TYPE_SHIFT  ,OPERATION_SHIFT_L_SRL           ,ORBIS32,1);
105      case INSTRUCTION_L_SRLI      : return instruction_t (TYPE_SHIFT  ,OPERATION_SHIFT_L_SRL           ,ORBIS32,1);
106      case INSTRUCTION_L_SUB       : return instruction_t (TYPE_ALU    ,OPERATION_ALU_L_SUB             ,ORBIS32,1);
107      case INSTRUCTION_L_SW        : return instruction_t (TYPE_MEMORY ,OPERATION_MEMORY_STORE_32       ,ORBIS32,1);
108      case INSTRUCTION_L_SYS       : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_SYS         ,ORBIS32,1);
109      case INSTRUCTION_L_TRAP      : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_TRAP        ,ORBIS32,2);
110      case INSTRUCTION_L_XOR       : return instruction_t (TYPE_ALU    ,OPERATION_ALU_L_XOR             ,ORBIS32,1);
111      case INSTRUCTION_L_XORI      : return instruction_t (TYPE_ALU    ,OPERATION_ALU_L_XOR             ,ORBIS32,1);
112                                                                                                                       
113      case INSTRUCTION_LF_ADD_D    : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORFPX64,1);
114      case INSTRUCTION_LF_ADD_S    : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORFPX32,1);
115      case INSTRUCTION_LF_CUST1_D  : return instruction_t (TYPE_CUSTOM ,OPERATION_CUSTOM_LF_1_D         ,ORFPX64,2);
116      case INSTRUCTION_LF_CUST1_S  : return instruction_t (TYPE_CUSTOM ,OPERATION_CUSTOM_LF_1_S         ,ORFPX32,2);
117      case INSTRUCTION_LF_DIV_D    : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORFPX64,2);
118      case INSTRUCTION_LF_DIV_S    : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORFPX32,2);
119      case INSTRUCTION_LF_FTOI_D   : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORFPX64,1);
120      case INSTRUCTION_LF_FTOI_S   : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORFPX32,1);
121      case INSTRUCTION_LF_ITOF_D   : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORFPX64,1);
122      case INSTRUCTION_LF_ITOF_S   : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORFPX32,1);
123      case INSTRUCTION_LF_MADD_D   : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORFPX64,2);
124      case INSTRUCTION_LF_MADD_S   : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORFPX32,2);
125      case INSTRUCTION_LF_MUL_D    : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORFPX64,1);
126      case INSTRUCTION_LF_MUL_S    : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORFPX32,1);
127      case INSTRUCTION_LF_REM_D    : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORFPX64,2);
128      case INSTRUCTION_LF_REM_S    : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORFPX32,2);
129      case INSTRUCTION_LF_SFEQ_D   : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORFPX64,1);
130      case INSTRUCTION_LF_SFEQ_S   : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORFPX32,1);
131      case INSTRUCTION_LF_SFGE_D   : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORFPX64,1);
132      case INSTRUCTION_LF_SFGE_S   : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORFPX32,1);
133      case INSTRUCTION_LF_SFGT_D   : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORFPX64,1);
134      case INSTRUCTION_LF_SFGT_S   : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORFPX32,1);
135      case INSTRUCTION_LF_SFLE_D   : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORFPX64,1);
136      case INSTRUCTION_LF_SFLE_S   : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORFPX32,1);
137      case INSTRUCTION_LF_SFLT_D   : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORFPX64,1);
138      case INSTRUCTION_LF_SFLT_S   : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORFPX32,1);
139      case INSTRUCTION_LF_SFNE_D   : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORFPX64,1);
140      case INSTRUCTION_LF_SFNE_S   : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORFPX32,1);
141      case INSTRUCTION_LF_SUB_D    : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORFPX64,1);
142      case INSTRUCTION_LF_SUB_S    : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORFPX32,1);
143                                                                                                                       
144      case INSTRUCTION_LV_ADD_B    : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
145      case INSTRUCTION_LV_ADD_H    : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
146      case INSTRUCTION_LV_ADDS_B   : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
147      case INSTRUCTION_LV_ADDS_H   : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
148      case INSTRUCTION_LV_ADDU_B   : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
149      case INSTRUCTION_LV_ADDU_H   : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
150      case INSTRUCTION_LV_ADDUS_B  : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
151      case INSTRUCTION_LV_ADDUS_H  : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
152      case INSTRUCTION_LV_ALL_EQ_B : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
153      case INSTRUCTION_LV_ALL_EQ_H : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
154      case INSTRUCTION_LV_ALL_GE_B : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
155      case INSTRUCTION_LV_ALL_GE_H : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
156      case INSTRUCTION_LV_ALL_GT_B : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
157      case INSTRUCTION_LV_ALL_GT_H : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
158      case INSTRUCTION_LV_ALL_LE_B : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
159      case INSTRUCTION_LV_ALL_LE_H : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
160      case INSTRUCTION_LV_ALL_LT_B : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
161      case INSTRUCTION_LV_ALL_LT_H : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
162      case INSTRUCTION_LV_ALL_NE_B : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
163      case INSTRUCTION_LV_ALL_NE_H : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
164      case INSTRUCTION_LV_AND      : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
165      case INSTRUCTION_LV_ANY_EQ_B : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
166      case INSTRUCTION_LV_ANY_EQ_H : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
167      case INSTRUCTION_LV_ANY_GE_B : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
168      case INSTRUCTION_LV_ANY_GE_H : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
169      case INSTRUCTION_LV_ANY_GT_B : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
170      case INSTRUCTION_LV_ANY_GT_H : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
171      case INSTRUCTION_LV_ANY_LE_B : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
172      case INSTRUCTION_LV_ANY_LE_H : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
173      case INSTRUCTION_LV_ANY_LT_B : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
174      case INSTRUCTION_LV_ANY_LT_H : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
175      case INSTRUCTION_LV_ANY_NE_B : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
176      case INSTRUCTION_LV_ANY_NE_H : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
177      case INSTRUCTION_LV_AVG_B    : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
178      case INSTRUCTION_LV_AVG_H    : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
179      case INSTRUCTION_LV_CMP_EQ_B : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
180      case INSTRUCTION_LV_CMP_EQ_H : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
181      case INSTRUCTION_LV_CMP_GE_B : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
182      case INSTRUCTION_LV_CMP_GE_H : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
183      case INSTRUCTION_LV_CMP_GT_B : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
184      case INSTRUCTION_LV_CMP_GT_H : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
185      case INSTRUCTION_LV_CMP_LE_B : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
186      case INSTRUCTION_LV_CMP_LE_H : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
187      case INSTRUCTION_LV_CMP_LT_B : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
188      case INSTRUCTION_LV_CMP_LT_H : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
189      case INSTRUCTION_LV_CMP_NE_B : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
190      case INSTRUCTION_LV_CMP_NE_H : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
191      case INSTRUCTION_LV_CUST1    : return instruction_t (TYPE_CUSTOM ,OPERATION_CUSTOM_LV_1           ,ORVDX64,2);
192      case INSTRUCTION_LV_CUST2    : return instruction_t (TYPE_CUSTOM ,OPERATION_CUSTOM_LV_2           ,ORVDX64,2);
193      case INSTRUCTION_LV_CUST3    : return instruction_t (TYPE_CUSTOM ,OPERATION_CUSTOM_LV_3           ,ORVDX64,2);
194      case INSTRUCTION_LV_CUST4    : return instruction_t (TYPE_CUSTOM ,OPERATION_CUSTOM_LV_4           ,ORVDX64,2);
195      case INSTRUCTION_LV_MADDS_H  : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
196      case INSTRUCTION_LV_MAX_B    : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
197      case INSTRUCTION_LV_MAX_H    : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
198      case INSTRUCTION_LV_MERGE_B  : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
199      case INSTRUCTION_LV_MERGE_H  : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
200      case INSTRUCTION_LV_MIN_B    : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
201      case INSTRUCTION_LV_MIN_H    : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
202      case INSTRUCTION_LV_MSUBS_H  : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
203      case INSTRUCTION_LV_MULS_H   : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,2);
204      case INSTRUCTION_LV_NAND     : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
205      case INSTRUCTION_LV_NOR      : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
206      case INSTRUCTION_LV_OR       : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
207      case INSTRUCTION_LV_PACK_B   : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
208      case INSTRUCTION_LV_PACK_H   : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
209      case INSTRUCTION_LV_PACKS_B  : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
210      case INSTRUCTION_LV_PACKS_H  : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
211      case INSTRUCTION_LV_PACKUS_B : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
212      case INSTRUCTION_LV_PACKUS_H : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
213      case INSTRUCTION_LV_PERM_N   : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
214      case INSTRUCTION_LV_RL_B     : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
215      case INSTRUCTION_LV_RL_H     : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
216      case INSTRUCTION_LV_SLL      : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
217      case INSTRUCTION_LV_SLL_B    : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
218      case INSTRUCTION_LV_SLL_H    : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
219      case INSTRUCTION_LV_SRA_B    : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
220      case INSTRUCTION_LV_SRA_H    : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
221      case INSTRUCTION_LV_SRL      : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
222      case INSTRUCTION_LV_SRL_B    : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
223      case INSTRUCTION_LV_SRL_H    : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
224      case INSTRUCTION_LV_SUB_B    : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
225      case INSTRUCTION_LV_SUB_H    : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
226      case INSTRUCTION_LV_SUBS_B   : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
227      case INSTRUCTION_LV_SUBS_H   : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
228      case INSTRUCTION_LV_SUBU_B   : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
229      case INSTRUCTION_LV_SUBU_H   : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
230      case INSTRUCTION_LV_SUBUS_B  : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
231      case INSTRUCTION_LV_SUBUS_H  : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
232      case INSTRUCTION_LV_UNPACK_B : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
233      case INSTRUCTION_LV_UNPACK_H : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
234      case INSTRUCTION_LV_XOR      : return instruction_t (TYPE_SPECIAL,OPERATION_SPECIAL_L_NOP         ,ORVDX64,1);
235
236      default                      : throw (ERRORMORPHEO (FUNCTION,_("Unknow instruction")));
237      }
238  };
239
240#undef  FUNCTION
241#define FUNCTION "instruction_size_data"
242  uint32_t instruction_size_data (uint32_t instruction)
243  {
244    ISA subset = instruction_information(instruction)._isa_subset;
245
246    switch(subset)
247      {
248      case ORBIS32 :
249      case ORFPX32 : return 32;
250      case ORBIS64 :
251      case ORFPX64 :
252      case ORVDX64 : return 64;
253      default : throw (ERRORMORPHEO (FUNCTION,_("Unknow subset")));
254      }
255  }
256
257}; // end namespace behavioural
258}; // end namespace morpheo             
Note: See TracBrowser for help on using the repository browser.