Commit | Line | Data |
---|---|---|
cbb38b47 BE |
1 | /* Simulator instruction decoder for sh64_media. |
2 | ||
3 | THIS FILE IS MACHINE GENERATED WITH CGEN. | |
4 | ||
5 | Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc. | |
6 | ||
7 | This file is part of the GNU Simulators. | |
8 | ||
9 | This program is free software; you can redistribute it and/or modify | |
10 | it under the terms of the GNU General Public License as published by | |
11 | the Free Software Foundation; either version 2, or (at your option) | |
12 | any later version. | |
13 | ||
14 | This program is distributed in the hope that it will be useful, | |
15 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
16 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
17 | GNU General Public License for more details. | |
18 | ||
19 | You should have received a copy of the GNU General Public License along | |
20 | with this program; if not, write to the Free Software Foundation, Inc., | |
21 | 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. | |
22 | ||
23 | */ | |
24 | ||
25 | #define WANT_CPU sh64 | |
26 | #define WANT_CPU_SH64 | |
27 | ||
28 | #include "sim-main.h" | |
29 | #include "sim-assert.h" | |
30 | ||
31 | /* The instruction descriptor array. | |
32 | This is computed at runtime. Space for it is not malloc'd to save a | |
33 | teensy bit of cpu in the decoder. Moving it to malloc space is trivial | |
34 | but won't be done until necessary (we don't currently support the runtime | |
35 | addition of instructions nor an SMP machine with different cpus). */ | |
36 | static IDESC sh64_media_insn_data[SH64_MEDIA_INSN_MAX]; | |
37 | ||
38 | /* Commas between elements are contained in the macros. | |
39 | Some of these are conditionally compiled out. */ | |
40 | ||
41 | static const struct insn_sem sh64_media_insn_sem[] = | |
42 | { | |
43 | { VIRTUAL_INSN_X_INVALID, SH64_MEDIA_INSN_X_INVALID, SH64_MEDIA_SFMT_EMPTY }, | |
44 | { VIRTUAL_INSN_X_AFTER, SH64_MEDIA_INSN_X_AFTER, SH64_MEDIA_SFMT_EMPTY }, | |
45 | { VIRTUAL_INSN_X_BEFORE, SH64_MEDIA_INSN_X_BEFORE, SH64_MEDIA_SFMT_EMPTY }, | |
46 | { VIRTUAL_INSN_X_CTI_CHAIN, SH64_MEDIA_INSN_X_CTI_CHAIN, SH64_MEDIA_SFMT_EMPTY }, | |
47 | { VIRTUAL_INSN_X_CHAIN, SH64_MEDIA_INSN_X_CHAIN, SH64_MEDIA_SFMT_EMPTY }, | |
48 | { VIRTUAL_INSN_X_BEGIN, SH64_MEDIA_INSN_X_BEGIN, SH64_MEDIA_SFMT_EMPTY }, | |
49 | { SH_INSN_ADD, SH64_MEDIA_INSN_ADD, SH64_MEDIA_SFMT_ADD }, | |
50 | { SH_INSN_ADDL, SH64_MEDIA_INSN_ADDL, SH64_MEDIA_SFMT_ADD }, | |
51 | { SH_INSN_ADDI, SH64_MEDIA_INSN_ADDI, SH64_MEDIA_SFMT_ADDI }, | |
52 | { SH_INSN_ADDIL, SH64_MEDIA_INSN_ADDIL, SH64_MEDIA_SFMT_ADDI }, | |
53 | { SH_INSN_ADDZL, SH64_MEDIA_INSN_ADDZL, SH64_MEDIA_SFMT_ADD }, | |
54 | { SH_INSN_ALLOCO, SH64_MEDIA_INSN_ALLOCO, SH64_MEDIA_SFMT_ALLOCO }, | |
55 | { SH_INSN_AND, SH64_MEDIA_INSN_AND, SH64_MEDIA_SFMT_ADD }, | |
56 | { SH_INSN_ANDC, SH64_MEDIA_INSN_ANDC, SH64_MEDIA_SFMT_ADD }, | |
57 | { SH_INSN_ANDI, SH64_MEDIA_INSN_ANDI, SH64_MEDIA_SFMT_ADDI }, | |
58 | { SH_INSN_BEQ, SH64_MEDIA_INSN_BEQ, SH64_MEDIA_SFMT_BEQ }, | |
59 | { SH_INSN_BEQI, SH64_MEDIA_INSN_BEQI, SH64_MEDIA_SFMT_BEQI }, | |
60 | { SH_INSN_BGE, SH64_MEDIA_INSN_BGE, SH64_MEDIA_SFMT_BEQ }, | |
61 | { SH_INSN_BGEU, SH64_MEDIA_INSN_BGEU, SH64_MEDIA_SFMT_BEQ }, | |
62 | { SH_INSN_BGT, SH64_MEDIA_INSN_BGT, SH64_MEDIA_SFMT_BEQ }, | |
63 | { SH_INSN_BGTU, SH64_MEDIA_INSN_BGTU, SH64_MEDIA_SFMT_BEQ }, | |
64 | { SH_INSN_BLINK, SH64_MEDIA_INSN_BLINK, SH64_MEDIA_SFMT_BLINK }, | |
65 | { SH_INSN_BNE, SH64_MEDIA_INSN_BNE, SH64_MEDIA_SFMT_BEQ }, | |
66 | { SH_INSN_BNEI, SH64_MEDIA_INSN_BNEI, SH64_MEDIA_SFMT_BEQI }, | |
67 | { SH_INSN_BRK, SH64_MEDIA_INSN_BRK, SH64_MEDIA_SFMT_BRK }, | |
68 | { SH_INSN_BYTEREV, SH64_MEDIA_INSN_BYTEREV, SH64_MEDIA_SFMT_BYTEREV }, | |
69 | { SH_INSN_CMPEQ, SH64_MEDIA_INSN_CMPEQ, SH64_MEDIA_SFMT_ADD }, | |
70 | { SH_INSN_CMPGT, SH64_MEDIA_INSN_CMPGT, SH64_MEDIA_SFMT_ADD }, | |
71 | { SH_INSN_CMPGTU, SH64_MEDIA_INSN_CMPGTU, SH64_MEDIA_SFMT_ADD }, | |
72 | { SH_INSN_CMVEQ, SH64_MEDIA_INSN_CMVEQ, SH64_MEDIA_SFMT_CMVEQ }, | |
73 | { SH_INSN_CMVNE, SH64_MEDIA_INSN_CMVNE, SH64_MEDIA_SFMT_CMVEQ }, | |
74 | { SH_INSN_FABSD, SH64_MEDIA_INSN_FABSD, SH64_MEDIA_SFMT_FABSD }, | |
75 | { SH_INSN_FABSS, SH64_MEDIA_INSN_FABSS, SH64_MEDIA_SFMT_FABSS }, | |
76 | { SH_INSN_FADDD, SH64_MEDIA_INSN_FADDD, SH64_MEDIA_SFMT_FADDD }, | |
77 | { SH_INSN_FADDS, SH64_MEDIA_INSN_FADDS, SH64_MEDIA_SFMT_FADDS }, | |
78 | { SH_INSN_FCMPEQD, SH64_MEDIA_INSN_FCMPEQD, SH64_MEDIA_SFMT_FCMPEQD }, | |
79 | { SH_INSN_FCMPEQS, SH64_MEDIA_INSN_FCMPEQS, SH64_MEDIA_SFMT_FCMPEQS }, | |
80 | { SH_INSN_FCMPGED, SH64_MEDIA_INSN_FCMPGED, SH64_MEDIA_SFMT_FCMPEQD }, | |
81 | { SH_INSN_FCMPGES, SH64_MEDIA_INSN_FCMPGES, SH64_MEDIA_SFMT_FCMPEQS }, | |
82 | { SH_INSN_FCMPGTD, SH64_MEDIA_INSN_FCMPGTD, SH64_MEDIA_SFMT_FCMPEQD }, | |
83 | { SH_INSN_FCMPGTS, SH64_MEDIA_INSN_FCMPGTS, SH64_MEDIA_SFMT_FCMPEQS }, | |
84 | { SH_INSN_FCMPUND, SH64_MEDIA_INSN_FCMPUND, SH64_MEDIA_SFMT_FCMPEQD }, | |
85 | { SH_INSN_FCMPUNS, SH64_MEDIA_INSN_FCMPUNS, SH64_MEDIA_SFMT_FCMPEQS }, | |
86 | { SH_INSN_FCNVDS, SH64_MEDIA_INSN_FCNVDS, SH64_MEDIA_SFMT_FCNVDS }, | |
87 | { SH_INSN_FCNVSD, SH64_MEDIA_INSN_FCNVSD, SH64_MEDIA_SFMT_FCNVSD }, | |
88 | { SH_INSN_FDIVD, SH64_MEDIA_INSN_FDIVD, SH64_MEDIA_SFMT_FADDD }, | |
89 | { SH_INSN_FDIVS, SH64_MEDIA_INSN_FDIVS, SH64_MEDIA_SFMT_FADDS }, | |
90 | { SH_INSN_FGETSCR, SH64_MEDIA_INSN_FGETSCR, SH64_MEDIA_SFMT_ALLOCO }, | |
91 | { SH_INSN_FIPRS, SH64_MEDIA_INSN_FIPRS, SH64_MEDIA_SFMT_FIPRS }, | |
92 | { SH_INSN_FLDD, SH64_MEDIA_INSN_FLDD, SH64_MEDIA_SFMT_FLDD }, | |
93 | { SH_INSN_FLDP, SH64_MEDIA_INSN_FLDP, SH64_MEDIA_SFMT_FLDP }, | |
94 | { SH_INSN_FLDS, SH64_MEDIA_INSN_FLDS, SH64_MEDIA_SFMT_FLDS }, | |
95 | { SH_INSN_FLDXD, SH64_MEDIA_INSN_FLDXD, SH64_MEDIA_SFMT_FLDXD }, | |
96 | { SH_INSN_FLDXP, SH64_MEDIA_INSN_FLDXP, SH64_MEDIA_SFMT_FLDXP }, | |
97 | { SH_INSN_FLDXS, SH64_MEDIA_INSN_FLDXS, SH64_MEDIA_SFMT_FLDXS }, | |
98 | { SH_INSN_FLOATLD, SH64_MEDIA_INSN_FLOATLD, SH64_MEDIA_SFMT_FCNVSD }, | |
99 | { SH_INSN_FLOATLS, SH64_MEDIA_INSN_FLOATLS, SH64_MEDIA_SFMT_FABSS }, | |
100 | { SH_INSN_FLOATQD, SH64_MEDIA_INSN_FLOATQD, SH64_MEDIA_SFMT_FABSD }, | |
101 | { SH_INSN_FLOATQS, SH64_MEDIA_INSN_FLOATQS, SH64_MEDIA_SFMT_FCNVDS }, | |
102 | { SH_INSN_FMACS, SH64_MEDIA_INSN_FMACS, SH64_MEDIA_SFMT_FMACS }, | |
103 | { SH_INSN_FMOVD, SH64_MEDIA_INSN_FMOVD, SH64_MEDIA_SFMT_FABSD }, | |
104 | { SH_INSN_FMOVDQ, SH64_MEDIA_INSN_FMOVDQ, SH64_MEDIA_SFMT_FMOVDQ }, | |
105 | { SH_INSN_FMOVLS, SH64_MEDIA_INSN_FMOVLS, SH64_MEDIA_SFMT_FMOVLS }, | |
106 | { SH_INSN_FMOVQD, SH64_MEDIA_INSN_FMOVQD, SH64_MEDIA_SFMT_FMOVQD }, | |
107 | { SH_INSN_FMOVS, SH64_MEDIA_INSN_FMOVS, SH64_MEDIA_SFMT_FABSS }, | |
108 | { SH_INSN_FMOVSL, SH64_MEDIA_INSN_FMOVSL, SH64_MEDIA_SFMT_FMOVSL }, | |
109 | { SH_INSN_FMULD, SH64_MEDIA_INSN_FMULD, SH64_MEDIA_SFMT_FADDD }, | |
110 | { SH_INSN_FMULS, SH64_MEDIA_INSN_FMULS, SH64_MEDIA_SFMT_FADDS }, | |
111 | { SH_INSN_FNEGD, SH64_MEDIA_INSN_FNEGD, SH64_MEDIA_SFMT_FABSD }, | |
112 | { SH_INSN_FNEGS, SH64_MEDIA_INSN_FNEGS, SH64_MEDIA_SFMT_FABSS }, | |
113 | { SH_INSN_FPUTSCR, SH64_MEDIA_INSN_FPUTSCR, SH64_MEDIA_SFMT_ALLOCO }, | |
114 | { SH_INSN_FSQRTD, SH64_MEDIA_INSN_FSQRTD, SH64_MEDIA_SFMT_FABSD }, | |
115 | { SH_INSN_FSQRTS, SH64_MEDIA_INSN_FSQRTS, SH64_MEDIA_SFMT_FABSS }, | |
116 | { SH_INSN_FSTD, SH64_MEDIA_INSN_FSTD, SH64_MEDIA_SFMT_FSTD }, | |
117 | { SH_INSN_FSTP, SH64_MEDIA_INSN_FSTP, SH64_MEDIA_SFMT_FSTP }, | |
118 | { SH_INSN_FSTS, SH64_MEDIA_INSN_FSTS, SH64_MEDIA_SFMT_FSTS }, | |
119 | { SH_INSN_FSTXD, SH64_MEDIA_INSN_FSTXD, SH64_MEDIA_SFMT_FSTXD }, | |
120 | { SH_INSN_FSTXP, SH64_MEDIA_INSN_FSTXP, SH64_MEDIA_SFMT_FSTXP }, | |
121 | { SH_INSN_FSTXS, SH64_MEDIA_INSN_FSTXS, SH64_MEDIA_SFMT_FSTXS }, | |
122 | { SH_INSN_FSUBD, SH64_MEDIA_INSN_FSUBD, SH64_MEDIA_SFMT_FADDD }, | |
123 | { SH_INSN_FSUBS, SH64_MEDIA_INSN_FSUBS, SH64_MEDIA_SFMT_FADDS }, | |
124 | { SH_INSN_FTRCDL, SH64_MEDIA_INSN_FTRCDL, SH64_MEDIA_SFMT_FCNVDS }, | |
125 | { SH_INSN_FTRCSL, SH64_MEDIA_INSN_FTRCSL, SH64_MEDIA_SFMT_FABSS }, | |
126 | { SH_INSN_FTRCDQ, SH64_MEDIA_INSN_FTRCDQ, SH64_MEDIA_SFMT_FABSD }, | |
127 | { SH_INSN_FTRCSQ, SH64_MEDIA_INSN_FTRCSQ, SH64_MEDIA_SFMT_FCNVSD }, | |
128 | { SH_INSN_FTRVS, SH64_MEDIA_INSN_FTRVS, SH64_MEDIA_SFMT_FTRVS }, | |
129 | { SH_INSN_GETCFG, SH64_MEDIA_INSN_GETCFG, SH64_MEDIA_SFMT_ALLOCO }, | |
130 | { SH_INSN_GETCON, SH64_MEDIA_INSN_GETCON, SH64_MEDIA_SFMT_GETCON }, | |
131 | { SH_INSN_GETTR, SH64_MEDIA_INSN_GETTR, SH64_MEDIA_SFMT_GETTR }, | |
132 | { SH_INSN_ICBI, SH64_MEDIA_INSN_ICBI, SH64_MEDIA_SFMT_ALLOCO }, | |
133 | { SH_INSN_LDB, SH64_MEDIA_INSN_LDB, SH64_MEDIA_SFMT_LDB }, | |
134 | { SH_INSN_LDL, SH64_MEDIA_INSN_LDL, SH64_MEDIA_SFMT_LDL }, | |
135 | { SH_INSN_LDQ, SH64_MEDIA_INSN_LDQ, SH64_MEDIA_SFMT_LDQ }, | |
136 | { SH_INSN_LDUB, SH64_MEDIA_INSN_LDUB, SH64_MEDIA_SFMT_LDB }, | |
137 | { SH_INSN_LDUW, SH64_MEDIA_INSN_LDUW, SH64_MEDIA_SFMT_LDUW }, | |
138 | { SH_INSN_LDW, SH64_MEDIA_INSN_LDW, SH64_MEDIA_SFMT_LDUW }, | |
139 | { SH_INSN_LDHIL, SH64_MEDIA_INSN_LDHIL, SH64_MEDIA_SFMT_ALLOCO }, | |
140 | { SH_INSN_LDHIQ, SH64_MEDIA_INSN_LDHIQ, SH64_MEDIA_SFMT_ALLOCO }, | |
141 | { SH_INSN_LDLOL, SH64_MEDIA_INSN_LDLOL, SH64_MEDIA_SFMT_ALLOCO }, | |
142 | { SH_INSN_LDLOQ, SH64_MEDIA_INSN_LDLOQ, SH64_MEDIA_SFMT_ALLOCO }, | |
143 | { SH_INSN_LDXB, SH64_MEDIA_INSN_LDXB, SH64_MEDIA_SFMT_LDXB }, | |
144 | { SH_INSN_LDXL, SH64_MEDIA_INSN_LDXL, SH64_MEDIA_SFMT_LDXB }, | |
145 | { SH_INSN_LDXQ, SH64_MEDIA_INSN_LDXQ, SH64_MEDIA_SFMT_LDXB }, | |
146 | { SH_INSN_LDXUB, SH64_MEDIA_INSN_LDXUB, SH64_MEDIA_SFMT_LDXB }, | |
147 | { SH_INSN_LDXUW, SH64_MEDIA_INSN_LDXUW, SH64_MEDIA_SFMT_LDXB }, | |
148 | { SH_INSN_LDXW, SH64_MEDIA_INSN_LDXW, SH64_MEDIA_SFMT_LDXB }, | |
149 | { SH_INSN_MABSL, SH64_MEDIA_INSN_MABSL, SH64_MEDIA_SFMT_BYTEREV }, | |
150 | { SH_INSN_MABSW, SH64_MEDIA_INSN_MABSW, SH64_MEDIA_SFMT_BYTEREV }, | |
151 | { SH_INSN_MADDL, SH64_MEDIA_INSN_MADDL, SH64_MEDIA_SFMT_ADD }, | |
152 | { SH_INSN_MADDW, SH64_MEDIA_INSN_MADDW, SH64_MEDIA_SFMT_ADD }, | |
153 | { SH_INSN_MADDSL, SH64_MEDIA_INSN_MADDSL, SH64_MEDIA_SFMT_ADD }, | |
154 | { SH_INSN_MADDSUB, SH64_MEDIA_INSN_MADDSUB, SH64_MEDIA_SFMT_ADD }, | |
155 | { SH_INSN_MADDSW, SH64_MEDIA_INSN_MADDSW, SH64_MEDIA_SFMT_ADD }, | |
156 | { SH_INSN_MCMPEQB, SH64_MEDIA_INSN_MCMPEQB, SH64_MEDIA_SFMT_ADD }, | |
157 | { SH_INSN_MCMPEQL, SH64_MEDIA_INSN_MCMPEQL, SH64_MEDIA_SFMT_ADD }, | |
158 | { SH_INSN_MCMPEQW, SH64_MEDIA_INSN_MCMPEQW, SH64_MEDIA_SFMT_ADD }, | |
159 | { SH_INSN_MCMPGTL, SH64_MEDIA_INSN_MCMPGTL, SH64_MEDIA_SFMT_ADD }, | |
160 | { SH_INSN_MCMPGTUB, SH64_MEDIA_INSN_MCMPGTUB, SH64_MEDIA_SFMT_ADD }, | |
161 | { SH_INSN_MCMPGTW, SH64_MEDIA_INSN_MCMPGTW, SH64_MEDIA_SFMT_ADD }, | |
162 | { SH_INSN_MCMV, SH64_MEDIA_INSN_MCMV, SH64_MEDIA_SFMT_MCMV }, | |
163 | { SH_INSN_MCNVSLW, SH64_MEDIA_INSN_MCNVSLW, SH64_MEDIA_SFMT_ADD }, | |
164 | { SH_INSN_MCNVSWB, SH64_MEDIA_INSN_MCNVSWB, SH64_MEDIA_SFMT_ADD }, | |
165 | { SH_INSN_MCNVSWUB, SH64_MEDIA_INSN_MCNVSWUB, SH64_MEDIA_SFMT_ADD }, | |
166 | { SH_INSN_MEXTR1, SH64_MEDIA_INSN_MEXTR1, SH64_MEDIA_SFMT_ADD }, | |
167 | { SH_INSN_MEXTR2, SH64_MEDIA_INSN_MEXTR2, SH64_MEDIA_SFMT_ADD }, | |
168 | { SH_INSN_MEXTR3, SH64_MEDIA_INSN_MEXTR3, SH64_MEDIA_SFMT_ADD }, | |
169 | { SH_INSN_MEXTR4, SH64_MEDIA_INSN_MEXTR4, SH64_MEDIA_SFMT_ADD }, | |
170 | { SH_INSN_MEXTR5, SH64_MEDIA_INSN_MEXTR5, SH64_MEDIA_SFMT_ADD }, | |
171 | { SH_INSN_MEXTR6, SH64_MEDIA_INSN_MEXTR6, SH64_MEDIA_SFMT_ADD }, | |
172 | { SH_INSN_MEXTR7, SH64_MEDIA_INSN_MEXTR7, SH64_MEDIA_SFMT_ADD }, | |
173 | { SH_INSN_MMACFXWL, SH64_MEDIA_INSN_MMACFXWL, SH64_MEDIA_SFMT_MCMV }, | |
174 | { SH_INSN_MMACNFX_WL, SH64_MEDIA_INSN_MMACNFX_WL, SH64_MEDIA_SFMT_MCMV }, | |
175 | { SH_INSN_MMULL, SH64_MEDIA_INSN_MMULL, SH64_MEDIA_SFMT_ADD }, | |
176 | { SH_INSN_MMULW, SH64_MEDIA_INSN_MMULW, SH64_MEDIA_SFMT_ADD }, | |
177 | { SH_INSN_MMULFXL, SH64_MEDIA_INSN_MMULFXL, SH64_MEDIA_SFMT_ADD }, | |
178 | { SH_INSN_MMULFXW, SH64_MEDIA_INSN_MMULFXW, SH64_MEDIA_SFMT_ADD }, | |
179 | { SH_INSN_MMULFXRPW, SH64_MEDIA_INSN_MMULFXRPW, SH64_MEDIA_SFMT_ADD }, | |
180 | { SH_INSN_MMULHIWL, SH64_MEDIA_INSN_MMULHIWL, SH64_MEDIA_SFMT_ADD }, | |
181 | { SH_INSN_MMULLOWL, SH64_MEDIA_INSN_MMULLOWL, SH64_MEDIA_SFMT_ADD }, | |
182 | { SH_INSN_MMULSUMWQ, SH64_MEDIA_INSN_MMULSUMWQ, SH64_MEDIA_SFMT_MCMV }, | |
183 | { SH_INSN_MOVI, SH64_MEDIA_INSN_MOVI, SH64_MEDIA_SFMT_MOVI }, | |
184 | { SH_INSN_MPERMW, SH64_MEDIA_INSN_MPERMW, SH64_MEDIA_SFMT_MPERMW }, | |
185 | { SH_INSN_MSADUBQ, SH64_MEDIA_INSN_MSADUBQ, SH64_MEDIA_SFMT_MCMV }, | |
186 | { SH_INSN_MSHALDSL, SH64_MEDIA_INSN_MSHALDSL, SH64_MEDIA_SFMT_ADD }, | |
187 | { SH_INSN_MSHALDSW, SH64_MEDIA_INSN_MSHALDSW, SH64_MEDIA_SFMT_ADD }, | |
188 | { SH_INSN_MSHARDL, SH64_MEDIA_INSN_MSHARDL, SH64_MEDIA_SFMT_ADD }, | |
189 | { SH_INSN_MSHARDW, SH64_MEDIA_INSN_MSHARDW, SH64_MEDIA_SFMT_ADD }, | |
190 | { SH_INSN_MSHARDSQ, SH64_MEDIA_INSN_MSHARDSQ, SH64_MEDIA_SFMT_ADD }, | |
191 | { SH_INSN_MSHFHIB, SH64_MEDIA_INSN_MSHFHIB, SH64_MEDIA_SFMT_ADD }, | |
192 | { SH_INSN_MSHFHIL, SH64_MEDIA_INSN_MSHFHIL, SH64_MEDIA_SFMT_ADD }, | |
193 | { SH_INSN_MSHFHIW, SH64_MEDIA_INSN_MSHFHIW, SH64_MEDIA_SFMT_ADD }, | |
194 | { SH_INSN_MSHFLOB, SH64_MEDIA_INSN_MSHFLOB, SH64_MEDIA_SFMT_ADD }, | |
195 | { SH_INSN_MSHFLOL, SH64_MEDIA_INSN_MSHFLOL, SH64_MEDIA_SFMT_ADD }, | |
196 | { SH_INSN_MSHFLOW, SH64_MEDIA_INSN_MSHFLOW, SH64_MEDIA_SFMT_ADD }, | |
197 | { SH_INSN_MSHLLDL, SH64_MEDIA_INSN_MSHLLDL, SH64_MEDIA_SFMT_ADD }, | |
198 | { SH_INSN_MSHLLDW, SH64_MEDIA_INSN_MSHLLDW, SH64_MEDIA_SFMT_ADD }, | |
199 | { SH_INSN_MSHLRDL, SH64_MEDIA_INSN_MSHLRDL, SH64_MEDIA_SFMT_ADD }, | |
200 | { SH_INSN_MSHLRDW, SH64_MEDIA_INSN_MSHLRDW, SH64_MEDIA_SFMT_ADD }, | |
201 | { SH_INSN_MSUBL, SH64_MEDIA_INSN_MSUBL, SH64_MEDIA_SFMT_ADD }, | |
202 | { SH_INSN_MSUBW, SH64_MEDIA_INSN_MSUBW, SH64_MEDIA_SFMT_ADD }, | |
203 | { SH_INSN_MSUBSL, SH64_MEDIA_INSN_MSUBSL, SH64_MEDIA_SFMT_ADD }, | |
204 | { SH_INSN_MSUBSUB, SH64_MEDIA_INSN_MSUBSUB, SH64_MEDIA_SFMT_ADD }, | |
205 | { SH_INSN_MSUBSW, SH64_MEDIA_INSN_MSUBSW, SH64_MEDIA_SFMT_ADD }, | |
206 | { SH_INSN_MULSL, SH64_MEDIA_INSN_MULSL, SH64_MEDIA_SFMT_ADD }, | |
207 | { SH_INSN_MULUL, SH64_MEDIA_INSN_MULUL, SH64_MEDIA_SFMT_ADD }, | |
208 | { SH_INSN_NOP, SH64_MEDIA_INSN_NOP, SH64_MEDIA_SFMT_ALLOCO }, | |
209 | { SH_INSN_NSB, SH64_MEDIA_INSN_NSB, SH64_MEDIA_SFMT_BYTEREV }, | |
210 | { SH_INSN_OCBI, SH64_MEDIA_INSN_OCBI, SH64_MEDIA_SFMT_ALLOCO }, | |
211 | { SH_INSN_OCBP, SH64_MEDIA_INSN_OCBP, SH64_MEDIA_SFMT_ALLOCO }, | |
212 | { SH_INSN_OCBWB, SH64_MEDIA_INSN_OCBWB, SH64_MEDIA_SFMT_ALLOCO }, | |
213 | { SH_INSN_OR, SH64_MEDIA_INSN_OR, SH64_MEDIA_SFMT_ADD }, | |
214 | { SH_INSN_ORI, SH64_MEDIA_INSN_ORI, SH64_MEDIA_SFMT_ORI }, | |
215 | { SH_INSN_PREFI, SH64_MEDIA_INSN_PREFI, SH64_MEDIA_SFMT_ALLOCO }, | |
216 | { SH_INSN_PTA, SH64_MEDIA_INSN_PTA, SH64_MEDIA_SFMT_PTA }, | |
217 | { SH_INSN_PTABS, SH64_MEDIA_INSN_PTABS, SH64_MEDIA_SFMT_PTABS }, | |
218 | { SH_INSN_PTB, SH64_MEDIA_INSN_PTB, SH64_MEDIA_SFMT_PTA }, | |
219 | { SH_INSN_PTREL, SH64_MEDIA_INSN_PTREL, SH64_MEDIA_SFMT_PTREL }, | |
220 | { SH_INSN_PUTCFG, SH64_MEDIA_INSN_PUTCFG, SH64_MEDIA_SFMT_ALLOCO }, | |
221 | { SH_INSN_PUTCON, SH64_MEDIA_INSN_PUTCON, SH64_MEDIA_SFMT_PUTCON }, | |
222 | { SH_INSN_RTE, SH64_MEDIA_INSN_RTE, SH64_MEDIA_SFMT_ALLOCO }, | |
223 | { SH_INSN_SHARD, SH64_MEDIA_INSN_SHARD, SH64_MEDIA_SFMT_ADD }, | |
224 | { SH_INSN_SHARDL, SH64_MEDIA_INSN_SHARDL, SH64_MEDIA_SFMT_ADD }, | |
225 | { SH_INSN_SHARI, SH64_MEDIA_INSN_SHARI, SH64_MEDIA_SFMT_SHARI }, | |
226 | { SH_INSN_SHARIL, SH64_MEDIA_INSN_SHARIL, SH64_MEDIA_SFMT_SHARIL }, | |
227 | { SH_INSN_SHLLD, SH64_MEDIA_INSN_SHLLD, SH64_MEDIA_SFMT_ADD }, | |
228 | { SH_INSN_SHLLDL, SH64_MEDIA_INSN_SHLLDL, SH64_MEDIA_SFMT_ADD }, | |
229 | { SH_INSN_SHLLI, SH64_MEDIA_INSN_SHLLI, SH64_MEDIA_SFMT_SHARI }, | |
230 | { SH_INSN_SHLLIL, SH64_MEDIA_INSN_SHLLIL, SH64_MEDIA_SFMT_SHARIL }, | |
231 | { SH_INSN_SHLRD, SH64_MEDIA_INSN_SHLRD, SH64_MEDIA_SFMT_ADD }, | |
232 | { SH_INSN_SHLRDL, SH64_MEDIA_INSN_SHLRDL, SH64_MEDIA_SFMT_ADD }, | |
233 | { SH_INSN_SHLRI, SH64_MEDIA_INSN_SHLRI, SH64_MEDIA_SFMT_SHARI }, | |
234 | { SH_INSN_SHLRIL, SH64_MEDIA_INSN_SHLRIL, SH64_MEDIA_SFMT_SHARIL }, | |
235 | { SH_INSN_SHORI, SH64_MEDIA_INSN_SHORI, SH64_MEDIA_SFMT_SHORI }, | |
236 | { SH_INSN_SLEEP, SH64_MEDIA_INSN_SLEEP, SH64_MEDIA_SFMT_ALLOCO }, | |
237 | { SH_INSN_STB, SH64_MEDIA_INSN_STB, SH64_MEDIA_SFMT_STB }, | |
238 | { SH_INSN_STL, SH64_MEDIA_INSN_STL, SH64_MEDIA_SFMT_STL }, | |
239 | { SH_INSN_STQ, SH64_MEDIA_INSN_STQ, SH64_MEDIA_SFMT_STQ }, | |
240 | { SH_INSN_STW, SH64_MEDIA_INSN_STW, SH64_MEDIA_SFMT_STW }, | |
241 | { SH_INSN_STHIL, SH64_MEDIA_INSN_STHIL, SH64_MEDIA_SFMT_STHIL }, | |
242 | { SH_INSN_STHIQ, SH64_MEDIA_INSN_STHIQ, SH64_MEDIA_SFMT_STHIL }, | |
243 | { SH_INSN_STLOL, SH64_MEDIA_INSN_STLOL, SH64_MEDIA_SFMT_ALLOCO }, | |
244 | { SH_INSN_STLOQ, SH64_MEDIA_INSN_STLOQ, SH64_MEDIA_SFMT_ALLOCO }, | |
245 | { SH_INSN_STXB, SH64_MEDIA_INSN_STXB, SH64_MEDIA_SFMT_STXB }, | |
246 | { SH_INSN_STXL, SH64_MEDIA_INSN_STXL, SH64_MEDIA_SFMT_STXB }, | |
247 | { SH_INSN_STXQ, SH64_MEDIA_INSN_STXQ, SH64_MEDIA_SFMT_STXB }, | |
248 | { SH_INSN_STXW, SH64_MEDIA_INSN_STXW, SH64_MEDIA_SFMT_STXB }, | |
249 | { SH_INSN_SUB, SH64_MEDIA_INSN_SUB, SH64_MEDIA_SFMT_ADD }, | |
250 | { SH_INSN_SUBL, SH64_MEDIA_INSN_SUBL, SH64_MEDIA_SFMT_ADD }, | |
251 | { SH_INSN_SWAPQ, SH64_MEDIA_INSN_SWAPQ, SH64_MEDIA_SFMT_SWAPQ }, | |
252 | { SH_INSN_SYNCI, SH64_MEDIA_INSN_SYNCI, SH64_MEDIA_SFMT_ALLOCO }, | |
253 | { SH_INSN_SYNCO, SH64_MEDIA_INSN_SYNCO, SH64_MEDIA_SFMT_ALLOCO }, | |
254 | { SH_INSN_TRAPA, SH64_MEDIA_INSN_TRAPA, SH64_MEDIA_SFMT_TRAPA }, | |
255 | { SH_INSN_XOR, SH64_MEDIA_INSN_XOR, SH64_MEDIA_SFMT_ADD }, | |
256 | { SH_INSN_XORI, SH64_MEDIA_INSN_XORI, SH64_MEDIA_SFMT_XORI }, | |
257 | }; | |
258 | ||
259 | static const struct insn_sem sh64_media_insn_sem_invalid = { | |
260 | VIRTUAL_INSN_X_INVALID, SH64_MEDIA_INSN_X_INVALID, SH64_MEDIA_SFMT_EMPTY | |
261 | }; | |
262 | ||
263 | /* Initialize an IDESC from the compile-time computable parts. */ | |
264 | ||
265 | static INLINE void | |
266 | init_idesc (SIM_CPU *cpu, IDESC *id, const struct insn_sem *t) | |
267 | { | |
268 | const CGEN_INSN *insn_table = CGEN_CPU_INSN_TABLE (CPU_CPU_DESC (cpu))->init_entries; | |
269 | ||
270 | id->num = t->index; | |
271 | id->sfmt = t->sfmt; | |
272 | if ((int) t->type <= 0) | |
273 | id->idata = & cgen_virtual_insn_table[- (int) t->type]; | |
274 | else | |
275 | id->idata = & insn_table[t->type]; | |
276 | id->attrs = CGEN_INSN_ATTRS (id->idata); | |
277 | /* Oh my god, a magic number. */ | |
278 | id->length = CGEN_INSN_BITSIZE (id->idata) / 8; | |
279 | ||
280 | #if WITH_PROFILE_MODEL_P | |
281 | id->timing = & MODEL_TIMING (CPU_MODEL (cpu)) [t->index]; | |
282 | { | |
283 | SIM_DESC sd = CPU_STATE (cpu); | |
284 | SIM_ASSERT (t->index == id->timing->num); | |
285 | } | |
286 | #endif | |
287 | ||
288 | /* Semantic pointers are initialized elsewhere. */ | |
289 | } | |
290 | ||
291 | /* Initialize the instruction descriptor table. */ | |
292 | ||
293 | void | |
294 | sh64_media_init_idesc_table (SIM_CPU *cpu) | |
295 | { | |
296 | IDESC *id,*tabend; | |
297 | const struct insn_sem *t,*tend; | |
298 | int tabsize = SH64_MEDIA_INSN_MAX; | |
299 | IDESC *table = sh64_media_insn_data; | |
300 | ||
301 | memset (table, 0, tabsize * sizeof (IDESC)); | |
302 | ||
303 | /* First set all entries to the `invalid insn'. */ | |
304 | t = & sh64_media_insn_sem_invalid; | |
305 | for (id = table, tabend = table + tabsize; id < tabend; ++id) | |
306 | init_idesc (cpu, id, t); | |
307 | ||
308 | /* Now fill in the values for the chosen cpu. */ | |
309 | for (t = sh64_media_insn_sem, tend = t + sizeof (sh64_media_insn_sem) / sizeof (*t); | |
310 | t != tend; ++t) | |
311 | { | |
312 | init_idesc (cpu, & table[t->index], t); | |
313 | } | |
314 | ||
315 | /* Link the IDESC table into the cpu. */ | |
316 | CPU_IDESC (cpu) = table; | |
317 | } | |
318 | ||
319 | /* Given an instruction, return a pointer to its IDESC entry. */ | |
320 | ||
321 | const IDESC * | |
322 | sh64_media_decode (SIM_CPU *current_cpu, IADDR pc, | |
323 | CGEN_INSN_INT base_insn, CGEN_INSN_INT entire_insn, | |
324 | ARGBUF *abuf) | |
325 | { | |
326 | /* Result of decoder. */ | |
327 | SH64_MEDIA_INSN_TYPE itype; | |
328 | ||
329 | { | |
330 | CGEN_INSN_INT insn = base_insn; | |
331 | ||
332 | { | |
333 | unsigned int val = (((insn >> 22) & (63 << 4)) | ((insn >> 16) & (15 << 0))); | |
334 | switch (val) | |
335 | { | |
336 | case 1 : itype = SH64_MEDIA_INSN_CMPEQ; goto extract_sfmt_add; case 3 : itype = SH64_MEDIA_INSN_CMPGT; goto extract_sfmt_add; case 7 : itype = SH64_MEDIA_INSN_CMPGTU; goto extract_sfmt_add; case 8 : itype = SH64_MEDIA_INSN_ADDL; goto extract_sfmt_add; case 9 : itype = SH64_MEDIA_INSN_ADD; goto extract_sfmt_add; case 10 : itype = SH64_MEDIA_INSN_SUBL; goto extract_sfmt_add; case 11 : itype = SH64_MEDIA_INSN_SUB; goto extract_sfmt_add; case 12 : itype = SH64_MEDIA_INSN_ADDZL; goto extract_sfmt_add; case 13 : itype = SH64_MEDIA_INSN_NSB; goto extract_sfmt_byterev; case 14 : itype = SH64_MEDIA_INSN_MULUL; goto extract_sfmt_add; case 15 : itype = SH64_MEDIA_INSN_BYTEREV; goto extract_sfmt_byterev; case 16 : itype = SH64_MEDIA_INSN_SHLLDL; goto extract_sfmt_add; case 17 : itype = SH64_MEDIA_INSN_SHLLD; goto extract_sfmt_add; case 18 : itype = SH64_MEDIA_INSN_SHLRDL; goto extract_sfmt_add; case 19 : itype = SH64_MEDIA_INSN_SHLRD; goto extract_sfmt_add; case 22 : itype = SH64_MEDIA_INSN_SHARDL; goto extract_sfmt_add; case 23 : itype = SH64_MEDIA_INSN_SHARD; goto extract_sfmt_add; case 25 : itype = SH64_MEDIA_INSN_OR; goto extract_sfmt_add; case 27 : itype = SH64_MEDIA_INSN_AND; goto extract_sfmt_add; case 29 : itype = SH64_MEDIA_INSN_XOR; goto extract_sfmt_add; case 30 : itype = SH64_MEDIA_INSN_MULSL; goto extract_sfmt_add; case 31 : itype = SH64_MEDIA_INSN_ANDC; goto extract_sfmt_add; case 33 : itype = SH64_MEDIA_INSN_MADDW; goto extract_sfmt_add; case 34 : itype = SH64_MEDIA_INSN_MADDL; goto extract_sfmt_add; case 36 : itype = SH64_MEDIA_INSN_MADDSUB; goto extract_sfmt_add; case 37 : itype = SH64_MEDIA_INSN_MADDSW; goto extract_sfmt_add; case 38 : itype = SH64_MEDIA_INSN_MADDSL; goto extract_sfmt_add; case 41 : itype = SH64_MEDIA_INSN_MSUBW; goto extract_sfmt_add; case 42 : itype = SH64_MEDIA_INSN_MSUBL; goto extract_sfmt_add; case 44 : itype = SH64_MEDIA_INSN_MSUBSUB; goto extract_sfmt_add; case 45 : itype = SH64_MEDIA_INSN_MSUBSW; goto extract_sfmt_add; case 46 : itype = SH64_MEDIA_INSN_MSUBSL; goto extract_sfmt_add; case 49 : itype = SH64_MEDIA_INSN_MSHLLDW; goto extract_sfmt_add; case 50 : itype = SH64_MEDIA_INSN_MSHLLDL; goto extract_sfmt_add; case 53 : itype = SH64_MEDIA_INSN_MSHALDSW; goto extract_sfmt_add; case 54 : itype = SH64_MEDIA_INSN_MSHALDSL; goto extract_sfmt_add; case 57 : itype = SH64_MEDIA_INSN_MSHARDW; goto extract_sfmt_add; case 58 : itype = SH64_MEDIA_INSN_MSHARDL; goto extract_sfmt_add; case 59 : itype = SH64_MEDIA_INSN_MSHARDSQ; goto extract_sfmt_add; case 61 : itype = SH64_MEDIA_INSN_MSHLRDW; goto extract_sfmt_add; case 62 : itype = SH64_MEDIA_INSN_MSHLRDL; goto extract_sfmt_add; case 86 : itype = SH64_MEDIA_INSN_FIPRS; goto extract_sfmt_fiprs; case 94 : itype = SH64_MEDIA_INSN_FTRVS; goto extract_sfmt_ftrvs; case 96 : itype = SH64_MEDIA_INSN_FABSS; goto extract_sfmt_fabss; case 97 : itype = SH64_MEDIA_INSN_FABSD; goto extract_sfmt_fabsd; case 98 : itype = SH64_MEDIA_INSN_FNEGS; goto extract_sfmt_fabss; case 99 : itype = SH64_MEDIA_INSN_FNEGD; goto extract_sfmt_fabsd; case 112 : itype = SH64_MEDIA_INSN_FMOVLS; goto extract_sfmt_fmovls; case 113 : itype = SH64_MEDIA_INSN_FMOVQD; goto extract_sfmt_fmovqd; case 114 : itype = SH64_MEDIA_INSN_FGETSCR; goto extract_sfmt_alloco; case 120 : itype = SH64_MEDIA_INSN_FLDXS; goto extract_sfmt_fldxs; case 121 : itype = SH64_MEDIA_INSN_FLDXD; goto extract_sfmt_fldxd; case 125 : itype = SH64_MEDIA_INSN_FLDXP; goto extract_sfmt_fldxp; case 129 : itype = SH64_MEDIA_INSN_CMVEQ; goto extract_sfmt_cmveq; case 131 : itype = SH64_MEDIA_INSN_SWAPQ; goto extract_sfmt_swapq; case 133 : itype = SH64_MEDIA_INSN_CMVNE; goto extract_sfmt_cmveq; case 159 : itype = SH64_MEDIA_INSN_GETCON; goto extract_sfmt_getcon; case 160 : itype = SH64_MEDIA_INSN_MCMPEQB; goto extract_sfmt_add; case 161 : itype = SH64_MEDIA_INSN_MCMPEQW; goto extract_sfmt_add; case 162 : itype = SH64_MEDIA_INSN_MCMPEQL; goto extract_sfmt_add; case 164 : itype = SH64_MEDIA_INSN_MCMPGTUB; goto extract_sfmt_add; case 165 : itype = SH64_MEDIA_INSN_MCMPGTW; goto extract_sfmt_add; case 166 : itype = SH64_MEDIA_INSN_MCMPGTL; goto extract_sfmt_add; case 167 : itype = SH64_MEDIA_INSN_MEXTR1; goto extract_sfmt_add; case 169 : itype = SH64_MEDIA_INSN_MABSW; goto extract_sfmt_byterev; case 170 : itype = SH64_MEDIA_INSN_MABSL; goto extract_sfmt_byterev; case 171 : itype = SH64_MEDIA_INSN_MEXTR2; goto extract_sfmt_add; case 173 : itype = SH64_MEDIA_INSN_MPERMW; goto extract_sfmt_mpermw; case 175 : itype = SH64_MEDIA_INSN_MEXTR3; goto extract_sfmt_add; case 176 : itype = SH64_MEDIA_INSN_MSHFLOB; goto extract_sfmt_add; case 177 : itype = SH64_MEDIA_INSN_MSHFLOW; goto extract_sfmt_add; case 178 : itype = SH64_MEDIA_INSN_MSHFLOL; goto extract_sfmt_add; case 179 : itype = SH64_MEDIA_INSN_MEXTR4; goto extract_sfmt_add; case 180 : itype = SH64_MEDIA_INSN_MSHFHIB; goto extract_sfmt_add; case 181 : itype = SH64_MEDIA_INSN_MSHFHIW; goto extract_sfmt_add; case 182 : itype = SH64_MEDIA_INSN_MSHFHIL; goto extract_sfmt_add; case 183 : itype = SH64_MEDIA_INSN_MEXTR5; goto extract_sfmt_add; case 187 : itype = SH64_MEDIA_INSN_MEXTR6; goto extract_sfmt_add; case 191 : itype = SH64_MEDIA_INSN_MEXTR7; goto extract_sfmt_add; case 192 : itype = SH64_MEDIA_INSN_FMOVSL; goto extract_sfmt_fmovsl; case 193 : itype = SH64_MEDIA_INSN_FMOVDQ; goto extract_sfmt_fmovdq; case 194 : itype = SH64_MEDIA_INSN_FPUTSCR; goto extract_sfmt_alloco; case 200 : itype = SH64_MEDIA_INSN_FCMPEQS; goto extract_sfmt_fcmpeqs; case 201 : itype = SH64_MEDIA_INSN_FCMPEQD; goto extract_sfmt_fcmpeqd; case 202 : itype = SH64_MEDIA_INSN_FCMPUNS; goto extract_sfmt_fcmpeqs; case 203 : itype = SH64_MEDIA_INSN_FCMPUND; goto extract_sfmt_fcmpeqd; case 204 : itype = SH64_MEDIA_INSN_FCMPGTS; goto extract_sfmt_fcmpeqs; case 205 : itype = SH64_MEDIA_INSN_FCMPGTD; goto extract_sfmt_fcmpeqd; case 206 : itype = SH64_MEDIA_INSN_FCMPGES; goto extract_sfmt_fcmpeqs; case 207 : itype = SH64_MEDIA_INSN_FCMPGED; goto extract_sfmt_fcmpeqd; case 208 : itype = SH64_MEDIA_INSN_FADDS; goto extract_sfmt_fadds; case 209 : itype = SH64_MEDIA_INSN_FADDD; goto extract_sfmt_faddd; case 210 : itype = SH64_MEDIA_INSN_FSUBS; goto extract_sfmt_fadds; case 211 : itype = SH64_MEDIA_INSN_FSUBD; goto extract_sfmt_faddd; case 212 : itype = SH64_MEDIA_INSN_FDIVS; goto extract_sfmt_fadds; case 213 : itype = SH64_MEDIA_INSN_FDIVD; goto extract_sfmt_faddd; case 214 : itype = SH64_MEDIA_INSN_FMULS; goto extract_sfmt_fadds; case 215 : itype = SH64_MEDIA_INSN_FMULD; goto extract_sfmt_faddd; case 222 : itype = SH64_MEDIA_INSN_FMACS; goto extract_sfmt_fmacs; case 224 : itype = SH64_MEDIA_INSN_FMOVS; goto extract_sfmt_fabss; case 225 : itype = SH64_MEDIA_INSN_FMOVD; goto extract_sfmt_fabsd; case 228 : itype = SH64_MEDIA_INSN_FSQRTS; goto extract_sfmt_fabss; case 229 : itype = SH64_MEDIA_INSN_FSQRTD; goto extract_sfmt_fabsd; case 230 : itype = SH64_MEDIA_INSN_FCNVSD; goto extract_sfmt_fcnvsd; case 231 : itype = SH64_MEDIA_INSN_FCNVDS; goto extract_sfmt_fcnvds; case 232 : itype = SH64_MEDIA_INSN_FTRCSL; goto extract_sfmt_fabss; case 233 : itype = SH64_MEDIA_INSN_FTRCDQ; goto extract_sfmt_fabsd; case 234 : itype = SH64_MEDIA_INSN_FTRCSQ; goto extract_sfmt_fcnvsd; case 235 : itype = SH64_MEDIA_INSN_FTRCDL; goto extract_sfmt_fcnvds; case 236 : itype = SH64_MEDIA_INSN_FLOATLS; goto extract_sfmt_fabss; case 237 : itype = SH64_MEDIA_INSN_FLOATQD; goto extract_sfmt_fabsd; case 238 : itype = SH64_MEDIA_INSN_FLOATLD; goto extract_sfmt_fcnvsd; case 239 : itype = SH64_MEDIA_INSN_FLOATQS; goto extract_sfmt_fcnvds; case 248 : itype = SH64_MEDIA_INSN_FSTXS; goto extract_sfmt_fstxs; case 249 : itype = SH64_MEDIA_INSN_FSTXD; goto extract_sfmt_fstxd; case 253 : itype = SH64_MEDIA_INSN_FSTXP; goto extract_sfmt_fstxp; case 256 : itype = SH64_MEDIA_INSN_LDXB; goto extract_sfmt_ldxb; case 257 : itype = SH64_MEDIA_INSN_LDXW; goto extract_sfmt_ldxb; case 258 : itype = SH64_MEDIA_INSN_LDXL; goto extract_sfmt_ldxb; case 259 : itype = SH64_MEDIA_INSN_LDXQ; goto extract_sfmt_ldxb; case 260 : itype = SH64_MEDIA_INSN_LDXUB; goto extract_sfmt_ldxb; case 261 : itype = SH64_MEDIA_INSN_LDXUW; goto extract_sfmt_ldxb; case 273 : itype = SH64_MEDIA_INSN_BLINK; goto extract_sfmt_blink; case 277 : itype = SH64_MEDIA_INSN_GETTR; goto extract_sfmt_gettr; case 288 : itype = SH64_MEDIA_INSN_MSADUBQ; goto extract_sfmt_mcmv; case 289 : itype = SH64_MEDIA_INSN_MMACFXWL; goto extract_sfmt_mcmv; case 291 : itype = SH64_MEDIA_INSN_MCMV; goto extract_sfmt_mcmv; case 293 : itype = SH64_MEDIA_INSN_MMACNFX_WL; goto extract_sfmt_mcmv; case 297 : itype = SH64_MEDIA_INSN_MMULSUMWQ; goto extract_sfmt_mcmv; case 305 : itype = SH64_MEDIA_INSN_MMULW; goto extract_sfmt_add; case 306 : itype = SH64_MEDIA_INSN_MMULL; goto extract_sfmt_add; case 309 : itype = SH64_MEDIA_INSN_MMULFXW; goto extract_sfmt_add; case 310 : itype = SH64_MEDIA_INSN_MMULFXL; goto extract_sfmt_add; case 312 : itype = SH64_MEDIA_INSN_MCNVSWB; goto extract_sfmt_add; case 313 : itype = SH64_MEDIA_INSN_MMULFXRPW; goto extract_sfmt_add; case 314 : itype = SH64_MEDIA_INSN_MMULLOWL; goto extract_sfmt_add; case 316 : itype = SH64_MEDIA_INSN_MCNVSWUB; goto extract_sfmt_add; case 317 : itype = SH64_MEDIA_INSN_MCNVSLW; goto extract_sfmt_add; case 318 : itype = SH64_MEDIA_INSN_MMULHIWL; goto extract_sfmt_add; case 384 : itype = SH64_MEDIA_INSN_STXB; goto extract_sfmt_stxb; case 385 : itype = SH64_MEDIA_INSN_STXW; goto extract_sfmt_stxb; case 386 : itype = SH64_MEDIA_INSN_STXL; goto extract_sfmt_stxb; case 387 : itype = SH64_MEDIA_INSN_STXQ; goto extract_sfmt_stxb; case 401 : itype = SH64_MEDIA_INSN_BEQ; goto extract_sfmt_beq; case 403 : itype = SH64_MEDIA_INSN_BGE; goto extract_sfmt_beq; case 405 : itype = SH64_MEDIA_INSN_BNE; goto extract_sfmt_beq; case 407 : itype = SH64_MEDIA_INSN_BGT; goto extract_sfmt_beq; case 411 : itype = SH64_MEDIA_INSN_BGEU; goto extract_sfmt_beq; case 415 : itype = SH64_MEDIA_INSN_BGTU; goto extract_sfmt_beq; case 417 : itype = SH64_MEDIA_INSN_PTABS; goto extract_sfmt_ptabs; case 421 : itype = SH64_MEDIA_INSN_PTREL; goto extract_sfmt_ptrel; case 432 : itype = SH64_MEDIA_INSN_NOP; goto extract_sfmt_alloco; case 433 : itype = SH64_MEDIA_INSN_TRAPA; goto extract_sfmt_trapa; case 434 : itype = SH64_MEDIA_INSN_SYNCI; goto extract_sfmt_alloco; case 435 : itype = SH64_MEDIA_INSN_RTE; goto extract_sfmt_alloco; case 437 : itype = SH64_MEDIA_INSN_BRK; goto extract_sfmt_brk; case 438 : itype = SH64_MEDIA_INSN_SYNCO; goto extract_sfmt_alloco; case 439 : itype = SH64_MEDIA_INSN_SLEEP; goto extract_sfmt_alloco; case 447 : itype = SH64_MEDIA_INSN_PUTCON; goto extract_sfmt_putcon; case 512 : /* fall through */ | |
337 | case 513 : /* fall through */ | |
338 | case 514 : /* fall through */ | |
339 | case 515 : /* fall through */ | |
340 | case 516 : /* fall through */ | |
341 | case 517 : /* fall through */ | |
342 | case 518 : /* fall through */ | |
343 | case 519 : /* fall through */ | |
344 | case 520 : /* fall through */ | |
345 | case 521 : /* fall through */ | |
346 | case 522 : /* fall through */ | |
347 | case 523 : /* fall through */ | |
348 | case 524 : /* fall through */ | |
349 | case 525 : /* fall through */ | |
350 | case 526 : /* fall through */ | |
351 | case 527 : itype = SH64_MEDIA_INSN_LDB; goto extract_sfmt_ldb; case 528 : /* fall through */ | |
352 | case 529 : /* fall through */ | |
353 | case 530 : /* fall through */ | |
354 | case 531 : /* fall through */ | |
355 | case 532 : /* fall through */ | |
356 | case 533 : /* fall through */ | |
357 | case 534 : /* fall through */ | |
358 | case 535 : /* fall through */ | |
359 | case 536 : /* fall through */ | |
360 | case 537 : /* fall through */ | |
361 | case 538 : /* fall through */ | |
362 | case 539 : /* fall through */ | |
363 | case 540 : /* fall through */ | |
364 | case 541 : /* fall through */ | |
365 | case 542 : /* fall through */ | |
366 | case 543 : itype = SH64_MEDIA_INSN_LDW; goto extract_sfmt_lduw; case 544 : /* fall through */ | |
367 | case 545 : /* fall through */ | |
368 | case 546 : /* fall through */ | |
369 | case 547 : /* fall through */ | |
370 | case 548 : /* fall through */ | |
371 | case 549 : /* fall through */ | |
372 | case 550 : /* fall through */ | |
373 | case 551 : /* fall through */ | |
374 | case 552 : /* fall through */ | |
375 | case 553 : /* fall through */ | |
376 | case 554 : /* fall through */ | |
377 | case 555 : /* fall through */ | |
378 | case 556 : /* fall through */ | |
379 | case 557 : /* fall through */ | |
380 | case 558 : /* fall through */ | |
381 | case 559 : itype = SH64_MEDIA_INSN_LDL; goto extract_sfmt_ldl; case 560 : /* fall through */ | |
382 | case 561 : /* fall through */ | |
383 | case 562 : /* fall through */ | |
384 | case 563 : /* fall through */ | |
385 | case 564 : /* fall through */ | |
386 | case 565 : /* fall through */ | |
387 | case 566 : /* fall through */ | |
388 | case 567 : /* fall through */ | |
389 | case 568 : /* fall through */ | |
390 | case 569 : /* fall through */ | |
391 | case 570 : /* fall through */ | |
392 | case 571 : /* fall through */ | |
393 | case 572 : /* fall through */ | |
394 | case 573 : /* fall through */ | |
395 | case 574 : /* fall through */ | |
396 | case 575 : itype = SH64_MEDIA_INSN_LDQ; goto extract_sfmt_ldq; case 576 : /* fall through */ | |
397 | case 577 : /* fall through */ | |
398 | case 578 : /* fall through */ | |
399 | case 579 : /* fall through */ | |
400 | case 580 : /* fall through */ | |
401 | case 581 : /* fall through */ | |
402 | case 582 : /* fall through */ | |
403 | case 583 : /* fall through */ | |
404 | case 584 : /* fall through */ | |
405 | case 585 : /* fall through */ | |
406 | case 586 : /* fall through */ | |
407 | case 587 : /* fall through */ | |
408 | case 588 : /* fall through */ | |
409 | case 589 : /* fall through */ | |
410 | case 590 : /* fall through */ | |
411 | case 591 : itype = SH64_MEDIA_INSN_LDUB; goto extract_sfmt_ldb; case 592 : /* fall through */ | |
412 | case 593 : /* fall through */ | |
413 | case 594 : /* fall through */ | |
414 | case 595 : /* fall through */ | |
415 | case 596 : /* fall through */ | |
416 | case 597 : /* fall through */ | |
417 | case 598 : /* fall through */ | |
418 | case 599 : /* fall through */ | |
419 | case 600 : /* fall through */ | |
420 | case 601 : /* fall through */ | |
421 | case 602 : /* fall through */ | |
422 | case 603 : /* fall through */ | |
423 | case 604 : /* fall through */ | |
424 | case 605 : /* fall through */ | |
425 | case 606 : /* fall through */ | |
426 | case 607 : itype = SH64_MEDIA_INSN_FLDS; goto extract_sfmt_flds; case 608 : /* fall through */ | |
427 | case 609 : /* fall through */ | |
428 | case 610 : /* fall through */ | |
429 | case 611 : /* fall through */ | |
430 | case 612 : /* fall through */ | |
431 | case 613 : /* fall through */ | |
432 | case 614 : /* fall through */ | |
433 | case 615 : /* fall through */ | |
434 | case 616 : /* fall through */ | |
435 | case 617 : /* fall through */ | |
436 | case 618 : /* fall through */ | |
437 | case 619 : /* fall through */ | |
438 | case 620 : /* fall through */ | |
439 | case 621 : /* fall through */ | |
440 | case 622 : /* fall through */ | |
441 | case 623 : itype = SH64_MEDIA_INSN_FLDP; goto extract_sfmt_fldp; case 624 : /* fall through */ | |
442 | case 625 : /* fall through */ | |
443 | case 626 : /* fall through */ | |
444 | case 627 : /* fall through */ | |
445 | case 628 : /* fall through */ | |
446 | case 629 : /* fall through */ | |
447 | case 630 : /* fall through */ | |
448 | case 631 : /* fall through */ | |
449 | case 632 : /* fall through */ | |
450 | case 633 : /* fall through */ | |
451 | case 634 : /* fall through */ | |
452 | case 635 : /* fall through */ | |
453 | case 636 : /* fall through */ | |
454 | case 637 : /* fall through */ | |
455 | case 638 : /* fall through */ | |
456 | case 639 : itype = SH64_MEDIA_INSN_FLDD; goto extract_sfmt_fldd; case 640 : /* fall through */ | |
457 | case 641 : /* fall through */ | |
458 | case 642 : /* fall through */ | |
459 | case 643 : /* fall through */ | |
460 | case 644 : /* fall through */ | |
461 | case 645 : /* fall through */ | |
462 | case 646 : /* fall through */ | |
463 | case 647 : /* fall through */ | |
464 | case 648 : /* fall through */ | |
465 | case 649 : /* fall through */ | |
466 | case 650 : /* fall through */ | |
467 | case 651 : /* fall through */ | |
468 | case 652 : /* fall through */ | |
469 | case 653 : /* fall through */ | |
470 | case 654 : /* fall through */ | |
471 | case 655 : itype = SH64_MEDIA_INSN_STB; goto extract_sfmt_stb; case 656 : /* fall through */ | |
472 | case 657 : /* fall through */ | |
473 | case 658 : /* fall through */ | |
474 | case 659 : /* fall through */ | |
475 | case 660 : /* fall through */ | |
476 | case 661 : /* fall through */ | |
477 | case 662 : /* fall through */ | |
478 | case 663 : /* fall through */ | |
479 | case 664 : /* fall through */ | |
480 | case 665 : /* fall through */ | |
481 | case 666 : /* fall through */ | |
482 | case 667 : /* fall through */ | |
483 | case 668 : /* fall through */ | |
484 | case 669 : /* fall through */ | |
485 | case 670 : /* fall through */ | |
486 | case 671 : itype = SH64_MEDIA_INSN_STW; goto extract_sfmt_stw; case 672 : /* fall through */ | |
487 | case 673 : /* fall through */ | |
488 | case 674 : /* fall through */ | |
489 | case 675 : /* fall through */ | |
490 | case 676 : /* fall through */ | |
491 | case 677 : /* fall through */ | |
492 | case 678 : /* fall through */ | |
493 | case 679 : /* fall through */ | |
494 | case 680 : /* fall through */ | |
495 | case 681 : /* fall through */ | |
496 | case 682 : /* fall through */ | |
497 | case 683 : /* fall through */ | |
498 | case 684 : /* fall through */ | |
499 | case 685 : /* fall through */ | |
500 | case 686 : /* fall through */ | |
501 | case 687 : itype = SH64_MEDIA_INSN_STL; goto extract_sfmt_stl; case 688 : /* fall through */ | |
502 | case 689 : /* fall through */ | |
503 | case 690 : /* fall through */ | |
504 | case 691 : /* fall through */ | |
505 | case 692 : /* fall through */ | |
506 | case 693 : /* fall through */ | |
507 | case 694 : /* fall through */ | |
508 | case 695 : /* fall through */ | |
509 | case 696 : /* fall through */ | |
510 | case 697 : /* fall through */ | |
511 | case 698 : /* fall through */ | |
512 | case 699 : /* fall through */ | |
513 | case 700 : /* fall through */ | |
514 | case 701 : /* fall through */ | |
515 | case 702 : /* fall through */ | |
516 | case 703 : itype = SH64_MEDIA_INSN_STQ; goto extract_sfmt_stq; case 704 : /* fall through */ | |
517 | case 705 : /* fall through */ | |
518 | case 706 : /* fall through */ | |
519 | case 707 : /* fall through */ | |
520 | case 708 : /* fall through */ | |
521 | case 709 : /* fall through */ | |
522 | case 710 : /* fall through */ | |
523 | case 711 : /* fall through */ | |
524 | case 712 : /* fall through */ | |
525 | case 713 : /* fall through */ | |
526 | case 714 : /* fall through */ | |
527 | case 715 : /* fall through */ | |
528 | case 716 : /* fall through */ | |
529 | case 717 : /* fall through */ | |
530 | case 718 : /* fall through */ | |
531 | case 719 : itype = SH64_MEDIA_INSN_LDUW; goto extract_sfmt_lduw; case 720 : /* fall through */ | |
532 | case 721 : /* fall through */ | |
533 | case 722 : /* fall through */ | |
534 | case 723 : /* fall through */ | |
535 | case 724 : /* fall through */ | |
536 | case 725 : /* fall through */ | |
537 | case 726 : /* fall through */ | |
538 | case 727 : /* fall through */ | |
539 | case 728 : /* fall through */ | |
540 | case 729 : /* fall through */ | |
541 | case 730 : /* fall through */ | |
542 | case 731 : /* fall through */ | |
543 | case 732 : /* fall through */ | |
544 | case 733 : /* fall through */ | |
545 | case 734 : /* fall through */ | |
546 | case 735 : itype = SH64_MEDIA_INSN_FSTS; goto extract_sfmt_fsts; case 736 : /* fall through */ | |
547 | case 737 : /* fall through */ | |
548 | case 738 : /* fall through */ | |
549 | case 739 : /* fall through */ | |
550 | case 740 : /* fall through */ | |
551 | case 741 : /* fall through */ | |
552 | case 742 : /* fall through */ | |
553 | case 743 : /* fall through */ | |
554 | case 744 : /* fall through */ | |
555 | case 745 : /* fall through */ | |
556 | case 746 : /* fall through */ | |
557 | case 747 : /* fall through */ | |
558 | case 748 : /* fall through */ | |
559 | case 749 : /* fall through */ | |
560 | case 750 : /* fall through */ | |
561 | case 751 : itype = SH64_MEDIA_INSN_FSTP; goto extract_sfmt_fstp; case 752 : /* fall through */ | |
562 | case 753 : /* fall through */ | |
563 | case 754 : /* fall through */ | |
564 | case 755 : /* fall through */ | |
565 | case 756 : /* fall through */ | |
566 | case 757 : /* fall through */ | |
567 | case 758 : /* fall through */ | |
568 | case 759 : /* fall through */ | |
569 | case 760 : /* fall through */ | |
570 | case 761 : /* fall through */ | |
571 | case 762 : /* fall through */ | |
572 | case 763 : /* fall through */ | |
573 | case 764 : /* fall through */ | |
574 | case 765 : /* fall through */ | |
575 | case 766 : /* fall through */ | |
576 | case 767 : itype = SH64_MEDIA_INSN_FSTD; goto extract_sfmt_fstd; case 770 : itype = SH64_MEDIA_INSN_LDLOL; goto extract_sfmt_alloco; case 771 : itype = SH64_MEDIA_INSN_LDLOQ; goto extract_sfmt_alloco; case 774 : itype = SH64_MEDIA_INSN_LDHIL; goto extract_sfmt_alloco; case 775 : itype = SH64_MEDIA_INSN_LDHIQ; goto extract_sfmt_alloco; case 783 : itype = SH64_MEDIA_INSN_GETCFG; goto extract_sfmt_alloco; case 784 : itype = SH64_MEDIA_INSN_SHLLIL; goto extract_sfmt_sharil; case 785 : itype = SH64_MEDIA_INSN_SHLLI; goto extract_sfmt_shari; case 786 : itype = SH64_MEDIA_INSN_SHLRIL; goto extract_sfmt_sharil; case 787 : itype = SH64_MEDIA_INSN_SHLRI; goto extract_sfmt_shari; case 790 : itype = SH64_MEDIA_INSN_SHARIL; goto extract_sfmt_sharil; case 791 : itype = SH64_MEDIA_INSN_SHARI; goto extract_sfmt_shari; case 797 : itype = SH64_MEDIA_INSN_XORI; goto extract_sfmt_xori; case 800 : /* fall through */ | |
577 | case 801 : /* fall through */ | |
578 | case 802 : /* fall through */ | |
579 | case 803 : /* fall through */ | |
580 | case 804 : /* fall through */ | |
581 | case 805 : /* fall through */ | |
582 | case 806 : /* fall through */ | |
583 | case 807 : /* fall through */ | |
584 | case 808 : /* fall through */ | |
585 | case 809 : /* fall through */ | |
586 | case 810 : /* fall through */ | |
587 | case 811 : /* fall through */ | |
588 | case 812 : /* fall through */ | |
589 | case 813 : /* fall through */ | |
590 | case 814 : /* fall through */ | |
591 | case 815 : itype = SH64_MEDIA_INSN_SHORI; goto extract_sfmt_shori; case 816 : /* fall through */ | |
592 | case 817 : /* fall through */ | |
593 | case 818 : /* fall through */ | |
594 | case 819 : /* fall through */ | |
595 | case 820 : /* fall through */ | |
596 | case 821 : /* fall through */ | |
597 | case 822 : /* fall through */ | |
598 | case 823 : /* fall through */ | |
599 | case 824 : /* fall through */ | |
600 | case 825 : /* fall through */ | |
601 | case 826 : /* fall through */ | |
602 | case 827 : /* fall through */ | |
603 | case 828 : /* fall through */ | |
604 | case 829 : /* fall through */ | |
605 | case 830 : /* fall through */ | |
606 | case 831 : itype = SH64_MEDIA_INSN_MOVI; goto extract_sfmt_movi; case 832 : /* fall through */ | |
607 | case 833 : /* fall through */ | |
608 | case 834 : /* fall through */ | |
609 | case 835 : /* fall through */ | |
610 | case 836 : /* fall through */ | |
611 | case 837 : /* fall through */ | |
612 | case 838 : /* fall through */ | |
613 | case 839 : /* fall through */ | |
614 | case 840 : /* fall through */ | |
615 | case 841 : /* fall through */ | |
616 | case 842 : /* fall through */ | |
617 | case 843 : /* fall through */ | |
618 | case 844 : /* fall through */ | |
619 | case 845 : /* fall through */ | |
620 | case 846 : /* fall through */ | |
621 | case 847 : itype = SH64_MEDIA_INSN_ADDI; goto extract_sfmt_addi; case 848 : /* fall through */ | |
622 | case 849 : /* fall through */ | |
623 | case 850 : /* fall through */ | |
624 | case 851 : /* fall through */ | |
625 | case 852 : /* fall through */ | |
626 | case 853 : /* fall through */ | |
627 | case 854 : /* fall through */ | |
628 | case 855 : /* fall through */ | |
629 | case 856 : /* fall through */ | |
630 | case 857 : /* fall through */ | |
631 | case 858 : /* fall through */ | |
632 | case 859 : /* fall through */ | |
633 | case 860 : /* fall through */ | |
634 | case 861 : /* fall through */ | |
635 | case 862 : /* fall through */ | |
636 | case 863 : itype = SH64_MEDIA_INSN_ADDIL; goto extract_sfmt_addi; case 864 : /* fall through */ | |
637 | case 865 : /* fall through */ | |
638 | case 866 : /* fall through */ | |
639 | case 867 : /* fall through */ | |
640 | case 868 : /* fall through */ | |
641 | case 869 : /* fall through */ | |
642 | case 870 : /* fall through */ | |
643 | case 871 : /* fall through */ | |
644 | case 872 : /* fall through */ | |
645 | case 873 : /* fall through */ | |
646 | case 874 : /* fall through */ | |
647 | case 875 : /* fall through */ | |
648 | case 876 : /* fall through */ | |
649 | case 877 : /* fall through */ | |
650 | case 878 : /* fall through */ | |
651 | case 879 : itype = SH64_MEDIA_INSN_ANDI; goto extract_sfmt_addi; case 880 : /* fall through */ | |
652 | case 881 : /* fall through */ | |
653 | case 882 : /* fall through */ | |
654 | case 883 : /* fall through */ | |
655 | case 884 : /* fall through */ | |
656 | case 885 : /* fall through */ | |
657 | case 886 : /* fall through */ | |
658 | case 887 : /* fall through */ | |
659 | case 888 : /* fall through */ | |
660 | case 889 : /* fall through */ | |
661 | case 890 : /* fall through */ | |
662 | case 891 : /* fall through */ | |
663 | case 892 : /* fall through */ | |
664 | case 893 : /* fall through */ | |
665 | case 894 : /* fall through */ | |
666 | case 895 : itype = SH64_MEDIA_INSN_ORI; goto extract_sfmt_ori; case 897 : itype = SH64_MEDIA_INSN_PREFI; goto extract_sfmt_alloco; case 898 : itype = SH64_MEDIA_INSN_STLOL; goto extract_sfmt_alloco; case 899 : itype = SH64_MEDIA_INSN_STLOQ; goto extract_sfmt_alloco; case 900 : itype = SH64_MEDIA_INSN_ALLOCO; goto extract_sfmt_alloco; case 901 : itype = SH64_MEDIA_INSN_ICBI; goto extract_sfmt_alloco; case 902 : itype = SH64_MEDIA_INSN_STHIL; goto extract_sfmt_sthil; case 903 : itype = SH64_MEDIA_INSN_STHIQ; goto extract_sfmt_sthil; case 904 : itype = SH64_MEDIA_INSN_OCBP; goto extract_sfmt_alloco; case 905 : itype = SH64_MEDIA_INSN_OCBI; goto extract_sfmt_alloco; case 908 : itype = SH64_MEDIA_INSN_OCBWB; goto extract_sfmt_alloco; case 911 : itype = SH64_MEDIA_INSN_PUTCFG; goto extract_sfmt_alloco; case 913 : itype = SH64_MEDIA_INSN_BEQI; goto extract_sfmt_beqi; case 917 : itype = SH64_MEDIA_INSN_BNEI; goto extract_sfmt_beqi; case 928 : /* fall through */ | |
667 | case 929 : /* fall through */ | |
668 | case 930 : /* fall through */ | |
669 | case 931 : /* fall through */ | |
670 | case 932 : /* fall through */ | |
671 | case 933 : /* fall through */ | |
672 | case 934 : /* fall through */ | |
673 | case 935 : /* fall through */ | |
674 | case 936 : /* fall through */ | |
675 | case 937 : /* fall through */ | |
676 | case 938 : /* fall through */ | |
677 | case 939 : /* fall through */ | |
678 | case 940 : /* fall through */ | |
679 | case 941 : /* fall through */ | |
680 | case 942 : /* fall through */ | |
681 | case 943 : itype = SH64_MEDIA_INSN_PTA; goto extract_sfmt_pta; case 944 : /* fall through */ | |
682 | case 945 : /* fall through */ | |
683 | case 946 : /* fall through */ | |
684 | case 947 : /* fall through */ | |
685 | case 948 : /* fall through */ | |
686 | case 949 : /* fall through */ | |
687 | case 950 : /* fall through */ | |
688 | case 951 : /* fall through */ | |
689 | case 952 : /* fall through */ | |
690 | case 953 : /* fall through */ | |
691 | case 954 : /* fall through */ | |
692 | case 955 : /* fall through */ | |
693 | case 956 : /* fall through */ | |
694 | case 957 : /* fall through */ | |
695 | case 958 : /* fall through */ | |
696 | case 959 : itype = SH64_MEDIA_INSN_PTB; goto extract_sfmt_pta; default : itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty; | |
697 | } | |
698 | } | |
699 | } | |
700 | ||
701 | /* The instruction has been decoded, now extract the fields. */ | |
702 | ||
703 | extract_sfmt_empty: | |
704 | { | |
705 | const IDESC *idesc = &sh64_media_insn_data[itype]; | |
706 | #define FLD(f) abuf->fields.fmt_empty.f | |
707 | ||
708 | ||
709 | /* Record the fields for the semantic handler. */ | |
710 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_empty", (char *) 0)); | |
711 | ||
712 | #undef FLD | |
713 | return idesc; | |
714 | } | |
715 | ||
716 | extract_sfmt_add: | |
717 | { | |
718 | const IDESC *idesc = &sh64_media_insn_data[itype]; | |
719 | CGEN_INSN_INT insn = entire_insn; | |
720 | #define FLD(f) abuf->fields.sfmt_add.f | |
721 | UINT f_left; | |
722 | UINT f_right; | |
723 | UINT f_dest; | |
724 | ||
725 | f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); | |
726 | f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6); | |
727 | f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); | |
728 | ||
729 | /* Record the fields for the semantic handler. */ | |
730 | FLD (f_left) = f_left; | |
731 | FLD (f_right) = f_right; | |
732 | FLD (f_dest) = f_dest; | |
733 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_add", "f_left 0x%x", 'x', f_left, "f_right 0x%x", 'x', f_right, "f_dest 0x%x", 'x', f_dest, (char *) 0)); | |
734 | ||
735 | #undef FLD | |
736 | return idesc; | |
737 | } | |
738 | ||
739 | extract_sfmt_addi: | |
740 | { | |
741 | const IDESC *idesc = &sh64_media_insn_data[itype]; | |
742 | CGEN_INSN_INT insn = entire_insn; | |
743 | #define FLD(f) abuf->fields.sfmt_addi.f | |
744 | UINT f_left; | |
745 | INT f_disp10; | |
746 | UINT f_dest; | |
747 | ||
748 | f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); | |
749 | f_disp10 = EXTRACT_LSB0_INT (insn, 32, 19, 10); | |
750 | f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); | |
751 | ||
752 | /* Record the fields for the semantic handler. */ | |
753 | FLD (f_disp10) = f_disp10; | |
754 | FLD (f_left) = f_left; | |
755 | FLD (f_dest) = f_dest; | |
756 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addi", "f_disp10 0x%x", 'x', f_disp10, "f_left 0x%x", 'x', f_left, "f_dest 0x%x", 'x', f_dest, (char *) 0)); | |
757 | ||
758 | #undef FLD | |
759 | return idesc; | |
760 | } | |
761 | ||
762 | extract_sfmt_alloco: | |
763 | { | |
764 | const IDESC *idesc = &sh64_media_insn_data[itype]; | |
765 | #define FLD(f) abuf->fields.fmt_empty.f | |
766 | ||
767 | ||
768 | /* Record the fields for the semantic handler. */ | |
769 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_alloco", (char *) 0)); | |
770 | ||
771 | #undef FLD | |
772 | return idesc; | |
773 | } | |
774 | ||
775 | extract_sfmt_beq: | |
776 | { | |
777 | const IDESC *idesc = &sh64_media_insn_data[itype]; | |
778 | CGEN_INSN_INT insn = entire_insn; | |
779 | #define FLD(f) abuf->fields.sfmt_beq.f | |
780 | UINT f_left; | |
781 | UINT f_right; | |
782 | UINT f_tra; | |
783 | ||
784 | f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); | |
785 | f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6); | |
786 | f_tra = EXTRACT_LSB0_UINT (insn, 32, 6, 3); | |
787 | ||
788 | /* Record the fields for the semantic handler. */ | |
789 | FLD (f_left) = f_left; | |
790 | FLD (f_right) = f_right; | |
791 | FLD (f_tra) = f_tra; | |
792 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_beq", "f_left 0x%x", 'x', f_left, "f_right 0x%x", 'x', f_right, "f_tra 0x%x", 'x', f_tra, (char *) 0)); | |
793 | ||
794 | #undef FLD | |
795 | return idesc; | |
796 | } | |
797 | ||
798 | extract_sfmt_beqi: | |
799 | { | |
800 | const IDESC *idesc = &sh64_media_insn_data[itype]; | |
801 | CGEN_INSN_INT insn = entire_insn; | |
802 | #define FLD(f) abuf->fields.sfmt_beqi.f | |
803 | UINT f_left; | |
804 | INT f_imm6; | |
805 | UINT f_tra; | |
806 | ||
807 | f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); | |
808 | f_imm6 = EXTRACT_LSB0_INT (insn, 32, 15, 6); | |
809 | f_tra = EXTRACT_LSB0_UINT (insn, 32, 6, 3); | |
810 | ||
811 | /* Record the fields for the semantic handler. */ | |
812 | FLD (f_imm6) = f_imm6; | |
813 | FLD (f_left) = f_left; | |
814 | FLD (f_tra) = f_tra; | |
815 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_beqi", "f_imm6 0x%x", 'x', f_imm6, "f_left 0x%x", 'x', f_left, "f_tra 0x%x", 'x', f_tra, (char *) 0)); | |
816 | ||
817 | #undef FLD | |
818 | return idesc; | |
819 | } | |
820 | ||
821 | extract_sfmt_blink: | |
822 | { | |
823 | const IDESC *idesc = &sh64_media_insn_data[itype]; | |
824 | CGEN_INSN_INT insn = entire_insn; | |
825 | #define FLD(f) abuf->fields.sfmt_blink.f | |
826 | UINT f_trb; | |
827 | UINT f_dest; | |
828 | ||
829 | f_trb = EXTRACT_LSB0_UINT (insn, 32, 22, 3); | |
830 | f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); | |
831 | ||
832 | /* Record the fields for the semantic handler. */ | |
833 | FLD (f_trb) = f_trb; | |
834 | FLD (f_dest) = f_dest; | |
835 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_blink", "f_trb 0x%x", 'x', f_trb, "f_dest 0x%x", 'x', f_dest, (char *) 0)); | |
836 | ||
837 | #undef FLD | |
838 | return idesc; | |
839 | } | |
840 | ||
841 | extract_sfmt_brk: | |
842 | { | |
843 | const IDESC *idesc = &sh64_media_insn_data[itype]; | |
844 | #define FLD(f) abuf->fields.fmt_empty.f | |
845 | ||
846 | ||
847 | /* Record the fields for the semantic handler. */ | |
848 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_brk", (char *) 0)); | |
849 | ||
850 | #undef FLD | |
851 | return idesc; | |
852 | } | |
853 | ||
854 | extract_sfmt_byterev: | |
855 | { | |
856 | const IDESC *idesc = &sh64_media_insn_data[itype]; | |
857 | CGEN_INSN_INT insn = entire_insn; | |
858 | #define FLD(f) abuf->fields.sfmt_xori.f | |
859 | UINT f_left; | |
860 | UINT f_dest; | |
861 | ||
862 | f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); | |
863 | f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); | |
864 | ||
865 | /* Record the fields for the semantic handler. */ | |
866 | FLD (f_left) = f_left; | |
867 | FLD (f_dest) = f_dest; | |
868 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_byterev", "f_left 0x%x", 'x', f_left, "f_dest 0x%x", 'x', f_dest, (char *) 0)); | |
869 | ||
870 | #undef FLD | |
871 | return idesc; | |
872 | } | |
873 | ||
874 | extract_sfmt_cmveq: | |
875 | { | |
876 | const IDESC *idesc = &sh64_media_insn_data[itype]; | |
877 | CGEN_INSN_INT insn = entire_insn; | |
878 | #define FLD(f) abuf->fields.sfmt_add.f | |
879 | UINT f_left; | |
880 | UINT f_right; | |
881 | UINT f_dest; | |
882 | ||
883 | f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); | |
884 | f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6); | |
885 | f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); | |
886 | ||
887 | /* Record the fields for the semantic handler. */ | |
888 | FLD (f_left) = f_left; | |
889 | FLD (f_right) = f_right; | |
890 | FLD (f_dest) = f_dest; | |
891 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_cmveq", "f_left 0x%x", 'x', f_left, "f_right 0x%x", 'x', f_right, "f_dest 0x%x", 'x', f_dest, (char *) 0)); | |
892 | ||
893 | #undef FLD | |
894 | return idesc; | |
895 | } | |
896 | ||
897 | extract_sfmt_fabsd: | |
898 | { | |
899 | const IDESC *idesc = &sh64_media_insn_data[itype]; | |
900 | CGEN_INSN_INT insn = entire_insn; | |
901 | #define FLD(f) abuf->fields.sfmt_fabsd.f | |
902 | UINT f_left; | |
903 | UINT f_right; | |
904 | UINT f_dest; | |
905 | UINT f_left_right; | |
906 | ||
907 | f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); | |
908 | f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6); | |
909 | f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); | |
910 | f_left_right = f_left; | |
911 | ||
912 | /* Record the fields for the semantic handler. */ | |
913 | FLD (f_left_right) = f_left_right; | |
914 | FLD (f_dest) = f_dest; | |
915 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fabsd", "f_left_right 0x%x", 'x', f_left_right, "f_dest 0x%x", 'x', f_dest, (char *) 0)); | |
916 | ||
917 | #undef FLD | |
918 | return idesc; | |
919 | } | |
920 | ||
921 | extract_sfmt_fabss: | |
922 | { | |
923 | const IDESC *idesc = &sh64_media_insn_data[itype]; | |
924 | CGEN_INSN_INT insn = entire_insn; | |
925 | #define FLD(f) abuf->fields.sfmt_fabsd.f | |
926 | UINT f_left; | |
927 | UINT f_right; | |
928 | UINT f_dest; | |
929 | UINT f_left_right; | |
930 | ||
931 | f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); | |
932 | f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6); | |
933 | f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); | |
934 | f_left_right = f_left; | |
935 | ||
936 | /* Record the fields for the semantic handler. */ | |
937 | FLD (f_left_right) = f_left_right; | |
938 | FLD (f_dest) = f_dest; | |
939 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fabss", "f_left_right 0x%x", 'x', f_left_right, "f_dest 0x%x", 'x', f_dest, (char *) 0)); | |
940 | ||
941 | #undef FLD | |
942 | return idesc; | |
943 | } | |
944 | ||
945 | extract_sfmt_faddd: | |
946 | { | |
947 | const IDESC *idesc = &sh64_media_insn_data[itype]; | |
948 | CGEN_INSN_INT insn = entire_insn; | |
949 | #define FLD(f) abuf->fields.sfmt_add.f | |
950 | UINT f_left; | |
951 | UINT f_right; | |
952 | UINT f_dest; | |
953 | ||
954 | f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); | |
955 | f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6); | |
956 | f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); | |
957 | ||
958 | /* Record the fields for the semantic handler. */ | |
959 | FLD (f_left) = f_left; | |
960 | FLD (f_right) = f_right; | |
961 | FLD (f_dest) = f_dest; | |
962 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_faddd", "f_left 0x%x", 'x', f_left, "f_right 0x%x", 'x', f_right, "f_dest 0x%x", 'x', f_dest, (char *) 0)); | |
963 | ||
964 | #undef FLD | |
965 | return idesc; | |
966 | } | |
967 | ||
968 | extract_sfmt_fadds: | |
969 | { | |
970 | const IDESC *idesc = &sh64_media_insn_data[itype]; | |
971 | CGEN_INSN_INT insn = entire_insn; | |
972 | #define FLD(f) abuf->fields.sfmt_add.f | |
973 | UINT f_left; | |
974 | UINT f_right; | |
975 | UINT f_dest; | |
976 | ||
977 | f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); | |
978 | f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6); | |
979 | f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); | |
980 | ||
981 | /* Record the fields for the semantic handler. */ | |
982 | FLD (f_left) = f_left; | |
983 | FLD (f_right) = f_right; | |
984 | FLD (f_dest) = f_dest; | |
985 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fadds", "f_left 0x%x", 'x', f_left, "f_right 0x%x", 'x', f_right, "f_dest 0x%x", 'x', f_dest, (char *) 0)); | |
986 | ||
987 | #undef FLD | |
988 | return idesc; | |
989 | } | |
990 | ||
991 | extract_sfmt_fcmpeqd: | |
992 | { | |
993 | const IDESC *idesc = &sh64_media_insn_data[itype]; | |
994 | CGEN_INSN_INT insn = entire_insn; | |
995 | #define FLD(f) abuf->fields.sfmt_add.f | |
996 | UINT f_left; | |
997 | UINT f_right; | |
998 | UINT f_dest; | |
999 | ||
1000 | f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); | |
1001 | f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6); | |
1002 | f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); | |
1003 | ||
1004 | /* Record the fields for the semantic handler. */ | |
1005 | FLD (f_left) = f_left; | |
1006 | FLD (f_right) = f_right; | |
1007 | FLD (f_dest) = f_dest; | |
1008 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fcmpeqd", "f_left 0x%x", 'x', f_left, "f_right 0x%x", 'x', f_right, "f_dest 0x%x", 'x', f_dest, (char *) 0)); | |
1009 | ||
1010 | #undef FLD | |
1011 | return idesc; | |
1012 | } | |
1013 | ||
1014 | extract_sfmt_fcmpeqs: | |
1015 | { | |
1016 | const IDESC *idesc = &sh64_media_insn_data[itype]; | |
1017 | CGEN_INSN_INT insn = entire_insn; | |
1018 | #define FLD(f) abuf->fields.sfmt_add.f | |
1019 | UINT f_left; | |
1020 | UINT f_right; | |
1021 | UINT f_dest; | |
1022 | ||
1023 | f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); | |
1024 | f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6); | |
1025 | f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); | |
1026 | ||
1027 | /* Record the fields for the semantic handler. */ | |
1028 | FLD (f_left) = f_left; | |
1029 | FLD (f_right) = f_right; | |
1030 | FLD (f_dest) = f_dest; | |
1031 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fcmpeqs", "f_left 0x%x", 'x', f_left, "f_right 0x%x", 'x', f_right, "f_dest 0x%x", 'x', f_dest, (char *) 0)); | |
1032 | ||
1033 | #undef FLD | |
1034 | return idesc; | |
1035 | } | |
1036 | ||
1037 | extract_sfmt_fcnvds: | |
1038 | { | |
1039 | const IDESC *idesc = &sh64_media_insn_data[itype]; | |
1040 | CGEN_INSN_INT insn = entire_insn; | |
1041 | #define FLD(f) abuf->fields.sfmt_fabsd.f | |
1042 | UINT f_left; | |
1043 | UINT f_right; | |
1044 | UINT f_dest; | |
1045 | UINT f_left_right; | |
1046 | ||
1047 | f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); | |
1048 | f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6); | |
1049 | f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); | |
1050 | f_left_right = f_left; | |
1051 | ||
1052 | /* Record the fields for the semantic handler. */ | |
1053 | FLD (f_left_right) = f_left_right; | |
1054 | FLD (f_dest) = f_dest; | |
1055 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fcnvds", "f_left_right 0x%x", 'x', f_left_right, "f_dest 0x%x", 'x', f_dest, (char *) 0)); | |
1056 | ||
1057 | #undef FLD | |
1058 | return idesc; | |
1059 | } | |
1060 | ||
1061 | extract_sfmt_fcnvsd: | |
1062 | { | |
1063 | const IDESC *idesc = &sh64_media_insn_data[itype]; | |
1064 | CGEN_INSN_INT insn = entire_insn; | |
1065 | #define FLD(f) abuf->fields.sfmt_fabsd.f | |
1066 | UINT f_left; | |
1067 | UINT f_right; | |
1068 | UINT f_dest; | |
1069 | UINT f_left_right; | |
1070 | ||
1071 | f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); | |
1072 | f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6); | |
1073 | f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); | |
1074 | f_left_right = f_left; | |
1075 | ||
1076 | /* Record the fields for the semantic handler. */ | |
1077 | FLD (f_left_right) = f_left_right; | |
1078 | FLD (f_dest) = f_dest; | |
1079 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fcnvsd", "f_left_right 0x%x", 'x', f_left_right, "f_dest 0x%x", 'x', f_dest, (char *) 0)); | |
1080 | ||
1081 | #undef FLD | |
1082 | return idesc; | |
1083 | } | |
1084 | ||
1085 | extract_sfmt_fiprs: | |
1086 | { | |
1087 | const IDESC *idesc = &sh64_media_insn_data[itype]; | |
1088 | CGEN_INSN_INT insn = entire_insn; | |
1089 | #define FLD(f) abuf->fields.sfmt_add.f | |
1090 | UINT f_left; | |
1091 | UINT f_right; | |
1092 | UINT f_dest; | |
1093 | ||
1094 | f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); | |
1095 | f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6); | |
1096 | f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); | |
1097 | ||
1098 | /* Record the fields for the semantic handler. */ | |
1099 | FLD (f_left) = f_left; | |
1100 | FLD (f_right) = f_right; | |
1101 | FLD (f_dest) = f_dest; | |
1102 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fiprs", "f_left 0x%x", 'x', f_left, "f_right 0x%x", 'x', f_right, "f_dest 0x%x", 'x', f_dest, (char *) 0)); | |
1103 | ||
1104 | #undef FLD | |
1105 | return idesc; | |
1106 | } | |
1107 | ||
1108 | extract_sfmt_fldd: | |
1109 | { | |
1110 | const IDESC *idesc = &sh64_media_insn_data[itype]; | |
1111 | CGEN_INSN_INT insn = entire_insn; | |
1112 | #define FLD(f) abuf->fields.sfmt_fldd.f | |
1113 | UINT f_left; | |
1114 | SI f_disp10x8; | |
1115 | UINT f_dest; | |
1116 | ||
1117 | f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); | |
1118 | f_disp10x8 = ((EXTRACT_LSB0_INT (insn, 32, 19, 10)) << (3)); | |
1119 | f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); | |
1120 | ||
1121 | /* Record the fields for the semantic handler. */ | |
1122 | FLD (f_disp10x8) = f_disp10x8; | |
1123 | FLD (f_left) = f_left; | |
1124 | FLD (f_dest) = f_dest; | |
1125 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fldd", "f_disp10x8 0x%x", 'x', f_disp10x8, "f_left 0x%x", 'x', f_left, "f_dest 0x%x", 'x', f_dest, (char *) 0)); | |
1126 | ||
1127 | #undef FLD | |
1128 | return idesc; | |
1129 | } | |
1130 | ||
1131 | extract_sfmt_fldp: | |
1132 | { | |
1133 | const IDESC *idesc = &sh64_media_insn_data[itype]; | |
1134 | CGEN_INSN_INT insn = entire_insn; | |
1135 | #define FLD(f) abuf->fields.sfmt_fldd.f | |
1136 | UINT f_left; | |
1137 | SI f_disp10x8; | |
1138 | UINT f_dest; | |
1139 | ||
1140 | f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); | |
1141 | f_disp10x8 = ((EXTRACT_LSB0_INT (insn, 32, 19, 10)) << (3)); | |
1142 | f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); | |
1143 | ||
1144 | /* Record the fields for the semantic handler. */ | |
1145 | FLD (f_disp10x8) = f_disp10x8; | |
1146 | FLD (f_dest) = f_dest; | |
1147 | FLD (f_left) = f_left; | |
1148 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fldp", "f_disp10x8 0x%x", 'x', f_disp10x8, "f_dest 0x%x", 'x', f_dest, "f_left 0x%x", 'x', f_left, (char *) 0)); | |
1149 | ||
1150 | #undef FLD | |
1151 | return idesc; | |
1152 | } | |
1153 | ||
1154 | extract_sfmt_flds: | |
1155 | { | |
1156 | const IDESC *idesc = &sh64_media_insn_data[itype]; | |
1157 | CGEN_INSN_INT insn = entire_insn; | |
1158 | #define FLD(f) abuf->fields.sfmt_flds.f | |
1159 | UINT f_left; | |
1160 | SI f_disp10x4; | |
1161 | UINT f_dest; | |
1162 | ||
1163 | f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); | |
1164 | f_disp10x4 = ((EXTRACT_LSB0_INT (insn, 32, 19, 10)) << (2)); | |
1165 | f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); | |
1166 | ||
1167 | /* Record the fields for the semantic handler. */ | |
1168 | FLD (f_disp10x4) = f_disp10x4; | |
1169 | FLD (f_left) = f_left; | |
1170 | FLD (f_dest) = f_dest; | |
1171 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_flds", "f_disp10x4 0x%x", 'x', f_disp10x4, "f_left 0x%x", 'x', f_left, "f_dest 0x%x", 'x', f_dest, (char *) 0)); | |
1172 | ||
1173 | #undef FLD | |
1174 | return idesc; | |
1175 | } | |
1176 | ||
1177 | extract_sfmt_fldxd: | |
1178 | { | |
1179 | const IDESC *idesc = &sh64_media_insn_data[itype]; | |
1180 | CGEN_INSN_INT insn = entire_insn; | |
1181 | #define FLD(f) abuf->fields.sfmt_add.f | |
1182 | UINT f_left; | |
1183 | UINT f_right; | |
1184 | UINT f_dest; | |
1185 | ||
1186 | f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); | |
1187 | f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6); | |
1188 | f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); | |
1189 | ||
1190 | /* Record the fields for the semantic handler. */ | |
1191 | FLD (f_left) = f_left; | |
1192 | FLD (f_right) = f_right; | |
1193 | FLD (f_dest) = f_dest; | |
1194 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fldxd", "f_left 0x%x", 'x', f_left, "f_right 0x%x", 'x', f_right, "f_dest 0x%x", 'x', f_dest, (char *) 0)); | |
1195 | ||
1196 | #undef FLD | |
1197 | return idesc; | |
1198 | } | |
1199 | ||
1200 | extract_sfmt_fldxp: | |
1201 | { | |
1202 | const IDESC *idesc = &sh64_media_insn_data[itype]; | |
1203 | CGEN_INSN_INT insn = entire_insn; | |
1204 | #define FLD(f) abuf->fields.sfmt_add.f | |
1205 | UINT f_left; | |
1206 | UINT f_right; | |
1207 | UINT f_dest; | |
1208 | ||
1209 | f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); | |
1210 | f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6); | |
1211 | f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); | |
1212 | ||
1213 | /* Record the fields for the semantic handler. */ | |
1214 | FLD (f_dest) = f_dest; | |
1215 | FLD (f_left) = f_left; | |
1216 | FLD (f_right) = f_right; | |
1217 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fldxp", "f_dest 0x%x", 'x', f_dest, "f_left 0x%x", 'x', f_left, "f_right 0x%x", 'x', f_right, (char *) 0)); | |
1218 | ||
1219 | #undef FLD | |
1220 | return idesc; | |
1221 | } | |
1222 | ||
1223 | extract_sfmt_fldxs: | |
1224 | { | |
1225 | const IDESC *idesc = &sh64_media_insn_data[itype]; | |
1226 | CGEN_INSN_INT insn = entire_insn; | |
1227 | #define FLD(f) abuf->fields.sfmt_add.f | |
1228 | UINT f_left; | |
1229 | UINT f_right; | |
1230 | UINT f_dest; | |
1231 | ||
1232 | f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); | |
1233 | f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6); | |
1234 | f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); | |
1235 | ||
1236 | /* Record the fields for the semantic handler. */ | |
1237 | FLD (f_left) = f_left; | |
1238 | FLD (f_right) = f_right; | |
1239 | FLD (f_dest) = f_dest; | |
1240 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fldxs", "f_left 0x%x", 'x', f_left, "f_right 0x%x", 'x', f_right, "f_dest 0x%x", 'x', f_dest, (char *) 0)); | |
1241 | ||
1242 | #undef FLD | |
1243 | return idesc; | |
1244 | } | |
1245 | ||
1246 | extract_sfmt_fmacs: | |
1247 | { | |
1248 | const IDESC *idesc = &sh64_media_insn_data[itype]; | |
1249 | CGEN_INSN_INT insn = entire_insn; | |
1250 | #define FLD(f) abuf->fields.sfmt_add.f | |
1251 | UINT f_left; | |
1252 | UINT f_right; | |
1253 | UINT f_dest; | |
1254 | ||
1255 | f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); | |
1256 | f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6); | |
1257 | f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); | |
1258 | ||
1259 | /* Record the fields for the semantic handler. */ | |
1260 | FLD (f_dest) = f_dest; | |
1261 | FLD (f_left) = f_left; | |
1262 | FLD (f_right) = f_right; | |
1263 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fmacs", "f_dest 0x%x", 'x', f_dest, "f_left 0x%x", 'x', f_left, "f_right 0x%x", 'x', f_right, (char *) 0)); | |
1264 | ||
1265 | #undef FLD | |
1266 | return idesc; | |
1267 | } | |
1268 | ||
1269 | extract_sfmt_fmovdq: | |
1270 | { | |
1271 | const IDESC *idesc = &sh64_media_insn_data[itype]; | |
1272 | CGEN_INSN_INT insn = entire_insn; | |
1273 | #define FLD(f) abuf->fields.sfmt_fabsd.f | |
1274 | UINT f_left; | |
1275 | UINT f_right; | |
1276 | UINT f_dest; | |
1277 | UINT f_left_right; | |
1278 | ||
1279 | f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); | |
1280 | f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6); | |
1281 | f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); | |
1282 | f_left_right = f_left; | |
1283 | ||
1284 | /* Record the fields for the semantic handler. */ | |
1285 | FLD (f_left_right) = f_left_right; | |
1286 | FLD (f_dest) = f_dest; | |
1287 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fmovdq", "f_left_right 0x%x", 'x', f_left_right, "f_dest 0x%x", 'x', f_dest, (char *) 0)); | |
1288 | ||
1289 | #undef FLD | |
1290 | return idesc; | |
1291 | } | |
1292 | ||
1293 | extract_sfmt_fmovls: | |
1294 | { | |
1295 | const IDESC *idesc = &sh64_media_insn_data[itype]; | |
1296 | CGEN_INSN_INT insn = entire_insn; | |
1297 | #define FLD(f) abuf->fields.sfmt_xori.f | |
1298 | UINT f_left; | |
1299 | UINT f_dest; | |
1300 | ||
1301 | f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); | |
1302 | f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); | |
1303 | ||
1304 | /* Record the fields for the semantic handler. */ | |
1305 | FLD (f_left) = f_left; | |
1306 | FLD (f_dest) = f_dest; | |
1307 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fmovls", "f_left 0x%x", 'x', f_left, "f_dest 0x%x", 'x', f_dest, (char *) 0)); | |
1308 | ||
1309 | #undef FLD | |
1310 | return idesc; | |
1311 | } | |
1312 | ||
1313 | extract_sfmt_fmovqd: | |
1314 | { | |
1315 | const IDESC *idesc = &sh64_media_insn_data[itype]; | |
1316 | CGEN_INSN_INT insn = entire_insn; | |
1317 | #define FLD(f) abuf->fields.sfmt_xori.f | |
1318 | UINT f_left; | |
1319 | UINT f_dest; | |
1320 | ||
1321 | f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); | |
1322 | f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); | |
1323 | ||
1324 | /* Record the fields for the semantic handler. */ | |
1325 | FLD (f_left) = f_left; | |
1326 | FLD (f_dest) = f_dest; | |
1327 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fmovqd", "f_left 0x%x", 'x', f_left, "f_dest 0x%x", 'x', f_dest, (char *) 0)); | |
1328 | ||
1329 | #undef FLD | |
1330 | return idesc; | |
1331 | } | |
1332 | ||
1333 | extract_sfmt_fmovsl: | |
1334 | { | |
1335 | const IDESC *idesc = &sh64_media_insn_data[itype]; | |
1336 | CGEN_INSN_INT insn = entire_insn; | |
1337 | #define FLD(f) abuf->fields.sfmt_fabsd.f | |
1338 | UINT f_left; | |
1339 | UINT f_right; | |
1340 | UINT f_dest; | |
1341 | UINT f_left_right; | |
1342 | ||
1343 | f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); | |
1344 | f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6); | |
1345 | f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); | |
1346 | f_left_right = f_left; | |
1347 | ||
1348 | /* Record the fields for the semantic handler. */ | |
1349 | FLD (f_left_right) = f_left_right; | |
1350 | FLD (f_dest) = f_dest; | |
1351 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fmovsl", "f_left_right 0x%x", 'x', f_left_right, "f_dest 0x%x", 'x', f_dest, (char *) 0)); | |
1352 | ||
1353 | #undef FLD | |
1354 | return idesc; | |
1355 | } | |
1356 | ||
1357 | extract_sfmt_fstd: | |
1358 | { | |
1359 | const IDESC *idesc = &sh64_media_insn_data[itype]; | |
1360 | CGEN_INSN_INT insn = entire_insn; | |
1361 | #define FLD(f) abuf->fields.sfmt_fldd.f | |
1362 | UINT f_left; | |
1363 | SI f_disp10x8; | |
1364 | UINT f_dest; | |
1365 | ||
1366 | f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); | |
1367 | f_disp10x8 = ((EXTRACT_LSB0_INT (insn, 32, 19, 10)) << (3)); | |
1368 | f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); | |
1369 | ||
1370 | /* Record the fields for the semantic handler. */ | |
1371 | FLD (f_disp10x8) = f_disp10x8; | |
1372 | FLD (f_dest) = f_dest; | |
1373 | FLD (f_left) = f_left; | |
1374 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fstd", "f_disp10x8 0x%x", 'x', f_disp10x8, "f_dest 0x%x", 'x', f_dest, "f_left 0x%x", 'x', f_left, (char *) 0)); | |
1375 | ||
1376 | #undef FLD | |
1377 | return idesc; | |
1378 | } | |
1379 | ||
1380 | extract_sfmt_fstp: | |
1381 | { | |
1382 | const IDESC *idesc = &sh64_media_insn_data[itype]; | |
1383 | CGEN_INSN_INT insn = entire_insn; | |
1384 | #define FLD(f) abuf->fields.sfmt_fldd.f | |
1385 | UINT f_left; | |
1386 | SI f_disp10x8; | |
1387 | UINT f_dest; | |
1388 | ||
1389 | f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); | |
1390 | f_disp10x8 = ((EXTRACT_LSB0_INT (insn, 32, 19, 10)) << (3)); | |
1391 | f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); | |
1392 | ||
1393 | /* Record the fields for the semantic handler. */ | |
1394 | FLD (f_disp10x8) = f_disp10x8; | |
1395 | FLD (f_dest) = f_dest; | |
1396 | FLD (f_left) = f_left; | |
1397 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fstp", "f_disp10x8 0x%x", 'x', f_disp10x8, "f_dest 0x%x", 'x', f_dest, "f_left 0x%x", 'x', f_left, (char *) 0)); | |
1398 | ||
1399 | #undef FLD | |
1400 | return idesc; | |
1401 | } | |
1402 | ||
1403 | extract_sfmt_fsts: | |
1404 | { | |
1405 | const IDESC *idesc = &sh64_media_insn_data[itype]; | |
1406 | CGEN_INSN_INT insn = entire_insn; | |
1407 | #define FLD(f) abuf->fields.sfmt_flds.f | |
1408 | UINT f_left; | |
1409 | SI f_disp10x4; | |
1410 | UINT f_dest; | |
1411 | ||
1412 | f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); | |
1413 | f_disp10x4 = ((EXTRACT_LSB0_INT (insn, 32, 19, 10)) << (2)); | |
1414 | f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); | |
1415 | ||
1416 | /* Record the fields for the semantic handler. */ | |
1417 | FLD (f_disp10x4) = f_disp10x4; | |
1418 | FLD (f_dest) = f_dest; | |
1419 | FLD (f_left) = f_left; | |
1420 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fsts", "f_disp10x4 0x%x", 'x', f_disp10x4, "f_dest 0x%x", 'x', f_dest, "f_left 0x%x", 'x', f_left, (char *) 0)); | |
1421 | ||
1422 | #undef FLD | |
1423 | return idesc; | |
1424 | } | |
1425 | ||
1426 | extract_sfmt_fstxd: | |
1427 | { | |
1428 | const IDESC *idesc = &sh64_media_insn_data[itype]; | |
1429 | CGEN_INSN_INT insn = entire_insn; | |
1430 | #define FLD(f) abuf->fields.sfmt_add.f | |
1431 | UINT f_left; | |
1432 | UINT f_right; | |
1433 | UINT f_dest; | |
1434 | ||
1435 | f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); | |
1436 | f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6); | |
1437 | f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); | |
1438 | ||
1439 | /* Record the fields for the semantic handler. */ | |
1440 | FLD (f_dest) = f_dest; | |
1441 | FLD (f_left) = f_left; | |
1442 | FLD (f_right) = f_right; | |
1443 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fstxd", "f_dest 0x%x", 'x', f_dest, "f_left 0x%x", 'x', f_left, "f_right 0x%x", 'x', f_right, (char *) 0)); | |
1444 | ||
1445 | #undef FLD | |
1446 | return idesc; | |
1447 | } | |
1448 | ||
1449 | extract_sfmt_fstxp: | |
1450 | { | |
1451 | const IDESC *idesc = &sh64_media_insn_data[itype]; | |
1452 | CGEN_INSN_INT insn = entire_insn; | |
1453 | #define FLD(f) abuf->fields.sfmt_add.f | |
1454 | UINT f_left; | |
1455 | UINT f_right; | |
1456 | UINT f_dest; | |
1457 | ||
1458 | f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); | |
1459 | f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6); | |
1460 | f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); | |
1461 | ||
1462 | /* Record the fields for the semantic handler. */ | |
1463 | FLD (f_dest) = f_dest; | |
1464 | FLD (f_left) = f_left; | |
1465 | FLD (f_right) = f_right; | |
1466 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fstxp", "f_dest 0x%x", 'x', f_dest, "f_left 0x%x", 'x', f_left, "f_right 0x%x", 'x', f_right, (char *) 0)); | |
1467 | ||
1468 | #undef FLD | |
1469 | return idesc; | |
1470 | } | |
1471 | ||
1472 | extract_sfmt_fstxs: | |
1473 | { | |
1474 | const IDESC *idesc = &sh64_media_insn_data[itype]; | |
1475 | CGEN_INSN_INT insn = entire_insn; | |
1476 | #define FLD(f) abuf->fields.sfmt_add.f | |
1477 | UINT f_left; | |
1478 | UINT f_right; | |
1479 | UINT f_dest; | |
1480 | ||
1481 | f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); | |
1482 | f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6); | |
1483 | f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); | |
1484 | ||
1485 | /* Record the fields for the semantic handler. */ | |
1486 | FLD (f_dest) = f_dest; | |
1487 | FLD (f_left) = f_left; | |
1488 | FLD (f_right) = f_right; | |
1489 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fstxs", "f_dest 0x%x", 'x', f_dest, "f_left 0x%x", 'x', f_left, "f_right 0x%x", 'x', f_right, (char *) 0)); | |
1490 | ||
1491 | #undef FLD | |
1492 | return idesc; | |
1493 | } | |
1494 | ||
1495 | extract_sfmt_ftrvs: | |
1496 | { | |
1497 | const IDESC *idesc = &sh64_media_insn_data[itype]; | |
1498 | CGEN_INSN_INT insn = entire_insn; | |
1499 | #define FLD(f) abuf->fields.sfmt_add.f | |
1500 | UINT f_left; | |
1501 | UINT f_right; | |
1502 | UINT f_dest; | |
1503 | ||
1504 | f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); | |
1505 | f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6); | |
1506 | f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); | |
1507 | ||
1508 | /* Record the fields for the semantic handler. */ | |
1509 | FLD (f_dest) = f_dest; | |
1510 | FLD (f_left) = f_left; | |
1511 | FLD (f_right) = f_right; | |
1512 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ftrvs", "f_dest 0x%x", 'x', f_dest, "f_left 0x%x", 'x', f_left, "f_right 0x%x", 'x', f_right, (char *) 0)); | |
1513 | ||
1514 | #undef FLD | |
1515 | return idesc; | |
1516 | } | |
1517 | ||
1518 | extract_sfmt_getcon: | |
1519 | { | |
1520 | const IDESC *idesc = &sh64_media_insn_data[itype]; | |
1521 | CGEN_INSN_INT insn = entire_insn; | |
1522 | #define FLD(f) abuf->fields.sfmt_xori.f | |
1523 | UINT f_left; | |
1524 | UINT f_dest; | |
1525 | ||
1526 | f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); | |
1527 | f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); | |
1528 | ||
1529 | /* Record the fields for the semantic handler. */ | |
1530 | FLD (f_left) = f_left; | |
1531 | FLD (f_dest) = f_dest; | |
1532 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_getcon", "f_left 0x%x", 'x', f_left, "f_dest 0x%x", 'x', f_dest, (char *) 0)); | |
1533 | ||
1534 | #undef FLD | |
1535 | return idesc; | |
1536 | } | |
1537 | ||
1538 | extract_sfmt_gettr: | |
1539 | { | |
1540 | const IDESC *idesc = &sh64_media_insn_data[itype]; | |
1541 | CGEN_INSN_INT insn = entire_insn; | |
1542 | #define FLD(f) abuf->fields.sfmt_blink.f | |
1543 | UINT f_trb; | |
1544 | UINT f_dest; | |
1545 | ||
1546 | f_trb = EXTRACT_LSB0_UINT (insn, 32, 22, 3); | |
1547 | f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); | |
1548 | ||
1549 | /* Record the fields for the semantic handler. */ | |
1550 | FLD (f_trb) = f_trb; | |
1551 | FLD (f_dest) = f_dest; | |
1552 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_gettr", "f_trb 0x%x", 'x', f_trb, "f_dest 0x%x", 'x', f_dest, (char *) 0)); | |
1553 | ||
1554 | #undef FLD | |
1555 | return idesc; | |
1556 | } | |
1557 | ||
1558 | extract_sfmt_ldb: | |
1559 | { | |
1560 | const IDESC *idesc = &sh64_media_insn_data[itype]; | |
1561 | CGEN_INSN_INT insn = entire_insn; | |
1562 | #define FLD(f) abuf->fields.sfmt_addi.f | |
1563 | UINT f_left; | |
1564 | INT f_disp10; | |
1565 | UINT f_dest; | |
1566 | ||
1567 | f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); | |
1568 | f_disp10 = EXTRACT_LSB0_INT (insn, 32, 19, 10); | |
1569 | f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); | |
1570 | ||
1571 | /* Record the fields for the semantic handler. */ | |
1572 | FLD (f_disp10) = f_disp10; | |
1573 | FLD (f_left) = f_left; | |
1574 | FLD (f_dest) = f_dest; | |
1575 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldb", "f_disp10 0x%x", 'x', f_disp10, "f_left 0x%x", 'x', f_left, "f_dest 0x%x", 'x', f_dest, (char *) 0)); | |
1576 | ||
1577 | #undef FLD | |
1578 | return idesc; | |
1579 | } | |
1580 | ||
1581 | extract_sfmt_ldl: | |
1582 | { | |
1583 | const IDESC *idesc = &sh64_media_insn_data[itype]; | |
1584 | CGEN_INSN_INT insn = entire_insn; | |
1585 | #define FLD(f) abuf->fields.sfmt_flds.f | |
1586 | UINT f_left; | |
1587 | SI f_disp10x4; | |
1588 | UINT f_dest; | |
1589 | ||
1590 | f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); | |
1591 | f_disp10x4 = ((EXTRACT_LSB0_INT (insn, 32, 19, 10)) << (2)); | |
1592 | f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); | |
1593 | ||
1594 | /* Record the fields for the semantic handler. */ | |
1595 | FLD (f_disp10x4) = f_disp10x4; | |
1596 | FLD (f_left) = f_left; | |
1597 | FLD (f_dest) = f_dest; | |
1598 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldl", "f_disp10x4 0x%x", 'x', f_disp10x4, "f_left 0x%x", 'x', f_left, "f_dest 0x%x", 'x', f_dest, (char *) 0)); | |
1599 | ||
1600 | #undef FLD | |
1601 | return idesc; | |
1602 | } | |
1603 | ||
1604 | extract_sfmt_ldq: | |
1605 | { | |
1606 | const IDESC *idesc = &sh64_media_insn_data[itype]; | |
1607 | CGEN_INSN_INT insn = entire_insn; | |
1608 | #define FLD(f) abuf->fields.sfmt_fldd.f | |
1609 | UINT f_left; | |
1610 | SI f_disp10x8; | |
1611 | UINT f_dest; | |
1612 | ||
1613 | f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); | |
1614 | f_disp10x8 = ((EXTRACT_LSB0_INT (insn, 32, 19, 10)) << (3)); | |
1615 | f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); | |
1616 | ||
1617 | /* Record the fields for the semantic handler. */ | |
1618 | FLD (f_disp10x8) = f_disp10x8; | |
1619 | FLD (f_left) = f_left; | |
1620 | FLD (f_dest) = f_dest; | |
1621 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldq", "f_disp10x8 0x%x", 'x', f_disp10x8, "f_left 0x%x", 'x', f_left, "f_dest 0x%x", 'x', f_dest, (char *) 0)); | |
1622 | ||
1623 | #undef FLD | |
1624 | return idesc; | |
1625 | } | |
1626 | ||
1627 | extract_sfmt_lduw: | |
1628 | { | |
1629 | const IDESC *idesc = &sh64_media_insn_data[itype]; | |
1630 | CGEN_INSN_INT insn = entire_insn; | |
1631 | #define FLD(f) abuf->fields.sfmt_lduw.f | |
1632 | UINT f_left; | |
1633 | SI f_disp10x2; | |
1634 | UINT f_dest; | |
1635 | ||
1636 | f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); | |
1637 | f_disp10x2 = ((EXTRACT_LSB0_INT (insn, 32, 19, 10)) << (1)); | |
1638 | f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); | |
1639 | ||
1640 | /* Record the fields for the semantic handler. */ | |
1641 | FLD (f_disp10x2) = f_disp10x2; | |
1642 | FLD (f_left) = f_left; | |
1643 | FLD (f_dest) = f_dest; | |
1644 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_lduw", "f_disp10x2 0x%x", 'x', f_disp10x2, "f_left 0x%x", 'x', f_left, "f_dest 0x%x", 'x', f_dest, (char *) 0)); | |
1645 | ||
1646 | #undef FLD | |
1647 | return idesc; | |
1648 | } | |
1649 | ||
1650 | extract_sfmt_ldxb: | |
1651 | { | |
1652 | const IDESC *idesc = &sh64_media_insn_data[itype]; | |
1653 | CGEN_INSN_INT insn = entire_insn; | |
1654 | #define FLD(f) abuf->fields.sfmt_add.f | |
1655 | UINT f_left; | |
1656 | UINT f_right; | |
1657 | UINT f_dest; | |
1658 | ||
1659 | f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); | |
1660 | f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6); | |
1661 | f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); | |
1662 | ||
1663 | /* Record the fields for the semantic handler. */ | |
1664 | FLD (f_left) = f_left; | |
1665 | FLD (f_right) = f_right; | |
1666 | FLD (f_dest) = f_dest; | |
1667 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldxb", "f_left 0x%x", 'x', f_left, "f_right 0x%x", 'x', f_right, "f_dest 0x%x", 'x', f_dest, (char *) 0)); | |
1668 | ||
1669 | #undef FLD | |
1670 | return idesc; | |
1671 | } | |
1672 | ||
1673 | extract_sfmt_mcmv: | |
1674 | { | |
1675 | const IDESC *idesc = &sh64_media_insn_data[itype]; | |
1676 | CGEN_INSN_INT insn = entire_insn; | |
1677 | #define FLD(f) abuf->fields.sfmt_add.f | |
1678 | UINT f_left; | |
1679 | UINT f_right; | |
1680 | UINT f_dest; | |
1681 | ||
1682 | f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); | |
1683 | f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6); | |
1684 | f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); | |
1685 | ||
1686 | /* Record the fields for the semantic handler. */ | |
1687 | FLD (f_dest) = f_dest; | |
1688 | FLD (f_left) = f_left; | |
1689 | FLD (f_right) = f_right; | |
1690 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mcmv", "f_dest 0x%x", 'x', f_dest, "f_left 0x%x", 'x', f_left, "f_right 0x%x", 'x', f_right, (char *) 0)); | |
1691 | ||
1692 | #undef FLD | |
1693 | return idesc; | |
1694 | } | |
1695 | ||
1696 | extract_sfmt_movi: | |
1697 | { | |
1698 | const IDESC *idesc = &sh64_media_insn_data[itype]; | |
1699 | CGEN_INSN_INT insn = entire_insn; | |
1700 | #define FLD(f) abuf->fields.sfmt_movi.f | |
1701 | INT f_imm16; | |
1702 | UINT f_dest; | |
1703 | ||
1704 | f_imm16 = EXTRACT_LSB0_INT (insn, 32, 25, 16); | |
1705 | f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); | |
1706 | ||
1707 | /* Record the fields for the semantic handler. */ | |
1708 | FLD (f_imm16) = f_imm16; | |
1709 | FLD (f_dest) = f_dest; | |
1710 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movi", "f_imm16 0x%x", 'x', f_imm16, "f_dest 0x%x", 'x', f_dest, (char *) 0)); | |
1711 | ||
1712 | #undef FLD | |
1713 | return idesc; | |
1714 | } | |
1715 | ||
1716 | extract_sfmt_mpermw: | |
1717 | { | |
1718 | const IDESC *idesc = &sh64_media_insn_data[itype]; | |
1719 | CGEN_INSN_INT insn = entire_insn; | |
1720 | #define FLD(f) abuf->fields.sfmt_add.f | |
1721 | UINT f_left; | |
1722 | UINT f_right; | |
1723 | UINT f_dest; | |
1724 | ||
1725 | f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); | |
1726 | f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6); | |
1727 | f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); | |
1728 | ||
1729 | /* Record the fields for the semantic handler. */ | |
1730 | FLD (f_left) = f_left; | |
1731 | FLD (f_right) = f_right; | |
1732 | FLD (f_dest) = f_dest; | |
1733 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mpermw", "f_left 0x%x", 'x', f_left, "f_right 0x%x", 'x', f_right, "f_dest 0x%x", 'x', f_dest, (char *) 0)); | |
1734 | ||
1735 | #undef FLD | |
1736 | return idesc; | |
1737 | } | |
1738 | ||
1739 | extract_sfmt_ori: | |
1740 | { | |
1741 | const IDESC *idesc = &sh64_media_insn_data[itype]; | |
1742 | CGEN_INSN_INT insn = entire_insn; | |
1743 | #define FLD(f) abuf->fields.sfmt_ori.f | |
1744 | UINT f_left; | |
1745 | INT f_imm10; | |
1746 | UINT f_dest; | |
1747 | ||
1748 | f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); | |
1749 | f_imm10 = EXTRACT_LSB0_INT (insn, 32, 19, 10); | |
1750 | f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); | |
1751 | ||
1752 | /* Record the fields for the semantic handler. */ | |
1753 | FLD (f_imm10) = f_imm10; | |
1754 | FLD (f_left) = f_left; | |
1755 | FLD (f_dest) = f_dest; | |
1756 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ori", "f_imm10 0x%x", 'x', f_imm10, "f_left 0x%x", 'x', f_left, "f_dest 0x%x", 'x', f_dest, (char *) 0)); | |
1757 | ||
1758 | #undef FLD | |
1759 | return idesc; | |
1760 | } | |
1761 | ||
1762 | extract_sfmt_pta: | |
1763 | { | |
1764 | const IDESC *idesc = &sh64_media_insn_data[itype]; | |
1765 | CGEN_INSN_INT insn = entire_insn; | |
1766 | #define FLD(f) abuf->fields.sfmt_pta.f | |
1767 | DI f_disp16; | |
1768 | UINT f_tra; | |
1769 | ||
1770 | f_disp16 = ((((EXTRACT_LSB0_INT (insn, 32, 25, 16)) << (2))) + (pc)); | |
1771 | f_tra = EXTRACT_LSB0_UINT (insn, 32, 6, 3); | |
1772 | ||
1773 | /* Record the fields for the semantic handler. */ | |
1774 | FLD (f_disp16) = f_disp16; | |
1775 | FLD (f_tra) = f_tra; | |
1776 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_pta", "f_disp16 0x%x", 'x', f_disp16, "f_tra 0x%x", 'x', f_tra, (char *) 0)); | |
1777 | ||
1778 | #undef FLD | |
1779 | return idesc; | |
1780 | } | |
1781 | ||
1782 | extract_sfmt_ptabs: | |
1783 | { | |
1784 | const IDESC *idesc = &sh64_media_insn_data[itype]; | |
1785 | CGEN_INSN_INT insn = entire_insn; | |
1786 | #define FLD(f) abuf->fields.sfmt_beq.f | |
1787 | UINT f_right; | |
1788 | UINT f_tra; | |
1789 | ||
1790 | f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6); | |
1791 | f_tra = EXTRACT_LSB0_UINT (insn, 32, 6, 3); | |
1792 | ||
1793 | /* Record the fields for the semantic handler. */ | |
1794 | FLD (f_right) = f_right; | |
1795 | FLD (f_tra) = f_tra; | |
1796 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ptabs", "f_right 0x%x", 'x', f_right, "f_tra 0x%x", 'x', f_tra, (char *) 0)); | |
1797 | ||
1798 | #undef FLD | |
1799 | return idesc; | |
1800 | } | |
1801 | ||
1802 | extract_sfmt_ptrel: | |
1803 | { | |
1804 | const IDESC *idesc = &sh64_media_insn_data[itype]; | |
1805 | CGEN_INSN_INT insn = entire_insn; | |
1806 | #define FLD(f) abuf->fields.sfmt_beq.f | |
1807 | UINT f_right; | |
1808 | UINT f_tra; | |
1809 | ||
1810 | f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6); | |
1811 | f_tra = EXTRACT_LSB0_UINT (insn, 32, 6, 3); | |
1812 | ||
1813 | /* Record the fields for the semantic handler. */ | |
1814 | FLD (f_right) = f_right; | |
1815 | FLD (f_tra) = f_tra; | |
1816 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ptrel", "f_right 0x%x", 'x', f_right, "f_tra 0x%x", 'x', f_tra, (char *) 0)); | |
1817 | ||
1818 | #undef FLD | |
1819 | return idesc; | |
1820 | } | |
1821 | ||
1822 | extract_sfmt_putcon: | |
1823 | { | |
1824 | const IDESC *idesc = &sh64_media_insn_data[itype]; | |
1825 | CGEN_INSN_INT insn = entire_insn; | |
1826 | #define FLD(f) abuf->fields.sfmt_xori.f | |
1827 | UINT f_left; | |
1828 | UINT f_dest; | |
1829 | ||
1830 | f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); | |
1831 | f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); | |
1832 | ||
1833 | /* Record the fields for the semantic handler. */ | |
1834 | FLD (f_left) = f_left; | |
1835 | FLD (f_dest) = f_dest; | |
1836 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_putcon", "f_left 0x%x", 'x', f_left, "f_dest 0x%x", 'x', f_dest, (char *) 0)); | |
1837 | ||
1838 | #undef FLD | |
1839 | return idesc; | |
1840 | } | |
1841 | ||
1842 | extract_sfmt_shari: | |
1843 | { | |
1844 | const IDESC *idesc = &sh64_media_insn_data[itype]; | |
1845 | CGEN_INSN_INT insn = entire_insn; | |
1846 | #define FLD(f) abuf->fields.sfmt_shari.f | |
1847 | UINT f_left; | |
1848 | UINT f_uimm6; | |
1849 | UINT f_dest; | |
1850 | ||
1851 | f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); | |
1852 | f_uimm6 = EXTRACT_LSB0_UINT (insn, 32, 15, 6); | |
1853 | f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); | |
1854 | ||
1855 | /* Record the fields for the semantic handler. */ | |
1856 | FLD (f_left) = f_left; | |
1857 | FLD (f_uimm6) = f_uimm6; | |
1858 | FLD (f_dest) = f_dest; | |
1859 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_shari", "f_left 0x%x", 'x', f_left, "f_uimm6 0x%x", 'x', f_uimm6, "f_dest 0x%x", 'x', f_dest, (char *) 0)); | |
1860 | ||
1861 | #undef FLD | |
1862 | return idesc; | |
1863 | } | |
1864 | ||
1865 | extract_sfmt_sharil: | |
1866 | { | |
1867 | const IDESC *idesc = &sh64_media_insn_data[itype]; | |
1868 | CGEN_INSN_INT insn = entire_insn; | |
1869 | #define FLD(f) abuf->fields.sfmt_shari.f | |
1870 | UINT f_left; | |
1871 | UINT f_uimm6; | |
1872 | UINT f_dest; | |
1873 | ||
1874 | f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); | |
1875 | f_uimm6 = EXTRACT_LSB0_UINT (insn, 32, 15, 6); | |
1876 | f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); | |
1877 | ||
1878 | /* Record the fields for the semantic handler. */ | |
1879 | FLD (f_left) = f_left; | |
1880 | FLD (f_uimm6) = f_uimm6; | |
1881 | FLD (f_dest) = f_dest; | |
1882 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_sharil", "f_left 0x%x", 'x', f_left, "f_uimm6 0x%x", 'x', f_uimm6, "f_dest 0x%x", 'x', f_dest, (char *) 0)); | |
1883 | ||
1884 | #undef FLD | |
1885 | return idesc; | |
1886 | } | |
1887 | ||
1888 | extract_sfmt_shori: | |
1889 | { | |
1890 | const IDESC *idesc = &sh64_media_insn_data[itype]; | |
1891 | CGEN_INSN_INT insn = entire_insn; | |
1892 | #define FLD(f) abuf->fields.sfmt_shori.f | |
1893 | UINT f_uimm16; | |
1894 | UINT f_dest; | |
1895 | ||
1896 | f_uimm16 = EXTRACT_LSB0_UINT (insn, 32, 25, 16); | |
1897 | f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); | |
1898 | ||
1899 | /* Record the fields for the semantic handler. */ | |
1900 | FLD (f_dest) = f_dest; | |
1901 | FLD (f_uimm16) = f_uimm16; | |
1902 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_shori", "f_dest 0x%x", 'x', f_dest, "f_uimm16 0x%x", 'x', f_uimm16, (char *) 0)); | |
1903 | ||
1904 | #undef FLD | |
1905 | return idesc; | |
1906 | } | |
1907 | ||
1908 | extract_sfmt_stb: | |
1909 | { | |
1910 | const IDESC *idesc = &sh64_media_insn_data[itype]; | |
1911 | CGEN_INSN_INT insn = entire_insn; | |
1912 | #define FLD(f) abuf->fields.sfmt_addi.f | |
1913 | UINT f_left; | |
1914 | INT f_disp10; | |
1915 | UINT f_dest; | |
1916 | ||
1917 | f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); | |
1918 | f_disp10 = EXTRACT_LSB0_INT (insn, 32, 19, 10); | |
1919 | f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); | |
1920 | ||
1921 | /* Record the fields for the semantic handler. */ | |
1922 | FLD (f_disp10) = f_disp10; | |
1923 | FLD (f_dest) = f_dest; | |
1924 | FLD (f_left) = f_left; | |
1925 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_stb", "f_disp10 0x%x", 'x', f_disp10, "f_dest 0x%x", 'x', f_dest, "f_left 0x%x", 'x', f_left, (char *) 0)); | |
1926 | ||
1927 | #undef FLD | |
1928 | return idesc; | |
1929 | } | |
1930 | ||
1931 | extract_sfmt_stl: | |
1932 | { | |
1933 | const IDESC *idesc = &sh64_media_insn_data[itype]; | |
1934 | CGEN_INSN_INT insn = entire_insn; | |
1935 | #define FLD(f) abuf->fields.sfmt_flds.f | |
1936 | UINT f_left; | |
1937 | SI f_disp10x4; | |
1938 | UINT f_dest; | |
1939 | ||
1940 | f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); | |
1941 | f_disp10x4 = ((EXTRACT_LSB0_INT (insn, 32, 19, 10)) << (2)); | |
1942 | f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); | |
1943 | ||
1944 | /* Record the fields for the semantic handler. */ | |
1945 | FLD (f_disp10x4) = f_disp10x4; | |
1946 | FLD (f_dest) = f_dest; | |
1947 | FLD (f_left) = f_left; | |
1948 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_stl", "f_disp10x4 0x%x", 'x', f_disp10x4, "f_dest 0x%x", 'x', f_dest, "f_left 0x%x", 'x', f_left, (char *) 0)); | |
1949 | ||
1950 | #undef FLD | |
1951 | return idesc; | |
1952 | } | |
1953 | ||
1954 | extract_sfmt_stq: | |
1955 | { | |
1956 | const IDESC *idesc = &sh64_media_insn_data[itype]; | |
1957 | CGEN_INSN_INT insn = entire_insn; | |
1958 | #define FLD(f) abuf->fields.sfmt_fldd.f | |
1959 | UINT f_left; | |
1960 | SI f_disp10x8; | |
1961 | UINT f_dest; | |
1962 | ||
1963 | f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); | |
1964 | f_disp10x8 = ((EXTRACT_LSB0_INT (insn, 32, 19, 10)) << (3)); | |
1965 | f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); | |
1966 | ||
1967 | /* Record the fields for the semantic handler. */ | |
1968 | FLD (f_disp10x8) = f_disp10x8; | |
1969 | FLD (f_dest) = f_dest; | |
1970 | FLD (f_left) = f_left; | |
1971 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_stq", "f_disp10x8 0x%x", 'x', f_disp10x8, "f_dest 0x%x", 'x', f_dest, "f_left 0x%x", 'x', f_left, (char *) 0)); | |
1972 | ||
1973 | #undef FLD | |
1974 | return idesc; | |
1975 | } | |
1976 | ||
1977 | extract_sfmt_stw: | |
1978 | { | |
1979 | const IDESC *idesc = &sh64_media_insn_data[itype]; | |
1980 | CGEN_INSN_INT insn = entire_insn; | |
1981 | #define FLD(f) abuf->fields.sfmt_lduw.f | |
1982 | UINT f_left; | |
1983 | SI f_disp10x2; | |
1984 | UINT f_dest; | |
1985 | ||
1986 | f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); | |
1987 | f_disp10x2 = ((EXTRACT_LSB0_INT (insn, 32, 19, 10)) << (1)); | |
1988 | f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); | |
1989 | ||
1990 | /* Record the fields for the semantic handler. */ | |
1991 | FLD (f_disp10x2) = f_disp10x2; | |
1992 | FLD (f_dest) = f_dest; | |
1993 | FLD (f_left) = f_left; | |
1994 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_stw", "f_disp10x2 0x%x", 'x', f_disp10x2, "f_dest 0x%x", 'x', f_dest, "f_left 0x%x", 'x', f_left, (char *) 0)); | |
1995 | ||
1996 | #undef FLD | |
1997 | return idesc; | |
1998 | } | |
1999 | ||
2000 | extract_sfmt_sthil: | |
2001 | { | |
2002 | const IDESC *idesc = &sh64_media_insn_data[itype]; | |
2003 | CGEN_INSN_INT insn = entire_insn; | |
2004 | #define FLD(f) abuf->fields.sfmt_sthil.f | |
2005 | UINT f_left; | |
2006 | INT f_disp6; | |
2007 | UINT f_dest; | |
2008 | ||
2009 | f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); | |
2010 | f_disp6 = EXTRACT_LSB0_INT (insn, 32, 15, 6); | |
2011 | f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); | |
2012 | ||
2013 | /* Record the fields for the semantic handler. */ | |
2014 | FLD (f_disp6) = f_disp6; | |
2015 | FLD (f_dest) = f_dest; | |
2016 | FLD (f_left) = f_left; | |
2017 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_sthil", "f_disp6 0x%x", 'x', f_disp6, "f_dest 0x%x", 'x', f_dest, "f_left 0x%x", 'x', f_left, (char *) 0)); | |
2018 | ||
2019 | #undef FLD | |
2020 | return idesc; | |
2021 | } | |
2022 | ||
2023 | extract_sfmt_stxb: | |
2024 | { | |
2025 | const IDESC *idesc = &sh64_media_insn_data[itype]; | |
2026 | CGEN_INSN_INT insn = entire_insn; | |
2027 | #define FLD(f) abuf->fields.sfmt_add.f | |
2028 | UINT f_left; | |
2029 | UINT f_right; | |
2030 | UINT f_dest; | |
2031 | ||
2032 | f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); | |
2033 | f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6); | |
2034 | f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); | |
2035 | ||
2036 | /* Record the fields for the semantic handler. */ | |
2037 | FLD (f_dest) = f_dest; | |
2038 | FLD (f_left) = f_left; | |
2039 | FLD (f_right) = f_right; | |
2040 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_stxb", "f_dest 0x%x", 'x', f_dest, "f_left 0x%x", 'x', f_left, "f_right 0x%x", 'x', f_right, (char *) 0)); | |
2041 | ||
2042 | #undef FLD | |
2043 | return idesc; | |
2044 | } | |
2045 | ||
2046 | extract_sfmt_swapq: | |
2047 | { | |
2048 | const IDESC *idesc = &sh64_media_insn_data[itype]; | |
2049 | CGEN_INSN_INT insn = entire_insn; | |
2050 | #define FLD(f) abuf->fields.sfmt_add.f | |
2051 | UINT f_left; | |
2052 | UINT f_right; | |
2053 | UINT f_dest; | |
2054 | ||
2055 | f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); | |
2056 | f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6); | |
2057 | f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); | |
2058 | ||
2059 | /* Record the fields for the semantic handler. */ | |
2060 | FLD (f_dest) = f_dest; | |
2061 | FLD (f_left) = f_left; | |
2062 | FLD (f_right) = f_right; | |
2063 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_swapq", "f_dest 0x%x", 'x', f_dest, "f_left 0x%x", 'x', f_left, "f_right 0x%x", 'x', f_right, (char *) 0)); | |
2064 | ||
2065 | #undef FLD | |
2066 | return idesc; | |
2067 | } | |
2068 | ||
2069 | extract_sfmt_trapa: | |
2070 | { | |
2071 | const IDESC *idesc = &sh64_media_insn_data[itype]; | |
2072 | CGEN_INSN_INT insn = entire_insn; | |
2073 | #define FLD(f) abuf->fields.sfmt_xori.f | |
2074 | UINT f_left; | |
2075 | ||
2076 | f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); | |
2077 | ||
2078 | /* Record the fields for the semantic handler. */ | |
2079 | FLD (f_left) = f_left; | |
2080 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_trapa", "f_left 0x%x", 'x', f_left, (char *) 0)); | |
2081 | ||
2082 | #undef FLD | |
2083 | return idesc; | |
2084 | } | |
2085 | ||
2086 | extract_sfmt_xori: | |
2087 | { | |
2088 | const IDESC *idesc = &sh64_media_insn_data[itype]; | |
2089 | CGEN_INSN_INT insn = entire_insn; | |
2090 | #define FLD(f) abuf->fields.sfmt_xori.f | |
2091 | UINT f_left; | |
2092 | INT f_imm6; | |
2093 | UINT f_dest; | |
2094 | ||
2095 | f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6); | |
2096 | f_imm6 = EXTRACT_LSB0_INT (insn, 32, 15, 6); | |
2097 | f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6); | |
2098 | ||
2099 | /* Record the fields for the semantic handler. */ | |
2100 | FLD (f_imm6) = f_imm6; | |
2101 | FLD (f_left) = f_left; | |
2102 | FLD (f_dest) = f_dest; | |
2103 | TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_xori", "f_imm6 0x%x", 'x', f_imm6, "f_left 0x%x", 'x', f_left, "f_dest 0x%x", 'x', f_dest, (char *) 0)); | |
2104 | ||
2105 | #undef FLD | |
2106 | return idesc; | |
2107 | } | |
2108 | ||
2109 | } |