6c99baf1c048857481c3702c44376a17794c3611
[deliverable/binutils-gdb.git] / sim / sh64 / decode-media.c
1 /* Simulator instruction decoder for sh64_media.
2
3 THIS FILE IS MACHINE GENERATED WITH CGEN.
4
5 Copyright 1996-2010 Free Software Foundation, Inc.
6
7 This file is part of the GNU simulators.
8
9 This file 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 3, or (at your option)
12 any later version.
13
14 It is distributed in the hope that it will be useful, but WITHOUT
15 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
16 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
17 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 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, 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_FGETSCR },
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_FPUTSCR },
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_FLDP },
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_FLDXP },
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_GETCFG },
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_LDHIL },
140 { SH_INSN_LDHIQ, SH64_MEDIA_INSN_LDHIQ, SH64_MEDIA_SFMT_LDHIQ },
141 { SH_INSN_LDLOL, SH64_MEDIA_INSN_LDLOL, SH64_MEDIA_SFMT_LDLOL },
142 { SH_INSN_LDLOQ, SH64_MEDIA_INSN_LDLOQ, SH64_MEDIA_SFMT_LDLOQ },
143 { SH_INSN_LDXB, SH64_MEDIA_INSN_LDXB, SH64_MEDIA_SFMT_LDXB },
144 { SH_INSN_LDXL, SH64_MEDIA_INSN_LDXL, SH64_MEDIA_SFMT_LDXL },
145 { SH_INSN_LDXQ, SH64_MEDIA_INSN_LDXQ, SH64_MEDIA_SFMT_LDXQ },
146 { SH_INSN_LDXUB, SH64_MEDIA_INSN_LDXUB, SH64_MEDIA_SFMT_LDXUB },
147 { SH_INSN_LDXUW, SH64_MEDIA_INSN_LDXUW, SH64_MEDIA_SFMT_LDXUW },
148 { SH_INSN_LDXW, SH64_MEDIA_INSN_LDXW, SH64_MEDIA_SFMT_LDXW },
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_ADD },
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_NOP },
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_PUTCFG },
221 { SH_INSN_PUTCON, SH64_MEDIA_INSN_PUTCON, SH64_MEDIA_SFMT_PUTCON },
222 { SH_INSN_RTE, SH64_MEDIA_INSN_RTE, SH64_MEDIA_SFMT_NOP },
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_SHARI },
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_SHARI },
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_SHARI },
235 { SH_INSN_SHORI, SH64_MEDIA_INSN_SHORI, SH64_MEDIA_SFMT_SHORI },
236 { SH_INSN_SLEEP, SH64_MEDIA_INSN_SLEEP, SH64_MEDIA_SFMT_NOP },
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_STHIQ },
243 { SH_INSN_STLOL, SH64_MEDIA_INSN_STLOL, SH64_MEDIA_SFMT_STLOL },
244 { SH_INSN_STLOQ, SH64_MEDIA_INSN_STLOQ, SH64_MEDIA_SFMT_STLOQ },
245 { SH_INSN_STXB, SH64_MEDIA_INSN_STXB, SH64_MEDIA_SFMT_STXB },
246 { SH_INSN_STXL, SH64_MEDIA_INSN_STXL, SH64_MEDIA_SFMT_STXL },
247 { SH_INSN_STXQ, SH64_MEDIA_INSN_STXQ, SH64_MEDIA_SFMT_STXQ },
248 { SH_INSN_STXW, SH64_MEDIA_INSN_STXW, SH64_MEDIA_SFMT_STXW },
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_NOP },
253 { SH_INSN_SYNCO, SH64_MEDIA_INSN_SYNCO, SH64_MEDIA_SFMT_NOP },
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 {
261 VIRTUAL_INSN_X_INVALID, SH64_MEDIA_INSN_X_INVALID, SH64_MEDIA_SFMT_EMPTY
262 };
263
264 /* Initialize an IDESC from the compile-time computable parts. */
265
266 static INLINE void
267 init_idesc (SIM_CPU *cpu, IDESC *id, const struct insn_sem *t)
268 {
269 const CGEN_INSN *insn_table = CGEN_CPU_INSN_TABLE (CPU_CPU_DESC (cpu))->init_entries;
270
271 id->num = t->index;
272 id->sfmt = t->sfmt;
273 if ((int) t->type <= 0)
274 id->idata = & cgen_virtual_insn_table[- (int) t->type];
275 else
276 id->idata = & insn_table[t->type];
277 id->attrs = CGEN_INSN_ATTRS (id->idata);
278 /* Oh my god, a magic number. */
279 id->length = CGEN_INSN_BITSIZE (id->idata) / 8;
280
281 #if WITH_PROFILE_MODEL_P
282 id->timing = & MODEL_TIMING (CPU_MODEL (cpu)) [t->index];
283 {
284 SIM_DESC sd = CPU_STATE (cpu);
285 SIM_ASSERT (t->index == id->timing->num);
286 }
287 #endif
288
289 /* Semantic pointers are initialized elsewhere. */
290 }
291
292 /* Initialize the instruction descriptor table. */
293
294 void
295 sh64_media_init_idesc_table (SIM_CPU *cpu)
296 {
297 IDESC *id,*tabend;
298 const struct insn_sem *t,*tend;
299 int tabsize = SH64_MEDIA_INSN__MAX;
300 IDESC *table = sh64_media_insn_data;
301
302 memset (table, 0, tabsize * sizeof (IDESC));
303
304 /* First set all entries to the `invalid insn'. */
305 t = & sh64_media_insn_sem_invalid;
306 for (id = table, tabend = table + tabsize; id < tabend; ++id)
307 init_idesc (cpu, id, t);
308
309 /* Now fill in the values for the chosen cpu. */
310 for (t = sh64_media_insn_sem, tend = t + sizeof (sh64_media_insn_sem) / sizeof (*t);
311 t != tend; ++t)
312 {
313 init_idesc (cpu, & table[t->index], t);
314 }
315
316 /* Link the IDESC table into the cpu. */
317 CPU_IDESC (cpu) = table;
318 }
319
320 /* Given an instruction, return a pointer to its IDESC entry. */
321
322 const IDESC *
323 sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
324 CGEN_INSN_WORD base_insn, CGEN_INSN_WORD entire_insn,
325 ARGBUF *abuf)
326 {
327 /* Result of decoder. */
328 SH64_MEDIA_INSN_TYPE itype;
329
330 {
331 CGEN_INSN_WORD insn = base_insn;
332
333 {
334 unsigned int val = (((insn >> 22) & (63 << 4)) | ((insn >> 16) & (15 << 0)));
335 switch (val)
336 {
337 case 1 :
338 if ((entire_insn & 0xfc0f000f) == 0x10000)
339 { itype = SH64_MEDIA_INSN_CMPEQ; goto extract_sfmt_add; }
340 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
341 case 3 :
342 if ((entire_insn & 0xfc0f000f) == 0x30000)
343 { itype = SH64_MEDIA_INSN_CMPGT; goto extract_sfmt_add; }
344 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
345 case 7 :
346 if ((entire_insn & 0xfc0f000f) == 0x70000)
347 { itype = SH64_MEDIA_INSN_CMPGTU; goto extract_sfmt_add; }
348 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
349 case 8 :
350 if ((entire_insn & 0xfc0f000f) == 0x80000)
351 { itype = SH64_MEDIA_INSN_ADDL; goto extract_sfmt_add; }
352 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
353 case 9 :
354 if ((entire_insn & 0xfc0f000f) == 0x90000)
355 { itype = SH64_MEDIA_INSN_ADD; goto extract_sfmt_add; }
356 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
357 case 10 :
358 if ((entire_insn & 0xfc0f000f) == 0xa0000)
359 { itype = SH64_MEDIA_INSN_SUBL; goto extract_sfmt_add; }
360 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
361 case 11 :
362 if ((entire_insn & 0xfc0f000f) == 0xb0000)
363 { itype = SH64_MEDIA_INSN_SUB; goto extract_sfmt_add; }
364 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
365 case 12 :
366 if ((entire_insn & 0xfc0f000f) == 0xc0000)
367 { itype = SH64_MEDIA_INSN_ADDZL; goto extract_sfmt_add; }
368 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
369 case 13 :
370 if ((entire_insn & 0xfc0ffc0f) == 0xdfc00)
371 { itype = SH64_MEDIA_INSN_NSB; goto extract_sfmt_byterev; }
372 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
373 case 14 :
374 if ((entire_insn & 0xfc0f000f) == 0xe0000)
375 { itype = SH64_MEDIA_INSN_MULUL; goto extract_sfmt_add; }
376 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
377 case 15 :
378 if ((entire_insn & 0xfc0ffc0f) == 0xffc00)
379 { itype = SH64_MEDIA_INSN_BYTEREV; goto extract_sfmt_byterev; }
380 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
381 case 16 :
382 if ((entire_insn & 0xfc0f000f) == 0x4000000)
383 { itype = SH64_MEDIA_INSN_SHLLDL; goto extract_sfmt_add; }
384 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
385 case 17 :
386 if ((entire_insn & 0xfc0f000f) == 0x4010000)
387 { itype = SH64_MEDIA_INSN_SHLLD; goto extract_sfmt_add; }
388 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
389 case 18 :
390 if ((entire_insn & 0xfc0f000f) == 0x4020000)
391 { itype = SH64_MEDIA_INSN_SHLRDL; goto extract_sfmt_add; }
392 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
393 case 19 :
394 if ((entire_insn & 0xfc0f000f) == 0x4030000)
395 { itype = SH64_MEDIA_INSN_SHLRD; goto extract_sfmt_add; }
396 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
397 case 22 :
398 if ((entire_insn & 0xfc0f000f) == 0x4060000)
399 { itype = SH64_MEDIA_INSN_SHARDL; goto extract_sfmt_add; }
400 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
401 case 23 :
402 if ((entire_insn & 0xfc0f000f) == 0x4070000)
403 { itype = SH64_MEDIA_INSN_SHARD; goto extract_sfmt_add; }
404 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
405 case 25 :
406 if ((entire_insn & 0xfc0f000f) == 0x4090000)
407 { itype = SH64_MEDIA_INSN_OR; goto extract_sfmt_add; }
408 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
409 case 27 :
410 if ((entire_insn & 0xfc0f000f) == 0x40b0000)
411 { itype = SH64_MEDIA_INSN_AND; goto extract_sfmt_add; }
412 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
413 case 29 :
414 if ((entire_insn & 0xfc0f000f) == 0x40d0000)
415 { itype = SH64_MEDIA_INSN_XOR; goto extract_sfmt_add; }
416 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
417 case 30 :
418 if ((entire_insn & 0xfc0f000f) == 0x40e0000)
419 { itype = SH64_MEDIA_INSN_MULSL; goto extract_sfmt_add; }
420 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
421 case 31 :
422 if ((entire_insn & 0xfc0f000f) == 0x40f0000)
423 { itype = SH64_MEDIA_INSN_ANDC; goto extract_sfmt_add; }
424 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
425 case 33 :
426 if ((entire_insn & 0xfc0f000f) == 0x8010000)
427 { itype = SH64_MEDIA_INSN_MADDW; goto extract_sfmt_add; }
428 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
429 case 34 :
430 if ((entire_insn & 0xfc0f000f) == 0x8020000)
431 { itype = SH64_MEDIA_INSN_MADDL; goto extract_sfmt_add; }
432 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
433 case 36 :
434 if ((entire_insn & 0xfc0f000f) == 0x8040000)
435 { itype = SH64_MEDIA_INSN_MADDSUB; goto extract_sfmt_add; }
436 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
437 case 37 :
438 if ((entire_insn & 0xfc0f000f) == 0x8050000)
439 { itype = SH64_MEDIA_INSN_MADDSW; goto extract_sfmt_add; }
440 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
441 case 38 :
442 if ((entire_insn & 0xfc0f000f) == 0x8060000)
443 { itype = SH64_MEDIA_INSN_MADDSL; goto extract_sfmt_add; }
444 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
445 case 41 :
446 if ((entire_insn & 0xfc0f000f) == 0x8090000)
447 { itype = SH64_MEDIA_INSN_MSUBW; goto extract_sfmt_add; }
448 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
449 case 42 :
450 if ((entire_insn & 0xfc0f000f) == 0x80a0000)
451 { itype = SH64_MEDIA_INSN_MSUBL; goto extract_sfmt_add; }
452 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
453 case 44 :
454 if ((entire_insn & 0xfc0f000f) == 0x80c0000)
455 { itype = SH64_MEDIA_INSN_MSUBSUB; goto extract_sfmt_add; }
456 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
457 case 45 :
458 if ((entire_insn & 0xfc0f000f) == 0x80d0000)
459 { itype = SH64_MEDIA_INSN_MSUBSW; goto extract_sfmt_add; }
460 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
461 case 46 :
462 if ((entire_insn & 0xfc0f000f) == 0x80e0000)
463 { itype = SH64_MEDIA_INSN_MSUBSL; goto extract_sfmt_add; }
464 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
465 case 49 :
466 if ((entire_insn & 0xfc0f000f) == 0xc010000)
467 { itype = SH64_MEDIA_INSN_MSHLLDW; goto extract_sfmt_add; }
468 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
469 case 50 :
470 if ((entire_insn & 0xfc0f000f) == 0xc020000)
471 { itype = SH64_MEDIA_INSN_MSHLLDL; goto extract_sfmt_add; }
472 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
473 case 53 :
474 if ((entire_insn & 0xfc0f000f) == 0xc050000)
475 { itype = SH64_MEDIA_INSN_MSHALDSW; goto extract_sfmt_add; }
476 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
477 case 54 :
478 if ((entire_insn & 0xfc0f000f) == 0xc060000)
479 { itype = SH64_MEDIA_INSN_MSHALDSL; goto extract_sfmt_add; }
480 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
481 case 57 :
482 if ((entire_insn & 0xfc0f000f) == 0xc090000)
483 { itype = SH64_MEDIA_INSN_MSHARDW; goto extract_sfmt_add; }
484 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
485 case 58 :
486 if ((entire_insn & 0xfc0f000f) == 0xc0a0000)
487 { itype = SH64_MEDIA_INSN_MSHARDL; goto extract_sfmt_add; }
488 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
489 case 59 :
490 if ((entire_insn & 0xfc0f000f) == 0xc0b0000)
491 { itype = SH64_MEDIA_INSN_MSHARDSQ; goto extract_sfmt_add; }
492 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
493 case 61 :
494 if ((entire_insn & 0xfc0f000f) == 0xc0d0000)
495 { itype = SH64_MEDIA_INSN_MSHLRDW; goto extract_sfmt_add; }
496 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
497 case 62 :
498 if ((entire_insn & 0xfc0f000f) == 0xc0e0000)
499 { itype = SH64_MEDIA_INSN_MSHLRDL; goto extract_sfmt_add; }
500 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
501 case 86 :
502 if ((entire_insn & 0xfc0f000f) == 0x14060000)
503 { itype = SH64_MEDIA_INSN_FIPRS; goto extract_sfmt_fiprs; }
504 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
505 case 94 :
506 if ((entire_insn & 0xfc0f000f) == 0x140e0000)
507 { itype = SH64_MEDIA_INSN_FTRVS; goto extract_sfmt_ftrvs; }
508 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
509 case 96 :
510 if ((entire_insn & 0xfc0f000f) == 0x18000000)
511 { itype = SH64_MEDIA_INSN_FABSS; goto extract_sfmt_fabss; }
512 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
513 case 97 :
514 if ((entire_insn & 0xfc0f000f) == 0x18010000)
515 { itype = SH64_MEDIA_INSN_FABSD; goto extract_sfmt_fabsd; }
516 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
517 case 98 :
518 if ((entire_insn & 0xfc0f000f) == 0x18020000)
519 { itype = SH64_MEDIA_INSN_FNEGS; goto extract_sfmt_fabss; }
520 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
521 case 99 :
522 if ((entire_insn & 0xfc0f000f) == 0x18030000)
523 { itype = SH64_MEDIA_INSN_FNEGD; goto extract_sfmt_fabsd; }
524 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
525 case 112 :
526 if ((entire_insn & 0xfc0ffc0f) == 0x1c00fc00)
527 { itype = SH64_MEDIA_INSN_FMOVLS; goto extract_sfmt_fmovls; }
528 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
529 case 113 :
530 if ((entire_insn & 0xfc0ffc0f) == 0x1c01fc00)
531 { itype = SH64_MEDIA_INSN_FMOVQD; goto extract_sfmt_fmovqd; }
532 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
533 case 114 :
534 if ((entire_insn & 0xfffffc0f) == 0x1ff2fc00)
535 { itype = SH64_MEDIA_INSN_FGETSCR; goto extract_sfmt_fgetscr; }
536 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
537 case 120 :
538 if ((entire_insn & 0xfc0f000f) == 0x1c080000)
539 { itype = SH64_MEDIA_INSN_FLDXS; goto extract_sfmt_fldxs; }
540 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
541 case 121 :
542 if ((entire_insn & 0xfc0f000f) == 0x1c090000)
543 { itype = SH64_MEDIA_INSN_FLDXD; goto extract_sfmt_fldxd; }
544 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
545 case 125 :
546 if ((entire_insn & 0xfc0f000f) == 0x1c0d0000)
547 { itype = SH64_MEDIA_INSN_FLDXP; goto extract_sfmt_fldxp; }
548 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
549 case 129 :
550 if ((entire_insn & 0xfc0f000f) == 0x20010000)
551 { itype = SH64_MEDIA_INSN_CMVEQ; goto extract_sfmt_cmveq; }
552 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
553 case 131 :
554 if ((entire_insn & 0xfc0f000f) == 0x20030000)
555 { itype = SH64_MEDIA_INSN_SWAPQ; goto extract_sfmt_swapq; }
556 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
557 case 133 :
558 if ((entire_insn & 0xfc0f000f) == 0x20050000)
559 { itype = SH64_MEDIA_INSN_CMVNE; goto extract_sfmt_cmveq; }
560 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
561 case 159 :
562 if ((entire_insn & 0xfc0ffc0f) == 0x240ffc00)
563 { itype = SH64_MEDIA_INSN_GETCON; goto extract_sfmt_getcon; }
564 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
565 case 160 :
566 if ((entire_insn & 0xfc0f000f) == 0x28000000)
567 { itype = SH64_MEDIA_INSN_MCMPEQB; goto extract_sfmt_add; }
568 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
569 case 161 :
570 if ((entire_insn & 0xfc0f000f) == 0x28010000)
571 { itype = SH64_MEDIA_INSN_MCMPEQW; goto extract_sfmt_add; }
572 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
573 case 162 :
574 if ((entire_insn & 0xfc0f000f) == 0x28020000)
575 { itype = SH64_MEDIA_INSN_MCMPEQL; goto extract_sfmt_add; }
576 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
577 case 164 :
578 if ((entire_insn & 0xfc0f000f) == 0x28040000)
579 { itype = SH64_MEDIA_INSN_MCMPGTUB; goto extract_sfmt_add; }
580 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
581 case 165 :
582 if ((entire_insn & 0xfc0f000f) == 0x28050000)
583 { itype = SH64_MEDIA_INSN_MCMPGTW; goto extract_sfmt_add; }
584 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
585 case 166 :
586 if ((entire_insn & 0xfc0f000f) == 0x28060000)
587 { itype = SH64_MEDIA_INSN_MCMPGTL; goto extract_sfmt_add; }
588 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
589 case 167 :
590 if ((entire_insn & 0xfc0f000f) == 0x28070000)
591 { itype = SH64_MEDIA_INSN_MEXTR1; goto extract_sfmt_add; }
592 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
593 case 169 :
594 if ((entire_insn & 0xfc0ffc0f) == 0x2809fc00)
595 { itype = SH64_MEDIA_INSN_MABSW; goto extract_sfmt_byterev; }
596 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
597 case 170 :
598 if ((entire_insn & 0xfc0ffc0f) == 0x280afc00)
599 { itype = SH64_MEDIA_INSN_MABSL; goto extract_sfmt_byterev; }
600 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
601 case 171 :
602 if ((entire_insn & 0xfc0f000f) == 0x280b0000)
603 { itype = SH64_MEDIA_INSN_MEXTR2; goto extract_sfmt_add; }
604 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
605 case 173 :
606 if ((entire_insn & 0xfc0f000f) == 0x280d0000)
607 { itype = SH64_MEDIA_INSN_MPERMW; goto extract_sfmt_add; }
608 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
609 case 175 :
610 if ((entire_insn & 0xfc0f000f) == 0x280f0000)
611 { itype = SH64_MEDIA_INSN_MEXTR3; goto extract_sfmt_add; }
612 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
613 case 176 :
614 if ((entire_insn & 0xfc0f000f) == 0x2c000000)
615 { itype = SH64_MEDIA_INSN_MSHFLOB; goto extract_sfmt_add; }
616 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
617 case 177 :
618 if ((entire_insn & 0xfc0f000f) == 0x2c010000)
619 { itype = SH64_MEDIA_INSN_MSHFLOW; goto extract_sfmt_add; }
620 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
621 case 178 :
622 if ((entire_insn & 0xfc0f000f) == 0x2c020000)
623 { itype = SH64_MEDIA_INSN_MSHFLOL; goto extract_sfmt_add; }
624 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
625 case 179 :
626 if ((entire_insn & 0xfc0f000f) == 0x2c030000)
627 { itype = SH64_MEDIA_INSN_MEXTR4; goto extract_sfmt_add; }
628 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
629 case 180 :
630 if ((entire_insn & 0xfc0f000f) == 0x2c040000)
631 { itype = SH64_MEDIA_INSN_MSHFHIB; goto extract_sfmt_add; }
632 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
633 case 181 :
634 if ((entire_insn & 0xfc0f000f) == 0x2c050000)
635 { itype = SH64_MEDIA_INSN_MSHFHIW; goto extract_sfmt_add; }
636 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
637 case 182 :
638 if ((entire_insn & 0xfc0f000f) == 0x2c060000)
639 { itype = SH64_MEDIA_INSN_MSHFHIL; goto extract_sfmt_add; }
640 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
641 case 183 :
642 if ((entire_insn & 0xfc0f000f) == 0x2c070000)
643 { itype = SH64_MEDIA_INSN_MEXTR5; goto extract_sfmt_add; }
644 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
645 case 187 :
646 if ((entire_insn & 0xfc0f000f) == 0x2c0b0000)
647 { itype = SH64_MEDIA_INSN_MEXTR6; goto extract_sfmt_add; }
648 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
649 case 191 :
650 if ((entire_insn & 0xfc0f000f) == 0x2c0f0000)
651 { itype = SH64_MEDIA_INSN_MEXTR7; goto extract_sfmt_add; }
652 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
653 case 192 :
654 if ((entire_insn & 0xfc0f000f) == 0x30000000)
655 { itype = SH64_MEDIA_INSN_FMOVSL; goto extract_sfmt_fmovsl; }
656 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
657 case 193 :
658 if ((entire_insn & 0xfc0f000f) == 0x30010000)
659 { itype = SH64_MEDIA_INSN_FMOVDQ; goto extract_sfmt_fmovdq; }
660 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
661 case 194 :
662 if ((entire_insn & 0xfc0f03ff) == 0x300203f0)
663 { itype = SH64_MEDIA_INSN_FPUTSCR; goto extract_sfmt_fputscr; }
664 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
665 case 200 :
666 if ((entire_insn & 0xfc0f000f) == 0x30080000)
667 { itype = SH64_MEDIA_INSN_FCMPEQS; goto extract_sfmt_fcmpeqs; }
668 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
669 case 201 :
670 if ((entire_insn & 0xfc0f000f) == 0x30090000)
671 { itype = SH64_MEDIA_INSN_FCMPEQD; goto extract_sfmt_fcmpeqd; }
672 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
673 case 202 :
674 if ((entire_insn & 0xfc0f000f) == 0x300a0000)
675 { itype = SH64_MEDIA_INSN_FCMPUNS; goto extract_sfmt_fcmpeqs; }
676 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
677 case 203 :
678 if ((entire_insn & 0xfc0f000f) == 0x300b0000)
679 { itype = SH64_MEDIA_INSN_FCMPUND; goto extract_sfmt_fcmpeqd; }
680 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
681 case 204 :
682 if ((entire_insn & 0xfc0f000f) == 0x300c0000)
683 { itype = SH64_MEDIA_INSN_FCMPGTS; goto extract_sfmt_fcmpeqs; }
684 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
685 case 205 :
686 if ((entire_insn & 0xfc0f000f) == 0x300d0000)
687 { itype = SH64_MEDIA_INSN_FCMPGTD; goto extract_sfmt_fcmpeqd; }
688 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
689 case 206 :
690 if ((entire_insn & 0xfc0f000f) == 0x300e0000)
691 { itype = SH64_MEDIA_INSN_FCMPGES; goto extract_sfmt_fcmpeqs; }
692 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
693 case 207 :
694 if ((entire_insn & 0xfc0f000f) == 0x300f0000)
695 { itype = SH64_MEDIA_INSN_FCMPGED; goto extract_sfmt_fcmpeqd; }
696 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
697 case 208 :
698 if ((entire_insn & 0xfc0f000f) == 0x34000000)
699 { itype = SH64_MEDIA_INSN_FADDS; goto extract_sfmt_fadds; }
700 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
701 case 209 :
702 if ((entire_insn & 0xfc0f000f) == 0x34010000)
703 { itype = SH64_MEDIA_INSN_FADDD; goto extract_sfmt_faddd; }
704 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
705 case 210 :
706 if ((entire_insn & 0xfc0f000f) == 0x34020000)
707 { itype = SH64_MEDIA_INSN_FSUBS; goto extract_sfmt_fadds; }
708 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
709 case 211 :
710 if ((entire_insn & 0xfc0f000f) == 0x34030000)
711 { itype = SH64_MEDIA_INSN_FSUBD; goto extract_sfmt_faddd; }
712 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
713 case 212 :
714 if ((entire_insn & 0xfc0f000f) == 0x34040000)
715 { itype = SH64_MEDIA_INSN_FDIVS; goto extract_sfmt_fadds; }
716 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
717 case 213 :
718 if ((entire_insn & 0xfc0f000f) == 0x34050000)
719 { itype = SH64_MEDIA_INSN_FDIVD; goto extract_sfmt_faddd; }
720 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
721 case 214 :
722 if ((entire_insn & 0xfc0f000f) == 0x34060000)
723 { itype = SH64_MEDIA_INSN_FMULS; goto extract_sfmt_fadds; }
724 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
725 case 215 :
726 if ((entire_insn & 0xfc0f000f) == 0x34070000)
727 { itype = SH64_MEDIA_INSN_FMULD; goto extract_sfmt_faddd; }
728 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
729 case 222 :
730 if ((entire_insn & 0xfc0f000f) == 0x340e0000)
731 { itype = SH64_MEDIA_INSN_FMACS; goto extract_sfmt_fmacs; }
732 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
733 case 224 :
734 if ((entire_insn & 0xfc0f000f) == 0x38000000)
735 { itype = SH64_MEDIA_INSN_FMOVS; goto extract_sfmt_fabss; }
736 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
737 case 225 :
738 if ((entire_insn & 0xfc0f000f) == 0x38010000)
739 { itype = SH64_MEDIA_INSN_FMOVD; goto extract_sfmt_fabsd; }
740 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
741 case 228 :
742 if ((entire_insn & 0xfc0f000f) == 0x38040000)
743 { itype = SH64_MEDIA_INSN_FSQRTS; goto extract_sfmt_fabss; }
744 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
745 case 229 :
746 if ((entire_insn & 0xfc0f000f) == 0x38050000)
747 { itype = SH64_MEDIA_INSN_FSQRTD; goto extract_sfmt_fabsd; }
748 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
749 case 230 :
750 if ((entire_insn & 0xfc0f000f) == 0x38060000)
751 { itype = SH64_MEDIA_INSN_FCNVSD; goto extract_sfmt_fcnvsd; }
752 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
753 case 231 :
754 if ((entire_insn & 0xfc0f000f) == 0x38070000)
755 { itype = SH64_MEDIA_INSN_FCNVDS; goto extract_sfmt_fcnvds; }
756 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
757 case 232 :
758 if ((entire_insn & 0xfc0f000f) == 0x38080000)
759 { itype = SH64_MEDIA_INSN_FTRCSL; goto extract_sfmt_fabss; }
760 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
761 case 233 :
762 if ((entire_insn & 0xfc0f000f) == 0x38090000)
763 { itype = SH64_MEDIA_INSN_FTRCDQ; goto extract_sfmt_fabsd; }
764 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
765 case 234 :
766 if ((entire_insn & 0xfc0f000f) == 0x380a0000)
767 { itype = SH64_MEDIA_INSN_FTRCSQ; goto extract_sfmt_fcnvsd; }
768 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
769 case 235 :
770 if ((entire_insn & 0xfc0f000f) == 0x380b0000)
771 { itype = SH64_MEDIA_INSN_FTRCDL; goto extract_sfmt_fcnvds; }
772 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
773 case 236 :
774 if ((entire_insn & 0xfc0f000f) == 0x380c0000)
775 { itype = SH64_MEDIA_INSN_FLOATLS; goto extract_sfmt_fabss; }
776 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
777 case 237 :
778 if ((entire_insn & 0xfc0f000f) == 0x380d0000)
779 { itype = SH64_MEDIA_INSN_FLOATQD; goto extract_sfmt_fabsd; }
780 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
781 case 238 :
782 if ((entire_insn & 0xfc0f000f) == 0x380e0000)
783 { itype = SH64_MEDIA_INSN_FLOATLD; goto extract_sfmt_fcnvsd; }
784 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
785 case 239 :
786 if ((entire_insn & 0xfc0f000f) == 0x380f0000)
787 { itype = SH64_MEDIA_INSN_FLOATQS; goto extract_sfmt_fcnvds; }
788 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
789 case 248 :
790 if ((entire_insn & 0xfc0f000f) == 0x3c080000)
791 { itype = SH64_MEDIA_INSN_FSTXS; goto extract_sfmt_fstxs; }
792 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
793 case 249 :
794 if ((entire_insn & 0xfc0f000f) == 0x3c090000)
795 { itype = SH64_MEDIA_INSN_FSTXD; goto extract_sfmt_fstxd; }
796 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
797 case 253 :
798 if ((entire_insn & 0xfc0f000f) == 0x3c0d0000)
799 { itype = SH64_MEDIA_INSN_FSTXP; goto extract_sfmt_fldxp; }
800 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
801 case 256 :
802 if ((entire_insn & 0xfc0f000f) == 0x40000000)
803 { itype = SH64_MEDIA_INSN_LDXB; goto extract_sfmt_ldxb; }
804 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
805 case 257 :
806 if ((entire_insn & 0xfc0f000f) == 0x40010000)
807 { itype = SH64_MEDIA_INSN_LDXW; goto extract_sfmt_ldxw; }
808 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
809 case 258 :
810 if ((entire_insn & 0xfc0f000f) == 0x40020000)
811 { itype = SH64_MEDIA_INSN_LDXL; goto extract_sfmt_ldxl; }
812 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
813 case 259 :
814 if ((entire_insn & 0xfc0f000f) == 0x40030000)
815 { itype = SH64_MEDIA_INSN_LDXQ; goto extract_sfmt_ldxq; }
816 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
817 case 260 :
818 if ((entire_insn & 0xfc0f000f) == 0x40040000)
819 { itype = SH64_MEDIA_INSN_LDXUB; goto extract_sfmt_ldxub; }
820 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
821 case 261 :
822 if ((entire_insn & 0xfc0f000f) == 0x40050000)
823 { itype = SH64_MEDIA_INSN_LDXUW; goto extract_sfmt_ldxuw; }
824 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
825 case 273 :
826 if ((entire_insn & 0xff8ffc0f) == 0x4401fc00)
827 { itype = SH64_MEDIA_INSN_BLINK; goto extract_sfmt_blink; }
828 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
829 case 277 :
830 if ((entire_insn & 0xff8ffc0f) == 0x4405fc00)
831 { itype = SH64_MEDIA_INSN_GETTR; goto extract_sfmt_gettr; }
832 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
833 case 288 :
834 if ((entire_insn & 0xfc0f000f) == 0x48000000)
835 { itype = SH64_MEDIA_INSN_MSADUBQ; goto extract_sfmt_mcmv; }
836 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
837 case 289 :
838 if ((entire_insn & 0xfc0f000f) == 0x48010000)
839 { itype = SH64_MEDIA_INSN_MMACFXWL; goto extract_sfmt_mcmv; }
840 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
841 case 291 :
842 if ((entire_insn & 0xfc0f000f) == 0x48030000)
843 { itype = SH64_MEDIA_INSN_MCMV; goto extract_sfmt_mcmv; }
844 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
845 case 293 :
846 if ((entire_insn & 0xfc0f000f) == 0x48050000)
847 { itype = SH64_MEDIA_INSN_MMACNFX_WL; goto extract_sfmt_mcmv; }
848 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
849 case 297 :
850 if ((entire_insn & 0xfc0f000f) == 0x48090000)
851 { itype = SH64_MEDIA_INSN_MMULSUMWQ; goto extract_sfmt_mcmv; }
852 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
853 case 305 :
854 if ((entire_insn & 0xfc0f000f) == 0x4c010000)
855 { itype = SH64_MEDIA_INSN_MMULW; goto extract_sfmt_add; }
856 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
857 case 306 :
858 if ((entire_insn & 0xfc0f000f) == 0x4c020000)
859 { itype = SH64_MEDIA_INSN_MMULL; goto extract_sfmt_add; }
860 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
861 case 309 :
862 if ((entire_insn & 0xfc0f000f) == 0x4c050000)
863 { itype = SH64_MEDIA_INSN_MMULFXW; goto extract_sfmt_add; }
864 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
865 case 310 :
866 if ((entire_insn & 0xfc0f000f) == 0x4c060000)
867 { itype = SH64_MEDIA_INSN_MMULFXL; goto extract_sfmt_add; }
868 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
869 case 312 :
870 if ((entire_insn & 0xfc0f000f) == 0x4c080000)
871 { itype = SH64_MEDIA_INSN_MCNVSWB; goto extract_sfmt_add; }
872 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
873 case 313 :
874 if ((entire_insn & 0xfc0f000f) == 0x4c090000)
875 { itype = SH64_MEDIA_INSN_MMULFXRPW; goto extract_sfmt_add; }
876 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
877 case 314 :
878 if ((entire_insn & 0xfc0f000f) == 0x4c0a0000)
879 { itype = SH64_MEDIA_INSN_MMULLOWL; goto extract_sfmt_add; }
880 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
881 case 316 :
882 if ((entire_insn & 0xfc0f000f) == 0x4c0c0000)
883 { itype = SH64_MEDIA_INSN_MCNVSWUB; goto extract_sfmt_add; }
884 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
885 case 317 :
886 if ((entire_insn & 0xfc0f000f) == 0x4c0d0000)
887 { itype = SH64_MEDIA_INSN_MCNVSLW; goto extract_sfmt_add; }
888 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
889 case 318 :
890 if ((entire_insn & 0xfc0f000f) == 0x4c0e0000)
891 { itype = SH64_MEDIA_INSN_MMULHIWL; goto extract_sfmt_add; }
892 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
893 case 384 :
894 if ((entire_insn & 0xfc0f000f) == 0x60000000)
895 { itype = SH64_MEDIA_INSN_STXB; goto extract_sfmt_stxb; }
896 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
897 case 385 :
898 if ((entire_insn & 0xfc0f000f) == 0x60010000)
899 { itype = SH64_MEDIA_INSN_STXW; goto extract_sfmt_stxw; }
900 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
901 case 386 :
902 if ((entire_insn & 0xfc0f000f) == 0x60020000)
903 { itype = SH64_MEDIA_INSN_STXL; goto extract_sfmt_stxl; }
904 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
905 case 387 :
906 if ((entire_insn & 0xfc0f000f) == 0x60030000)
907 { itype = SH64_MEDIA_INSN_STXQ; goto extract_sfmt_stxq; }
908 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
909 case 401 :
910 if ((entire_insn & 0xfc0f018f) == 0x64010000)
911 { itype = SH64_MEDIA_INSN_BEQ; goto extract_sfmt_beq; }
912 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
913 case 403 :
914 if ((entire_insn & 0xfc0f018f) == 0x64030000)
915 { itype = SH64_MEDIA_INSN_BGE; goto extract_sfmt_beq; }
916 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
917 case 405 :
918 if ((entire_insn & 0xfc0f018f) == 0x64050000)
919 { itype = SH64_MEDIA_INSN_BNE; goto extract_sfmt_beq; }
920 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
921 case 407 :
922 if ((entire_insn & 0xfc0f018f) == 0x64070000)
923 { itype = SH64_MEDIA_INSN_BGT; goto extract_sfmt_beq; }
924 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
925 case 411 :
926 if ((entire_insn & 0xfc0f018f) == 0x640b0000)
927 { itype = SH64_MEDIA_INSN_BGEU; goto extract_sfmt_beq; }
928 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
929 case 415 :
930 if ((entire_insn & 0xfc0f018f) == 0x640f0000)
931 { itype = SH64_MEDIA_INSN_BGTU; goto extract_sfmt_beq; }
932 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
933 case 417 :
934 if ((entire_insn & 0xffff018f) == 0x6bf10000)
935 { itype = SH64_MEDIA_INSN_PTABS; goto extract_sfmt_ptabs; }
936 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
937 case 421 :
938 if ((entire_insn & 0xffff018f) == 0x6bf50000)
939 { itype = SH64_MEDIA_INSN_PTREL; goto extract_sfmt_ptrel; }
940 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
941 case 432 :
942 if ((entire_insn & 0xffffffff) == 0x6ff0fff0)
943 { itype = SH64_MEDIA_INSN_NOP; goto extract_sfmt_nop; }
944 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
945 case 433 :
946 if ((entire_insn & 0xfc0fffff) == 0x6c01fff0)
947 { itype = SH64_MEDIA_INSN_TRAPA; goto extract_sfmt_trapa; }
948 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
949 case 434 :
950 if ((entire_insn & 0xffffffff) == 0x6ff2fff0)
951 { itype = SH64_MEDIA_INSN_SYNCI; goto extract_sfmt_nop; }
952 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
953 case 435 :
954 if ((entire_insn & 0xffffffff) == 0x6ff3fff0)
955 { itype = SH64_MEDIA_INSN_RTE; goto extract_sfmt_nop; }
956 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
957 case 437 :
958 if ((entire_insn & 0xffffffff) == 0x6ff5fff0)
959 { itype = SH64_MEDIA_INSN_BRK; goto extract_sfmt_brk; }
960 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
961 case 438 :
962 if ((entire_insn & 0xffffffff) == 0x6ff6fff0)
963 { itype = SH64_MEDIA_INSN_SYNCO; goto extract_sfmt_nop; }
964 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
965 case 439 :
966 if ((entire_insn & 0xffffffff) == 0x6ff7fff0)
967 { itype = SH64_MEDIA_INSN_SLEEP; goto extract_sfmt_nop; }
968 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
969 case 447 :
970 if ((entire_insn & 0xfc0ffc0f) == 0x6c0ffc00)
971 { itype = SH64_MEDIA_INSN_PUTCON; goto extract_sfmt_putcon; }
972 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
973 case 512 : /* fall through */
974 case 513 : /* fall through */
975 case 514 : /* fall through */
976 case 515 : /* fall through */
977 case 516 : /* fall through */
978 case 517 : /* fall through */
979 case 518 : /* fall through */
980 case 519 : /* fall through */
981 case 520 : /* fall through */
982 case 521 : /* fall through */
983 case 522 : /* fall through */
984 case 523 : /* fall through */
985 case 524 : /* fall through */
986 case 525 : /* fall through */
987 case 526 : /* fall through */
988 case 527 :
989 if ((entire_insn & 0xfc00000f) == 0x80000000)
990 { itype = SH64_MEDIA_INSN_LDB; goto extract_sfmt_ldb; }
991 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
992 case 528 : /* fall through */
993 case 529 : /* fall through */
994 case 530 : /* fall through */
995 case 531 : /* fall through */
996 case 532 : /* fall through */
997 case 533 : /* fall through */
998 case 534 : /* fall through */
999 case 535 : /* fall through */
1000 case 536 : /* fall through */
1001 case 537 : /* fall through */
1002 case 538 : /* fall through */
1003 case 539 : /* fall through */
1004 case 540 : /* fall through */
1005 case 541 : /* fall through */
1006 case 542 : /* fall through */
1007 case 543 :
1008 if ((entire_insn & 0xfc00000f) == 0x84000000)
1009 { itype = SH64_MEDIA_INSN_LDW; goto extract_sfmt_lduw; }
1010 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1011 case 544 : /* fall through */
1012 case 545 : /* fall through */
1013 case 546 : /* fall through */
1014 case 547 : /* fall through */
1015 case 548 : /* fall through */
1016 case 549 : /* fall through */
1017 case 550 : /* fall through */
1018 case 551 : /* fall through */
1019 case 552 : /* fall through */
1020 case 553 : /* fall through */
1021 case 554 : /* fall through */
1022 case 555 : /* fall through */
1023 case 556 : /* fall through */
1024 case 557 : /* fall through */
1025 case 558 : /* fall through */
1026 case 559 :
1027 if ((entire_insn & 0xfc00000f) == 0x88000000)
1028 { itype = SH64_MEDIA_INSN_LDL; goto extract_sfmt_ldl; }
1029 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1030 case 560 : /* fall through */
1031 case 561 : /* fall through */
1032 case 562 : /* fall through */
1033 case 563 : /* fall through */
1034 case 564 : /* fall through */
1035 case 565 : /* fall through */
1036 case 566 : /* fall through */
1037 case 567 : /* fall through */
1038 case 568 : /* fall through */
1039 case 569 : /* fall through */
1040 case 570 : /* fall through */
1041 case 571 : /* fall through */
1042 case 572 : /* fall through */
1043 case 573 : /* fall through */
1044 case 574 : /* fall through */
1045 case 575 :
1046 if ((entire_insn & 0xfc00000f) == 0x8c000000)
1047 { itype = SH64_MEDIA_INSN_LDQ; goto extract_sfmt_ldq; }
1048 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1049 case 576 : /* fall through */
1050 case 577 : /* fall through */
1051 case 578 : /* fall through */
1052 case 579 : /* fall through */
1053 case 580 : /* fall through */
1054 case 581 : /* fall through */
1055 case 582 : /* fall through */
1056 case 583 : /* fall through */
1057 case 584 : /* fall through */
1058 case 585 : /* fall through */
1059 case 586 : /* fall through */
1060 case 587 : /* fall through */
1061 case 588 : /* fall through */
1062 case 589 : /* fall through */
1063 case 590 : /* fall through */
1064 case 591 :
1065 if ((entire_insn & 0xfc00000f) == 0x90000000)
1066 { itype = SH64_MEDIA_INSN_LDUB; goto extract_sfmt_ldb; }
1067 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1068 case 592 : /* fall through */
1069 case 593 : /* fall through */
1070 case 594 : /* fall through */
1071 case 595 : /* fall through */
1072 case 596 : /* fall through */
1073 case 597 : /* fall through */
1074 case 598 : /* fall through */
1075 case 599 : /* fall through */
1076 case 600 : /* fall through */
1077 case 601 : /* fall through */
1078 case 602 : /* fall through */
1079 case 603 : /* fall through */
1080 case 604 : /* fall through */
1081 case 605 : /* fall through */
1082 case 606 : /* fall through */
1083 case 607 :
1084 if ((entire_insn & 0xfc00000f) == 0x94000000)
1085 { itype = SH64_MEDIA_INSN_FLDS; goto extract_sfmt_flds; }
1086 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1087 case 608 : /* fall through */
1088 case 609 : /* fall through */
1089 case 610 : /* fall through */
1090 case 611 : /* fall through */
1091 case 612 : /* fall through */
1092 case 613 : /* fall through */
1093 case 614 : /* fall through */
1094 case 615 : /* fall through */
1095 case 616 : /* fall through */
1096 case 617 : /* fall through */
1097 case 618 : /* fall through */
1098 case 619 : /* fall through */
1099 case 620 : /* fall through */
1100 case 621 : /* fall through */
1101 case 622 : /* fall through */
1102 case 623 :
1103 if ((entire_insn & 0xfc00000f) == 0x98000000)
1104 { itype = SH64_MEDIA_INSN_FLDP; goto extract_sfmt_fldp; }
1105 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1106 case 624 : /* fall through */
1107 case 625 : /* fall through */
1108 case 626 : /* fall through */
1109 case 627 : /* fall through */
1110 case 628 : /* fall through */
1111 case 629 : /* fall through */
1112 case 630 : /* fall through */
1113 case 631 : /* fall through */
1114 case 632 : /* fall through */
1115 case 633 : /* fall through */
1116 case 634 : /* fall through */
1117 case 635 : /* fall through */
1118 case 636 : /* fall through */
1119 case 637 : /* fall through */
1120 case 638 : /* fall through */
1121 case 639 :
1122 if ((entire_insn & 0xfc00000f) == 0x9c000000)
1123 { itype = SH64_MEDIA_INSN_FLDD; goto extract_sfmt_fldd; }
1124 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1125 case 640 : /* fall through */
1126 case 641 : /* fall through */
1127 case 642 : /* fall through */
1128 case 643 : /* fall through */
1129 case 644 : /* fall through */
1130 case 645 : /* fall through */
1131 case 646 : /* fall through */
1132 case 647 : /* fall through */
1133 case 648 : /* fall through */
1134 case 649 : /* fall through */
1135 case 650 : /* fall through */
1136 case 651 : /* fall through */
1137 case 652 : /* fall through */
1138 case 653 : /* fall through */
1139 case 654 : /* fall through */
1140 case 655 :
1141 if ((entire_insn & 0xfc00000f) == 0xa0000000)
1142 { itype = SH64_MEDIA_INSN_STB; goto extract_sfmt_stb; }
1143 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1144 case 656 : /* fall through */
1145 case 657 : /* fall through */
1146 case 658 : /* fall through */
1147 case 659 : /* fall through */
1148 case 660 : /* fall through */
1149 case 661 : /* fall through */
1150 case 662 : /* fall through */
1151 case 663 : /* fall through */
1152 case 664 : /* fall through */
1153 case 665 : /* fall through */
1154 case 666 : /* fall through */
1155 case 667 : /* fall through */
1156 case 668 : /* fall through */
1157 case 669 : /* fall through */
1158 case 670 : /* fall through */
1159 case 671 :
1160 if ((entire_insn & 0xfc00000f) == 0xa4000000)
1161 { itype = SH64_MEDIA_INSN_STW; goto extract_sfmt_stw; }
1162 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1163 case 672 : /* fall through */
1164 case 673 : /* fall through */
1165 case 674 : /* fall through */
1166 case 675 : /* fall through */
1167 case 676 : /* fall through */
1168 case 677 : /* fall through */
1169 case 678 : /* fall through */
1170 case 679 : /* fall through */
1171 case 680 : /* fall through */
1172 case 681 : /* fall through */
1173 case 682 : /* fall through */
1174 case 683 : /* fall through */
1175 case 684 : /* fall through */
1176 case 685 : /* fall through */
1177 case 686 : /* fall through */
1178 case 687 :
1179 if ((entire_insn & 0xfc00000f) == 0xa8000000)
1180 { itype = SH64_MEDIA_INSN_STL; goto extract_sfmt_stl; }
1181 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1182 case 688 : /* fall through */
1183 case 689 : /* fall through */
1184 case 690 : /* fall through */
1185 case 691 : /* fall through */
1186 case 692 : /* fall through */
1187 case 693 : /* fall through */
1188 case 694 : /* fall through */
1189 case 695 : /* fall through */
1190 case 696 : /* fall through */
1191 case 697 : /* fall through */
1192 case 698 : /* fall through */
1193 case 699 : /* fall through */
1194 case 700 : /* fall through */
1195 case 701 : /* fall through */
1196 case 702 : /* fall through */
1197 case 703 :
1198 if ((entire_insn & 0xfc00000f) == 0xac000000)
1199 { itype = SH64_MEDIA_INSN_STQ; goto extract_sfmt_stq; }
1200 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1201 case 704 : /* fall through */
1202 case 705 : /* fall through */
1203 case 706 : /* fall through */
1204 case 707 : /* fall through */
1205 case 708 : /* fall through */
1206 case 709 : /* fall through */
1207 case 710 : /* fall through */
1208 case 711 : /* fall through */
1209 case 712 : /* fall through */
1210 case 713 : /* fall through */
1211 case 714 : /* fall through */
1212 case 715 : /* fall through */
1213 case 716 : /* fall through */
1214 case 717 : /* fall through */
1215 case 718 : /* fall through */
1216 case 719 :
1217 if ((entire_insn & 0xfc00000f) == 0xb0000000)
1218 { itype = SH64_MEDIA_INSN_LDUW; goto extract_sfmt_lduw; }
1219 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1220 case 720 : /* fall through */
1221 case 721 : /* fall through */
1222 case 722 : /* fall through */
1223 case 723 : /* fall through */
1224 case 724 : /* fall through */
1225 case 725 : /* fall through */
1226 case 726 : /* fall through */
1227 case 727 : /* fall through */
1228 case 728 : /* fall through */
1229 case 729 : /* fall through */
1230 case 730 : /* fall through */
1231 case 731 : /* fall through */
1232 case 732 : /* fall through */
1233 case 733 : /* fall through */
1234 case 734 : /* fall through */
1235 case 735 :
1236 if ((entire_insn & 0xfc00000f) == 0xb4000000)
1237 { itype = SH64_MEDIA_INSN_FSTS; goto extract_sfmt_fsts; }
1238 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1239 case 736 : /* fall through */
1240 case 737 : /* fall through */
1241 case 738 : /* fall through */
1242 case 739 : /* fall through */
1243 case 740 : /* fall through */
1244 case 741 : /* fall through */
1245 case 742 : /* fall through */
1246 case 743 : /* fall through */
1247 case 744 : /* fall through */
1248 case 745 : /* fall through */
1249 case 746 : /* fall through */
1250 case 747 : /* fall through */
1251 case 748 : /* fall through */
1252 case 749 : /* fall through */
1253 case 750 : /* fall through */
1254 case 751 :
1255 if ((entire_insn & 0xfc00000f) == 0xb8000000)
1256 { itype = SH64_MEDIA_INSN_FSTP; goto extract_sfmt_fldp; }
1257 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1258 case 752 : /* fall through */
1259 case 753 : /* fall through */
1260 case 754 : /* fall through */
1261 case 755 : /* fall through */
1262 case 756 : /* fall through */
1263 case 757 : /* fall through */
1264 case 758 : /* fall through */
1265 case 759 : /* fall through */
1266 case 760 : /* fall through */
1267 case 761 : /* fall through */
1268 case 762 : /* fall through */
1269 case 763 : /* fall through */
1270 case 764 : /* fall through */
1271 case 765 : /* fall through */
1272 case 766 : /* fall through */
1273 case 767 :
1274 if ((entire_insn & 0xfc00000f) == 0xbc000000)
1275 { itype = SH64_MEDIA_INSN_FSTD; goto extract_sfmt_fstd; }
1276 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1277 case 770 :
1278 if ((entire_insn & 0xfc0f000f) == 0xc0020000)
1279 { itype = SH64_MEDIA_INSN_LDLOL; goto extract_sfmt_ldlol; }
1280 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1281 case 771 :
1282 if ((entire_insn & 0xfc0f000f) == 0xc0030000)
1283 { itype = SH64_MEDIA_INSN_LDLOQ; goto extract_sfmt_ldloq; }
1284 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1285 case 774 :
1286 if ((entire_insn & 0xfc0f000f) == 0xc0060000)
1287 { itype = SH64_MEDIA_INSN_LDHIL; goto extract_sfmt_ldhil; }
1288 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1289 case 775 :
1290 if ((entire_insn & 0xfc0f000f) == 0xc0070000)
1291 { itype = SH64_MEDIA_INSN_LDHIQ; goto extract_sfmt_ldhiq; }
1292 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1293 case 783 :
1294 if ((entire_insn & 0xfc0f000f) == 0xc00f0000)
1295 { itype = SH64_MEDIA_INSN_GETCFG; goto extract_sfmt_getcfg; }
1296 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1297 case 784 :
1298 if ((entire_insn & 0xfc0f000f) == 0xc4000000)
1299 { itype = SH64_MEDIA_INSN_SHLLIL; goto extract_sfmt_shari; }
1300 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1301 case 785 :
1302 if ((entire_insn & 0xfc0f000f) == 0xc4010000)
1303 { itype = SH64_MEDIA_INSN_SHLLI; goto extract_sfmt_shari; }
1304 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1305 case 786 :
1306 if ((entire_insn & 0xfc0f000f) == 0xc4020000)
1307 { itype = SH64_MEDIA_INSN_SHLRIL; goto extract_sfmt_shari; }
1308 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1309 case 787 :
1310 if ((entire_insn & 0xfc0f000f) == 0xc4030000)
1311 { itype = SH64_MEDIA_INSN_SHLRI; goto extract_sfmt_shari; }
1312 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1313 case 790 :
1314 if ((entire_insn & 0xfc0f000f) == 0xc4060000)
1315 { itype = SH64_MEDIA_INSN_SHARIL; goto extract_sfmt_shari; }
1316 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1317 case 791 :
1318 if ((entire_insn & 0xfc0f000f) == 0xc4070000)
1319 { itype = SH64_MEDIA_INSN_SHARI; goto extract_sfmt_shari; }
1320 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1321 case 797 :
1322 if ((entire_insn & 0xfc0f000f) == 0xc40d0000)
1323 { itype = SH64_MEDIA_INSN_XORI; goto extract_sfmt_xori; }
1324 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1325 case 800 : /* fall through */
1326 case 801 : /* fall through */
1327 case 802 : /* fall through */
1328 case 803 : /* fall through */
1329 case 804 : /* fall through */
1330 case 805 : /* fall through */
1331 case 806 : /* fall through */
1332 case 807 : /* fall through */
1333 case 808 : /* fall through */
1334 case 809 : /* fall through */
1335 case 810 : /* fall through */
1336 case 811 : /* fall through */
1337 case 812 : /* fall through */
1338 case 813 : /* fall through */
1339 case 814 : /* fall through */
1340 case 815 :
1341 if ((entire_insn & 0xfc00000f) == 0xc8000000)
1342 { itype = SH64_MEDIA_INSN_SHORI; goto extract_sfmt_shori; }
1343 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1344 case 816 : /* fall through */
1345 case 817 : /* fall through */
1346 case 818 : /* fall through */
1347 case 819 : /* fall through */
1348 case 820 : /* fall through */
1349 case 821 : /* fall through */
1350 case 822 : /* fall through */
1351 case 823 : /* fall through */
1352 case 824 : /* fall through */
1353 case 825 : /* fall through */
1354 case 826 : /* fall through */
1355 case 827 : /* fall through */
1356 case 828 : /* fall through */
1357 case 829 : /* fall through */
1358 case 830 : /* fall through */
1359 case 831 :
1360 if ((entire_insn & 0xfc00000f) == 0xcc000000)
1361 { itype = SH64_MEDIA_INSN_MOVI; goto extract_sfmt_movi; }
1362 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1363 case 832 : /* fall through */
1364 case 833 : /* fall through */
1365 case 834 : /* fall through */
1366 case 835 : /* fall through */
1367 case 836 : /* fall through */
1368 case 837 : /* fall through */
1369 case 838 : /* fall through */
1370 case 839 : /* fall through */
1371 case 840 : /* fall through */
1372 case 841 : /* fall through */
1373 case 842 : /* fall through */
1374 case 843 : /* fall through */
1375 case 844 : /* fall through */
1376 case 845 : /* fall through */
1377 case 846 : /* fall through */
1378 case 847 :
1379 if ((entire_insn & 0xfc00000f) == 0xd0000000)
1380 { itype = SH64_MEDIA_INSN_ADDI; goto extract_sfmt_addi; }
1381 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1382 case 848 : /* fall through */
1383 case 849 : /* fall through */
1384 case 850 : /* fall through */
1385 case 851 : /* fall through */
1386 case 852 : /* fall through */
1387 case 853 : /* fall through */
1388 case 854 : /* fall through */
1389 case 855 : /* fall through */
1390 case 856 : /* fall through */
1391 case 857 : /* fall through */
1392 case 858 : /* fall through */
1393 case 859 : /* fall through */
1394 case 860 : /* fall through */
1395 case 861 : /* fall through */
1396 case 862 : /* fall through */
1397 case 863 :
1398 if ((entire_insn & 0xfc00000f) == 0xd4000000)
1399 { itype = SH64_MEDIA_INSN_ADDIL; goto extract_sfmt_addi; }
1400 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1401 case 864 : /* fall through */
1402 case 865 : /* fall through */
1403 case 866 : /* fall through */
1404 case 867 : /* fall through */
1405 case 868 : /* fall through */
1406 case 869 : /* fall through */
1407 case 870 : /* fall through */
1408 case 871 : /* fall through */
1409 case 872 : /* fall through */
1410 case 873 : /* fall through */
1411 case 874 : /* fall through */
1412 case 875 : /* fall through */
1413 case 876 : /* fall through */
1414 case 877 : /* fall through */
1415 case 878 : /* fall through */
1416 case 879 :
1417 if ((entire_insn & 0xfc00000f) == 0xd8000000)
1418 { itype = SH64_MEDIA_INSN_ANDI; goto extract_sfmt_addi; }
1419 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1420 case 880 : /* fall through */
1421 case 881 : /* fall through */
1422 case 882 : /* fall through */
1423 case 883 : /* fall through */
1424 case 884 : /* fall through */
1425 case 885 : /* fall through */
1426 case 886 : /* fall through */
1427 case 887 : /* fall through */
1428 case 888 : /* fall through */
1429 case 889 : /* fall through */
1430 case 890 : /* fall through */
1431 case 891 : /* fall through */
1432 case 892 : /* fall through */
1433 case 893 : /* fall through */
1434 case 894 : /* fall through */
1435 case 895 :
1436 if ((entire_insn & 0xfc00000f) == 0xdc000000)
1437 { itype = SH64_MEDIA_INSN_ORI; goto extract_sfmt_ori; }
1438 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1439 case 897 :
1440 if ((entire_insn & 0xfc0ffc0f) == 0xe001fc00)
1441 { itype = SH64_MEDIA_INSN_PREFI; goto extract_sfmt_alloco; }
1442 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1443 case 898 :
1444 if ((entire_insn & 0xfc0f000f) == 0xe0020000)
1445 { itype = SH64_MEDIA_INSN_STLOL; goto extract_sfmt_stlol; }
1446 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1447 case 899 :
1448 if ((entire_insn & 0xfc0f000f) == 0xe0030000)
1449 { itype = SH64_MEDIA_INSN_STLOQ; goto extract_sfmt_stloq; }
1450 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1451 case 900 :
1452 if ((entire_insn & 0xfc0f03ff) == 0xe00403f0)
1453 { itype = SH64_MEDIA_INSN_ALLOCO; goto extract_sfmt_alloco; }
1454 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1455 case 901 :
1456 if ((entire_insn & 0xfc0f03ff) == 0xe00503f0)
1457 { itype = SH64_MEDIA_INSN_ICBI; goto extract_sfmt_alloco; }
1458 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1459 case 902 :
1460 if ((entire_insn & 0xfc0f000f) == 0xe0060000)
1461 { itype = SH64_MEDIA_INSN_STHIL; goto extract_sfmt_sthil; }
1462 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1463 case 903 :
1464 if ((entire_insn & 0xfc0f000f) == 0xe0070000)
1465 { itype = SH64_MEDIA_INSN_STHIQ; goto extract_sfmt_sthiq; }
1466 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1467 case 904 :
1468 if ((entire_insn & 0xfc0f03ff) == 0xe00803f0)
1469 { itype = SH64_MEDIA_INSN_OCBP; goto extract_sfmt_alloco; }
1470 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1471 case 905 :
1472 if ((entire_insn & 0xfc0f03ff) == 0xe00903f0)
1473 { itype = SH64_MEDIA_INSN_OCBI; goto extract_sfmt_alloco; }
1474 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1475 case 908 :
1476 if ((entire_insn & 0xfc0f03ff) == 0xe00c03f0)
1477 { itype = SH64_MEDIA_INSN_OCBWB; goto extract_sfmt_alloco; }
1478 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1479 case 911 :
1480 if ((entire_insn & 0xfc0f000f) == 0xe00f0000)
1481 { itype = SH64_MEDIA_INSN_PUTCFG; goto extract_sfmt_putcfg; }
1482 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1483 case 913 :
1484 if ((entire_insn & 0xfc0f018f) == 0xe4010000)
1485 { itype = SH64_MEDIA_INSN_BEQI; goto extract_sfmt_beqi; }
1486 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1487 case 917 :
1488 if ((entire_insn & 0xfc0f018f) == 0xe4050000)
1489 { itype = SH64_MEDIA_INSN_BNEI; goto extract_sfmt_beqi; }
1490 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1491 case 928 : /* fall through */
1492 case 929 : /* fall through */
1493 case 930 : /* fall through */
1494 case 931 : /* fall through */
1495 case 932 : /* fall through */
1496 case 933 : /* fall through */
1497 case 934 : /* fall through */
1498 case 935 : /* fall through */
1499 case 936 : /* fall through */
1500 case 937 : /* fall through */
1501 case 938 : /* fall through */
1502 case 939 : /* fall through */
1503 case 940 : /* fall through */
1504 case 941 : /* fall through */
1505 case 942 : /* fall through */
1506 case 943 :
1507 if ((entire_insn & 0xfc00018f) == 0xe8000000)
1508 { itype = SH64_MEDIA_INSN_PTA; goto extract_sfmt_pta; }
1509 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1510 case 944 : /* fall through */
1511 case 945 : /* fall through */
1512 case 946 : /* fall through */
1513 case 947 : /* fall through */
1514 case 948 : /* fall through */
1515 case 949 : /* fall through */
1516 case 950 : /* fall through */
1517 case 951 : /* fall through */
1518 case 952 : /* fall through */
1519 case 953 : /* fall through */
1520 case 954 : /* fall through */
1521 case 955 : /* fall through */
1522 case 956 : /* fall through */
1523 case 957 : /* fall through */
1524 case 958 : /* fall through */
1525 case 959 :
1526 if ((entire_insn & 0xfc00018f) == 0xec000000)
1527 { itype = SH64_MEDIA_INSN_PTB; goto extract_sfmt_pta; }
1528 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1529 default : itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1530 }
1531 }
1532 }
1533
1534 /* The instruction has been decoded, now extract the fields. */
1535
1536 extract_sfmt_empty:
1537 {
1538 const IDESC *idesc = &sh64_media_insn_data[itype];
1539 #define FLD(f) abuf->fields.sfmt_empty.f
1540
1541
1542 /* Record the fields for the semantic handler. */
1543 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_empty", (char *) 0));
1544
1545 #undef FLD
1546 return idesc;
1547 }
1548
1549 extract_sfmt_add:
1550 {
1551 const IDESC *idesc = &sh64_media_insn_data[itype];
1552 CGEN_INSN_WORD insn = entire_insn;
1553 #define FLD(f) abuf->fields.sfmt_add.f
1554 UINT f_left;
1555 UINT f_right;
1556 UINT f_dest;
1557
1558 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
1559 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
1560 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
1561
1562 /* Record the fields for the semantic handler. */
1563 FLD (f_left) = f_left;
1564 FLD (f_right) = f_right;
1565 FLD (f_dest) = f_dest;
1566 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));
1567
1568 #if WITH_PROFILE_MODEL_P
1569 /* Record the fields for profiling. */
1570 if (PROFILE_MODEL_P (current_cpu))
1571 {
1572 FLD (in_rm) = f_left;
1573 FLD (in_rn) = f_right;
1574 FLD (out_rd) = f_dest;
1575 }
1576 #endif
1577 #undef FLD
1578 return idesc;
1579 }
1580
1581 extract_sfmt_addi:
1582 {
1583 const IDESC *idesc = &sh64_media_insn_data[itype];
1584 CGEN_INSN_WORD insn = entire_insn;
1585 #define FLD(f) abuf->fields.sfmt_addi.f
1586 UINT f_left;
1587 INT f_disp10;
1588 UINT f_dest;
1589
1590 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
1591 f_disp10 = EXTRACT_MSB0_SINT (insn, 32, 12, 10);
1592 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
1593
1594 /* Record the fields for the semantic handler. */
1595 FLD (f_disp10) = f_disp10;
1596 FLD (f_left) = f_left;
1597 FLD (f_dest) = f_dest;
1598 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));
1599
1600 #if WITH_PROFILE_MODEL_P
1601 /* Record the fields for profiling. */
1602 if (PROFILE_MODEL_P (current_cpu))
1603 {
1604 FLD (in_rm) = f_left;
1605 FLD (out_rd) = f_dest;
1606 }
1607 #endif
1608 #undef FLD
1609 return idesc;
1610 }
1611
1612 extract_sfmt_alloco:
1613 {
1614 const IDESC *idesc = &sh64_media_insn_data[itype];
1615 CGEN_INSN_WORD insn = entire_insn;
1616 #define FLD(f) abuf->fields.sfmt_xori.f
1617 UINT f_left;
1618
1619 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
1620
1621 /* Record the fields for the semantic handler. */
1622 FLD (f_left) = f_left;
1623 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_alloco", "f_left 0x%x", 'x', f_left, (char *) 0));
1624
1625 #if WITH_PROFILE_MODEL_P
1626 /* Record the fields for profiling. */
1627 if (PROFILE_MODEL_P (current_cpu))
1628 {
1629 FLD (in_rm) = f_left;
1630 FLD (out_rm) = f_left;
1631 }
1632 #endif
1633 #undef FLD
1634 return idesc;
1635 }
1636
1637 extract_sfmt_beq:
1638 {
1639 const IDESC *idesc = &sh64_media_insn_data[itype];
1640 CGEN_INSN_WORD insn = entire_insn;
1641 #define FLD(f) abuf->fields.sfmt_beq.f
1642 UINT f_left;
1643 UINT f_right;
1644 UINT f_tra;
1645
1646 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
1647 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
1648 f_tra = EXTRACT_MSB0_UINT (insn, 32, 25, 3);
1649
1650 /* Record the fields for the semantic handler. */
1651 FLD (f_left) = f_left;
1652 FLD (f_right) = f_right;
1653 FLD (f_tra) = f_tra;
1654 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));
1655
1656 #if WITH_PROFILE_MODEL_P
1657 /* Record the fields for profiling. */
1658 if (PROFILE_MODEL_P (current_cpu))
1659 {
1660 FLD (in_rm) = f_left;
1661 FLD (in_rn) = f_right;
1662 FLD (in_tra) = f_tra;
1663 }
1664 #endif
1665 #undef FLD
1666 return idesc;
1667 }
1668
1669 extract_sfmt_beqi:
1670 {
1671 const IDESC *idesc = &sh64_media_insn_data[itype];
1672 CGEN_INSN_WORD insn = entire_insn;
1673 #define FLD(f) abuf->fields.sfmt_beqi.f
1674 UINT f_left;
1675 INT f_imm6;
1676 UINT f_tra;
1677
1678 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
1679 f_imm6 = EXTRACT_MSB0_SINT (insn, 32, 16, 6);
1680 f_tra = EXTRACT_MSB0_UINT (insn, 32, 25, 3);
1681
1682 /* Record the fields for the semantic handler. */
1683 FLD (f_imm6) = f_imm6;
1684 FLD (f_left) = f_left;
1685 FLD (f_tra) = f_tra;
1686 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));
1687
1688 #if WITH_PROFILE_MODEL_P
1689 /* Record the fields for profiling. */
1690 if (PROFILE_MODEL_P (current_cpu))
1691 {
1692 FLD (in_rm) = f_left;
1693 FLD (in_tra) = f_tra;
1694 }
1695 #endif
1696 #undef FLD
1697 return idesc;
1698 }
1699
1700 extract_sfmt_blink:
1701 {
1702 const IDESC *idesc = &sh64_media_insn_data[itype];
1703 CGEN_INSN_WORD insn = entire_insn;
1704 #define FLD(f) abuf->fields.sfmt_blink.f
1705 UINT f_trb;
1706 UINT f_dest;
1707
1708 f_trb = EXTRACT_MSB0_UINT (insn, 32, 9, 3);
1709 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
1710
1711 /* Record the fields for the semantic handler. */
1712 FLD (f_dest) = f_dest;
1713 FLD (f_trb) = f_trb;
1714 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_blink", "f_dest 0x%x", 'x', f_dest, "f_trb 0x%x", 'x', f_trb, (char *) 0));
1715
1716 #if WITH_PROFILE_MODEL_P
1717 /* Record the fields for profiling. */
1718 if (PROFILE_MODEL_P (current_cpu))
1719 {
1720 FLD (in_trb) = f_trb;
1721 FLD (out_rd) = f_dest;
1722 }
1723 #endif
1724 #undef FLD
1725 return idesc;
1726 }
1727
1728 extract_sfmt_brk:
1729 {
1730 const IDESC *idesc = &sh64_media_insn_data[itype];
1731 #define FLD(f) abuf->fields.sfmt_empty.f
1732
1733
1734 /* Record the fields for the semantic handler. */
1735 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_brk", (char *) 0));
1736
1737 #if WITH_PROFILE_MODEL_P
1738 /* Record the fields for profiling. */
1739 if (PROFILE_MODEL_P (current_cpu))
1740 {
1741 }
1742 #endif
1743 #undef FLD
1744 return idesc;
1745 }
1746
1747 extract_sfmt_byterev:
1748 {
1749 const IDESC *idesc = &sh64_media_insn_data[itype];
1750 CGEN_INSN_WORD insn = entire_insn;
1751 #define FLD(f) abuf->fields.sfmt_xori.f
1752 UINT f_left;
1753 UINT f_dest;
1754
1755 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
1756 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
1757
1758 /* Record the fields for the semantic handler. */
1759 FLD (f_left) = f_left;
1760 FLD (f_dest) = f_dest;
1761 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));
1762
1763 #if WITH_PROFILE_MODEL_P
1764 /* Record the fields for profiling. */
1765 if (PROFILE_MODEL_P (current_cpu))
1766 {
1767 FLD (in_rm) = f_left;
1768 FLD (out_rd) = f_dest;
1769 }
1770 #endif
1771 #undef FLD
1772 return idesc;
1773 }
1774
1775 extract_sfmt_cmveq:
1776 {
1777 const IDESC *idesc = &sh64_media_insn_data[itype];
1778 CGEN_INSN_WORD insn = entire_insn;
1779 #define FLD(f) abuf->fields.sfmt_add.f
1780 UINT f_left;
1781 UINT f_right;
1782 UINT f_dest;
1783
1784 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
1785 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
1786 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
1787
1788 /* Record the fields for the semantic handler. */
1789 FLD (f_left) = f_left;
1790 FLD (f_right) = f_right;
1791 FLD (f_dest) = f_dest;
1792 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));
1793
1794 #if WITH_PROFILE_MODEL_P
1795 /* Record the fields for profiling. */
1796 if (PROFILE_MODEL_P (current_cpu))
1797 {
1798 FLD (in_rm) = f_left;
1799 FLD (in_rn) = f_right;
1800 FLD (out_rd) = f_dest;
1801 }
1802 #endif
1803 #undef FLD
1804 return idesc;
1805 }
1806
1807 extract_sfmt_fabsd:
1808 {
1809 const IDESC *idesc = &sh64_media_insn_data[itype];
1810 CGEN_INSN_WORD insn = entire_insn;
1811 #define FLD(f) abuf->fields.sfmt_fabsd.f
1812 UINT f_left;
1813 UINT f_right;
1814 UINT f_dest;
1815 UINT f_left_right;
1816
1817 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
1818 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
1819 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
1820 f_left_right = f_left;
1821
1822 /* Record the fields for the semantic handler. */
1823 FLD (f_left_right) = f_left_right;
1824 FLD (f_dest) = f_dest;
1825 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));
1826
1827 #if WITH_PROFILE_MODEL_P
1828 /* Record the fields for profiling. */
1829 if (PROFILE_MODEL_P (current_cpu))
1830 {
1831 FLD (in_drgh) = f_left_right;
1832 FLD (out_drf) = f_dest;
1833 }
1834 #endif
1835 #undef FLD
1836 return idesc;
1837 }
1838
1839 extract_sfmt_fabss:
1840 {
1841 const IDESC *idesc = &sh64_media_insn_data[itype];
1842 CGEN_INSN_WORD insn = entire_insn;
1843 #define FLD(f) abuf->fields.sfmt_fabsd.f
1844 UINT f_left;
1845 UINT f_right;
1846 UINT f_dest;
1847 UINT f_left_right;
1848
1849 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
1850 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
1851 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
1852 f_left_right = f_left;
1853
1854 /* Record the fields for the semantic handler. */
1855 FLD (f_left_right) = f_left_right;
1856 FLD (f_dest) = f_dest;
1857 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));
1858
1859 #if WITH_PROFILE_MODEL_P
1860 /* Record the fields for profiling. */
1861 if (PROFILE_MODEL_P (current_cpu))
1862 {
1863 FLD (in_frgh) = f_left_right;
1864 FLD (out_frf) = f_dest;
1865 }
1866 #endif
1867 #undef FLD
1868 return idesc;
1869 }
1870
1871 extract_sfmt_faddd:
1872 {
1873 const IDESC *idesc = &sh64_media_insn_data[itype];
1874 CGEN_INSN_WORD insn = entire_insn;
1875 #define FLD(f) abuf->fields.sfmt_add.f
1876 UINT f_left;
1877 UINT f_right;
1878 UINT f_dest;
1879
1880 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
1881 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
1882 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
1883
1884 /* Record the fields for the semantic handler. */
1885 FLD (f_left) = f_left;
1886 FLD (f_right) = f_right;
1887 FLD (f_dest) = f_dest;
1888 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));
1889
1890 #if WITH_PROFILE_MODEL_P
1891 /* Record the fields for profiling. */
1892 if (PROFILE_MODEL_P (current_cpu))
1893 {
1894 FLD (in_drg) = f_left;
1895 FLD (in_drh) = f_right;
1896 FLD (out_drf) = f_dest;
1897 }
1898 #endif
1899 #undef FLD
1900 return idesc;
1901 }
1902
1903 extract_sfmt_fadds:
1904 {
1905 const IDESC *idesc = &sh64_media_insn_data[itype];
1906 CGEN_INSN_WORD insn = entire_insn;
1907 #define FLD(f) abuf->fields.sfmt_add.f
1908 UINT f_left;
1909 UINT f_right;
1910 UINT f_dest;
1911
1912 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
1913 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
1914 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
1915
1916 /* Record the fields for the semantic handler. */
1917 FLD (f_left) = f_left;
1918 FLD (f_right) = f_right;
1919 FLD (f_dest) = f_dest;
1920 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));
1921
1922 #if WITH_PROFILE_MODEL_P
1923 /* Record the fields for profiling. */
1924 if (PROFILE_MODEL_P (current_cpu))
1925 {
1926 FLD (in_frg) = f_left;
1927 FLD (in_frh) = f_right;
1928 FLD (out_frf) = f_dest;
1929 }
1930 #endif
1931 #undef FLD
1932 return idesc;
1933 }
1934
1935 extract_sfmt_fcmpeqd:
1936 {
1937 const IDESC *idesc = &sh64_media_insn_data[itype];
1938 CGEN_INSN_WORD insn = entire_insn;
1939 #define FLD(f) abuf->fields.sfmt_add.f
1940 UINT f_left;
1941 UINT f_right;
1942 UINT f_dest;
1943
1944 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
1945 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
1946 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
1947
1948 /* Record the fields for the semantic handler. */
1949 FLD (f_left) = f_left;
1950 FLD (f_right) = f_right;
1951 FLD (f_dest) = f_dest;
1952 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));
1953
1954 #if WITH_PROFILE_MODEL_P
1955 /* Record the fields for profiling. */
1956 if (PROFILE_MODEL_P (current_cpu))
1957 {
1958 FLD (in_drg) = f_left;
1959 FLD (in_drh) = f_right;
1960 FLD (out_rd) = f_dest;
1961 }
1962 #endif
1963 #undef FLD
1964 return idesc;
1965 }
1966
1967 extract_sfmt_fcmpeqs:
1968 {
1969 const IDESC *idesc = &sh64_media_insn_data[itype];
1970 CGEN_INSN_WORD insn = entire_insn;
1971 #define FLD(f) abuf->fields.sfmt_add.f
1972 UINT f_left;
1973 UINT f_right;
1974 UINT f_dest;
1975
1976 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
1977 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
1978 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
1979
1980 /* Record the fields for the semantic handler. */
1981 FLD (f_left) = f_left;
1982 FLD (f_right) = f_right;
1983 FLD (f_dest) = f_dest;
1984 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));
1985
1986 #if WITH_PROFILE_MODEL_P
1987 /* Record the fields for profiling. */
1988 if (PROFILE_MODEL_P (current_cpu))
1989 {
1990 FLD (in_frg) = f_left;
1991 FLD (in_frh) = f_right;
1992 FLD (out_rd) = f_dest;
1993 }
1994 #endif
1995 #undef FLD
1996 return idesc;
1997 }
1998
1999 extract_sfmt_fcnvds:
2000 {
2001 const IDESC *idesc = &sh64_media_insn_data[itype];
2002 CGEN_INSN_WORD insn = entire_insn;
2003 #define FLD(f) abuf->fields.sfmt_fabsd.f
2004 UINT f_left;
2005 UINT f_right;
2006 UINT f_dest;
2007 UINT f_left_right;
2008
2009 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2010 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
2011 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
2012 f_left_right = f_left;
2013
2014 /* Record the fields for the semantic handler. */
2015 FLD (f_left_right) = f_left_right;
2016 FLD (f_dest) = f_dest;
2017 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));
2018
2019 #if WITH_PROFILE_MODEL_P
2020 /* Record the fields for profiling. */
2021 if (PROFILE_MODEL_P (current_cpu))
2022 {
2023 FLD (in_drgh) = f_left_right;
2024 FLD (out_frf) = f_dest;
2025 }
2026 #endif
2027 #undef FLD
2028 return idesc;
2029 }
2030
2031 extract_sfmt_fcnvsd:
2032 {
2033 const IDESC *idesc = &sh64_media_insn_data[itype];
2034 CGEN_INSN_WORD insn = entire_insn;
2035 #define FLD(f) abuf->fields.sfmt_fabsd.f
2036 UINT f_left;
2037 UINT f_right;
2038 UINT f_dest;
2039 UINT f_left_right;
2040
2041 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2042 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
2043 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
2044 f_left_right = f_left;
2045
2046 /* Record the fields for the semantic handler. */
2047 FLD (f_left_right) = f_left_right;
2048 FLD (f_dest) = f_dest;
2049 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));
2050
2051 #if WITH_PROFILE_MODEL_P
2052 /* Record the fields for profiling. */
2053 if (PROFILE_MODEL_P (current_cpu))
2054 {
2055 FLD (in_frgh) = f_left_right;
2056 FLD (out_drf) = f_dest;
2057 }
2058 #endif
2059 #undef FLD
2060 return idesc;
2061 }
2062
2063 extract_sfmt_fgetscr:
2064 {
2065 const IDESC *idesc = &sh64_media_insn_data[itype];
2066 CGEN_INSN_WORD insn = entire_insn;
2067 #define FLD(f) abuf->fields.sfmt_shori.f
2068 UINT f_dest;
2069
2070 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
2071
2072 /* Record the fields for the semantic handler. */
2073 FLD (f_dest) = f_dest;
2074 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fgetscr", "f_dest 0x%x", 'x', f_dest, (char *) 0));
2075
2076 #if WITH_PROFILE_MODEL_P
2077 /* Record the fields for profiling. */
2078 if (PROFILE_MODEL_P (current_cpu))
2079 {
2080 FLD (out_frf) = f_dest;
2081 }
2082 #endif
2083 #undef FLD
2084 return idesc;
2085 }
2086
2087 extract_sfmt_fiprs:
2088 {
2089 const IDESC *idesc = &sh64_media_insn_data[itype];
2090 CGEN_INSN_WORD insn = entire_insn;
2091 #define FLD(f) abuf->fields.sfmt_add.f
2092 UINT f_left;
2093 UINT f_right;
2094 UINT f_dest;
2095
2096 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2097 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
2098 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
2099
2100 /* Record the fields for the semantic handler. */
2101 FLD (f_left) = f_left;
2102 FLD (f_right) = f_right;
2103 FLD (f_dest) = f_dest;
2104 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));
2105
2106 #if WITH_PROFILE_MODEL_P
2107 /* Record the fields for profiling. */
2108 if (PROFILE_MODEL_P (current_cpu))
2109 {
2110 FLD (in_fvg) = f_left;
2111 FLD (in_fvh) = f_right;
2112 FLD (out_frf) = f_dest;
2113 FLD (out_fvg) = f_left;
2114 FLD (out_fvh) = f_right;
2115 }
2116 #endif
2117 #undef FLD
2118 return idesc;
2119 }
2120
2121 extract_sfmt_fldd:
2122 {
2123 const IDESC *idesc = &sh64_media_insn_data[itype];
2124 CGEN_INSN_WORD insn = entire_insn;
2125 #define FLD(f) abuf->fields.sfmt_fldd.f
2126 UINT f_left;
2127 SI f_disp10x8;
2128 UINT f_dest;
2129
2130 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2131 f_disp10x8 = ((EXTRACT_MSB0_SINT (insn, 32, 12, 10)) << (3));
2132 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
2133
2134 /* Record the fields for the semantic handler. */
2135 FLD (f_disp10x8) = f_disp10x8;
2136 FLD (f_left) = f_left;
2137 FLD (f_dest) = f_dest;
2138 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));
2139
2140 #if WITH_PROFILE_MODEL_P
2141 /* Record the fields for profiling. */
2142 if (PROFILE_MODEL_P (current_cpu))
2143 {
2144 FLD (in_rm) = f_left;
2145 FLD (out_drf) = f_dest;
2146 }
2147 #endif
2148 #undef FLD
2149 return idesc;
2150 }
2151
2152 extract_sfmt_fldp:
2153 {
2154 const IDESC *idesc = &sh64_media_insn_data[itype];
2155 CGEN_INSN_WORD insn = entire_insn;
2156 #define FLD(f) abuf->fields.sfmt_fldd.f
2157 UINT f_left;
2158 SI f_disp10x8;
2159 UINT f_dest;
2160
2161 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2162 f_disp10x8 = ((EXTRACT_MSB0_SINT (insn, 32, 12, 10)) << (3));
2163 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
2164
2165 /* Record the fields for the semantic handler. */
2166 FLD (f_disp10x8) = f_disp10x8;
2167 FLD (f_dest) = f_dest;
2168 FLD (f_left) = f_left;
2169 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));
2170
2171 #if WITH_PROFILE_MODEL_P
2172 /* Record the fields for profiling. */
2173 if (PROFILE_MODEL_P (current_cpu))
2174 {
2175 FLD (in_fpf) = f_dest;
2176 FLD (in_rm) = f_left;
2177 FLD (out_fpf) = f_dest;
2178 }
2179 #endif
2180 #undef FLD
2181 return idesc;
2182 }
2183
2184 extract_sfmt_flds:
2185 {
2186 const IDESC *idesc = &sh64_media_insn_data[itype];
2187 CGEN_INSN_WORD insn = entire_insn;
2188 #define FLD(f) abuf->fields.sfmt_flds.f
2189 UINT f_left;
2190 SI f_disp10x4;
2191 UINT f_dest;
2192
2193 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2194 f_disp10x4 = ((EXTRACT_MSB0_SINT (insn, 32, 12, 10)) << (2));
2195 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
2196
2197 /* Record the fields for the semantic handler. */
2198 FLD (f_disp10x4) = f_disp10x4;
2199 FLD (f_left) = f_left;
2200 FLD (f_dest) = f_dest;
2201 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));
2202
2203 #if WITH_PROFILE_MODEL_P
2204 /* Record the fields for profiling. */
2205 if (PROFILE_MODEL_P (current_cpu))
2206 {
2207 FLD (in_rm) = f_left;
2208 FLD (out_frf) = f_dest;
2209 }
2210 #endif
2211 #undef FLD
2212 return idesc;
2213 }
2214
2215 extract_sfmt_fldxd:
2216 {
2217 const IDESC *idesc = &sh64_media_insn_data[itype];
2218 CGEN_INSN_WORD insn = entire_insn;
2219 #define FLD(f) abuf->fields.sfmt_add.f
2220 UINT f_left;
2221 UINT f_right;
2222 UINT f_dest;
2223
2224 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2225 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
2226 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
2227
2228 /* Record the fields for the semantic handler. */
2229 FLD (f_left) = f_left;
2230 FLD (f_right) = f_right;
2231 FLD (f_dest) = f_dest;
2232 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));
2233
2234 #if WITH_PROFILE_MODEL_P
2235 /* Record the fields for profiling. */
2236 if (PROFILE_MODEL_P (current_cpu))
2237 {
2238 FLD (in_rm) = f_left;
2239 FLD (in_rn) = f_right;
2240 FLD (out_drf) = f_dest;
2241 }
2242 #endif
2243 #undef FLD
2244 return idesc;
2245 }
2246
2247 extract_sfmt_fldxp:
2248 {
2249 const IDESC *idesc = &sh64_media_insn_data[itype];
2250 CGEN_INSN_WORD insn = entire_insn;
2251 #define FLD(f) abuf->fields.sfmt_add.f
2252 UINT f_left;
2253 UINT f_right;
2254 UINT f_dest;
2255
2256 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2257 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
2258 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
2259
2260 /* Record the fields for the semantic handler. */
2261 FLD (f_dest) = f_dest;
2262 FLD (f_left) = f_left;
2263 FLD (f_right) = f_right;
2264 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));
2265
2266 #if WITH_PROFILE_MODEL_P
2267 /* Record the fields for profiling. */
2268 if (PROFILE_MODEL_P (current_cpu))
2269 {
2270 FLD (in_fpf) = f_dest;
2271 FLD (in_rm) = f_left;
2272 FLD (in_rn) = f_right;
2273 FLD (out_fpf) = f_dest;
2274 }
2275 #endif
2276 #undef FLD
2277 return idesc;
2278 }
2279
2280 extract_sfmt_fldxs:
2281 {
2282 const IDESC *idesc = &sh64_media_insn_data[itype];
2283 CGEN_INSN_WORD insn = entire_insn;
2284 #define FLD(f) abuf->fields.sfmt_add.f
2285 UINT f_left;
2286 UINT f_right;
2287 UINT f_dest;
2288
2289 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2290 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
2291 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
2292
2293 /* Record the fields for the semantic handler. */
2294 FLD (f_left) = f_left;
2295 FLD (f_right) = f_right;
2296 FLD (f_dest) = f_dest;
2297 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));
2298
2299 #if WITH_PROFILE_MODEL_P
2300 /* Record the fields for profiling. */
2301 if (PROFILE_MODEL_P (current_cpu))
2302 {
2303 FLD (in_rm) = f_left;
2304 FLD (in_rn) = f_right;
2305 FLD (out_frf) = f_dest;
2306 }
2307 #endif
2308 #undef FLD
2309 return idesc;
2310 }
2311
2312 extract_sfmt_fmacs:
2313 {
2314 const IDESC *idesc = &sh64_media_insn_data[itype];
2315 CGEN_INSN_WORD insn = entire_insn;
2316 #define FLD(f) abuf->fields.sfmt_add.f
2317 UINT f_left;
2318 UINT f_right;
2319 UINT f_dest;
2320
2321 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2322 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
2323 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
2324
2325 /* Record the fields for the semantic handler. */
2326 FLD (f_dest) = f_dest;
2327 FLD (f_left) = f_left;
2328 FLD (f_right) = f_right;
2329 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));
2330
2331 #if WITH_PROFILE_MODEL_P
2332 /* Record the fields for profiling. */
2333 if (PROFILE_MODEL_P (current_cpu))
2334 {
2335 FLD (in_frf) = f_dest;
2336 FLD (in_frg) = f_left;
2337 FLD (in_frh) = f_right;
2338 FLD (out_frf) = f_dest;
2339 }
2340 #endif
2341 #undef FLD
2342 return idesc;
2343 }
2344
2345 extract_sfmt_fmovdq:
2346 {
2347 const IDESC *idesc = &sh64_media_insn_data[itype];
2348 CGEN_INSN_WORD insn = entire_insn;
2349 #define FLD(f) abuf->fields.sfmt_fabsd.f
2350 UINT f_left;
2351 UINT f_right;
2352 UINT f_dest;
2353 UINT f_left_right;
2354
2355 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2356 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
2357 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
2358 f_left_right = f_left;
2359
2360 /* Record the fields for the semantic handler. */
2361 FLD (f_left_right) = f_left_right;
2362 FLD (f_dest) = f_dest;
2363 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));
2364
2365 #if WITH_PROFILE_MODEL_P
2366 /* Record the fields for profiling. */
2367 if (PROFILE_MODEL_P (current_cpu))
2368 {
2369 FLD (in_drgh) = f_left_right;
2370 FLD (out_rd) = f_dest;
2371 }
2372 #endif
2373 #undef FLD
2374 return idesc;
2375 }
2376
2377 extract_sfmt_fmovls:
2378 {
2379 const IDESC *idesc = &sh64_media_insn_data[itype];
2380 CGEN_INSN_WORD insn = entire_insn;
2381 #define FLD(f) abuf->fields.sfmt_xori.f
2382 UINT f_left;
2383 UINT f_dest;
2384
2385 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2386 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
2387
2388 /* Record the fields for the semantic handler. */
2389 FLD (f_left) = f_left;
2390 FLD (f_dest) = f_dest;
2391 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));
2392
2393 #if WITH_PROFILE_MODEL_P
2394 /* Record the fields for profiling. */
2395 if (PROFILE_MODEL_P (current_cpu))
2396 {
2397 FLD (in_rm) = f_left;
2398 FLD (out_frf) = f_dest;
2399 }
2400 #endif
2401 #undef FLD
2402 return idesc;
2403 }
2404
2405 extract_sfmt_fmovqd:
2406 {
2407 const IDESC *idesc = &sh64_media_insn_data[itype];
2408 CGEN_INSN_WORD insn = entire_insn;
2409 #define FLD(f) abuf->fields.sfmt_xori.f
2410 UINT f_left;
2411 UINT f_dest;
2412
2413 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2414 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
2415
2416 /* Record the fields for the semantic handler. */
2417 FLD (f_left) = f_left;
2418 FLD (f_dest) = f_dest;
2419 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));
2420
2421 #if WITH_PROFILE_MODEL_P
2422 /* Record the fields for profiling. */
2423 if (PROFILE_MODEL_P (current_cpu))
2424 {
2425 FLD (in_rm) = f_left;
2426 FLD (out_drf) = f_dest;
2427 }
2428 #endif
2429 #undef FLD
2430 return idesc;
2431 }
2432
2433 extract_sfmt_fmovsl:
2434 {
2435 const IDESC *idesc = &sh64_media_insn_data[itype];
2436 CGEN_INSN_WORD insn = entire_insn;
2437 #define FLD(f) abuf->fields.sfmt_fabsd.f
2438 UINT f_left;
2439 UINT f_right;
2440 UINT f_dest;
2441 UINT f_left_right;
2442
2443 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2444 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
2445 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
2446 f_left_right = f_left;
2447
2448 /* Record the fields for the semantic handler. */
2449 FLD (f_left_right) = f_left_right;
2450 FLD (f_dest) = f_dest;
2451 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));
2452
2453 #if WITH_PROFILE_MODEL_P
2454 /* Record the fields for profiling. */
2455 if (PROFILE_MODEL_P (current_cpu))
2456 {
2457 FLD (in_frgh) = f_left_right;
2458 FLD (out_rd) = f_dest;
2459 }
2460 #endif
2461 #undef FLD
2462 return idesc;
2463 }
2464
2465 extract_sfmt_fputscr:
2466 {
2467 const IDESC *idesc = &sh64_media_insn_data[itype];
2468 CGEN_INSN_WORD insn = entire_insn;
2469 #define FLD(f) abuf->fields.sfmt_fabsd.f
2470 UINT f_left;
2471 UINT f_right;
2472 UINT f_left_right;
2473
2474 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2475 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
2476 f_left_right = f_left;
2477
2478 /* Record the fields for the semantic handler. */
2479 FLD (f_left_right) = f_left_right;
2480 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fputscr", "f_left_right 0x%x", 'x', f_left_right, (char *) 0));
2481
2482 #if WITH_PROFILE_MODEL_P
2483 /* Record the fields for profiling. */
2484 if (PROFILE_MODEL_P (current_cpu))
2485 {
2486 FLD (in_frgh) = f_left_right;
2487 }
2488 #endif
2489 #undef FLD
2490 return idesc;
2491 }
2492
2493 extract_sfmt_fstd:
2494 {
2495 const IDESC *idesc = &sh64_media_insn_data[itype];
2496 CGEN_INSN_WORD insn = entire_insn;
2497 #define FLD(f) abuf->fields.sfmt_fldd.f
2498 UINT f_left;
2499 SI f_disp10x8;
2500 UINT f_dest;
2501
2502 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2503 f_disp10x8 = ((EXTRACT_MSB0_SINT (insn, 32, 12, 10)) << (3));
2504 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
2505
2506 /* Record the fields for the semantic handler. */
2507 FLD (f_disp10x8) = f_disp10x8;
2508 FLD (f_dest) = f_dest;
2509 FLD (f_left) = f_left;
2510 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));
2511
2512 #if WITH_PROFILE_MODEL_P
2513 /* Record the fields for profiling. */
2514 if (PROFILE_MODEL_P (current_cpu))
2515 {
2516 FLD (in_drf) = f_dest;
2517 FLD (in_rm) = f_left;
2518 }
2519 #endif
2520 #undef FLD
2521 return idesc;
2522 }
2523
2524 extract_sfmt_fsts:
2525 {
2526 const IDESC *idesc = &sh64_media_insn_data[itype];
2527 CGEN_INSN_WORD insn = entire_insn;
2528 #define FLD(f) abuf->fields.sfmt_flds.f
2529 UINT f_left;
2530 SI f_disp10x4;
2531 UINT f_dest;
2532
2533 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2534 f_disp10x4 = ((EXTRACT_MSB0_SINT (insn, 32, 12, 10)) << (2));
2535 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
2536
2537 /* Record the fields for the semantic handler. */
2538 FLD (f_disp10x4) = f_disp10x4;
2539 FLD (f_dest) = f_dest;
2540 FLD (f_left) = f_left;
2541 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));
2542
2543 #if WITH_PROFILE_MODEL_P
2544 /* Record the fields for profiling. */
2545 if (PROFILE_MODEL_P (current_cpu))
2546 {
2547 FLD (in_frf) = f_dest;
2548 FLD (in_rm) = f_left;
2549 }
2550 #endif
2551 #undef FLD
2552 return idesc;
2553 }
2554
2555 extract_sfmt_fstxd:
2556 {
2557 const IDESC *idesc = &sh64_media_insn_data[itype];
2558 CGEN_INSN_WORD insn = entire_insn;
2559 #define FLD(f) abuf->fields.sfmt_add.f
2560 UINT f_left;
2561 UINT f_right;
2562 UINT f_dest;
2563
2564 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2565 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
2566 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
2567
2568 /* Record the fields for the semantic handler. */
2569 FLD (f_dest) = f_dest;
2570 FLD (f_left) = f_left;
2571 FLD (f_right) = f_right;
2572 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));
2573
2574 #if WITH_PROFILE_MODEL_P
2575 /* Record the fields for profiling. */
2576 if (PROFILE_MODEL_P (current_cpu))
2577 {
2578 FLD (in_drf) = f_dest;
2579 FLD (in_rm) = f_left;
2580 FLD (in_rn) = f_right;
2581 }
2582 #endif
2583 #undef FLD
2584 return idesc;
2585 }
2586
2587 extract_sfmt_fstxs:
2588 {
2589 const IDESC *idesc = &sh64_media_insn_data[itype];
2590 CGEN_INSN_WORD insn = entire_insn;
2591 #define FLD(f) abuf->fields.sfmt_add.f
2592 UINT f_left;
2593 UINT f_right;
2594 UINT f_dest;
2595
2596 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2597 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
2598 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
2599
2600 /* Record the fields for the semantic handler. */
2601 FLD (f_dest) = f_dest;
2602 FLD (f_left) = f_left;
2603 FLD (f_right) = f_right;
2604 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));
2605
2606 #if WITH_PROFILE_MODEL_P
2607 /* Record the fields for profiling. */
2608 if (PROFILE_MODEL_P (current_cpu))
2609 {
2610 FLD (in_frf) = f_dest;
2611 FLD (in_rm) = f_left;
2612 FLD (in_rn) = f_right;
2613 }
2614 #endif
2615 #undef FLD
2616 return idesc;
2617 }
2618
2619 extract_sfmt_ftrvs:
2620 {
2621 const IDESC *idesc = &sh64_media_insn_data[itype];
2622 CGEN_INSN_WORD insn = entire_insn;
2623 #define FLD(f) abuf->fields.sfmt_add.f
2624 UINT f_left;
2625 UINT f_right;
2626 UINT f_dest;
2627
2628 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2629 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
2630 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
2631
2632 /* Record the fields for the semantic handler. */
2633 FLD (f_dest) = f_dest;
2634 FLD (f_left) = f_left;
2635 FLD (f_right) = f_right;
2636 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));
2637
2638 #if WITH_PROFILE_MODEL_P
2639 /* Record the fields for profiling. */
2640 if (PROFILE_MODEL_P (current_cpu))
2641 {
2642 FLD (in_fvf) = f_dest;
2643 FLD (in_fvh) = f_right;
2644 FLD (in_mtrxg) = f_left;
2645 FLD (out_fvf) = f_dest;
2646 FLD (out_fvh) = f_right;
2647 FLD (out_mtrxg) = f_left;
2648 }
2649 #endif
2650 #undef FLD
2651 return idesc;
2652 }
2653
2654 extract_sfmt_getcfg:
2655 {
2656 const IDESC *idesc = &sh64_media_insn_data[itype];
2657 CGEN_INSN_WORD insn = entire_insn;
2658 #define FLD(f) abuf->fields.sfmt_getcfg.f
2659 UINT f_left;
2660 INT f_disp6;
2661 UINT f_dest;
2662
2663 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2664 f_disp6 = EXTRACT_MSB0_SINT (insn, 32, 16, 6);
2665 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
2666
2667 /* Record the fields for the semantic handler. */
2668 FLD (f_disp6) = f_disp6;
2669 FLD (f_left) = f_left;
2670 FLD (f_dest) = f_dest;
2671 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_getcfg", "f_disp6 0x%x", 'x', f_disp6, "f_left 0x%x", 'x', f_left, "f_dest 0x%x", 'x', f_dest, (char *) 0));
2672
2673 #if WITH_PROFILE_MODEL_P
2674 /* Record the fields for profiling. */
2675 if (PROFILE_MODEL_P (current_cpu))
2676 {
2677 FLD (in_rm) = f_left;
2678 FLD (out_rd) = f_dest;
2679 }
2680 #endif
2681 #undef FLD
2682 return idesc;
2683 }
2684
2685 extract_sfmt_getcon:
2686 {
2687 const IDESC *idesc = &sh64_media_insn_data[itype];
2688 CGEN_INSN_WORD insn = entire_insn;
2689 #define FLD(f) abuf->fields.sfmt_xori.f
2690 UINT f_left;
2691 UINT f_dest;
2692
2693 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2694 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
2695
2696 /* Record the fields for the semantic handler. */
2697 FLD (f_left) = f_left;
2698 FLD (f_dest) = f_dest;
2699 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));
2700
2701 #if WITH_PROFILE_MODEL_P
2702 /* Record the fields for profiling. */
2703 if (PROFILE_MODEL_P (current_cpu))
2704 {
2705 FLD (out_rd) = f_dest;
2706 }
2707 #endif
2708 #undef FLD
2709 return idesc;
2710 }
2711
2712 extract_sfmt_gettr:
2713 {
2714 const IDESC *idesc = &sh64_media_insn_data[itype];
2715 CGEN_INSN_WORD insn = entire_insn;
2716 #define FLD(f) abuf->fields.sfmt_blink.f
2717 UINT f_trb;
2718 UINT f_dest;
2719
2720 f_trb = EXTRACT_MSB0_UINT (insn, 32, 9, 3);
2721 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
2722
2723 /* Record the fields for the semantic handler. */
2724 FLD (f_trb) = f_trb;
2725 FLD (f_dest) = f_dest;
2726 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));
2727
2728 #if WITH_PROFILE_MODEL_P
2729 /* Record the fields for profiling. */
2730 if (PROFILE_MODEL_P (current_cpu))
2731 {
2732 FLD (in_trb) = f_trb;
2733 FLD (out_rd) = f_dest;
2734 }
2735 #endif
2736 #undef FLD
2737 return idesc;
2738 }
2739
2740 extract_sfmt_ldb:
2741 {
2742 const IDESC *idesc = &sh64_media_insn_data[itype];
2743 CGEN_INSN_WORD insn = entire_insn;
2744 #define FLD(f) abuf->fields.sfmt_addi.f
2745 UINT f_left;
2746 INT f_disp10;
2747 UINT f_dest;
2748
2749 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2750 f_disp10 = EXTRACT_MSB0_SINT (insn, 32, 12, 10);
2751 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
2752
2753 /* Record the fields for the semantic handler. */
2754 FLD (f_disp10) = f_disp10;
2755 FLD (f_left) = f_left;
2756 FLD (f_dest) = f_dest;
2757 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));
2758
2759 #if WITH_PROFILE_MODEL_P
2760 /* Record the fields for profiling. */
2761 if (PROFILE_MODEL_P (current_cpu))
2762 {
2763 FLD (in_rm) = f_left;
2764 FLD (out_rd) = f_dest;
2765 }
2766 #endif
2767 #undef FLD
2768 return idesc;
2769 }
2770
2771 extract_sfmt_ldl:
2772 {
2773 const IDESC *idesc = &sh64_media_insn_data[itype];
2774 CGEN_INSN_WORD insn = entire_insn;
2775 #define FLD(f) abuf->fields.sfmt_flds.f
2776 UINT f_left;
2777 SI f_disp10x4;
2778 UINT f_dest;
2779
2780 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2781 f_disp10x4 = ((EXTRACT_MSB0_SINT (insn, 32, 12, 10)) << (2));
2782 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
2783
2784 /* Record the fields for the semantic handler. */
2785 FLD (f_disp10x4) = f_disp10x4;
2786 FLD (f_left) = f_left;
2787 FLD (f_dest) = f_dest;
2788 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));
2789
2790 #if WITH_PROFILE_MODEL_P
2791 /* Record the fields for profiling. */
2792 if (PROFILE_MODEL_P (current_cpu))
2793 {
2794 FLD (in_rm) = f_left;
2795 FLD (out_rd) = f_dest;
2796 }
2797 #endif
2798 #undef FLD
2799 return idesc;
2800 }
2801
2802 extract_sfmt_ldq:
2803 {
2804 const IDESC *idesc = &sh64_media_insn_data[itype];
2805 CGEN_INSN_WORD insn = entire_insn;
2806 #define FLD(f) abuf->fields.sfmt_fldd.f
2807 UINT f_left;
2808 SI f_disp10x8;
2809 UINT f_dest;
2810
2811 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2812 f_disp10x8 = ((EXTRACT_MSB0_SINT (insn, 32, 12, 10)) << (3));
2813 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
2814
2815 /* Record the fields for the semantic handler. */
2816 FLD (f_disp10x8) = f_disp10x8;
2817 FLD (f_left) = f_left;
2818 FLD (f_dest) = f_dest;
2819 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));
2820
2821 #if WITH_PROFILE_MODEL_P
2822 /* Record the fields for profiling. */
2823 if (PROFILE_MODEL_P (current_cpu))
2824 {
2825 FLD (in_rm) = f_left;
2826 FLD (out_rd) = f_dest;
2827 }
2828 #endif
2829 #undef FLD
2830 return idesc;
2831 }
2832
2833 extract_sfmt_lduw:
2834 {
2835 const IDESC *idesc = &sh64_media_insn_data[itype];
2836 CGEN_INSN_WORD insn = entire_insn;
2837 #define FLD(f) abuf->fields.sfmt_lduw.f
2838 UINT f_left;
2839 SI f_disp10x2;
2840 UINT f_dest;
2841
2842 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2843 f_disp10x2 = ((EXTRACT_MSB0_SINT (insn, 32, 12, 10)) << (1));
2844 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
2845
2846 /* Record the fields for the semantic handler. */
2847 FLD (f_disp10x2) = f_disp10x2;
2848 FLD (f_left) = f_left;
2849 FLD (f_dest) = f_dest;
2850 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));
2851
2852 #if WITH_PROFILE_MODEL_P
2853 /* Record the fields for profiling. */
2854 if (PROFILE_MODEL_P (current_cpu))
2855 {
2856 FLD (in_rm) = f_left;
2857 FLD (out_rd) = f_dest;
2858 }
2859 #endif
2860 #undef FLD
2861 return idesc;
2862 }
2863
2864 extract_sfmt_ldhil:
2865 {
2866 const IDESC *idesc = &sh64_media_insn_data[itype];
2867 CGEN_INSN_WORD insn = entire_insn;
2868 #define FLD(f) abuf->fields.sfmt_getcfg.f
2869 UINT f_left;
2870 INT f_disp6;
2871 UINT f_dest;
2872
2873 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2874 f_disp6 = EXTRACT_MSB0_SINT (insn, 32, 16, 6);
2875 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
2876
2877 /* Record the fields for the semantic handler. */
2878 FLD (f_disp6) = f_disp6;
2879 FLD (f_left) = f_left;
2880 FLD (f_dest) = f_dest;
2881 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldhil", "f_disp6 0x%x", 'x', f_disp6, "f_left 0x%x", 'x', f_left, "f_dest 0x%x", 'x', f_dest, (char *) 0));
2882
2883 #if WITH_PROFILE_MODEL_P
2884 /* Record the fields for profiling. */
2885 if (PROFILE_MODEL_P (current_cpu))
2886 {
2887 FLD (in_rm) = f_left;
2888 FLD (out_rd) = f_dest;
2889 }
2890 #endif
2891 #undef FLD
2892 return idesc;
2893 }
2894
2895 extract_sfmt_ldhiq:
2896 {
2897 const IDESC *idesc = &sh64_media_insn_data[itype];
2898 CGEN_INSN_WORD insn = entire_insn;
2899 #define FLD(f) abuf->fields.sfmt_getcfg.f
2900 UINT f_left;
2901 INT f_disp6;
2902 UINT f_dest;
2903
2904 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2905 f_disp6 = EXTRACT_MSB0_SINT (insn, 32, 16, 6);
2906 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
2907
2908 /* Record the fields for the semantic handler. */
2909 FLD (f_disp6) = f_disp6;
2910 FLD (f_left) = f_left;
2911 FLD (f_dest) = f_dest;
2912 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldhiq", "f_disp6 0x%x", 'x', f_disp6, "f_left 0x%x", 'x', f_left, "f_dest 0x%x", 'x', f_dest, (char *) 0));
2913
2914 #if WITH_PROFILE_MODEL_P
2915 /* Record the fields for profiling. */
2916 if (PROFILE_MODEL_P (current_cpu))
2917 {
2918 FLD (in_rm) = f_left;
2919 FLD (out_rd) = f_dest;
2920 }
2921 #endif
2922 #undef FLD
2923 return idesc;
2924 }
2925
2926 extract_sfmt_ldlol:
2927 {
2928 const IDESC *idesc = &sh64_media_insn_data[itype];
2929 CGEN_INSN_WORD insn = entire_insn;
2930 #define FLD(f) abuf->fields.sfmt_getcfg.f
2931 UINT f_left;
2932 INT f_disp6;
2933 UINT f_dest;
2934
2935 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2936 f_disp6 = EXTRACT_MSB0_SINT (insn, 32, 16, 6);
2937 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
2938
2939 /* Record the fields for the semantic handler. */
2940 FLD (f_disp6) = f_disp6;
2941 FLD (f_left) = f_left;
2942 FLD (f_dest) = f_dest;
2943 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldlol", "f_disp6 0x%x", 'x', f_disp6, "f_left 0x%x", 'x', f_left, "f_dest 0x%x", 'x', f_dest, (char *) 0));
2944
2945 #if WITH_PROFILE_MODEL_P
2946 /* Record the fields for profiling. */
2947 if (PROFILE_MODEL_P (current_cpu))
2948 {
2949 FLD (in_rm) = f_left;
2950 FLD (out_rd) = f_dest;
2951 }
2952 #endif
2953 #undef FLD
2954 return idesc;
2955 }
2956
2957 extract_sfmt_ldloq:
2958 {
2959 const IDESC *idesc = &sh64_media_insn_data[itype];
2960 CGEN_INSN_WORD insn = entire_insn;
2961 #define FLD(f) abuf->fields.sfmt_getcfg.f
2962 UINT f_left;
2963 INT f_disp6;
2964 UINT f_dest;
2965
2966 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2967 f_disp6 = EXTRACT_MSB0_SINT (insn, 32, 16, 6);
2968 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
2969
2970 /* Record the fields for the semantic handler. */
2971 FLD (f_disp6) = f_disp6;
2972 FLD (f_left) = f_left;
2973 FLD (f_dest) = f_dest;
2974 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldloq", "f_disp6 0x%x", 'x', f_disp6, "f_left 0x%x", 'x', f_left, "f_dest 0x%x", 'x', f_dest, (char *) 0));
2975
2976 #if WITH_PROFILE_MODEL_P
2977 /* Record the fields for profiling. */
2978 if (PROFILE_MODEL_P (current_cpu))
2979 {
2980 FLD (in_rm) = f_left;
2981 FLD (out_rd) = f_dest;
2982 }
2983 #endif
2984 #undef FLD
2985 return idesc;
2986 }
2987
2988 extract_sfmt_ldxb:
2989 {
2990 const IDESC *idesc = &sh64_media_insn_data[itype];
2991 CGEN_INSN_WORD insn = entire_insn;
2992 #define FLD(f) abuf->fields.sfmt_add.f
2993 UINT f_left;
2994 UINT f_right;
2995 UINT f_dest;
2996
2997 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2998 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
2999 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
3000
3001 /* Record the fields for the semantic handler. */
3002 FLD (f_left) = f_left;
3003 FLD (f_right) = f_right;
3004 FLD (f_dest) = f_dest;
3005 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));
3006
3007 #if WITH_PROFILE_MODEL_P
3008 /* Record the fields for profiling. */
3009 if (PROFILE_MODEL_P (current_cpu))
3010 {
3011 FLD (in_rm) = f_left;
3012 FLD (in_rn) = f_right;
3013 FLD (out_rd) = f_dest;
3014 }
3015 #endif
3016 #undef FLD
3017 return idesc;
3018 }
3019
3020 extract_sfmt_ldxl:
3021 {
3022 const IDESC *idesc = &sh64_media_insn_data[itype];
3023 CGEN_INSN_WORD insn = entire_insn;
3024 #define FLD(f) abuf->fields.sfmt_add.f
3025 UINT f_left;
3026 UINT f_right;
3027 UINT f_dest;
3028
3029 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
3030 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
3031 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
3032
3033 /* Record the fields for the semantic handler. */
3034 FLD (f_left) = f_left;
3035 FLD (f_right) = f_right;
3036 FLD (f_dest) = f_dest;
3037 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldxl", "f_left 0x%x", 'x', f_left, "f_right 0x%x", 'x', f_right, "f_dest 0x%x", 'x', f_dest, (char *) 0));
3038
3039 #if WITH_PROFILE_MODEL_P
3040 /* Record the fields for profiling. */
3041 if (PROFILE_MODEL_P (current_cpu))
3042 {
3043 FLD (in_rm) = f_left;
3044 FLD (in_rn) = f_right;
3045 FLD (out_rd) = f_dest;
3046 }
3047 #endif
3048 #undef FLD
3049 return idesc;
3050 }
3051
3052 extract_sfmt_ldxq:
3053 {
3054 const IDESC *idesc = &sh64_media_insn_data[itype];
3055 CGEN_INSN_WORD insn = entire_insn;
3056 #define FLD(f) abuf->fields.sfmt_add.f
3057 UINT f_left;
3058 UINT f_right;
3059 UINT f_dest;
3060
3061 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
3062 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
3063 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
3064
3065 /* Record the fields for the semantic handler. */
3066 FLD (f_left) = f_left;
3067 FLD (f_right) = f_right;
3068 FLD (f_dest) = f_dest;
3069 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldxq", "f_left 0x%x", 'x', f_left, "f_right 0x%x", 'x', f_right, "f_dest 0x%x", 'x', f_dest, (char *) 0));
3070
3071 #if WITH_PROFILE_MODEL_P
3072 /* Record the fields for profiling. */
3073 if (PROFILE_MODEL_P (current_cpu))
3074 {
3075 FLD (in_rm) = f_left;
3076 FLD (in_rn) = f_right;
3077 FLD (out_rd) = f_dest;
3078 }
3079 #endif
3080 #undef FLD
3081 return idesc;
3082 }
3083
3084 extract_sfmt_ldxub:
3085 {
3086 const IDESC *idesc = &sh64_media_insn_data[itype];
3087 CGEN_INSN_WORD insn = entire_insn;
3088 #define FLD(f) abuf->fields.sfmt_add.f
3089 UINT f_left;
3090 UINT f_right;
3091 UINT f_dest;
3092
3093 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
3094 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
3095 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
3096
3097 /* Record the fields for the semantic handler. */
3098 FLD (f_left) = f_left;
3099 FLD (f_right) = f_right;
3100 FLD (f_dest) = f_dest;
3101 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldxub", "f_left 0x%x", 'x', f_left, "f_right 0x%x", 'x', f_right, "f_dest 0x%x", 'x', f_dest, (char *) 0));
3102
3103 #if WITH_PROFILE_MODEL_P
3104 /* Record the fields for profiling. */
3105 if (PROFILE_MODEL_P (current_cpu))
3106 {
3107 FLD (in_rm) = f_left;
3108 FLD (in_rn) = f_right;
3109 FLD (out_rd) = f_dest;
3110 }
3111 #endif
3112 #undef FLD
3113 return idesc;
3114 }
3115
3116 extract_sfmt_ldxuw:
3117 {
3118 const IDESC *idesc = &sh64_media_insn_data[itype];
3119 CGEN_INSN_WORD insn = entire_insn;
3120 #define FLD(f) abuf->fields.sfmt_add.f
3121 UINT f_left;
3122 UINT f_right;
3123 UINT f_dest;
3124
3125 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
3126 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
3127 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
3128
3129 /* Record the fields for the semantic handler. */
3130 FLD (f_left) = f_left;
3131 FLD (f_right) = f_right;
3132 FLD (f_dest) = f_dest;
3133 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldxuw", "f_left 0x%x", 'x', f_left, "f_right 0x%x", 'x', f_right, "f_dest 0x%x", 'x', f_dest, (char *) 0));
3134
3135 #if WITH_PROFILE_MODEL_P
3136 /* Record the fields for profiling. */
3137 if (PROFILE_MODEL_P (current_cpu))
3138 {
3139 FLD (in_rm) = f_left;
3140 FLD (in_rn) = f_right;
3141 FLD (out_rd) = f_dest;
3142 }
3143 #endif
3144 #undef FLD
3145 return idesc;
3146 }
3147
3148 extract_sfmt_ldxw:
3149 {
3150 const IDESC *idesc = &sh64_media_insn_data[itype];
3151 CGEN_INSN_WORD insn = entire_insn;
3152 #define FLD(f) abuf->fields.sfmt_add.f
3153 UINT f_left;
3154 UINT f_right;
3155 UINT f_dest;
3156
3157 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
3158 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
3159 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
3160
3161 /* Record the fields for the semantic handler. */
3162 FLD (f_left) = f_left;
3163 FLD (f_right) = f_right;
3164 FLD (f_dest) = f_dest;
3165 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldxw", "f_left 0x%x", 'x', f_left, "f_right 0x%x", 'x', f_right, "f_dest 0x%x", 'x', f_dest, (char *) 0));
3166
3167 #if WITH_PROFILE_MODEL_P
3168 /* Record the fields for profiling. */
3169 if (PROFILE_MODEL_P (current_cpu))
3170 {
3171 FLD (in_rm) = f_left;
3172 FLD (in_rn) = f_right;
3173 FLD (out_rd) = f_dest;
3174 }
3175 #endif
3176 #undef FLD
3177 return idesc;
3178 }
3179
3180 extract_sfmt_mcmv:
3181 {
3182 const IDESC *idesc = &sh64_media_insn_data[itype];
3183 CGEN_INSN_WORD insn = entire_insn;
3184 #define FLD(f) abuf->fields.sfmt_add.f
3185 UINT f_left;
3186 UINT f_right;
3187 UINT f_dest;
3188
3189 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
3190 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
3191 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
3192
3193 /* Record the fields for the semantic handler. */
3194 FLD (f_dest) = f_dest;
3195 FLD (f_left) = f_left;
3196 FLD (f_right) = f_right;
3197 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));
3198
3199 #if WITH_PROFILE_MODEL_P
3200 /* Record the fields for profiling. */
3201 if (PROFILE_MODEL_P (current_cpu))
3202 {
3203 FLD (in_rd) = f_dest;
3204 FLD (in_rm) = f_left;
3205 FLD (in_rn) = f_right;
3206 FLD (out_rd) = f_dest;
3207 }
3208 #endif
3209 #undef FLD
3210 return idesc;
3211 }
3212
3213 extract_sfmt_movi:
3214 {
3215 const IDESC *idesc = &sh64_media_insn_data[itype];
3216 CGEN_INSN_WORD insn = entire_insn;
3217 #define FLD(f) abuf->fields.sfmt_movi.f
3218 INT f_imm16;
3219 UINT f_dest;
3220
3221 f_imm16 = EXTRACT_MSB0_SINT (insn, 32, 6, 16);
3222 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
3223
3224 /* Record the fields for the semantic handler. */
3225 FLD (f_imm16) = f_imm16;
3226 FLD (f_dest) = f_dest;
3227 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));
3228
3229 #if WITH_PROFILE_MODEL_P
3230 /* Record the fields for profiling. */
3231 if (PROFILE_MODEL_P (current_cpu))
3232 {
3233 FLD (out_rd) = f_dest;
3234 }
3235 #endif
3236 #undef FLD
3237 return idesc;
3238 }
3239
3240 extract_sfmt_nop:
3241 {
3242 const IDESC *idesc = &sh64_media_insn_data[itype];
3243 #define FLD(f) abuf->fields.sfmt_empty.f
3244
3245
3246 /* Record the fields for the semantic handler. */
3247 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_nop", (char *) 0));
3248
3249 #undef FLD
3250 return idesc;
3251 }
3252
3253 extract_sfmt_ori:
3254 {
3255 const IDESC *idesc = &sh64_media_insn_data[itype];
3256 CGEN_INSN_WORD insn = entire_insn;
3257 #define FLD(f) abuf->fields.sfmt_ori.f
3258 UINT f_left;
3259 INT f_imm10;
3260 UINT f_dest;
3261
3262 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
3263 f_imm10 = EXTRACT_MSB0_SINT (insn, 32, 12, 10);
3264 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
3265
3266 /* Record the fields for the semantic handler. */
3267 FLD (f_imm10) = f_imm10;
3268 FLD (f_left) = f_left;
3269 FLD (f_dest) = f_dest;
3270 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));
3271
3272 #if WITH_PROFILE_MODEL_P
3273 /* Record the fields for profiling. */
3274 if (PROFILE_MODEL_P (current_cpu))
3275 {
3276 FLD (in_rm) = f_left;
3277 FLD (out_rd) = f_dest;
3278 }
3279 #endif
3280 #undef FLD
3281 return idesc;
3282 }
3283
3284 extract_sfmt_pta:
3285 {
3286 const IDESC *idesc = &sh64_media_insn_data[itype];
3287 CGEN_INSN_WORD insn = entire_insn;
3288 #define FLD(f) abuf->fields.sfmt_pta.f
3289 DI f_disp16;
3290 UINT f_tra;
3291
3292 f_disp16 = ((((EXTRACT_MSB0_SINT (insn, 32, 6, 16)) << (2))) + (pc));
3293 f_tra = EXTRACT_MSB0_UINT (insn, 32, 25, 3);
3294
3295 /* Record the fields for the semantic handler. */
3296 FLD (f_disp16) = f_disp16;
3297 FLD (f_tra) = f_tra;
3298 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));
3299
3300 #if WITH_PROFILE_MODEL_P
3301 /* Record the fields for profiling. */
3302 if (PROFILE_MODEL_P (current_cpu))
3303 {
3304 FLD (out_tra) = f_tra;
3305 }
3306 #endif
3307 #undef FLD
3308 return idesc;
3309 }
3310
3311 extract_sfmt_ptabs:
3312 {
3313 const IDESC *idesc = &sh64_media_insn_data[itype];
3314 CGEN_INSN_WORD insn = entire_insn;
3315 #define FLD(f) abuf->fields.sfmt_beq.f
3316 UINT f_right;
3317 UINT f_tra;
3318
3319 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
3320 f_tra = EXTRACT_MSB0_UINT (insn, 32, 25, 3);
3321
3322 /* Record the fields for the semantic handler. */
3323 FLD (f_right) = f_right;
3324 FLD (f_tra) = f_tra;
3325 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));
3326
3327 #if WITH_PROFILE_MODEL_P
3328 /* Record the fields for profiling. */
3329 if (PROFILE_MODEL_P (current_cpu))
3330 {
3331 FLD (in_rn) = f_right;
3332 FLD (out_tra) = f_tra;
3333 }
3334 #endif
3335 #undef FLD
3336 return idesc;
3337 }
3338
3339 extract_sfmt_ptrel:
3340 {
3341 const IDESC *idesc = &sh64_media_insn_data[itype];
3342 CGEN_INSN_WORD insn = entire_insn;
3343 #define FLD(f) abuf->fields.sfmt_beq.f
3344 UINT f_right;
3345 UINT f_tra;
3346
3347 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
3348 f_tra = EXTRACT_MSB0_UINT (insn, 32, 25, 3);
3349
3350 /* Record the fields for the semantic handler. */
3351 FLD (f_right) = f_right;
3352 FLD (f_tra) = f_tra;
3353 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));
3354
3355 #if WITH_PROFILE_MODEL_P
3356 /* Record the fields for profiling. */
3357 if (PROFILE_MODEL_P (current_cpu))
3358 {
3359 FLD (in_rn) = f_right;
3360 FLD (out_tra) = f_tra;
3361 }
3362 #endif
3363 #undef FLD
3364 return idesc;
3365 }
3366
3367 extract_sfmt_putcfg:
3368 {
3369 const IDESC *idesc = &sh64_media_insn_data[itype];
3370 CGEN_INSN_WORD insn = entire_insn;
3371 #define FLD(f) abuf->fields.sfmt_getcfg.f
3372 UINT f_left;
3373 INT f_disp6;
3374 UINT f_dest;
3375
3376 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
3377 f_disp6 = EXTRACT_MSB0_SINT (insn, 32, 16, 6);
3378 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
3379
3380 /* Record the fields for the semantic handler. */
3381 FLD (f_disp6) = f_disp6;
3382 FLD (f_dest) = f_dest;
3383 FLD (f_left) = f_left;
3384 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_putcfg", "f_disp6 0x%x", 'x', f_disp6, "f_dest 0x%x", 'x', f_dest, "f_left 0x%x", 'x', f_left, (char *) 0));
3385
3386 #if WITH_PROFILE_MODEL_P
3387 /* Record the fields for profiling. */
3388 if (PROFILE_MODEL_P (current_cpu))
3389 {
3390 FLD (in_rd) = f_dest;
3391 FLD (in_rm) = f_left;
3392 }
3393 #endif
3394 #undef FLD
3395 return idesc;
3396 }
3397
3398 extract_sfmt_putcon:
3399 {
3400 const IDESC *idesc = &sh64_media_insn_data[itype];
3401 CGEN_INSN_WORD insn = entire_insn;
3402 #define FLD(f) abuf->fields.sfmt_xori.f
3403 UINT f_left;
3404 UINT f_dest;
3405
3406 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
3407 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
3408
3409 /* Record the fields for the semantic handler. */
3410 FLD (f_left) = f_left;
3411 FLD (f_dest) = f_dest;
3412 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));
3413
3414 #if WITH_PROFILE_MODEL_P
3415 /* Record the fields for profiling. */
3416 if (PROFILE_MODEL_P (current_cpu))
3417 {
3418 FLD (in_rm) = f_left;
3419 }
3420 #endif
3421 #undef FLD
3422 return idesc;
3423 }
3424
3425 extract_sfmt_shari:
3426 {
3427 const IDESC *idesc = &sh64_media_insn_data[itype];
3428 CGEN_INSN_WORD insn = entire_insn;
3429 #define FLD(f) abuf->fields.sfmt_shari.f
3430 UINT f_left;
3431 UINT f_uimm6;
3432 UINT f_dest;
3433
3434 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
3435 f_uimm6 = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
3436 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
3437
3438 /* Record the fields for the semantic handler. */
3439 FLD (f_left) = f_left;
3440 FLD (f_uimm6) = f_uimm6;
3441 FLD (f_dest) = f_dest;
3442 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));
3443
3444 #if WITH_PROFILE_MODEL_P
3445 /* Record the fields for profiling. */
3446 if (PROFILE_MODEL_P (current_cpu))
3447 {
3448 FLD (in_rm) = f_left;
3449 FLD (out_rd) = f_dest;
3450 }
3451 #endif
3452 #undef FLD
3453 return idesc;
3454 }
3455
3456 extract_sfmt_shori:
3457 {
3458 const IDESC *idesc = &sh64_media_insn_data[itype];
3459 CGEN_INSN_WORD insn = entire_insn;
3460 #define FLD(f) abuf->fields.sfmt_shori.f
3461 UINT f_uimm16;
3462 UINT f_dest;
3463
3464 f_uimm16 = EXTRACT_MSB0_UINT (insn, 32, 6, 16);
3465 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
3466
3467 /* Record the fields for the semantic handler. */
3468 FLD (f_dest) = f_dest;
3469 FLD (f_uimm16) = f_uimm16;
3470 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));
3471
3472 #if WITH_PROFILE_MODEL_P
3473 /* Record the fields for profiling. */
3474 if (PROFILE_MODEL_P (current_cpu))
3475 {
3476 FLD (in_rd) = f_dest;
3477 FLD (out_rd) = f_dest;
3478 }
3479 #endif
3480 #undef FLD
3481 return idesc;
3482 }
3483
3484 extract_sfmt_stb:
3485 {
3486 const IDESC *idesc = &sh64_media_insn_data[itype];
3487 CGEN_INSN_WORD insn = entire_insn;
3488 #define FLD(f) abuf->fields.sfmt_addi.f
3489 UINT f_left;
3490 INT f_disp10;
3491 UINT f_dest;
3492
3493 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
3494 f_disp10 = EXTRACT_MSB0_SINT (insn, 32, 12, 10);
3495 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
3496
3497 /* Record the fields for the semantic handler. */
3498 FLD (f_disp10) = f_disp10;
3499 FLD (f_dest) = f_dest;
3500 FLD (f_left) = f_left;
3501 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));
3502
3503 #if WITH_PROFILE_MODEL_P
3504 /* Record the fields for profiling. */
3505 if (PROFILE_MODEL_P (current_cpu))
3506 {
3507 FLD (in_rd) = f_dest;
3508 FLD (in_rm) = f_left;
3509 }
3510 #endif
3511 #undef FLD
3512 return idesc;
3513 }
3514
3515 extract_sfmt_stl:
3516 {
3517 const IDESC *idesc = &sh64_media_insn_data[itype];
3518 CGEN_INSN_WORD insn = entire_insn;
3519 #define FLD(f) abuf->fields.sfmt_flds.f
3520 UINT f_left;
3521 SI f_disp10x4;
3522 UINT f_dest;
3523
3524 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
3525 f_disp10x4 = ((EXTRACT_MSB0_SINT (insn, 32, 12, 10)) << (2));
3526 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
3527
3528 /* Record the fields for the semantic handler. */
3529 FLD (f_disp10x4) = f_disp10x4;
3530 FLD (f_dest) = f_dest;
3531 FLD (f_left) = f_left;
3532 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));
3533
3534 #if WITH_PROFILE_MODEL_P
3535 /* Record the fields for profiling. */
3536 if (PROFILE_MODEL_P (current_cpu))
3537 {
3538 FLD (in_rd) = f_dest;
3539 FLD (in_rm) = f_left;
3540 }
3541 #endif
3542 #undef FLD
3543 return idesc;
3544 }
3545
3546 extract_sfmt_stq:
3547 {
3548 const IDESC *idesc = &sh64_media_insn_data[itype];
3549 CGEN_INSN_WORD insn = entire_insn;
3550 #define FLD(f) abuf->fields.sfmt_fldd.f
3551 UINT f_left;
3552 SI f_disp10x8;
3553 UINT f_dest;
3554
3555 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
3556 f_disp10x8 = ((EXTRACT_MSB0_SINT (insn, 32, 12, 10)) << (3));
3557 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
3558
3559 /* Record the fields for the semantic handler. */
3560 FLD (f_disp10x8) = f_disp10x8;
3561 FLD (f_dest) = f_dest;
3562 FLD (f_left) = f_left;
3563 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));
3564
3565 #if WITH_PROFILE_MODEL_P
3566 /* Record the fields for profiling. */
3567 if (PROFILE_MODEL_P (current_cpu))
3568 {
3569 FLD (in_rd) = f_dest;
3570 FLD (in_rm) = f_left;
3571 }
3572 #endif
3573 #undef FLD
3574 return idesc;
3575 }
3576
3577 extract_sfmt_stw:
3578 {
3579 const IDESC *idesc = &sh64_media_insn_data[itype];
3580 CGEN_INSN_WORD insn = entire_insn;
3581 #define FLD(f) abuf->fields.sfmt_lduw.f
3582 UINT f_left;
3583 SI f_disp10x2;
3584 UINT f_dest;
3585
3586 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
3587 f_disp10x2 = ((EXTRACT_MSB0_SINT (insn, 32, 12, 10)) << (1));
3588 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
3589
3590 /* Record the fields for the semantic handler. */
3591 FLD (f_disp10x2) = f_disp10x2;
3592 FLD (f_dest) = f_dest;
3593 FLD (f_left) = f_left;
3594 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));
3595
3596 #if WITH_PROFILE_MODEL_P
3597 /* Record the fields for profiling. */
3598 if (PROFILE_MODEL_P (current_cpu))
3599 {
3600 FLD (in_rd) = f_dest;
3601 FLD (in_rm) = f_left;
3602 }
3603 #endif
3604 #undef FLD
3605 return idesc;
3606 }
3607
3608 extract_sfmt_sthil:
3609 {
3610 const IDESC *idesc = &sh64_media_insn_data[itype];
3611 CGEN_INSN_WORD insn = entire_insn;
3612 #define FLD(f) abuf->fields.sfmt_getcfg.f
3613 UINT f_left;
3614 INT f_disp6;
3615 UINT f_dest;
3616
3617 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
3618 f_disp6 = EXTRACT_MSB0_SINT (insn, 32, 16, 6);
3619 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
3620
3621 /* Record the fields for the semantic handler. */
3622 FLD (f_disp6) = f_disp6;
3623 FLD (f_dest) = f_dest;
3624 FLD (f_left) = f_left;
3625 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));
3626
3627 #if WITH_PROFILE_MODEL_P
3628 /* Record the fields for profiling. */
3629 if (PROFILE_MODEL_P (current_cpu))
3630 {
3631 FLD (in_rd) = f_dest;
3632 FLD (in_rm) = f_left;
3633 }
3634 #endif
3635 #undef FLD
3636 return idesc;
3637 }
3638
3639 extract_sfmt_sthiq:
3640 {
3641 const IDESC *idesc = &sh64_media_insn_data[itype];
3642 CGEN_INSN_WORD insn = entire_insn;
3643 #define FLD(f) abuf->fields.sfmt_getcfg.f
3644 UINT f_left;
3645 INT f_disp6;
3646 UINT f_dest;
3647
3648 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
3649 f_disp6 = EXTRACT_MSB0_SINT (insn, 32, 16, 6);
3650 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
3651
3652 /* Record the fields for the semantic handler. */
3653 FLD (f_disp6) = f_disp6;
3654 FLD (f_dest) = f_dest;
3655 FLD (f_left) = f_left;
3656 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_sthiq", "f_disp6 0x%x", 'x', f_disp6, "f_dest 0x%x", 'x', f_dest, "f_left 0x%x", 'x', f_left, (char *) 0));
3657
3658 #if WITH_PROFILE_MODEL_P
3659 /* Record the fields for profiling. */
3660 if (PROFILE_MODEL_P (current_cpu))
3661 {
3662 FLD (in_rd) = f_dest;
3663 FLD (in_rm) = f_left;
3664 }
3665 #endif
3666 #undef FLD
3667 return idesc;
3668 }
3669
3670 extract_sfmt_stlol:
3671 {
3672 const IDESC *idesc = &sh64_media_insn_data[itype];
3673 CGEN_INSN_WORD insn = entire_insn;
3674 #define FLD(f) abuf->fields.sfmt_getcfg.f
3675 UINT f_left;
3676 INT f_disp6;
3677 UINT f_dest;
3678
3679 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
3680 f_disp6 = EXTRACT_MSB0_SINT (insn, 32, 16, 6);
3681 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
3682
3683 /* Record the fields for the semantic handler. */
3684 FLD (f_disp6) = f_disp6;
3685 FLD (f_dest) = f_dest;
3686 FLD (f_left) = f_left;
3687 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_stlol", "f_disp6 0x%x", 'x', f_disp6, "f_dest 0x%x", 'x', f_dest, "f_left 0x%x", 'x', f_left, (char *) 0));
3688
3689 #if WITH_PROFILE_MODEL_P
3690 /* Record the fields for profiling. */
3691 if (PROFILE_MODEL_P (current_cpu))
3692 {
3693 FLD (in_rd) = f_dest;
3694 FLD (in_rm) = f_left;
3695 }
3696 #endif
3697 #undef FLD
3698 return idesc;
3699 }
3700
3701 extract_sfmt_stloq:
3702 {
3703 const IDESC *idesc = &sh64_media_insn_data[itype];
3704 CGEN_INSN_WORD insn = entire_insn;
3705 #define FLD(f) abuf->fields.sfmt_getcfg.f
3706 UINT f_left;
3707 INT f_disp6;
3708 UINT f_dest;
3709
3710 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
3711 f_disp6 = EXTRACT_MSB0_SINT (insn, 32, 16, 6);
3712 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
3713
3714 /* Record the fields for the semantic handler. */
3715 FLD (f_disp6) = f_disp6;
3716 FLD (f_dest) = f_dest;
3717 FLD (f_left) = f_left;
3718 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_stloq", "f_disp6 0x%x", 'x', f_disp6, "f_dest 0x%x", 'x', f_dest, "f_left 0x%x", 'x', f_left, (char *) 0));
3719
3720 #if WITH_PROFILE_MODEL_P
3721 /* Record the fields for profiling. */
3722 if (PROFILE_MODEL_P (current_cpu))
3723 {
3724 FLD (in_rd) = f_dest;
3725 FLD (in_rm) = f_left;
3726 }
3727 #endif
3728 #undef FLD
3729 return idesc;
3730 }
3731
3732 extract_sfmt_stxb:
3733 {
3734 const IDESC *idesc = &sh64_media_insn_data[itype];
3735 CGEN_INSN_WORD insn = entire_insn;
3736 #define FLD(f) abuf->fields.sfmt_add.f
3737 UINT f_left;
3738 UINT f_right;
3739 UINT f_dest;
3740
3741 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
3742 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
3743 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
3744
3745 /* Record the fields for the semantic handler. */
3746 FLD (f_dest) = f_dest;
3747 FLD (f_left) = f_left;
3748 FLD (f_right) = f_right;
3749 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));
3750
3751 #if WITH_PROFILE_MODEL_P
3752 /* Record the fields for profiling. */
3753 if (PROFILE_MODEL_P (current_cpu))
3754 {
3755 FLD (in_rd) = f_dest;
3756 FLD (in_rm) = f_left;
3757 FLD (in_rn) = f_right;
3758 }
3759 #endif
3760 #undef FLD
3761 return idesc;
3762 }
3763
3764 extract_sfmt_stxl:
3765 {
3766 const IDESC *idesc = &sh64_media_insn_data[itype];
3767 CGEN_INSN_WORD insn = entire_insn;
3768 #define FLD(f) abuf->fields.sfmt_add.f
3769 UINT f_left;
3770 UINT f_right;
3771 UINT f_dest;
3772
3773 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
3774 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
3775 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
3776
3777 /* Record the fields for the semantic handler. */
3778 FLD (f_dest) = f_dest;
3779 FLD (f_left) = f_left;
3780 FLD (f_right) = f_right;
3781 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_stxl", "f_dest 0x%x", 'x', f_dest, "f_left 0x%x", 'x', f_left, "f_right 0x%x", 'x', f_right, (char *) 0));
3782
3783 #if WITH_PROFILE_MODEL_P
3784 /* Record the fields for profiling. */
3785 if (PROFILE_MODEL_P (current_cpu))
3786 {
3787 FLD (in_rd) = f_dest;
3788 FLD (in_rm) = f_left;
3789 FLD (in_rn) = f_right;
3790 }
3791 #endif
3792 #undef FLD
3793 return idesc;
3794 }
3795
3796 extract_sfmt_stxq:
3797 {
3798 const IDESC *idesc = &sh64_media_insn_data[itype];
3799 CGEN_INSN_WORD insn = entire_insn;
3800 #define FLD(f) abuf->fields.sfmt_add.f
3801 UINT f_left;
3802 UINT f_right;
3803 UINT f_dest;
3804
3805 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
3806 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
3807 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
3808
3809 /* Record the fields for the semantic handler. */
3810 FLD (f_dest) = f_dest;
3811 FLD (f_left) = f_left;
3812 FLD (f_right) = f_right;
3813 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_stxq", "f_dest 0x%x", 'x', f_dest, "f_left 0x%x", 'x', f_left, "f_right 0x%x", 'x', f_right, (char *) 0));
3814
3815 #if WITH_PROFILE_MODEL_P
3816 /* Record the fields for profiling. */
3817 if (PROFILE_MODEL_P (current_cpu))
3818 {
3819 FLD (in_rd) = f_dest;
3820 FLD (in_rm) = f_left;
3821 FLD (in_rn) = f_right;
3822 }
3823 #endif
3824 #undef FLD
3825 return idesc;
3826 }
3827
3828 extract_sfmt_stxw:
3829 {
3830 const IDESC *idesc = &sh64_media_insn_data[itype];
3831 CGEN_INSN_WORD insn = entire_insn;
3832 #define FLD(f) abuf->fields.sfmt_add.f
3833 UINT f_left;
3834 UINT f_right;
3835 UINT f_dest;
3836
3837 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
3838 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
3839 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
3840
3841 /* Record the fields for the semantic handler. */
3842 FLD (f_dest) = f_dest;
3843 FLD (f_left) = f_left;
3844 FLD (f_right) = f_right;
3845 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_stxw", "f_dest 0x%x", 'x', f_dest, "f_left 0x%x", 'x', f_left, "f_right 0x%x", 'x', f_right, (char *) 0));
3846
3847 #if WITH_PROFILE_MODEL_P
3848 /* Record the fields for profiling. */
3849 if (PROFILE_MODEL_P (current_cpu))
3850 {
3851 FLD (in_rd) = f_dest;
3852 FLD (in_rm) = f_left;
3853 FLD (in_rn) = f_right;
3854 }
3855 #endif
3856 #undef FLD
3857 return idesc;
3858 }
3859
3860 extract_sfmt_swapq:
3861 {
3862 const IDESC *idesc = &sh64_media_insn_data[itype];
3863 CGEN_INSN_WORD insn = entire_insn;
3864 #define FLD(f) abuf->fields.sfmt_add.f
3865 UINT f_left;
3866 UINT f_right;
3867 UINT f_dest;
3868
3869 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
3870 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
3871 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
3872
3873 /* Record the fields for the semantic handler. */
3874 FLD (f_dest) = f_dest;
3875 FLD (f_left) = f_left;
3876 FLD (f_right) = f_right;
3877 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));
3878
3879 #if WITH_PROFILE_MODEL_P
3880 /* Record the fields for profiling. */
3881 if (PROFILE_MODEL_P (current_cpu))
3882 {
3883 FLD (in_rd) = f_dest;
3884 FLD (in_rm) = f_left;
3885 FLD (in_rn) = f_right;
3886 FLD (out_rd) = f_dest;
3887 }
3888 #endif
3889 #undef FLD
3890 return idesc;
3891 }
3892
3893 extract_sfmt_trapa:
3894 {
3895 const IDESC *idesc = &sh64_media_insn_data[itype];
3896 CGEN_INSN_WORD insn = entire_insn;
3897 #define FLD(f) abuf->fields.sfmt_xori.f
3898 UINT f_left;
3899
3900 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
3901
3902 /* Record the fields for the semantic handler. */
3903 FLD (f_left) = f_left;
3904 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_trapa", "f_left 0x%x", 'x', f_left, (char *) 0));
3905
3906 #if WITH_PROFILE_MODEL_P
3907 /* Record the fields for profiling. */
3908 if (PROFILE_MODEL_P (current_cpu))
3909 {
3910 FLD (in_rm) = f_left;
3911 }
3912 #endif
3913 #undef FLD
3914 return idesc;
3915 }
3916
3917 extract_sfmt_xori:
3918 {
3919 const IDESC *idesc = &sh64_media_insn_data[itype];
3920 CGEN_INSN_WORD insn = entire_insn;
3921 #define FLD(f) abuf->fields.sfmt_xori.f
3922 UINT f_left;
3923 INT f_imm6;
3924 UINT f_dest;
3925
3926 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
3927 f_imm6 = EXTRACT_MSB0_SINT (insn, 32, 16, 6);
3928 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
3929
3930 /* Record the fields for the semantic handler. */
3931 FLD (f_imm6) = f_imm6;
3932 FLD (f_left) = f_left;
3933 FLD (f_dest) = f_dest;
3934 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));
3935
3936 #if WITH_PROFILE_MODEL_P
3937 /* Record the fields for profiling. */
3938 if (PROFILE_MODEL_P (current_cpu))
3939 {
3940 FLD (in_rm) = f_left;
3941 FLD (out_rd) = f_dest;
3942 }
3943 #endif
3944 #undef FLD
3945 return idesc;
3946 }
3947
3948 }
This page took 0.116323 seconds and 4 git commands to generate.