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