Make tui-winsource not use breakpoint_chain
[binutils-gdb.git] / sim / sh64 / decode-media.c
blobe98f871820f4aeb8809189a875915c1dbb60134e
1 /* Simulator instruction decoder for sh64_media.
3 THIS FILE IS MACHINE GENERATED WITH CGEN.
5 Copyright 1996-2019 Free Software Foundation, Inc.
7 This file is part of the GNU simulators.
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.
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.
19 You should have received a copy of the GNU General Public License along
20 with this program; if not, see <http://www.gnu.org/licenses/>.
24 #define WANT_CPU sh64
25 #define WANT_CPU_SH64
27 #include "sim-main.h"
28 #include "sim-assert.h"
30 /* The instruction descriptor array.
31 This is computed at runtime. Space for it is not malloc'd to save a
32 teensy bit of cpu in the decoder. Moving it to malloc space is trivial
33 but won't be done until necessary (we don't currently support the runtime
34 addition of instructions nor an SMP machine with different cpus). */
35 static IDESC sh64_media_insn_data[SH64_MEDIA_INSN__MAX];
37 /* Commas between elements are contained in the macros.
38 Some of these are conditionally compiled out. */
40 static const struct insn_sem sh64_media_insn_sem[] =
42 { VIRTUAL_INSN_X_INVALID, SH64_MEDIA_INSN_X_INVALID, SH64_MEDIA_SFMT_EMPTY },
43 { VIRTUAL_INSN_X_AFTER, SH64_MEDIA_INSN_X_AFTER, SH64_MEDIA_SFMT_EMPTY },
44 { VIRTUAL_INSN_X_BEFORE, SH64_MEDIA_INSN_X_BEFORE, SH64_MEDIA_SFMT_EMPTY },
45 { VIRTUAL_INSN_X_CTI_CHAIN, SH64_MEDIA_INSN_X_CTI_CHAIN, SH64_MEDIA_SFMT_EMPTY },
46 { VIRTUAL_INSN_X_CHAIN, SH64_MEDIA_INSN_X_CHAIN, SH64_MEDIA_SFMT_EMPTY },
47 { VIRTUAL_INSN_X_BEGIN, SH64_MEDIA_INSN_X_BEGIN, SH64_MEDIA_SFMT_EMPTY },
48 { SH_INSN_ADD, SH64_MEDIA_INSN_ADD, SH64_MEDIA_SFMT_ADD },
49 { SH_INSN_ADDL, SH64_MEDIA_INSN_ADDL, SH64_MEDIA_SFMT_ADD },
50 { SH_INSN_ADDI, SH64_MEDIA_INSN_ADDI, SH64_MEDIA_SFMT_ADDI },
51 { SH_INSN_ADDIL, SH64_MEDIA_INSN_ADDIL, SH64_MEDIA_SFMT_ADDI },
52 { SH_INSN_ADDZL, SH64_MEDIA_INSN_ADDZL, SH64_MEDIA_SFMT_ADD },
53 { SH_INSN_ALLOCO, SH64_MEDIA_INSN_ALLOCO, SH64_MEDIA_SFMT_ALLOCO },
54 { SH_INSN_AND, SH64_MEDIA_INSN_AND, SH64_MEDIA_SFMT_ADD },
55 { SH_INSN_ANDC, SH64_MEDIA_INSN_ANDC, SH64_MEDIA_SFMT_ADD },
56 { SH_INSN_ANDI, SH64_MEDIA_INSN_ANDI, SH64_MEDIA_SFMT_ADDI },
57 { SH_INSN_BEQ, SH64_MEDIA_INSN_BEQ, SH64_MEDIA_SFMT_BEQ },
58 { SH_INSN_BEQI, SH64_MEDIA_INSN_BEQI, SH64_MEDIA_SFMT_BEQI },
59 { SH_INSN_BGE, SH64_MEDIA_INSN_BGE, SH64_MEDIA_SFMT_BEQ },
60 { SH_INSN_BGEU, SH64_MEDIA_INSN_BGEU, SH64_MEDIA_SFMT_BEQ },
61 { SH_INSN_BGT, SH64_MEDIA_INSN_BGT, SH64_MEDIA_SFMT_BEQ },
62 { SH_INSN_BGTU, SH64_MEDIA_INSN_BGTU, SH64_MEDIA_SFMT_BEQ },
63 { SH_INSN_BLINK, SH64_MEDIA_INSN_BLINK, SH64_MEDIA_SFMT_BLINK },
64 { SH_INSN_BNE, SH64_MEDIA_INSN_BNE, SH64_MEDIA_SFMT_BEQ },
65 { SH_INSN_BNEI, SH64_MEDIA_INSN_BNEI, SH64_MEDIA_SFMT_BNEI },
66 { SH_INSN_BRK, SH64_MEDIA_INSN_BRK, SH64_MEDIA_SFMT_BRK },
67 { SH_INSN_BYTEREV, SH64_MEDIA_INSN_BYTEREV, SH64_MEDIA_SFMT_BYTEREV },
68 { SH_INSN_CMPEQ, SH64_MEDIA_INSN_CMPEQ, SH64_MEDIA_SFMT_ADD },
69 { SH_INSN_CMPGT, SH64_MEDIA_INSN_CMPGT, SH64_MEDIA_SFMT_ADD },
70 { SH_INSN_CMPGTU, SH64_MEDIA_INSN_CMPGTU, SH64_MEDIA_SFMT_ADD },
71 { SH_INSN_CMVEQ, SH64_MEDIA_INSN_CMVEQ, SH64_MEDIA_SFMT_CMVEQ },
72 { SH_INSN_CMVNE, SH64_MEDIA_INSN_CMVNE, SH64_MEDIA_SFMT_CMVEQ },
73 { SH_INSN_FABSD, SH64_MEDIA_INSN_FABSD, SH64_MEDIA_SFMT_FABSD },
74 { SH_INSN_FABSS, SH64_MEDIA_INSN_FABSS, SH64_MEDIA_SFMT_FABSS },
75 { SH_INSN_FADDD, SH64_MEDIA_INSN_FADDD, SH64_MEDIA_SFMT_FADDD },
76 { SH_INSN_FADDS, SH64_MEDIA_INSN_FADDS, SH64_MEDIA_SFMT_FADDS },
77 { SH_INSN_FCMPEQD, SH64_MEDIA_INSN_FCMPEQD, SH64_MEDIA_SFMT_FCMPEQD },
78 { SH_INSN_FCMPEQS, SH64_MEDIA_INSN_FCMPEQS, SH64_MEDIA_SFMT_FCMPEQS },
79 { SH_INSN_FCMPGED, SH64_MEDIA_INSN_FCMPGED, SH64_MEDIA_SFMT_FCMPEQD },
80 { SH_INSN_FCMPGES, SH64_MEDIA_INSN_FCMPGES, SH64_MEDIA_SFMT_FCMPEQS },
81 { SH_INSN_FCMPGTD, SH64_MEDIA_INSN_FCMPGTD, SH64_MEDIA_SFMT_FCMPEQD },
82 { SH_INSN_FCMPGTS, SH64_MEDIA_INSN_FCMPGTS, SH64_MEDIA_SFMT_FCMPEQS },
83 { SH_INSN_FCMPUND, SH64_MEDIA_INSN_FCMPUND, SH64_MEDIA_SFMT_FCMPEQD },
84 { SH_INSN_FCMPUNS, SH64_MEDIA_INSN_FCMPUNS, SH64_MEDIA_SFMT_FCMPEQS },
85 { SH_INSN_FCNVDS, SH64_MEDIA_INSN_FCNVDS, SH64_MEDIA_SFMT_FCNVDS },
86 { SH_INSN_FCNVSD, SH64_MEDIA_INSN_FCNVSD, SH64_MEDIA_SFMT_FCNVSD },
87 { SH_INSN_FDIVD, SH64_MEDIA_INSN_FDIVD, SH64_MEDIA_SFMT_FADDD },
88 { SH_INSN_FDIVS, SH64_MEDIA_INSN_FDIVS, SH64_MEDIA_SFMT_FADDS },
89 { SH_INSN_FGETSCR, SH64_MEDIA_INSN_FGETSCR, SH64_MEDIA_SFMT_FGETSCR },
90 { SH_INSN_FIPRS, SH64_MEDIA_INSN_FIPRS, SH64_MEDIA_SFMT_FIPRS },
91 { SH_INSN_FLDD, SH64_MEDIA_INSN_FLDD, SH64_MEDIA_SFMT_FLDD },
92 { SH_INSN_FLDP, SH64_MEDIA_INSN_FLDP, SH64_MEDIA_SFMT_FLDP },
93 { SH_INSN_FLDS, SH64_MEDIA_INSN_FLDS, SH64_MEDIA_SFMT_FLDS },
94 { SH_INSN_FLDXD, SH64_MEDIA_INSN_FLDXD, SH64_MEDIA_SFMT_FLDXD },
95 { SH_INSN_FLDXP, SH64_MEDIA_INSN_FLDXP, SH64_MEDIA_SFMT_FLDXP },
96 { SH_INSN_FLDXS, SH64_MEDIA_INSN_FLDXS, SH64_MEDIA_SFMT_FLDXS },
97 { SH_INSN_FLOATLD, SH64_MEDIA_INSN_FLOATLD, SH64_MEDIA_SFMT_FCNVSD },
98 { SH_INSN_FLOATLS, SH64_MEDIA_INSN_FLOATLS, SH64_MEDIA_SFMT_FABSS },
99 { SH_INSN_FLOATQD, SH64_MEDIA_INSN_FLOATQD, SH64_MEDIA_SFMT_FABSD },
100 { SH_INSN_FLOATQS, SH64_MEDIA_INSN_FLOATQS, SH64_MEDIA_SFMT_FCNVDS },
101 { SH_INSN_FMACS, SH64_MEDIA_INSN_FMACS, SH64_MEDIA_SFMT_FMACS },
102 { SH_INSN_FMOVD, SH64_MEDIA_INSN_FMOVD, SH64_MEDIA_SFMT_FABSD },
103 { SH_INSN_FMOVDQ, SH64_MEDIA_INSN_FMOVDQ, SH64_MEDIA_SFMT_FMOVDQ },
104 { SH_INSN_FMOVLS, SH64_MEDIA_INSN_FMOVLS, SH64_MEDIA_SFMT_FMOVLS },
105 { SH_INSN_FMOVQD, SH64_MEDIA_INSN_FMOVQD, SH64_MEDIA_SFMT_FMOVQD },
106 { SH_INSN_FMOVS, SH64_MEDIA_INSN_FMOVS, SH64_MEDIA_SFMT_FABSS },
107 { SH_INSN_FMOVSL, SH64_MEDIA_INSN_FMOVSL, SH64_MEDIA_SFMT_FMOVSL },
108 { SH_INSN_FMULD, SH64_MEDIA_INSN_FMULD, SH64_MEDIA_SFMT_FADDD },
109 { SH_INSN_FMULS, SH64_MEDIA_INSN_FMULS, SH64_MEDIA_SFMT_FADDS },
110 { SH_INSN_FNEGD, SH64_MEDIA_INSN_FNEGD, SH64_MEDIA_SFMT_FABSD },
111 { SH_INSN_FNEGS, SH64_MEDIA_INSN_FNEGS, SH64_MEDIA_SFMT_FABSS },
112 { SH_INSN_FPUTSCR, SH64_MEDIA_INSN_FPUTSCR, SH64_MEDIA_SFMT_FPUTSCR },
113 { SH_INSN_FSQRTD, SH64_MEDIA_INSN_FSQRTD, SH64_MEDIA_SFMT_FABSD },
114 { SH_INSN_FSQRTS, SH64_MEDIA_INSN_FSQRTS, SH64_MEDIA_SFMT_FABSS },
115 { SH_INSN_FSTD, SH64_MEDIA_INSN_FSTD, SH64_MEDIA_SFMT_FSTD },
116 { SH_INSN_FSTP, SH64_MEDIA_INSN_FSTP, SH64_MEDIA_SFMT_FLDP },
117 { SH_INSN_FSTS, SH64_MEDIA_INSN_FSTS, SH64_MEDIA_SFMT_FSTS },
118 { SH_INSN_FSTXD, SH64_MEDIA_INSN_FSTXD, SH64_MEDIA_SFMT_FSTXD },
119 { SH_INSN_FSTXP, SH64_MEDIA_INSN_FSTXP, SH64_MEDIA_SFMT_FLDXP },
120 { SH_INSN_FSTXS, SH64_MEDIA_INSN_FSTXS, SH64_MEDIA_SFMT_FSTXS },
121 { SH_INSN_FSUBD, SH64_MEDIA_INSN_FSUBD, SH64_MEDIA_SFMT_FSUBD },
122 { SH_INSN_FSUBS, SH64_MEDIA_INSN_FSUBS, SH64_MEDIA_SFMT_FADDS },
123 { SH_INSN_FTRCDL, SH64_MEDIA_INSN_FTRCDL, SH64_MEDIA_SFMT_FCNVDS },
124 { SH_INSN_FTRCSL, SH64_MEDIA_INSN_FTRCSL, SH64_MEDIA_SFMT_FABSS },
125 { SH_INSN_FTRCDQ, SH64_MEDIA_INSN_FTRCDQ, SH64_MEDIA_SFMT_FTRCDQ },
126 { SH_INSN_FTRCSQ, SH64_MEDIA_INSN_FTRCSQ, SH64_MEDIA_SFMT_FCNVSD },
127 { SH_INSN_FTRVS, SH64_MEDIA_INSN_FTRVS, SH64_MEDIA_SFMT_FTRVS },
128 { SH_INSN_GETCFG, SH64_MEDIA_INSN_GETCFG, SH64_MEDIA_SFMT_GETCFG },
129 { SH_INSN_GETCON, SH64_MEDIA_INSN_GETCON, SH64_MEDIA_SFMT_GETCON },
130 { SH_INSN_GETTR, SH64_MEDIA_INSN_GETTR, SH64_MEDIA_SFMT_GETTR },
131 { SH_INSN_ICBI, SH64_MEDIA_INSN_ICBI, SH64_MEDIA_SFMT_ALLOCO },
132 { SH_INSN_LDB, SH64_MEDIA_INSN_LDB, SH64_MEDIA_SFMT_LDB },
133 { SH_INSN_LDL, SH64_MEDIA_INSN_LDL, SH64_MEDIA_SFMT_LDL },
134 { SH_INSN_LDQ, SH64_MEDIA_INSN_LDQ, SH64_MEDIA_SFMT_LDQ },
135 { SH_INSN_LDUB, SH64_MEDIA_INSN_LDUB, SH64_MEDIA_SFMT_LDB },
136 { SH_INSN_LDUW, SH64_MEDIA_INSN_LDUW, SH64_MEDIA_SFMT_LDUW },
137 { SH_INSN_LDW, SH64_MEDIA_INSN_LDW, SH64_MEDIA_SFMT_LDUW },
138 { SH_INSN_LDHIL, SH64_MEDIA_INSN_LDHIL, SH64_MEDIA_SFMT_LDHIL },
139 { SH_INSN_LDHIQ, SH64_MEDIA_INSN_LDHIQ, SH64_MEDIA_SFMT_LDHIQ },
140 { SH_INSN_LDLOL, SH64_MEDIA_INSN_LDLOL, SH64_MEDIA_SFMT_LDLOL },
141 { SH_INSN_LDLOQ, SH64_MEDIA_INSN_LDLOQ, SH64_MEDIA_SFMT_LDLOQ },
142 { SH_INSN_LDXB, SH64_MEDIA_INSN_LDXB, SH64_MEDIA_SFMT_LDXB },
143 { SH_INSN_LDXL, SH64_MEDIA_INSN_LDXL, SH64_MEDIA_SFMT_LDXL },
144 { SH_INSN_LDXQ, SH64_MEDIA_INSN_LDXQ, SH64_MEDIA_SFMT_LDXQ },
145 { SH_INSN_LDXUB, SH64_MEDIA_INSN_LDXUB, SH64_MEDIA_SFMT_LDXUB },
146 { SH_INSN_LDXUW, SH64_MEDIA_INSN_LDXUW, SH64_MEDIA_SFMT_LDXUW },
147 { SH_INSN_LDXW, SH64_MEDIA_INSN_LDXW, SH64_MEDIA_SFMT_LDXW },
148 { SH_INSN_MABSL, SH64_MEDIA_INSN_MABSL, SH64_MEDIA_SFMT_BYTEREV },
149 { SH_INSN_MABSW, SH64_MEDIA_INSN_MABSW, SH64_MEDIA_SFMT_BYTEREV },
150 { SH_INSN_MADDL, SH64_MEDIA_INSN_MADDL, SH64_MEDIA_SFMT_ADD },
151 { SH_INSN_MADDW, SH64_MEDIA_INSN_MADDW, SH64_MEDIA_SFMT_ADD },
152 { SH_INSN_MADDSL, SH64_MEDIA_INSN_MADDSL, SH64_MEDIA_SFMT_ADD },
153 { SH_INSN_MADDSUB, SH64_MEDIA_INSN_MADDSUB, SH64_MEDIA_SFMT_ADD },
154 { SH_INSN_MADDSW, SH64_MEDIA_INSN_MADDSW, SH64_MEDIA_SFMT_ADD },
155 { SH_INSN_MCMPEQB, SH64_MEDIA_INSN_MCMPEQB, SH64_MEDIA_SFMT_ADD },
156 { SH_INSN_MCMPEQL, SH64_MEDIA_INSN_MCMPEQL, SH64_MEDIA_SFMT_ADD },
157 { SH_INSN_MCMPEQW, SH64_MEDIA_INSN_MCMPEQW, SH64_MEDIA_SFMT_ADD },
158 { SH_INSN_MCMPGTL, SH64_MEDIA_INSN_MCMPGTL, SH64_MEDIA_SFMT_ADD },
159 { SH_INSN_MCMPGTUB, SH64_MEDIA_INSN_MCMPGTUB, SH64_MEDIA_SFMT_ADD },
160 { SH_INSN_MCMPGTW, SH64_MEDIA_INSN_MCMPGTW, SH64_MEDIA_SFMT_ADD },
161 { SH_INSN_MCMV, SH64_MEDIA_INSN_MCMV, SH64_MEDIA_SFMT_MCMV },
162 { SH_INSN_MCNVSLW, SH64_MEDIA_INSN_MCNVSLW, SH64_MEDIA_SFMT_ADD },
163 { SH_INSN_MCNVSWB, SH64_MEDIA_INSN_MCNVSWB, SH64_MEDIA_SFMT_ADD },
164 { SH_INSN_MCNVSWUB, SH64_MEDIA_INSN_MCNVSWUB, SH64_MEDIA_SFMT_ADD },
165 { SH_INSN_MEXTR1, SH64_MEDIA_INSN_MEXTR1, SH64_MEDIA_SFMT_ADD },
166 { SH_INSN_MEXTR2, SH64_MEDIA_INSN_MEXTR2, SH64_MEDIA_SFMT_ADD },
167 { SH_INSN_MEXTR3, SH64_MEDIA_INSN_MEXTR3, SH64_MEDIA_SFMT_ADD },
168 { SH_INSN_MEXTR4, SH64_MEDIA_INSN_MEXTR4, SH64_MEDIA_SFMT_ADD },
169 { SH_INSN_MEXTR5, SH64_MEDIA_INSN_MEXTR5, SH64_MEDIA_SFMT_ADD },
170 { SH_INSN_MEXTR6, SH64_MEDIA_INSN_MEXTR6, SH64_MEDIA_SFMT_ADD },
171 { SH_INSN_MEXTR7, SH64_MEDIA_INSN_MEXTR7, SH64_MEDIA_SFMT_ADD },
172 { SH_INSN_MMACFXWL, SH64_MEDIA_INSN_MMACFXWL, SH64_MEDIA_SFMT_MCMV },
173 { SH_INSN_MMACNFX_WL, SH64_MEDIA_INSN_MMACNFX_WL, SH64_MEDIA_SFMT_MMACNFX_WL },
174 { SH_INSN_MMULL, SH64_MEDIA_INSN_MMULL, SH64_MEDIA_SFMT_ADD },
175 { SH_INSN_MMULW, SH64_MEDIA_INSN_MMULW, SH64_MEDIA_SFMT_ADD },
176 { SH_INSN_MMULFXL, SH64_MEDIA_INSN_MMULFXL, SH64_MEDIA_SFMT_ADD },
177 { SH_INSN_MMULFXW, SH64_MEDIA_INSN_MMULFXW, SH64_MEDIA_SFMT_ADD },
178 { SH_INSN_MMULFXRPW, SH64_MEDIA_INSN_MMULFXRPW, SH64_MEDIA_SFMT_ADD },
179 { SH_INSN_MMULHIWL, SH64_MEDIA_INSN_MMULHIWL, SH64_MEDIA_SFMT_ADD },
180 { SH_INSN_MMULLOWL, SH64_MEDIA_INSN_MMULLOWL, SH64_MEDIA_SFMT_ADD },
181 { SH_INSN_MMULSUMWQ, SH64_MEDIA_INSN_MMULSUMWQ, SH64_MEDIA_SFMT_MCMV },
182 { SH_INSN_MOVI, SH64_MEDIA_INSN_MOVI, SH64_MEDIA_SFMT_MOVI },
183 { SH_INSN_MPERMW, SH64_MEDIA_INSN_MPERMW, SH64_MEDIA_SFMT_ADD },
184 { SH_INSN_MSADUBQ, SH64_MEDIA_INSN_MSADUBQ, SH64_MEDIA_SFMT_MCMV },
185 { SH_INSN_MSHALDSL, SH64_MEDIA_INSN_MSHALDSL, SH64_MEDIA_SFMT_ADD },
186 { SH_INSN_MSHALDSW, SH64_MEDIA_INSN_MSHALDSW, SH64_MEDIA_SFMT_ADD },
187 { SH_INSN_MSHARDL, SH64_MEDIA_INSN_MSHARDL, SH64_MEDIA_SFMT_ADD },
188 { SH_INSN_MSHARDW, SH64_MEDIA_INSN_MSHARDW, SH64_MEDIA_SFMT_ADD },
189 { SH_INSN_MSHARDSQ, SH64_MEDIA_INSN_MSHARDSQ, SH64_MEDIA_SFMT_ADD },
190 { SH_INSN_MSHFHIB, SH64_MEDIA_INSN_MSHFHIB, SH64_MEDIA_SFMT_ADD },
191 { SH_INSN_MSHFHIL, SH64_MEDIA_INSN_MSHFHIL, SH64_MEDIA_SFMT_ADD },
192 { SH_INSN_MSHFHIW, SH64_MEDIA_INSN_MSHFHIW, SH64_MEDIA_SFMT_ADD },
193 { SH_INSN_MSHFLOB, SH64_MEDIA_INSN_MSHFLOB, SH64_MEDIA_SFMT_ADD },
194 { SH_INSN_MSHFLOL, SH64_MEDIA_INSN_MSHFLOL, SH64_MEDIA_SFMT_ADD },
195 { SH_INSN_MSHFLOW, SH64_MEDIA_INSN_MSHFLOW, SH64_MEDIA_SFMT_ADD },
196 { SH_INSN_MSHLLDL, SH64_MEDIA_INSN_MSHLLDL, SH64_MEDIA_SFMT_ADD },
197 { SH_INSN_MSHLLDW, SH64_MEDIA_INSN_MSHLLDW, SH64_MEDIA_SFMT_ADD },
198 { SH_INSN_MSHLRDL, SH64_MEDIA_INSN_MSHLRDL, SH64_MEDIA_SFMT_ADD },
199 { SH_INSN_MSHLRDW, SH64_MEDIA_INSN_MSHLRDW, SH64_MEDIA_SFMT_ADD },
200 { SH_INSN_MSUBL, SH64_MEDIA_INSN_MSUBL, SH64_MEDIA_SFMT_ADD },
201 { SH_INSN_MSUBW, SH64_MEDIA_INSN_MSUBW, SH64_MEDIA_SFMT_ADD },
202 { SH_INSN_MSUBSL, SH64_MEDIA_INSN_MSUBSL, SH64_MEDIA_SFMT_ADD },
203 { SH_INSN_MSUBSUB, SH64_MEDIA_INSN_MSUBSUB, SH64_MEDIA_SFMT_ADD },
204 { SH_INSN_MSUBSW, SH64_MEDIA_INSN_MSUBSW, SH64_MEDIA_SFMT_ADD },
205 { SH_INSN_MULSL, SH64_MEDIA_INSN_MULSL, SH64_MEDIA_SFMT_ADD },
206 { SH_INSN_MULUL, SH64_MEDIA_INSN_MULUL, SH64_MEDIA_SFMT_ADD },
207 { SH_INSN_NOP, SH64_MEDIA_INSN_NOP, SH64_MEDIA_SFMT_NOP },
208 { SH_INSN_NSB, SH64_MEDIA_INSN_NSB, SH64_MEDIA_SFMT_BYTEREV },
209 { SH_INSN_OCBI, SH64_MEDIA_INSN_OCBI, SH64_MEDIA_SFMT_ALLOCO },
210 { SH_INSN_OCBP, SH64_MEDIA_INSN_OCBP, SH64_MEDIA_SFMT_ALLOCO },
211 { SH_INSN_OCBWB, SH64_MEDIA_INSN_OCBWB, SH64_MEDIA_SFMT_ALLOCO },
212 { SH_INSN_OR, SH64_MEDIA_INSN_OR, SH64_MEDIA_SFMT_ADD },
213 { SH_INSN_ORI, SH64_MEDIA_INSN_ORI, SH64_MEDIA_SFMT_ORI },
214 { SH_INSN_PREFI, SH64_MEDIA_INSN_PREFI, SH64_MEDIA_SFMT_PREFI },
215 { SH_INSN_PTA, SH64_MEDIA_INSN_PTA, SH64_MEDIA_SFMT_PTA },
216 { SH_INSN_PTABS, SH64_MEDIA_INSN_PTABS, SH64_MEDIA_SFMT_PTABS },
217 { SH_INSN_PTB, SH64_MEDIA_INSN_PTB, SH64_MEDIA_SFMT_PTA },
218 { SH_INSN_PTREL, SH64_MEDIA_INSN_PTREL, SH64_MEDIA_SFMT_PTREL },
219 { SH_INSN_PUTCFG, SH64_MEDIA_INSN_PUTCFG, SH64_MEDIA_SFMT_PUTCFG },
220 { SH_INSN_PUTCON, SH64_MEDIA_INSN_PUTCON, SH64_MEDIA_SFMT_PUTCON },
221 { SH_INSN_RTE, SH64_MEDIA_INSN_RTE, SH64_MEDIA_SFMT_NOP },
222 { SH_INSN_SHARD, SH64_MEDIA_INSN_SHARD, SH64_MEDIA_SFMT_ADD },
223 { SH_INSN_SHARDL, SH64_MEDIA_INSN_SHARDL, SH64_MEDIA_SFMT_ADD },
224 { SH_INSN_SHARI, SH64_MEDIA_INSN_SHARI, SH64_MEDIA_SFMT_SHARI },
225 { SH_INSN_SHARIL, SH64_MEDIA_INSN_SHARIL, SH64_MEDIA_SFMT_SHARI },
226 { SH_INSN_SHLLD, SH64_MEDIA_INSN_SHLLD, SH64_MEDIA_SFMT_ADD },
227 { SH_INSN_SHLLDL, SH64_MEDIA_INSN_SHLLDL, SH64_MEDIA_SFMT_ADD },
228 { SH_INSN_SHLLI, SH64_MEDIA_INSN_SHLLI, SH64_MEDIA_SFMT_SHARI },
229 { SH_INSN_SHLLIL, SH64_MEDIA_INSN_SHLLIL, SH64_MEDIA_SFMT_SHARI },
230 { SH_INSN_SHLRD, SH64_MEDIA_INSN_SHLRD, SH64_MEDIA_SFMT_ADD },
231 { SH_INSN_SHLRDL, SH64_MEDIA_INSN_SHLRDL, SH64_MEDIA_SFMT_ADD },
232 { SH_INSN_SHLRI, SH64_MEDIA_INSN_SHLRI, SH64_MEDIA_SFMT_SHARI },
233 { SH_INSN_SHLRIL, SH64_MEDIA_INSN_SHLRIL, SH64_MEDIA_SFMT_SHARI },
234 { SH_INSN_SHORI, SH64_MEDIA_INSN_SHORI, SH64_MEDIA_SFMT_SHORI },
235 { SH_INSN_SLEEP, SH64_MEDIA_INSN_SLEEP, SH64_MEDIA_SFMT_NOP },
236 { SH_INSN_STB, SH64_MEDIA_INSN_STB, SH64_MEDIA_SFMT_STB },
237 { SH_INSN_STL, SH64_MEDIA_INSN_STL, SH64_MEDIA_SFMT_STL },
238 { SH_INSN_STQ, SH64_MEDIA_INSN_STQ, SH64_MEDIA_SFMT_STQ },
239 { SH_INSN_STW, SH64_MEDIA_INSN_STW, SH64_MEDIA_SFMT_STW },
240 { SH_INSN_STHIL, SH64_MEDIA_INSN_STHIL, SH64_MEDIA_SFMT_STHIL },
241 { SH_INSN_STHIQ, SH64_MEDIA_INSN_STHIQ, SH64_MEDIA_SFMT_STHIQ },
242 { SH_INSN_STLOL, SH64_MEDIA_INSN_STLOL, SH64_MEDIA_SFMT_STLOL },
243 { SH_INSN_STLOQ, SH64_MEDIA_INSN_STLOQ, SH64_MEDIA_SFMT_STLOQ },
244 { SH_INSN_STXB, SH64_MEDIA_INSN_STXB, SH64_MEDIA_SFMT_STXB },
245 { SH_INSN_STXL, SH64_MEDIA_INSN_STXL, SH64_MEDIA_SFMT_STXL },
246 { SH_INSN_STXQ, SH64_MEDIA_INSN_STXQ, SH64_MEDIA_SFMT_STXQ },
247 { SH_INSN_STXW, SH64_MEDIA_INSN_STXW, SH64_MEDIA_SFMT_STXW },
248 { SH_INSN_SUB, SH64_MEDIA_INSN_SUB, SH64_MEDIA_SFMT_ADD },
249 { SH_INSN_SUBL, SH64_MEDIA_INSN_SUBL, SH64_MEDIA_SFMT_ADD },
250 { SH_INSN_SWAPQ, SH64_MEDIA_INSN_SWAPQ, SH64_MEDIA_SFMT_SWAPQ },
251 { SH_INSN_SYNCI, SH64_MEDIA_INSN_SYNCI, SH64_MEDIA_SFMT_NOP },
252 { SH_INSN_SYNCO, SH64_MEDIA_INSN_SYNCO, SH64_MEDIA_SFMT_NOP },
253 { SH_INSN_TRAPA, SH64_MEDIA_INSN_TRAPA, SH64_MEDIA_SFMT_TRAPA },
254 { SH_INSN_XOR, SH64_MEDIA_INSN_XOR, SH64_MEDIA_SFMT_ADD },
255 { SH_INSN_XORI, SH64_MEDIA_INSN_XORI, SH64_MEDIA_SFMT_XORI },
258 static const struct insn_sem sh64_media_insn_sem_invalid =
260 VIRTUAL_INSN_X_INVALID, SH64_MEDIA_INSN_X_INVALID, SH64_MEDIA_SFMT_EMPTY
263 /* Initialize an IDESC from the compile-time computable parts. */
265 static INLINE void
266 init_idesc (SIM_CPU *cpu, IDESC *id, const struct insn_sem *t)
268 const CGEN_INSN *insn_table = CGEN_CPU_INSN_TABLE (CPU_CPU_DESC (cpu))->init_entries;
270 id->num = t->index;
271 id->sfmt = t->sfmt;
272 if ((int) t->type <= 0)
273 id->idata = & cgen_virtual_insn_table[- (int) t->type];
274 else
275 id->idata = & insn_table[t->type];
276 id->attrs = CGEN_INSN_ATTRS (id->idata);
277 /* Oh my god, a magic number. */
278 id->length = CGEN_INSN_BITSIZE (id->idata) / 8;
280 #if WITH_PROFILE_MODEL_P
281 id->timing = & MODEL_TIMING (CPU_MODEL (cpu)) [t->index];
283 SIM_DESC sd = CPU_STATE (cpu);
284 SIM_ASSERT (t->index == id->timing->num);
286 #endif
288 /* Semantic pointers are initialized elsewhere. */
291 /* Initialize the instruction descriptor table. */
293 void
294 sh64_media_init_idesc_table (SIM_CPU *cpu)
296 IDESC *id,*tabend;
297 const struct insn_sem *t,*tend;
298 int tabsize = SH64_MEDIA_INSN__MAX;
299 IDESC *table = sh64_media_insn_data;
301 memset (table, 0, tabsize * sizeof (IDESC));
303 /* First set all entries to the `invalid insn'. */
304 t = & sh64_media_insn_sem_invalid;
305 for (id = table, tabend = table + tabsize; id < tabend; ++id)
306 init_idesc (cpu, id, t);
308 /* Now fill in the values for the chosen cpu. */
309 for (t = sh64_media_insn_sem, tend = t + ARRAY_SIZE (sh64_media_insn_sem);
310 t != tend; ++t)
312 init_idesc (cpu, & table[t->index], t);
315 /* Link the IDESC table into the cpu. */
316 CPU_IDESC (cpu) = table;
319 /* Given an instruction, return a pointer to its IDESC entry. */
321 const IDESC *
322 sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
323 CGEN_INSN_WORD base_insn, CGEN_INSN_WORD entire_insn,
324 ARGBUF *abuf)
326 /* Result of decoder. */
327 SH64_MEDIA_INSN_TYPE itype;
330 CGEN_INSN_WORD insn = base_insn;
333 unsigned int val = (((insn >> 22) & (63 << 4)) | ((insn >> 16) & (15 << 0)));
334 switch (val)
336 case 1 :
337 if ((entire_insn & 0xfc0f000f) == 0x10000)
338 { itype = SH64_MEDIA_INSN_CMPEQ; goto extract_sfmt_add; }
339 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
340 case 3 :
341 if ((entire_insn & 0xfc0f000f) == 0x30000)
342 { itype = SH64_MEDIA_INSN_CMPGT; goto extract_sfmt_add; }
343 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
344 case 7 :
345 if ((entire_insn & 0xfc0f000f) == 0x70000)
346 { itype = SH64_MEDIA_INSN_CMPGTU; goto extract_sfmt_add; }
347 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
348 case 8 :
349 if ((entire_insn & 0xfc0f000f) == 0x80000)
350 { itype = SH64_MEDIA_INSN_ADDL; goto extract_sfmt_add; }
351 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
352 case 9 :
353 if ((entire_insn & 0xfc0f000f) == 0x90000)
354 { itype = SH64_MEDIA_INSN_ADD; goto extract_sfmt_add; }
355 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
356 case 10 :
357 if ((entire_insn & 0xfc0f000f) == 0xa0000)
358 { itype = SH64_MEDIA_INSN_SUBL; goto extract_sfmt_add; }
359 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
360 case 11 :
361 if ((entire_insn & 0xfc0f000f) == 0xb0000)
362 { itype = SH64_MEDIA_INSN_SUB; goto extract_sfmt_add; }
363 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
364 case 12 :
365 if ((entire_insn & 0xfc0f000f) == 0xc0000)
366 { itype = SH64_MEDIA_INSN_ADDZL; goto extract_sfmt_add; }
367 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
368 case 13 :
369 if ((entire_insn & 0xfc0ffc0f) == 0xdfc00)
370 { itype = SH64_MEDIA_INSN_NSB; goto extract_sfmt_byterev; }
371 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
372 case 14 :
373 if ((entire_insn & 0xfc0f000f) == 0xe0000)
374 { itype = SH64_MEDIA_INSN_MULUL; goto extract_sfmt_add; }
375 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
376 case 15 :
377 if ((entire_insn & 0xfc0ffc0f) == 0xffc00)
378 { itype = SH64_MEDIA_INSN_BYTEREV; goto extract_sfmt_byterev; }
379 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
380 case 16 :
381 if ((entire_insn & 0xfc0f000f) == 0x4000000)
382 { itype = SH64_MEDIA_INSN_SHLLDL; goto extract_sfmt_add; }
383 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
384 case 17 :
385 if ((entire_insn & 0xfc0f000f) == 0x4010000)
386 { itype = SH64_MEDIA_INSN_SHLLD; goto extract_sfmt_add; }
387 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
388 case 18 :
389 if ((entire_insn & 0xfc0f000f) == 0x4020000)
390 { itype = SH64_MEDIA_INSN_SHLRDL; goto extract_sfmt_add; }
391 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
392 case 19 :
393 if ((entire_insn & 0xfc0f000f) == 0x4030000)
394 { itype = SH64_MEDIA_INSN_SHLRD; goto extract_sfmt_add; }
395 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
396 case 22 :
397 if ((entire_insn & 0xfc0f000f) == 0x4060000)
398 { itype = SH64_MEDIA_INSN_SHARDL; goto extract_sfmt_add; }
399 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
400 case 23 :
401 if ((entire_insn & 0xfc0f000f) == 0x4070000)
402 { itype = SH64_MEDIA_INSN_SHARD; goto extract_sfmt_add; }
403 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
404 case 25 :
405 if ((entire_insn & 0xfc0f000f) == 0x4090000)
406 { itype = SH64_MEDIA_INSN_OR; goto extract_sfmt_add; }
407 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
408 case 27 :
409 if ((entire_insn & 0xfc0f000f) == 0x40b0000)
410 { itype = SH64_MEDIA_INSN_AND; goto extract_sfmt_add; }
411 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
412 case 29 :
413 if ((entire_insn & 0xfc0f000f) == 0x40d0000)
414 { itype = SH64_MEDIA_INSN_XOR; goto extract_sfmt_add; }
415 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
416 case 30 :
417 if ((entire_insn & 0xfc0f000f) == 0x40e0000)
418 { itype = SH64_MEDIA_INSN_MULSL; goto extract_sfmt_add; }
419 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
420 case 31 :
421 if ((entire_insn & 0xfc0f000f) == 0x40f0000)
422 { itype = SH64_MEDIA_INSN_ANDC; goto extract_sfmt_add; }
423 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
424 case 33 :
425 if ((entire_insn & 0xfc0f000f) == 0x8010000)
426 { itype = SH64_MEDIA_INSN_MADDW; goto extract_sfmt_add; }
427 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
428 case 34 :
429 if ((entire_insn & 0xfc0f000f) == 0x8020000)
430 { itype = SH64_MEDIA_INSN_MADDL; goto extract_sfmt_add; }
431 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
432 case 36 :
433 if ((entire_insn & 0xfc0f000f) == 0x8040000)
434 { itype = SH64_MEDIA_INSN_MADDSUB; goto extract_sfmt_add; }
435 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
436 case 37 :
437 if ((entire_insn & 0xfc0f000f) == 0x8050000)
438 { itype = SH64_MEDIA_INSN_MADDSW; goto extract_sfmt_add; }
439 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
440 case 38 :
441 if ((entire_insn & 0xfc0f000f) == 0x8060000)
442 { itype = SH64_MEDIA_INSN_MADDSL; goto extract_sfmt_add; }
443 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
444 case 41 :
445 if ((entire_insn & 0xfc0f000f) == 0x8090000)
446 { itype = SH64_MEDIA_INSN_MSUBW; goto extract_sfmt_add; }
447 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
448 case 42 :
449 if ((entire_insn & 0xfc0f000f) == 0x80a0000)
450 { itype = SH64_MEDIA_INSN_MSUBL; goto extract_sfmt_add; }
451 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
452 case 44 :
453 if ((entire_insn & 0xfc0f000f) == 0x80c0000)
454 { itype = SH64_MEDIA_INSN_MSUBSUB; goto extract_sfmt_add; }
455 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
456 case 45 :
457 if ((entire_insn & 0xfc0f000f) == 0x80d0000)
458 { itype = SH64_MEDIA_INSN_MSUBSW; goto extract_sfmt_add; }
459 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
460 case 46 :
461 if ((entire_insn & 0xfc0f000f) == 0x80e0000)
462 { itype = SH64_MEDIA_INSN_MSUBSL; goto extract_sfmt_add; }
463 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
464 case 49 :
465 if ((entire_insn & 0xfc0f000f) == 0xc010000)
466 { itype = SH64_MEDIA_INSN_MSHLLDW; goto extract_sfmt_add; }
467 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
468 case 50 :
469 if ((entire_insn & 0xfc0f000f) == 0xc020000)
470 { itype = SH64_MEDIA_INSN_MSHLLDL; goto extract_sfmt_add; }
471 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
472 case 53 :
473 if ((entire_insn & 0xfc0f000f) == 0xc050000)
474 { itype = SH64_MEDIA_INSN_MSHALDSW; goto extract_sfmt_add; }
475 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
476 case 54 :
477 if ((entire_insn & 0xfc0f000f) == 0xc060000)
478 { itype = SH64_MEDIA_INSN_MSHALDSL; goto extract_sfmt_add; }
479 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
480 case 57 :
481 if ((entire_insn & 0xfc0f000f) == 0xc090000)
482 { itype = SH64_MEDIA_INSN_MSHARDW; goto extract_sfmt_add; }
483 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
484 case 58 :
485 if ((entire_insn & 0xfc0f000f) == 0xc0a0000)
486 { itype = SH64_MEDIA_INSN_MSHARDL; goto extract_sfmt_add; }
487 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
488 case 59 :
489 if ((entire_insn & 0xfc0f000f) == 0xc0b0000)
490 { itype = SH64_MEDIA_INSN_MSHARDSQ; goto extract_sfmt_add; }
491 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
492 case 61 :
493 if ((entire_insn & 0xfc0f000f) == 0xc0d0000)
494 { itype = SH64_MEDIA_INSN_MSHLRDW; goto extract_sfmt_add; }
495 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
496 case 62 :
497 if ((entire_insn & 0xfc0f000f) == 0xc0e0000)
498 { itype = SH64_MEDIA_INSN_MSHLRDL; goto extract_sfmt_add; }
499 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
500 case 86 :
501 if ((entire_insn & 0xfc0f000f) == 0x14060000)
502 { itype = SH64_MEDIA_INSN_FIPRS; goto extract_sfmt_fiprs; }
503 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
504 case 94 :
505 if ((entire_insn & 0xfc0f000f) == 0x140e0000)
506 { itype = SH64_MEDIA_INSN_FTRVS; goto extract_sfmt_ftrvs; }
507 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
508 case 96 :
509 if ((entire_insn & 0xfc0f000f) == 0x18000000)
510 { itype = SH64_MEDIA_INSN_FABSS; goto extract_sfmt_fabss; }
511 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
512 case 97 :
513 if ((entire_insn & 0xfc0f000f) == 0x18010000)
514 { itype = SH64_MEDIA_INSN_FABSD; goto extract_sfmt_fabsd; }
515 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
516 case 98 :
517 if ((entire_insn & 0xfc0f000f) == 0x18020000)
518 { itype = SH64_MEDIA_INSN_FNEGS; goto extract_sfmt_fabss; }
519 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
520 case 99 :
521 if ((entire_insn & 0xfc0f000f) == 0x18030000)
522 { itype = SH64_MEDIA_INSN_FNEGD; goto extract_sfmt_fabsd; }
523 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
524 case 112 :
525 if ((entire_insn & 0xfc0ffc0f) == 0x1c00fc00)
526 { itype = SH64_MEDIA_INSN_FMOVLS; goto extract_sfmt_fmovls; }
527 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
528 case 113 :
529 if ((entire_insn & 0xfc0ffc0f) == 0x1c01fc00)
530 { itype = SH64_MEDIA_INSN_FMOVQD; goto extract_sfmt_fmovqd; }
531 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
532 case 114 :
533 if ((entire_insn & 0xfffffc0f) == 0x1ff2fc00)
534 { itype = SH64_MEDIA_INSN_FGETSCR; goto extract_sfmt_fgetscr; }
535 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
536 case 120 :
537 if ((entire_insn & 0xfc0f000f) == 0x1c080000)
538 { itype = SH64_MEDIA_INSN_FLDXS; goto extract_sfmt_fldxs; }
539 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
540 case 121 :
541 if ((entire_insn & 0xfc0f000f) == 0x1c090000)
542 { itype = SH64_MEDIA_INSN_FLDXD; goto extract_sfmt_fldxd; }
543 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
544 case 125 :
545 if ((entire_insn & 0xfc0f000f) == 0x1c0d0000)
546 { itype = SH64_MEDIA_INSN_FLDXP; goto extract_sfmt_fldxp; }
547 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
548 case 129 :
549 if ((entire_insn & 0xfc0f000f) == 0x20010000)
550 { itype = SH64_MEDIA_INSN_CMVEQ; goto extract_sfmt_cmveq; }
551 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
552 case 131 :
553 if ((entire_insn & 0xfc0f000f) == 0x20030000)
554 { itype = SH64_MEDIA_INSN_SWAPQ; goto extract_sfmt_swapq; }
555 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
556 case 133 :
557 if ((entire_insn & 0xfc0f000f) == 0x20050000)
558 { itype = SH64_MEDIA_INSN_CMVNE; goto extract_sfmt_cmveq; }
559 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
560 case 159 :
561 if ((entire_insn & 0xfc0ffc0f) == 0x240ffc00)
562 { itype = SH64_MEDIA_INSN_GETCON; goto extract_sfmt_getcon; }
563 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
564 case 160 :
565 if ((entire_insn & 0xfc0f000f) == 0x28000000)
566 { itype = SH64_MEDIA_INSN_MCMPEQB; goto extract_sfmt_add; }
567 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
568 case 161 :
569 if ((entire_insn & 0xfc0f000f) == 0x28010000)
570 { itype = SH64_MEDIA_INSN_MCMPEQW; goto extract_sfmt_add; }
571 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
572 case 162 :
573 if ((entire_insn & 0xfc0f000f) == 0x28020000)
574 { itype = SH64_MEDIA_INSN_MCMPEQL; goto extract_sfmt_add; }
575 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
576 case 164 :
577 if ((entire_insn & 0xfc0f000f) == 0x28040000)
578 { itype = SH64_MEDIA_INSN_MCMPGTUB; goto extract_sfmt_add; }
579 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
580 case 165 :
581 if ((entire_insn & 0xfc0f000f) == 0x28050000)
582 { itype = SH64_MEDIA_INSN_MCMPGTW; goto extract_sfmt_add; }
583 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
584 case 166 :
585 if ((entire_insn & 0xfc0f000f) == 0x28060000)
586 { itype = SH64_MEDIA_INSN_MCMPGTL; goto extract_sfmt_add; }
587 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
588 case 167 :
589 if ((entire_insn & 0xfc0f000f) == 0x28070000)
590 { itype = SH64_MEDIA_INSN_MEXTR1; goto extract_sfmt_add; }
591 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
592 case 169 :
593 if ((entire_insn & 0xfc0ffc0f) == 0x2809fc00)
594 { itype = SH64_MEDIA_INSN_MABSW; goto extract_sfmt_byterev; }
595 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
596 case 170 :
597 if ((entire_insn & 0xfc0ffc0f) == 0x280afc00)
598 { itype = SH64_MEDIA_INSN_MABSL; goto extract_sfmt_byterev; }
599 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
600 case 171 :
601 if ((entire_insn & 0xfc0f000f) == 0x280b0000)
602 { itype = SH64_MEDIA_INSN_MEXTR2; goto extract_sfmt_add; }
603 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
604 case 173 :
605 if ((entire_insn & 0xfc0f000f) == 0x280d0000)
606 { itype = SH64_MEDIA_INSN_MPERMW; goto extract_sfmt_add; }
607 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
608 case 175 :
609 if ((entire_insn & 0xfc0f000f) == 0x280f0000)
610 { itype = SH64_MEDIA_INSN_MEXTR3; goto extract_sfmt_add; }
611 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
612 case 176 :
613 if ((entire_insn & 0xfc0f000f) == 0x2c000000)
614 { itype = SH64_MEDIA_INSN_MSHFLOB; goto extract_sfmt_add; }
615 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
616 case 177 :
617 if ((entire_insn & 0xfc0f000f) == 0x2c010000)
618 { itype = SH64_MEDIA_INSN_MSHFLOW; goto extract_sfmt_add; }
619 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
620 case 178 :
621 if ((entire_insn & 0xfc0f000f) == 0x2c020000)
622 { itype = SH64_MEDIA_INSN_MSHFLOL; goto extract_sfmt_add; }
623 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
624 case 179 :
625 if ((entire_insn & 0xfc0f000f) == 0x2c030000)
626 { itype = SH64_MEDIA_INSN_MEXTR4; goto extract_sfmt_add; }
627 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
628 case 180 :
629 if ((entire_insn & 0xfc0f000f) == 0x2c040000)
630 { itype = SH64_MEDIA_INSN_MSHFHIB; goto extract_sfmt_add; }
631 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
632 case 181 :
633 if ((entire_insn & 0xfc0f000f) == 0x2c050000)
634 { itype = SH64_MEDIA_INSN_MSHFHIW; goto extract_sfmt_add; }
635 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
636 case 182 :
637 if ((entire_insn & 0xfc0f000f) == 0x2c060000)
638 { itype = SH64_MEDIA_INSN_MSHFHIL; goto extract_sfmt_add; }
639 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
640 case 183 :
641 if ((entire_insn & 0xfc0f000f) == 0x2c070000)
642 { itype = SH64_MEDIA_INSN_MEXTR5; goto extract_sfmt_add; }
643 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
644 case 187 :
645 if ((entire_insn & 0xfc0f000f) == 0x2c0b0000)
646 { itype = SH64_MEDIA_INSN_MEXTR6; goto extract_sfmt_add; }
647 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
648 case 191 :
649 if ((entire_insn & 0xfc0f000f) == 0x2c0f0000)
650 { itype = SH64_MEDIA_INSN_MEXTR7; goto extract_sfmt_add; }
651 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
652 case 192 :
653 if ((entire_insn & 0xfc0f000f) == 0x30000000)
654 { itype = SH64_MEDIA_INSN_FMOVSL; goto extract_sfmt_fmovsl; }
655 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
656 case 193 :
657 if ((entire_insn & 0xfc0f000f) == 0x30010000)
658 { itype = SH64_MEDIA_INSN_FMOVDQ; goto extract_sfmt_fmovdq; }
659 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
660 case 194 :
661 if ((entire_insn & 0xfc0f03ff) == 0x300203f0)
662 { itype = SH64_MEDIA_INSN_FPUTSCR; goto extract_sfmt_fputscr; }
663 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
664 case 200 :
665 if ((entire_insn & 0xfc0f000f) == 0x30080000)
666 { itype = SH64_MEDIA_INSN_FCMPEQS; goto extract_sfmt_fcmpeqs; }
667 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
668 case 201 :
669 if ((entire_insn & 0xfc0f000f) == 0x30090000)
670 { itype = SH64_MEDIA_INSN_FCMPEQD; goto extract_sfmt_fcmpeqd; }
671 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
672 case 202 :
673 if ((entire_insn & 0xfc0f000f) == 0x300a0000)
674 { itype = SH64_MEDIA_INSN_FCMPUNS; goto extract_sfmt_fcmpeqs; }
675 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
676 case 203 :
677 if ((entire_insn & 0xfc0f000f) == 0x300b0000)
678 { itype = SH64_MEDIA_INSN_FCMPUND; goto extract_sfmt_fcmpeqd; }
679 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
680 case 204 :
681 if ((entire_insn & 0xfc0f000f) == 0x300c0000)
682 { itype = SH64_MEDIA_INSN_FCMPGTS; goto extract_sfmt_fcmpeqs; }
683 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
684 case 205 :
685 if ((entire_insn & 0xfc0f000f) == 0x300d0000)
686 { itype = SH64_MEDIA_INSN_FCMPGTD; goto extract_sfmt_fcmpeqd; }
687 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
688 case 206 :
689 if ((entire_insn & 0xfc0f000f) == 0x300e0000)
690 { itype = SH64_MEDIA_INSN_FCMPGES; goto extract_sfmt_fcmpeqs; }
691 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
692 case 207 :
693 if ((entire_insn & 0xfc0f000f) == 0x300f0000)
694 { itype = SH64_MEDIA_INSN_FCMPGED; goto extract_sfmt_fcmpeqd; }
695 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
696 case 208 :
697 if ((entire_insn & 0xfc0f000f) == 0x34000000)
698 { itype = SH64_MEDIA_INSN_FADDS; goto extract_sfmt_fadds; }
699 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
700 case 209 :
701 if ((entire_insn & 0xfc0f000f) == 0x34010000)
702 { itype = SH64_MEDIA_INSN_FADDD; goto extract_sfmt_faddd; }
703 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
704 case 210 :
705 if ((entire_insn & 0xfc0f000f) == 0x34020000)
706 { itype = SH64_MEDIA_INSN_FSUBS; goto extract_sfmt_fadds; }
707 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
708 case 211 :
709 if ((entire_insn & 0xfc0f000f) == 0x34030000)
710 { itype = SH64_MEDIA_INSN_FSUBD; goto extract_sfmt_fsubd; }
711 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
712 case 212 :
713 if ((entire_insn & 0xfc0f000f) == 0x34040000)
714 { itype = SH64_MEDIA_INSN_FDIVS; goto extract_sfmt_fadds; }
715 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
716 case 213 :
717 if ((entire_insn & 0xfc0f000f) == 0x34050000)
718 { itype = SH64_MEDIA_INSN_FDIVD; goto extract_sfmt_faddd; }
719 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
720 case 214 :
721 if ((entire_insn & 0xfc0f000f) == 0x34060000)
722 { itype = SH64_MEDIA_INSN_FMULS; goto extract_sfmt_fadds; }
723 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
724 case 215 :
725 if ((entire_insn & 0xfc0f000f) == 0x34070000)
726 { itype = SH64_MEDIA_INSN_FMULD; goto extract_sfmt_faddd; }
727 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
728 case 222 :
729 if ((entire_insn & 0xfc0f000f) == 0x340e0000)
730 { itype = SH64_MEDIA_INSN_FMACS; goto extract_sfmt_fmacs; }
731 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
732 case 224 :
733 if ((entire_insn & 0xfc0f000f) == 0x38000000)
734 { itype = SH64_MEDIA_INSN_FMOVS; goto extract_sfmt_fabss; }
735 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
736 case 225 :
737 if ((entire_insn & 0xfc0f000f) == 0x38010000)
738 { itype = SH64_MEDIA_INSN_FMOVD; goto extract_sfmt_fabsd; }
739 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
740 case 228 :
741 if ((entire_insn & 0xfc0f000f) == 0x38040000)
742 { itype = SH64_MEDIA_INSN_FSQRTS; goto extract_sfmt_fabss; }
743 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
744 case 229 :
745 if ((entire_insn & 0xfc0f000f) == 0x38050000)
746 { itype = SH64_MEDIA_INSN_FSQRTD; goto extract_sfmt_fabsd; }
747 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
748 case 230 :
749 if ((entire_insn & 0xfc0f000f) == 0x38060000)
750 { itype = SH64_MEDIA_INSN_FCNVSD; goto extract_sfmt_fcnvsd; }
751 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
752 case 231 :
753 if ((entire_insn & 0xfc0f000f) == 0x38070000)
754 { itype = SH64_MEDIA_INSN_FCNVDS; goto extract_sfmt_fcnvds; }
755 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
756 case 232 :
757 if ((entire_insn & 0xfc0f000f) == 0x38080000)
758 { itype = SH64_MEDIA_INSN_FTRCSL; goto extract_sfmt_fabss; }
759 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
760 case 233 :
761 if ((entire_insn & 0xfc0f000f) == 0x38090000)
762 { itype = SH64_MEDIA_INSN_FTRCDQ; goto extract_sfmt_ftrcdq; }
763 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
764 case 234 :
765 if ((entire_insn & 0xfc0f000f) == 0x380a0000)
766 { itype = SH64_MEDIA_INSN_FTRCSQ; goto extract_sfmt_fcnvsd; }
767 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
768 case 235 :
769 if ((entire_insn & 0xfc0f000f) == 0x380b0000)
770 { itype = SH64_MEDIA_INSN_FTRCDL; goto extract_sfmt_fcnvds; }
771 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
772 case 236 :
773 if ((entire_insn & 0xfc0f000f) == 0x380c0000)
774 { itype = SH64_MEDIA_INSN_FLOATLS; goto extract_sfmt_fabss; }
775 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
776 case 237 :
777 if ((entire_insn & 0xfc0f000f) == 0x380d0000)
778 { itype = SH64_MEDIA_INSN_FLOATQD; goto extract_sfmt_fabsd; }
779 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
780 case 238 :
781 if ((entire_insn & 0xfc0f000f) == 0x380e0000)
782 { itype = SH64_MEDIA_INSN_FLOATLD; goto extract_sfmt_fcnvsd; }
783 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
784 case 239 :
785 if ((entire_insn & 0xfc0f000f) == 0x380f0000)
786 { itype = SH64_MEDIA_INSN_FLOATQS; goto extract_sfmt_fcnvds; }
787 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
788 case 248 :
789 if ((entire_insn & 0xfc0f000f) == 0x3c080000)
790 { itype = SH64_MEDIA_INSN_FSTXS; goto extract_sfmt_fstxs; }
791 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
792 case 249 :
793 if ((entire_insn & 0xfc0f000f) == 0x3c090000)
794 { itype = SH64_MEDIA_INSN_FSTXD; goto extract_sfmt_fstxd; }
795 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
796 case 253 :
797 if ((entire_insn & 0xfc0f000f) == 0x3c0d0000)
798 { itype = SH64_MEDIA_INSN_FSTXP; goto extract_sfmt_fldxp; }
799 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
800 case 256 :
801 if ((entire_insn & 0xfc0f000f) == 0x40000000)
802 { itype = SH64_MEDIA_INSN_LDXB; goto extract_sfmt_ldxb; }
803 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
804 case 257 :
805 if ((entire_insn & 0xfc0f000f) == 0x40010000)
806 { itype = SH64_MEDIA_INSN_LDXW; goto extract_sfmt_ldxw; }
807 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
808 case 258 :
809 if ((entire_insn & 0xfc0f000f) == 0x40020000)
810 { itype = SH64_MEDIA_INSN_LDXL; goto extract_sfmt_ldxl; }
811 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
812 case 259 :
813 if ((entire_insn & 0xfc0f000f) == 0x40030000)
814 { itype = SH64_MEDIA_INSN_LDXQ; goto extract_sfmt_ldxq; }
815 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
816 case 260 :
817 if ((entire_insn & 0xfc0f000f) == 0x40040000)
818 { itype = SH64_MEDIA_INSN_LDXUB; goto extract_sfmt_ldxub; }
819 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
820 case 261 :
821 if ((entire_insn & 0xfc0f000f) == 0x40050000)
822 { itype = SH64_MEDIA_INSN_LDXUW; goto extract_sfmt_ldxuw; }
823 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
824 case 273 :
825 if ((entire_insn & 0xff8ffc0f) == 0x4401fc00)
826 { itype = SH64_MEDIA_INSN_BLINK; goto extract_sfmt_blink; }
827 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
828 case 277 :
829 if ((entire_insn & 0xff8ffc0f) == 0x4405fc00)
830 { itype = SH64_MEDIA_INSN_GETTR; goto extract_sfmt_gettr; }
831 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
832 case 288 :
833 if ((entire_insn & 0xfc0f000f) == 0x48000000)
834 { itype = SH64_MEDIA_INSN_MSADUBQ; goto extract_sfmt_mcmv; }
835 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
836 case 289 :
837 if ((entire_insn & 0xfc0f000f) == 0x48010000)
838 { itype = SH64_MEDIA_INSN_MMACFXWL; goto extract_sfmt_mcmv; }
839 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
840 case 291 :
841 if ((entire_insn & 0xfc0f000f) == 0x48030000)
842 { itype = SH64_MEDIA_INSN_MCMV; goto extract_sfmt_mcmv; }
843 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
844 case 293 :
845 if ((entire_insn & 0xfc0f000f) == 0x48050000)
846 { itype = SH64_MEDIA_INSN_MMACNFX_WL; goto extract_sfmt_mmacnfx_wl; }
847 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
848 case 297 :
849 if ((entire_insn & 0xfc0f000f) == 0x48090000)
850 { itype = SH64_MEDIA_INSN_MMULSUMWQ; goto extract_sfmt_mcmv; }
851 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
852 case 305 :
853 if ((entire_insn & 0xfc0f000f) == 0x4c010000)
854 { itype = SH64_MEDIA_INSN_MMULW; goto extract_sfmt_add; }
855 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
856 case 306 :
857 if ((entire_insn & 0xfc0f000f) == 0x4c020000)
858 { itype = SH64_MEDIA_INSN_MMULL; goto extract_sfmt_add; }
859 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
860 case 309 :
861 if ((entire_insn & 0xfc0f000f) == 0x4c050000)
862 { itype = SH64_MEDIA_INSN_MMULFXW; goto extract_sfmt_add; }
863 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
864 case 310 :
865 if ((entire_insn & 0xfc0f000f) == 0x4c060000)
866 { itype = SH64_MEDIA_INSN_MMULFXL; goto extract_sfmt_add; }
867 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
868 case 312 :
869 if ((entire_insn & 0xfc0f000f) == 0x4c080000)
870 { itype = SH64_MEDIA_INSN_MCNVSWB; goto extract_sfmt_add; }
871 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
872 case 313 :
873 if ((entire_insn & 0xfc0f000f) == 0x4c090000)
874 { itype = SH64_MEDIA_INSN_MMULFXRPW; goto extract_sfmt_add; }
875 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
876 case 314 :
877 if ((entire_insn & 0xfc0f000f) == 0x4c0a0000)
878 { itype = SH64_MEDIA_INSN_MMULLOWL; goto extract_sfmt_add; }
879 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
880 case 316 :
881 if ((entire_insn & 0xfc0f000f) == 0x4c0c0000)
882 { itype = SH64_MEDIA_INSN_MCNVSWUB; goto extract_sfmt_add; }
883 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
884 case 317 :
885 if ((entire_insn & 0xfc0f000f) == 0x4c0d0000)
886 { itype = SH64_MEDIA_INSN_MCNVSLW; goto extract_sfmt_add; }
887 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
888 case 318 :
889 if ((entire_insn & 0xfc0f000f) == 0x4c0e0000)
890 { itype = SH64_MEDIA_INSN_MMULHIWL; goto extract_sfmt_add; }
891 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
892 case 384 :
893 if ((entire_insn & 0xfc0f000f) == 0x60000000)
894 { itype = SH64_MEDIA_INSN_STXB; goto extract_sfmt_stxb; }
895 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
896 case 385 :
897 if ((entire_insn & 0xfc0f000f) == 0x60010000)
898 { itype = SH64_MEDIA_INSN_STXW; goto extract_sfmt_stxw; }
899 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
900 case 386 :
901 if ((entire_insn & 0xfc0f000f) == 0x60020000)
902 { itype = SH64_MEDIA_INSN_STXL; goto extract_sfmt_stxl; }
903 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
904 case 387 :
905 if ((entire_insn & 0xfc0f000f) == 0x60030000)
906 { itype = SH64_MEDIA_INSN_STXQ; goto extract_sfmt_stxq; }
907 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
908 case 401 :
909 if ((entire_insn & 0xfc0f018f) == 0x64010000)
910 { itype = SH64_MEDIA_INSN_BEQ; goto extract_sfmt_beq; }
911 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
912 case 403 :
913 if ((entire_insn & 0xfc0f018f) == 0x64030000)
914 { itype = SH64_MEDIA_INSN_BGE; goto extract_sfmt_beq; }
915 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
916 case 405 :
917 if ((entire_insn & 0xfc0f018f) == 0x64050000)
918 { itype = SH64_MEDIA_INSN_BNE; goto extract_sfmt_beq; }
919 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
920 case 407 :
921 if ((entire_insn & 0xfc0f018f) == 0x64070000)
922 { itype = SH64_MEDIA_INSN_BGT; goto extract_sfmt_beq; }
923 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
924 case 411 :
925 if ((entire_insn & 0xfc0f018f) == 0x640b0000)
926 { itype = SH64_MEDIA_INSN_BGEU; goto extract_sfmt_beq; }
927 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
928 case 415 :
929 if ((entire_insn & 0xfc0f018f) == 0x640f0000)
930 { itype = SH64_MEDIA_INSN_BGTU; goto extract_sfmt_beq; }
931 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
932 case 417 :
933 if ((entire_insn & 0xffff018f) == 0x6bf10000)
934 { itype = SH64_MEDIA_INSN_PTABS; goto extract_sfmt_ptabs; }
935 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
936 case 421 :
937 if ((entire_insn & 0xffff018f) == 0x6bf50000)
938 { itype = SH64_MEDIA_INSN_PTREL; goto extract_sfmt_ptrel; }
939 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
940 case 432 :
941 if ((entire_insn & 0xffffffff) == 0x6ff0fff0)
942 { itype = SH64_MEDIA_INSN_NOP; goto extract_sfmt_nop; }
943 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
944 case 433 :
945 if ((entire_insn & 0xfc0fffff) == 0x6c01fff0)
946 { itype = SH64_MEDIA_INSN_TRAPA; goto extract_sfmt_trapa; }
947 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
948 case 434 :
949 if ((entire_insn & 0xffffffff) == 0x6ff2fff0)
950 { itype = SH64_MEDIA_INSN_SYNCI; goto extract_sfmt_nop; }
951 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
952 case 435 :
953 if ((entire_insn & 0xffffffff) == 0x6ff3fff0)
954 { itype = SH64_MEDIA_INSN_RTE; goto extract_sfmt_nop; }
955 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
956 case 437 :
957 if ((entire_insn & 0xffffffff) == 0x6ff5fff0)
958 { itype = SH64_MEDIA_INSN_BRK; goto extract_sfmt_brk; }
959 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
960 case 438 :
961 if ((entire_insn & 0xffffffff) == 0x6ff6fff0)
962 { itype = SH64_MEDIA_INSN_SYNCO; goto extract_sfmt_nop; }
963 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
964 case 439 :
965 if ((entire_insn & 0xffffffff) == 0x6ff7fff0)
966 { itype = SH64_MEDIA_INSN_SLEEP; goto extract_sfmt_nop; }
967 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
968 case 447 :
969 if ((entire_insn & 0xfc0ffc0f) == 0x6c0ffc00)
970 { itype = SH64_MEDIA_INSN_PUTCON; goto extract_sfmt_putcon; }
971 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
972 case 512 : /* fall through */
973 case 513 : /* fall through */
974 case 514 : /* fall through */
975 case 515 : /* fall through */
976 case 516 : /* fall through */
977 case 517 : /* fall through */
978 case 518 : /* fall through */
979 case 519 : /* fall through */
980 case 520 : /* fall through */
981 case 521 : /* fall through */
982 case 522 : /* fall through */
983 case 523 : /* fall through */
984 case 524 : /* fall through */
985 case 525 : /* fall through */
986 case 526 : /* fall through */
987 case 527 :
988 if ((entire_insn & 0xfc00000f) == 0x80000000)
989 { itype = SH64_MEDIA_INSN_LDB; goto extract_sfmt_ldb; }
990 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
991 case 528 : /* fall through */
992 case 529 : /* fall through */
993 case 530 : /* fall through */
994 case 531 : /* fall through */
995 case 532 : /* fall through */
996 case 533 : /* fall through */
997 case 534 : /* fall through */
998 case 535 : /* fall through */
999 case 536 : /* fall through */
1000 case 537 : /* fall through */
1001 case 538 : /* fall through */
1002 case 539 : /* fall through */
1003 case 540 : /* fall through */
1004 case 541 : /* fall through */
1005 case 542 : /* fall through */
1006 case 543 :
1007 if ((entire_insn & 0xfc00000f) == 0x84000000)
1008 { itype = SH64_MEDIA_INSN_LDW; goto extract_sfmt_lduw; }
1009 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1010 case 544 : /* fall through */
1011 case 545 : /* fall through */
1012 case 546 : /* fall through */
1013 case 547 : /* fall through */
1014 case 548 : /* fall through */
1015 case 549 : /* fall through */
1016 case 550 : /* fall through */
1017 case 551 : /* fall through */
1018 case 552 : /* fall through */
1019 case 553 : /* fall through */
1020 case 554 : /* fall through */
1021 case 555 : /* fall through */
1022 case 556 : /* fall through */
1023 case 557 : /* fall through */
1024 case 558 : /* fall through */
1025 case 559 :
1026 if ((entire_insn & 0xfc00000f) == 0x88000000)
1027 { itype = SH64_MEDIA_INSN_LDL; goto extract_sfmt_ldl; }
1028 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1029 case 560 : /* fall through */
1030 case 561 : /* fall through */
1031 case 562 : /* fall through */
1032 case 563 : /* fall through */
1033 case 564 : /* fall through */
1034 case 565 : /* fall through */
1035 case 566 : /* fall through */
1036 case 567 : /* fall through */
1037 case 568 : /* fall through */
1038 case 569 : /* fall through */
1039 case 570 : /* fall through */
1040 case 571 : /* fall through */
1041 case 572 : /* fall through */
1042 case 573 : /* fall through */
1043 case 574 : /* fall through */
1044 case 575 :
1045 if ((entire_insn & 0xfc00000f) == 0x8c000000)
1046 { itype = SH64_MEDIA_INSN_LDQ; goto extract_sfmt_ldq; }
1047 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1048 case 576 : /* fall through */
1049 case 577 : /* fall through */
1050 case 578 : /* fall through */
1051 case 579 : /* fall through */
1052 case 580 : /* fall through */
1053 case 581 : /* fall through */
1054 case 582 : /* fall through */
1055 case 583 : /* fall through */
1056 case 584 : /* fall through */
1057 case 585 : /* fall through */
1058 case 586 : /* fall through */
1059 case 587 : /* fall through */
1060 case 588 : /* fall through */
1061 case 589 : /* fall through */
1062 case 590 : /* fall through */
1063 case 591 :
1064 if ((entire_insn & 0xfc00000f) == 0x90000000)
1065 { itype = SH64_MEDIA_INSN_LDUB; goto extract_sfmt_ldb; }
1066 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1067 case 592 : /* fall through */
1068 case 593 : /* fall through */
1069 case 594 : /* fall through */
1070 case 595 : /* fall through */
1071 case 596 : /* fall through */
1072 case 597 : /* fall through */
1073 case 598 : /* fall through */
1074 case 599 : /* fall through */
1075 case 600 : /* fall through */
1076 case 601 : /* fall through */
1077 case 602 : /* fall through */
1078 case 603 : /* fall through */
1079 case 604 : /* fall through */
1080 case 605 : /* fall through */
1081 case 606 : /* fall through */
1082 case 607 :
1083 if ((entire_insn & 0xfc00000f) == 0x94000000)
1084 { itype = SH64_MEDIA_INSN_FLDS; goto extract_sfmt_flds; }
1085 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1086 case 608 : /* fall through */
1087 case 609 : /* fall through */
1088 case 610 : /* fall through */
1089 case 611 : /* fall through */
1090 case 612 : /* fall through */
1091 case 613 : /* fall through */
1092 case 614 : /* fall through */
1093 case 615 : /* fall through */
1094 case 616 : /* fall through */
1095 case 617 : /* fall through */
1096 case 618 : /* fall through */
1097 case 619 : /* fall through */
1098 case 620 : /* fall through */
1099 case 621 : /* fall through */
1100 case 622 : /* fall through */
1101 case 623 :
1102 if ((entire_insn & 0xfc00000f) == 0x98000000)
1103 { itype = SH64_MEDIA_INSN_FLDP; goto extract_sfmt_fldp; }
1104 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1105 case 624 : /* fall through */
1106 case 625 : /* fall through */
1107 case 626 : /* fall through */
1108 case 627 : /* fall through */
1109 case 628 : /* fall through */
1110 case 629 : /* fall through */
1111 case 630 : /* fall through */
1112 case 631 : /* fall through */
1113 case 632 : /* fall through */
1114 case 633 : /* fall through */
1115 case 634 : /* fall through */
1116 case 635 : /* fall through */
1117 case 636 : /* fall through */
1118 case 637 : /* fall through */
1119 case 638 : /* fall through */
1120 case 639 :
1121 if ((entire_insn & 0xfc00000f) == 0x9c000000)
1122 { itype = SH64_MEDIA_INSN_FLDD; goto extract_sfmt_fldd; }
1123 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1124 case 640 : /* fall through */
1125 case 641 : /* fall through */
1126 case 642 : /* fall through */
1127 case 643 : /* fall through */
1128 case 644 : /* fall through */
1129 case 645 : /* fall through */
1130 case 646 : /* fall through */
1131 case 647 : /* fall through */
1132 case 648 : /* fall through */
1133 case 649 : /* fall through */
1134 case 650 : /* fall through */
1135 case 651 : /* fall through */
1136 case 652 : /* fall through */
1137 case 653 : /* fall through */
1138 case 654 : /* fall through */
1139 case 655 :
1140 if ((entire_insn & 0xfc00000f) == 0xa0000000)
1141 { itype = SH64_MEDIA_INSN_STB; goto extract_sfmt_stb; }
1142 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1143 case 656 : /* fall through */
1144 case 657 : /* fall through */
1145 case 658 : /* fall through */
1146 case 659 : /* fall through */
1147 case 660 : /* fall through */
1148 case 661 : /* fall through */
1149 case 662 : /* fall through */
1150 case 663 : /* fall through */
1151 case 664 : /* fall through */
1152 case 665 : /* fall through */
1153 case 666 : /* fall through */
1154 case 667 : /* fall through */
1155 case 668 : /* fall through */
1156 case 669 : /* fall through */
1157 case 670 : /* fall through */
1158 case 671 :
1159 if ((entire_insn & 0xfc00000f) == 0xa4000000)
1160 { itype = SH64_MEDIA_INSN_STW; goto extract_sfmt_stw; }
1161 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1162 case 672 : /* fall through */
1163 case 673 : /* fall through */
1164 case 674 : /* fall through */
1165 case 675 : /* fall through */
1166 case 676 : /* fall through */
1167 case 677 : /* fall through */
1168 case 678 : /* fall through */
1169 case 679 : /* fall through */
1170 case 680 : /* fall through */
1171 case 681 : /* fall through */
1172 case 682 : /* fall through */
1173 case 683 : /* fall through */
1174 case 684 : /* fall through */
1175 case 685 : /* fall through */
1176 case 686 : /* fall through */
1177 case 687 :
1178 if ((entire_insn & 0xfc00000f) == 0xa8000000)
1179 { itype = SH64_MEDIA_INSN_STL; goto extract_sfmt_stl; }
1180 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1181 case 688 : /* fall through */
1182 case 689 : /* fall through */
1183 case 690 : /* fall through */
1184 case 691 : /* fall through */
1185 case 692 : /* fall through */
1186 case 693 : /* fall through */
1187 case 694 : /* fall through */
1188 case 695 : /* fall through */
1189 case 696 : /* fall through */
1190 case 697 : /* fall through */
1191 case 698 : /* fall through */
1192 case 699 : /* fall through */
1193 case 700 : /* fall through */
1194 case 701 : /* fall through */
1195 case 702 : /* fall through */
1196 case 703 :
1197 if ((entire_insn & 0xfc00000f) == 0xac000000)
1198 { itype = SH64_MEDIA_INSN_STQ; goto extract_sfmt_stq; }
1199 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1200 case 704 : /* fall through */
1201 case 705 : /* fall through */
1202 case 706 : /* fall through */
1203 case 707 : /* fall through */
1204 case 708 : /* fall through */
1205 case 709 : /* fall through */
1206 case 710 : /* fall through */
1207 case 711 : /* fall through */
1208 case 712 : /* fall through */
1209 case 713 : /* fall through */
1210 case 714 : /* fall through */
1211 case 715 : /* fall through */
1212 case 716 : /* fall through */
1213 case 717 : /* fall through */
1214 case 718 : /* fall through */
1215 case 719 :
1216 if ((entire_insn & 0xfc00000f) == 0xb0000000)
1217 { itype = SH64_MEDIA_INSN_LDUW; goto extract_sfmt_lduw; }
1218 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1219 case 720 : /* fall through */
1220 case 721 : /* fall through */
1221 case 722 : /* fall through */
1222 case 723 : /* fall through */
1223 case 724 : /* fall through */
1224 case 725 : /* fall through */
1225 case 726 : /* fall through */
1226 case 727 : /* fall through */
1227 case 728 : /* fall through */
1228 case 729 : /* fall through */
1229 case 730 : /* fall through */
1230 case 731 : /* fall through */
1231 case 732 : /* fall through */
1232 case 733 : /* fall through */
1233 case 734 : /* fall through */
1234 case 735 :
1235 if ((entire_insn & 0xfc00000f) == 0xb4000000)
1236 { itype = SH64_MEDIA_INSN_FSTS; goto extract_sfmt_fsts; }
1237 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1238 case 736 : /* fall through */
1239 case 737 : /* fall through */
1240 case 738 : /* fall through */
1241 case 739 : /* fall through */
1242 case 740 : /* fall through */
1243 case 741 : /* fall through */
1244 case 742 : /* fall through */
1245 case 743 : /* fall through */
1246 case 744 : /* fall through */
1247 case 745 : /* fall through */
1248 case 746 : /* fall through */
1249 case 747 : /* fall through */
1250 case 748 : /* fall through */
1251 case 749 : /* fall through */
1252 case 750 : /* fall through */
1253 case 751 :
1254 if ((entire_insn & 0xfc00000f) == 0xb8000000)
1255 { itype = SH64_MEDIA_INSN_FSTP; goto extract_sfmt_fldp; }
1256 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1257 case 752 : /* fall through */
1258 case 753 : /* fall through */
1259 case 754 : /* fall through */
1260 case 755 : /* fall through */
1261 case 756 : /* fall through */
1262 case 757 : /* fall through */
1263 case 758 : /* fall through */
1264 case 759 : /* fall through */
1265 case 760 : /* fall through */
1266 case 761 : /* fall through */
1267 case 762 : /* fall through */
1268 case 763 : /* fall through */
1269 case 764 : /* fall through */
1270 case 765 : /* fall through */
1271 case 766 : /* fall through */
1272 case 767 :
1273 if ((entire_insn & 0xfc00000f) == 0xbc000000)
1274 { itype = SH64_MEDIA_INSN_FSTD; goto extract_sfmt_fstd; }
1275 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1276 case 770 :
1277 if ((entire_insn & 0xfc0f000f) == 0xc0020000)
1278 { itype = SH64_MEDIA_INSN_LDLOL; goto extract_sfmt_ldlol; }
1279 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1280 case 771 :
1281 if ((entire_insn & 0xfc0f000f) == 0xc0030000)
1282 { itype = SH64_MEDIA_INSN_LDLOQ; goto extract_sfmt_ldloq; }
1283 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1284 case 774 :
1285 if ((entire_insn & 0xfc0f000f) == 0xc0060000)
1286 { itype = SH64_MEDIA_INSN_LDHIL; goto extract_sfmt_ldhil; }
1287 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1288 case 775 :
1289 if ((entire_insn & 0xfc0f000f) == 0xc0070000)
1290 { itype = SH64_MEDIA_INSN_LDHIQ; goto extract_sfmt_ldhiq; }
1291 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1292 case 783 :
1293 if ((entire_insn & 0xfc0f000f) == 0xc00f0000)
1294 { itype = SH64_MEDIA_INSN_GETCFG; goto extract_sfmt_getcfg; }
1295 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1296 case 784 :
1297 if ((entire_insn & 0xfc0f000f) == 0xc4000000)
1298 { itype = SH64_MEDIA_INSN_SHLLIL; goto extract_sfmt_shari; }
1299 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1300 case 785 :
1301 if ((entire_insn & 0xfc0f000f) == 0xc4010000)
1302 { itype = SH64_MEDIA_INSN_SHLLI; goto extract_sfmt_shari; }
1303 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1304 case 786 :
1305 if ((entire_insn & 0xfc0f000f) == 0xc4020000)
1306 { itype = SH64_MEDIA_INSN_SHLRIL; goto extract_sfmt_shari; }
1307 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1308 case 787 :
1309 if ((entire_insn & 0xfc0f000f) == 0xc4030000)
1310 { itype = SH64_MEDIA_INSN_SHLRI; goto extract_sfmt_shari; }
1311 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1312 case 790 :
1313 if ((entire_insn & 0xfc0f000f) == 0xc4060000)
1314 { itype = SH64_MEDIA_INSN_SHARIL; goto extract_sfmt_shari; }
1315 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1316 case 791 :
1317 if ((entire_insn & 0xfc0f000f) == 0xc4070000)
1318 { itype = SH64_MEDIA_INSN_SHARI; goto extract_sfmt_shari; }
1319 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1320 case 797 :
1321 if ((entire_insn & 0xfc0f000f) == 0xc40d0000)
1322 { itype = SH64_MEDIA_INSN_XORI; goto extract_sfmt_xori; }
1323 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1324 case 800 : /* fall through */
1325 case 801 : /* fall through */
1326 case 802 : /* fall through */
1327 case 803 : /* fall through */
1328 case 804 : /* fall through */
1329 case 805 : /* fall through */
1330 case 806 : /* fall through */
1331 case 807 : /* fall through */
1332 case 808 : /* fall through */
1333 case 809 : /* fall through */
1334 case 810 : /* fall through */
1335 case 811 : /* fall through */
1336 case 812 : /* fall through */
1337 case 813 : /* fall through */
1338 case 814 : /* fall through */
1339 case 815 :
1340 if ((entire_insn & 0xfc00000f) == 0xc8000000)
1341 { itype = SH64_MEDIA_INSN_SHORI; goto extract_sfmt_shori; }
1342 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1343 case 816 : /* fall through */
1344 case 817 : /* fall through */
1345 case 818 : /* fall through */
1346 case 819 : /* fall through */
1347 case 820 : /* fall through */
1348 case 821 : /* fall through */
1349 case 822 : /* fall through */
1350 case 823 : /* fall through */
1351 case 824 : /* fall through */
1352 case 825 : /* fall through */
1353 case 826 : /* fall through */
1354 case 827 : /* fall through */
1355 case 828 : /* fall through */
1356 case 829 : /* fall through */
1357 case 830 : /* fall through */
1358 case 831 :
1359 if ((entire_insn & 0xfc00000f) == 0xcc000000)
1360 { itype = SH64_MEDIA_INSN_MOVI; goto extract_sfmt_movi; }
1361 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1362 case 832 : /* fall through */
1363 case 833 : /* fall through */
1364 case 834 : /* fall through */
1365 case 835 : /* fall through */
1366 case 836 : /* fall through */
1367 case 837 : /* fall through */
1368 case 838 : /* fall through */
1369 case 839 : /* fall through */
1370 case 840 : /* fall through */
1371 case 841 : /* fall through */
1372 case 842 : /* fall through */
1373 case 843 : /* fall through */
1374 case 844 : /* fall through */
1375 case 845 : /* fall through */
1376 case 846 : /* fall through */
1377 case 847 :
1378 if ((entire_insn & 0xfc00000f) == 0xd0000000)
1379 { itype = SH64_MEDIA_INSN_ADDI; goto extract_sfmt_addi; }
1380 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1381 case 848 : /* fall through */
1382 case 849 : /* fall through */
1383 case 850 : /* fall through */
1384 case 851 : /* fall through */
1385 case 852 : /* fall through */
1386 case 853 : /* fall through */
1387 case 854 : /* fall through */
1388 case 855 : /* fall through */
1389 case 856 : /* fall through */
1390 case 857 : /* fall through */
1391 case 858 : /* fall through */
1392 case 859 : /* fall through */
1393 case 860 : /* fall through */
1394 case 861 : /* fall through */
1395 case 862 : /* fall through */
1396 case 863 :
1397 if ((entire_insn & 0xfc00000f) == 0xd4000000)
1398 { itype = SH64_MEDIA_INSN_ADDIL; goto extract_sfmt_addi; }
1399 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1400 case 864 : /* fall through */
1401 case 865 : /* fall through */
1402 case 866 : /* fall through */
1403 case 867 : /* fall through */
1404 case 868 : /* fall through */
1405 case 869 : /* fall through */
1406 case 870 : /* fall through */
1407 case 871 : /* fall through */
1408 case 872 : /* fall through */
1409 case 873 : /* fall through */
1410 case 874 : /* fall through */
1411 case 875 : /* fall through */
1412 case 876 : /* fall through */
1413 case 877 : /* fall through */
1414 case 878 : /* fall through */
1415 case 879 :
1416 if ((entire_insn & 0xfc00000f) == 0xd8000000)
1417 { itype = SH64_MEDIA_INSN_ANDI; goto extract_sfmt_addi; }
1418 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1419 case 880 : /* fall through */
1420 case 881 : /* fall through */
1421 case 882 : /* fall through */
1422 case 883 : /* fall through */
1423 case 884 : /* fall through */
1424 case 885 : /* fall through */
1425 case 886 : /* fall through */
1426 case 887 : /* fall through */
1427 case 888 : /* fall through */
1428 case 889 : /* fall through */
1429 case 890 : /* fall through */
1430 case 891 : /* fall through */
1431 case 892 : /* fall through */
1432 case 893 : /* fall through */
1433 case 894 : /* fall through */
1434 case 895 :
1435 if ((entire_insn & 0xfc00000f) == 0xdc000000)
1436 { itype = SH64_MEDIA_INSN_ORI; goto extract_sfmt_ori; }
1437 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1438 case 897 :
1439 if ((entire_insn & 0xfc0ffc0f) == 0xe001fc00)
1440 { itype = SH64_MEDIA_INSN_PREFI; goto extract_sfmt_prefi; }
1441 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1442 case 898 :
1443 if ((entire_insn & 0xfc0f000f) == 0xe0020000)
1444 { itype = SH64_MEDIA_INSN_STLOL; goto extract_sfmt_stlol; }
1445 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1446 case 899 :
1447 if ((entire_insn & 0xfc0f000f) == 0xe0030000)
1448 { itype = SH64_MEDIA_INSN_STLOQ; goto extract_sfmt_stloq; }
1449 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1450 case 900 :
1451 if ((entire_insn & 0xfc0f03ff) == 0xe00403f0)
1452 { itype = SH64_MEDIA_INSN_ALLOCO; goto extract_sfmt_alloco; }
1453 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1454 case 901 :
1455 if ((entire_insn & 0xfc0f03ff) == 0xe00503f0)
1456 { itype = SH64_MEDIA_INSN_ICBI; goto extract_sfmt_alloco; }
1457 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1458 case 902 :
1459 if ((entire_insn & 0xfc0f000f) == 0xe0060000)
1460 { itype = SH64_MEDIA_INSN_STHIL; goto extract_sfmt_sthil; }
1461 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1462 case 903 :
1463 if ((entire_insn & 0xfc0f000f) == 0xe0070000)
1464 { itype = SH64_MEDIA_INSN_STHIQ; goto extract_sfmt_sthiq; }
1465 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1466 case 904 :
1467 if ((entire_insn & 0xfc0f03ff) == 0xe00803f0)
1468 { itype = SH64_MEDIA_INSN_OCBP; goto extract_sfmt_alloco; }
1469 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1470 case 905 :
1471 if ((entire_insn & 0xfc0f03ff) == 0xe00903f0)
1472 { itype = SH64_MEDIA_INSN_OCBI; goto extract_sfmt_alloco; }
1473 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1474 case 908 :
1475 if ((entire_insn & 0xfc0f03ff) == 0xe00c03f0)
1476 { itype = SH64_MEDIA_INSN_OCBWB; goto extract_sfmt_alloco; }
1477 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1478 case 911 :
1479 if ((entire_insn & 0xfc0f000f) == 0xe00f0000)
1480 { itype = SH64_MEDIA_INSN_PUTCFG; goto extract_sfmt_putcfg; }
1481 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1482 case 913 :
1483 if ((entire_insn & 0xfc0f018f) == 0xe4010000)
1484 { itype = SH64_MEDIA_INSN_BEQI; goto extract_sfmt_beqi; }
1485 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1486 case 917 :
1487 if ((entire_insn & 0xfc0f018f) == 0xe4050000)
1488 { itype = SH64_MEDIA_INSN_BNEI; goto extract_sfmt_bnei; }
1489 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1490 case 928 : /* fall through */
1491 case 929 : /* fall through */
1492 case 930 : /* fall through */
1493 case 931 : /* fall through */
1494 case 932 : /* fall through */
1495 case 933 : /* fall through */
1496 case 934 : /* fall through */
1497 case 935 : /* fall through */
1498 case 936 : /* fall through */
1499 case 937 : /* fall through */
1500 case 938 : /* fall through */
1501 case 939 : /* fall through */
1502 case 940 : /* fall through */
1503 case 941 : /* fall through */
1504 case 942 : /* fall through */
1505 case 943 :
1506 if ((entire_insn & 0xfc00018f) == 0xe8000000)
1507 { itype = SH64_MEDIA_INSN_PTA; goto extract_sfmt_pta; }
1508 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1509 case 944 : /* fall through */
1510 case 945 : /* fall through */
1511 case 946 : /* fall through */
1512 case 947 : /* fall through */
1513 case 948 : /* fall through */
1514 case 949 : /* fall through */
1515 case 950 : /* fall through */
1516 case 951 : /* fall through */
1517 case 952 : /* fall through */
1518 case 953 : /* fall through */
1519 case 954 : /* fall through */
1520 case 955 : /* fall through */
1521 case 956 : /* fall through */
1522 case 957 : /* fall through */
1523 case 958 : /* fall through */
1524 case 959 :
1525 if ((entire_insn & 0xfc00018f) == 0xec000000)
1526 { itype = SH64_MEDIA_INSN_PTB; goto extract_sfmt_pta; }
1527 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1528 default : itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1533 /* The instruction has been decoded, now extract the fields. */
1535 extract_sfmt_empty:
1537 const IDESC *idesc = &sh64_media_insn_data[itype];
1538 #define FLD(f) abuf->fields.sfmt_empty.f
1541 /* Record the fields for the semantic handler. */
1542 CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_empty", (char *) 0));
1544 #undef FLD
1545 return idesc;
1548 extract_sfmt_add:
1550 const IDESC *idesc = &sh64_media_insn_data[itype];
1551 CGEN_INSN_WORD insn = entire_insn;
1552 #define FLD(f) abuf->fields.sfmt_add.f
1553 UINT f_left;
1554 UINT f_right;
1555 UINT f_dest;
1557 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
1558 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
1559 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
1561 /* Record the fields for the semantic handler. */
1562 FLD (f_left) = f_left;
1563 FLD (f_right) = f_right;
1564 FLD (f_dest) = f_dest;
1565 CGEN_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 #if WITH_PROFILE_MODEL_P
1568 /* Record the fields for profiling. */
1569 if (PROFILE_MODEL_P (current_cpu))
1571 FLD (in_rm) = f_left;
1572 FLD (in_rn) = f_right;
1573 FLD (out_rd) = f_dest;
1575 #endif
1576 #undef FLD
1577 return idesc;
1580 extract_sfmt_addi:
1582 const IDESC *idesc = &sh64_media_insn_data[itype];
1583 CGEN_INSN_WORD insn = entire_insn;
1584 #define FLD(f) abuf->fields.sfmt_addi.f
1585 UINT f_left;
1586 INT f_disp10;
1587 UINT f_dest;
1589 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
1590 f_disp10 = EXTRACT_MSB0_SINT (insn, 32, 12, 10);
1591 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
1593 /* Record the fields for the semantic handler. */
1594 FLD (f_disp10) = f_disp10;
1595 FLD (f_left) = f_left;
1596 FLD (f_dest) = f_dest;
1597 CGEN_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 #if WITH_PROFILE_MODEL_P
1600 /* Record the fields for profiling. */
1601 if (PROFILE_MODEL_P (current_cpu))
1603 FLD (in_rm) = f_left;
1604 FLD (out_rd) = f_dest;
1606 #endif
1607 #undef FLD
1608 return idesc;
1611 extract_sfmt_alloco:
1613 const IDESC *idesc = &sh64_media_insn_data[itype];
1614 CGEN_INSN_WORD insn = entire_insn;
1615 #define FLD(f) abuf->fields.sfmt_xori.f
1616 UINT f_left;
1618 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
1620 /* Record the fields for the semantic handler. */
1621 FLD (f_left) = f_left;
1622 CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_alloco", "f_left 0x%x", 'x', f_left, (char *) 0));
1624 #if WITH_PROFILE_MODEL_P
1625 /* Record the fields for profiling. */
1626 if (PROFILE_MODEL_P (current_cpu))
1628 FLD (in_rm) = f_left;
1629 FLD (out_rm) = f_left;
1631 #endif
1632 #undef FLD
1633 return idesc;
1636 extract_sfmt_beq:
1638 const IDESC *idesc = &sh64_media_insn_data[itype];
1639 CGEN_INSN_WORD insn = entire_insn;
1640 #define FLD(f) abuf->fields.sfmt_beq.f
1641 UINT f_left;
1642 UINT f_right;
1643 UINT f_tra;
1645 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
1646 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
1647 f_tra = EXTRACT_MSB0_UINT (insn, 32, 25, 3);
1649 /* Record the fields for the semantic handler. */
1650 FLD (f_left) = f_left;
1651 FLD (f_right) = f_right;
1652 FLD (f_tra) = f_tra;
1653 CGEN_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 #if WITH_PROFILE_MODEL_P
1656 /* Record the fields for profiling. */
1657 if (PROFILE_MODEL_P (current_cpu))
1659 FLD (in_rm) = f_left;
1660 FLD (in_rn) = f_right;
1661 FLD (in_tra) = f_tra;
1663 #endif
1664 #undef FLD
1665 return idesc;
1668 extract_sfmt_beqi:
1670 const IDESC *idesc = &sh64_media_insn_data[itype];
1671 CGEN_INSN_WORD insn = entire_insn;
1672 #define FLD(f) abuf->fields.sfmt_beqi.f
1673 UINT f_left;
1674 INT f_imm6;
1675 UINT f_tra;
1677 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
1678 f_imm6 = EXTRACT_MSB0_SINT (insn, 32, 16, 6);
1679 f_tra = EXTRACT_MSB0_UINT (insn, 32, 25, 3);
1681 /* Record the fields for the semantic handler. */
1682 FLD (f_imm6) = f_imm6;
1683 FLD (f_left) = f_left;
1684 FLD (f_tra) = f_tra;
1685 CGEN_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 #if WITH_PROFILE_MODEL_P
1688 /* Record the fields for profiling. */
1689 if (PROFILE_MODEL_P (current_cpu))
1691 FLD (in_rm) = f_left;
1692 FLD (in_tra) = f_tra;
1694 #endif
1695 #undef FLD
1696 return idesc;
1699 extract_sfmt_blink:
1701 const IDESC *idesc = &sh64_media_insn_data[itype];
1702 CGEN_INSN_WORD insn = entire_insn;
1703 #define FLD(f) abuf->fields.sfmt_blink.f
1704 UINT f_trb;
1705 UINT f_dest;
1707 f_trb = EXTRACT_MSB0_UINT (insn, 32, 9, 3);
1708 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
1710 /* Record the fields for the semantic handler. */
1711 FLD (f_dest) = f_dest;
1712 FLD (f_trb) = f_trb;
1713 CGEN_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 #if WITH_PROFILE_MODEL_P
1716 /* Record the fields for profiling. */
1717 if (PROFILE_MODEL_P (current_cpu))
1719 FLD (in_trb) = f_trb;
1720 FLD (out_rd) = f_dest;
1722 #endif
1723 #undef FLD
1724 return idesc;
1727 extract_sfmt_bnei:
1729 const IDESC *idesc = &sh64_media_insn_data[itype];
1730 CGEN_INSN_WORD insn = entire_insn;
1731 #define FLD(f) abuf->fields.sfmt_beqi.f
1732 UINT f_left;
1733 INT f_imm6;
1734 UINT f_tra;
1736 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
1737 f_imm6 = EXTRACT_MSB0_SINT (insn, 32, 16, 6);
1738 f_tra = EXTRACT_MSB0_UINT (insn, 32, 25, 3);
1740 /* Record the fields for the semantic handler. */
1741 FLD (f_imm6) = f_imm6;
1742 FLD (f_left) = f_left;
1743 FLD (f_tra) = f_tra;
1744 CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bnei", "f_imm6 0x%x", 'x', f_imm6, "f_left 0x%x", 'x', f_left, "f_tra 0x%x", 'x', f_tra, (char *) 0));
1746 #if WITH_PROFILE_MODEL_P
1747 /* Record the fields for profiling. */
1748 if (PROFILE_MODEL_P (current_cpu))
1750 FLD (in_rm) = f_left;
1751 FLD (in_tra) = f_tra;
1753 #endif
1754 #undef FLD
1755 return idesc;
1758 extract_sfmt_brk:
1760 const IDESC *idesc = &sh64_media_insn_data[itype];
1761 #define FLD(f) abuf->fields.sfmt_empty.f
1764 /* Record the fields for the semantic handler. */
1765 CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_brk", (char *) 0));
1767 #if WITH_PROFILE_MODEL_P
1768 /* Record the fields for profiling. */
1769 if (PROFILE_MODEL_P (current_cpu))
1772 #endif
1773 #undef FLD
1774 return idesc;
1777 extract_sfmt_byterev:
1779 const IDESC *idesc = &sh64_media_insn_data[itype];
1780 CGEN_INSN_WORD insn = entire_insn;
1781 #define FLD(f) abuf->fields.sfmt_xori.f
1782 UINT f_left;
1783 UINT f_dest;
1785 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
1786 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
1788 /* Record the fields for the semantic handler. */
1789 FLD (f_left) = f_left;
1790 FLD (f_dest) = f_dest;
1791 CGEN_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));
1793 #if WITH_PROFILE_MODEL_P
1794 /* Record the fields for profiling. */
1795 if (PROFILE_MODEL_P (current_cpu))
1797 FLD (in_rm) = f_left;
1798 FLD (out_rd) = f_dest;
1800 #endif
1801 #undef FLD
1802 return idesc;
1805 extract_sfmt_cmveq:
1807 const IDESC *idesc = &sh64_media_insn_data[itype];
1808 CGEN_INSN_WORD insn = entire_insn;
1809 #define FLD(f) abuf->fields.sfmt_add.f
1810 UINT f_left;
1811 UINT f_right;
1812 UINT f_dest;
1814 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
1815 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
1816 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
1818 /* Record the fields for the semantic handler. */
1819 FLD (f_left) = f_left;
1820 FLD (f_right) = f_right;
1821 FLD (f_dest) = f_dest;
1822 CGEN_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));
1824 #if WITH_PROFILE_MODEL_P
1825 /* Record the fields for profiling. */
1826 if (PROFILE_MODEL_P (current_cpu))
1828 FLD (in_rm) = f_left;
1829 FLD (in_rn) = f_right;
1830 FLD (out_rd) = f_dest;
1832 #endif
1833 #undef FLD
1834 return idesc;
1837 extract_sfmt_fabsd:
1839 const IDESC *idesc = &sh64_media_insn_data[itype];
1840 CGEN_INSN_WORD insn = entire_insn;
1841 #define FLD(f) abuf->fields.sfmt_fabsd.f
1842 UINT f_left;
1843 UINT f_right;
1844 UINT f_dest;
1845 UINT f_left_right;
1847 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
1848 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
1849 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
1850 f_left_right = f_left;
1852 /* Record the fields for the semantic handler. */
1853 FLD (f_left_right) = f_left_right;
1854 FLD (f_dest) = f_dest;
1855 CGEN_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));
1857 #if WITH_PROFILE_MODEL_P
1858 /* Record the fields for profiling. */
1859 if (PROFILE_MODEL_P (current_cpu))
1861 FLD (in_drgh) = f_left_right;
1862 FLD (out_drf) = f_dest;
1864 #endif
1865 #undef FLD
1866 return idesc;
1869 extract_sfmt_fabss:
1871 const IDESC *idesc = &sh64_media_insn_data[itype];
1872 CGEN_INSN_WORD insn = entire_insn;
1873 #define FLD(f) abuf->fields.sfmt_fabsd.f
1874 UINT f_left;
1875 UINT f_right;
1876 UINT f_dest;
1877 UINT f_left_right;
1879 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
1880 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
1881 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
1882 f_left_right = f_left;
1884 /* Record the fields for the semantic handler. */
1885 FLD (f_left_right) = f_left_right;
1886 FLD (f_dest) = f_dest;
1887 CGEN_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));
1889 #if WITH_PROFILE_MODEL_P
1890 /* Record the fields for profiling. */
1891 if (PROFILE_MODEL_P (current_cpu))
1893 FLD (in_frgh) = f_left_right;
1894 FLD (out_frf) = f_dest;
1896 #endif
1897 #undef FLD
1898 return idesc;
1901 extract_sfmt_faddd:
1903 const IDESC *idesc = &sh64_media_insn_data[itype];
1904 CGEN_INSN_WORD insn = entire_insn;
1905 #define FLD(f) abuf->fields.sfmt_add.f
1906 UINT f_left;
1907 UINT f_right;
1908 UINT f_dest;
1910 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
1911 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
1912 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
1914 /* Record the fields for the semantic handler. */
1915 FLD (f_left) = f_left;
1916 FLD (f_right) = f_right;
1917 FLD (f_dest) = f_dest;
1918 CGEN_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));
1920 #if WITH_PROFILE_MODEL_P
1921 /* Record the fields for profiling. */
1922 if (PROFILE_MODEL_P (current_cpu))
1924 FLD (in_drg) = f_left;
1925 FLD (in_drh) = f_right;
1926 FLD (out_drf) = f_dest;
1928 #endif
1929 #undef FLD
1930 return idesc;
1933 extract_sfmt_fadds:
1935 const IDESC *idesc = &sh64_media_insn_data[itype];
1936 CGEN_INSN_WORD insn = entire_insn;
1937 #define FLD(f) abuf->fields.sfmt_add.f
1938 UINT f_left;
1939 UINT f_right;
1940 UINT f_dest;
1942 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
1943 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
1944 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
1946 /* Record the fields for the semantic handler. */
1947 FLD (f_left) = f_left;
1948 FLD (f_right) = f_right;
1949 FLD (f_dest) = f_dest;
1950 CGEN_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));
1952 #if WITH_PROFILE_MODEL_P
1953 /* Record the fields for profiling. */
1954 if (PROFILE_MODEL_P (current_cpu))
1956 FLD (in_frg) = f_left;
1957 FLD (in_frh) = f_right;
1958 FLD (out_frf) = f_dest;
1960 #endif
1961 #undef FLD
1962 return idesc;
1965 extract_sfmt_fcmpeqd:
1967 const IDESC *idesc = &sh64_media_insn_data[itype];
1968 CGEN_INSN_WORD insn = entire_insn;
1969 #define FLD(f) abuf->fields.sfmt_add.f
1970 UINT f_left;
1971 UINT f_right;
1972 UINT f_dest;
1974 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
1975 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
1976 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
1978 /* Record the fields for the semantic handler. */
1979 FLD (f_left) = f_left;
1980 FLD (f_right) = f_right;
1981 FLD (f_dest) = f_dest;
1982 CGEN_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));
1984 #if WITH_PROFILE_MODEL_P
1985 /* Record the fields for profiling. */
1986 if (PROFILE_MODEL_P (current_cpu))
1988 FLD (in_drg) = f_left;
1989 FLD (in_drh) = f_right;
1990 FLD (out_rd) = f_dest;
1992 #endif
1993 #undef FLD
1994 return idesc;
1997 extract_sfmt_fcmpeqs:
1999 const IDESC *idesc = &sh64_media_insn_data[itype];
2000 CGEN_INSN_WORD insn = entire_insn;
2001 #define FLD(f) abuf->fields.sfmt_add.f
2002 UINT f_left;
2003 UINT f_right;
2004 UINT f_dest;
2006 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2007 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
2008 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
2010 /* Record the fields for the semantic handler. */
2011 FLD (f_left) = f_left;
2012 FLD (f_right) = f_right;
2013 FLD (f_dest) = f_dest;
2014 CGEN_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));
2016 #if WITH_PROFILE_MODEL_P
2017 /* Record the fields for profiling. */
2018 if (PROFILE_MODEL_P (current_cpu))
2020 FLD (in_frg) = f_left;
2021 FLD (in_frh) = f_right;
2022 FLD (out_rd) = f_dest;
2024 #endif
2025 #undef FLD
2026 return idesc;
2029 extract_sfmt_fcnvds:
2031 const IDESC *idesc = &sh64_media_insn_data[itype];
2032 CGEN_INSN_WORD insn = entire_insn;
2033 #define FLD(f) abuf->fields.sfmt_fabsd.f
2034 UINT f_left;
2035 UINT f_right;
2036 UINT f_dest;
2037 UINT f_left_right;
2039 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2040 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
2041 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
2042 f_left_right = f_left;
2044 /* Record the fields for the semantic handler. */
2045 FLD (f_left_right) = f_left_right;
2046 FLD (f_dest) = f_dest;
2047 CGEN_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));
2049 #if WITH_PROFILE_MODEL_P
2050 /* Record the fields for profiling. */
2051 if (PROFILE_MODEL_P (current_cpu))
2053 FLD (in_drgh) = f_left_right;
2054 FLD (out_frf) = f_dest;
2056 #endif
2057 #undef FLD
2058 return idesc;
2061 extract_sfmt_fcnvsd:
2063 const IDESC *idesc = &sh64_media_insn_data[itype];
2064 CGEN_INSN_WORD insn = entire_insn;
2065 #define FLD(f) abuf->fields.sfmt_fabsd.f
2066 UINT f_left;
2067 UINT f_right;
2068 UINT f_dest;
2069 UINT f_left_right;
2071 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2072 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
2073 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
2074 f_left_right = f_left;
2076 /* Record the fields for the semantic handler. */
2077 FLD (f_left_right) = f_left_right;
2078 FLD (f_dest) = f_dest;
2079 CGEN_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));
2081 #if WITH_PROFILE_MODEL_P
2082 /* Record the fields for profiling. */
2083 if (PROFILE_MODEL_P (current_cpu))
2085 FLD (in_frgh) = f_left_right;
2086 FLD (out_drf) = f_dest;
2088 #endif
2089 #undef FLD
2090 return idesc;
2093 extract_sfmt_fgetscr:
2095 const IDESC *idesc = &sh64_media_insn_data[itype];
2096 CGEN_INSN_WORD insn = entire_insn;
2097 #define FLD(f) abuf->fields.sfmt_shori.f
2098 UINT f_dest;
2100 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
2102 /* Record the fields for the semantic handler. */
2103 FLD (f_dest) = f_dest;
2104 CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fgetscr", "f_dest 0x%x", 'x', f_dest, (char *) 0));
2106 #if WITH_PROFILE_MODEL_P
2107 /* Record the fields for profiling. */
2108 if (PROFILE_MODEL_P (current_cpu))
2110 FLD (out_frf) = f_dest;
2112 #endif
2113 #undef FLD
2114 return idesc;
2117 extract_sfmt_fiprs:
2119 const IDESC *idesc = &sh64_media_insn_data[itype];
2120 CGEN_INSN_WORD insn = entire_insn;
2121 #define FLD(f) abuf->fields.sfmt_add.f
2122 UINT f_left;
2123 UINT f_right;
2124 UINT f_dest;
2126 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2127 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
2128 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
2130 /* Record the fields for the semantic handler. */
2131 FLD (f_left) = f_left;
2132 FLD (f_right) = f_right;
2133 FLD (f_dest) = f_dest;
2134 CGEN_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));
2136 #if WITH_PROFILE_MODEL_P
2137 /* Record the fields for profiling. */
2138 if (PROFILE_MODEL_P (current_cpu))
2140 FLD (in_fvg) = f_left;
2141 FLD (in_fvh) = f_right;
2142 FLD (out_frf) = f_dest;
2143 FLD (out_fvg) = f_left;
2144 FLD (out_fvh) = f_right;
2146 #endif
2147 #undef FLD
2148 return idesc;
2151 extract_sfmt_fldd:
2153 const IDESC *idesc = &sh64_media_insn_data[itype];
2154 CGEN_INSN_WORD insn = entire_insn;
2155 #define FLD(f) abuf->fields.sfmt_fldd.f
2156 UINT f_left;
2157 SI f_disp10x8;
2158 UINT f_dest;
2160 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2161 f_disp10x8 = ((EXTRACT_MSB0_SINT (insn, 32, 12, 10)) << (3));
2162 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
2164 /* Record the fields for the semantic handler. */
2165 FLD (f_disp10x8) = f_disp10x8;
2166 FLD (f_left) = f_left;
2167 FLD (f_dest) = f_dest;
2168 CGEN_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));
2170 #if WITH_PROFILE_MODEL_P
2171 /* Record the fields for profiling. */
2172 if (PROFILE_MODEL_P (current_cpu))
2174 FLD (in_rm) = f_left;
2175 FLD (out_drf) = f_dest;
2177 #endif
2178 #undef FLD
2179 return idesc;
2182 extract_sfmt_fldp:
2184 const IDESC *idesc = &sh64_media_insn_data[itype];
2185 CGEN_INSN_WORD insn = entire_insn;
2186 #define FLD(f) abuf->fields.sfmt_fldd.f
2187 UINT f_left;
2188 SI f_disp10x8;
2189 UINT f_dest;
2191 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2192 f_disp10x8 = ((EXTRACT_MSB0_SINT (insn, 32, 12, 10)) << (3));
2193 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
2195 /* Record the fields for the semantic handler. */
2196 FLD (f_disp10x8) = f_disp10x8;
2197 FLD (f_dest) = f_dest;
2198 FLD (f_left) = f_left;
2199 CGEN_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));
2201 #if WITH_PROFILE_MODEL_P
2202 /* Record the fields for profiling. */
2203 if (PROFILE_MODEL_P (current_cpu))
2205 FLD (in_fpf) = f_dest;
2206 FLD (in_rm) = f_left;
2207 FLD (out_fpf) = f_dest;
2209 #endif
2210 #undef FLD
2211 return idesc;
2214 extract_sfmt_flds:
2216 const IDESC *idesc = &sh64_media_insn_data[itype];
2217 CGEN_INSN_WORD insn = entire_insn;
2218 #define FLD(f) abuf->fields.sfmt_flds.f
2219 UINT f_left;
2220 SI f_disp10x4;
2221 UINT f_dest;
2223 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2224 f_disp10x4 = ((EXTRACT_MSB0_SINT (insn, 32, 12, 10)) << (2));
2225 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
2227 /* Record the fields for the semantic handler. */
2228 FLD (f_disp10x4) = f_disp10x4;
2229 FLD (f_left) = f_left;
2230 FLD (f_dest) = f_dest;
2231 CGEN_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));
2233 #if WITH_PROFILE_MODEL_P
2234 /* Record the fields for profiling. */
2235 if (PROFILE_MODEL_P (current_cpu))
2237 FLD (in_rm) = f_left;
2238 FLD (out_frf) = f_dest;
2240 #endif
2241 #undef FLD
2242 return idesc;
2245 extract_sfmt_fldxd:
2247 const IDESC *idesc = &sh64_media_insn_data[itype];
2248 CGEN_INSN_WORD insn = entire_insn;
2249 #define FLD(f) abuf->fields.sfmt_add.f
2250 UINT f_left;
2251 UINT f_right;
2252 UINT f_dest;
2254 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2255 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
2256 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
2258 /* Record the fields for the semantic handler. */
2259 FLD (f_left) = f_left;
2260 FLD (f_right) = f_right;
2261 FLD (f_dest) = f_dest;
2262 CGEN_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));
2264 #if WITH_PROFILE_MODEL_P
2265 /* Record the fields for profiling. */
2266 if (PROFILE_MODEL_P (current_cpu))
2268 FLD (in_rm) = f_left;
2269 FLD (in_rn) = f_right;
2270 FLD (out_drf) = f_dest;
2272 #endif
2273 #undef FLD
2274 return idesc;
2277 extract_sfmt_fldxp:
2279 const IDESC *idesc = &sh64_media_insn_data[itype];
2280 CGEN_INSN_WORD insn = entire_insn;
2281 #define FLD(f) abuf->fields.sfmt_add.f
2282 UINT f_left;
2283 UINT f_right;
2284 UINT f_dest;
2286 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2287 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
2288 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
2290 /* Record the fields for the semantic handler. */
2291 FLD (f_dest) = f_dest;
2292 FLD (f_left) = f_left;
2293 FLD (f_right) = f_right;
2294 CGEN_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));
2296 #if WITH_PROFILE_MODEL_P
2297 /* Record the fields for profiling. */
2298 if (PROFILE_MODEL_P (current_cpu))
2300 FLD (in_fpf) = f_dest;
2301 FLD (in_rm) = f_left;
2302 FLD (in_rn) = f_right;
2303 FLD (out_fpf) = f_dest;
2305 #endif
2306 #undef FLD
2307 return idesc;
2310 extract_sfmt_fldxs:
2312 const IDESC *idesc = &sh64_media_insn_data[itype];
2313 CGEN_INSN_WORD insn = entire_insn;
2314 #define FLD(f) abuf->fields.sfmt_add.f
2315 UINT f_left;
2316 UINT f_right;
2317 UINT f_dest;
2319 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2320 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
2321 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
2323 /* Record the fields for the semantic handler. */
2324 FLD (f_left) = f_left;
2325 FLD (f_right) = f_right;
2326 FLD (f_dest) = f_dest;
2327 CGEN_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));
2329 #if WITH_PROFILE_MODEL_P
2330 /* Record the fields for profiling. */
2331 if (PROFILE_MODEL_P (current_cpu))
2333 FLD (in_rm) = f_left;
2334 FLD (in_rn) = f_right;
2335 FLD (out_frf) = f_dest;
2337 #endif
2338 #undef FLD
2339 return idesc;
2342 extract_sfmt_fmacs:
2344 const IDESC *idesc = &sh64_media_insn_data[itype];
2345 CGEN_INSN_WORD insn = entire_insn;
2346 #define FLD(f) abuf->fields.sfmt_add.f
2347 UINT f_left;
2348 UINT f_right;
2349 UINT f_dest;
2351 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2352 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
2353 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
2355 /* Record the fields for the semantic handler. */
2356 FLD (f_dest) = f_dest;
2357 FLD (f_left) = f_left;
2358 FLD (f_right) = f_right;
2359 CGEN_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));
2361 #if WITH_PROFILE_MODEL_P
2362 /* Record the fields for profiling. */
2363 if (PROFILE_MODEL_P (current_cpu))
2365 FLD (in_frf) = f_dest;
2366 FLD (in_frg) = f_left;
2367 FLD (in_frh) = f_right;
2368 FLD (out_frf) = f_dest;
2370 #endif
2371 #undef FLD
2372 return idesc;
2375 extract_sfmt_fmovdq:
2377 const IDESC *idesc = &sh64_media_insn_data[itype];
2378 CGEN_INSN_WORD insn = entire_insn;
2379 #define FLD(f) abuf->fields.sfmt_fabsd.f
2380 UINT f_left;
2381 UINT f_right;
2382 UINT f_dest;
2383 UINT f_left_right;
2385 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2386 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
2387 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
2388 f_left_right = f_left;
2390 /* Record the fields for the semantic handler. */
2391 FLD (f_left_right) = f_left_right;
2392 FLD (f_dest) = f_dest;
2393 CGEN_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));
2395 #if WITH_PROFILE_MODEL_P
2396 /* Record the fields for profiling. */
2397 if (PROFILE_MODEL_P (current_cpu))
2399 FLD (in_drgh) = f_left_right;
2400 FLD (out_rd) = f_dest;
2402 #endif
2403 #undef FLD
2404 return idesc;
2407 extract_sfmt_fmovls:
2409 const IDESC *idesc = &sh64_media_insn_data[itype];
2410 CGEN_INSN_WORD insn = entire_insn;
2411 #define FLD(f) abuf->fields.sfmt_xori.f
2412 UINT f_left;
2413 UINT f_dest;
2415 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2416 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
2418 /* Record the fields for the semantic handler. */
2419 FLD (f_left) = f_left;
2420 FLD (f_dest) = f_dest;
2421 CGEN_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));
2423 #if WITH_PROFILE_MODEL_P
2424 /* Record the fields for profiling. */
2425 if (PROFILE_MODEL_P (current_cpu))
2427 FLD (in_rm) = f_left;
2428 FLD (out_frf) = f_dest;
2430 #endif
2431 #undef FLD
2432 return idesc;
2435 extract_sfmt_fmovqd:
2437 const IDESC *idesc = &sh64_media_insn_data[itype];
2438 CGEN_INSN_WORD insn = entire_insn;
2439 #define FLD(f) abuf->fields.sfmt_xori.f
2440 UINT f_left;
2441 UINT f_dest;
2443 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2444 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
2446 /* Record the fields for the semantic handler. */
2447 FLD (f_left) = f_left;
2448 FLD (f_dest) = f_dest;
2449 CGEN_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));
2451 #if WITH_PROFILE_MODEL_P
2452 /* Record the fields for profiling. */
2453 if (PROFILE_MODEL_P (current_cpu))
2455 FLD (in_rm) = f_left;
2456 FLD (out_drf) = f_dest;
2458 #endif
2459 #undef FLD
2460 return idesc;
2463 extract_sfmt_fmovsl:
2465 const IDESC *idesc = &sh64_media_insn_data[itype];
2466 CGEN_INSN_WORD insn = entire_insn;
2467 #define FLD(f) abuf->fields.sfmt_fabsd.f
2468 UINT f_left;
2469 UINT f_right;
2470 UINT f_dest;
2471 UINT f_left_right;
2473 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2474 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
2475 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
2476 f_left_right = f_left;
2478 /* Record the fields for the semantic handler. */
2479 FLD (f_left_right) = f_left_right;
2480 FLD (f_dest) = f_dest;
2481 CGEN_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));
2483 #if WITH_PROFILE_MODEL_P
2484 /* Record the fields for profiling. */
2485 if (PROFILE_MODEL_P (current_cpu))
2487 FLD (in_frgh) = f_left_right;
2488 FLD (out_rd) = f_dest;
2490 #endif
2491 #undef FLD
2492 return idesc;
2495 extract_sfmt_fputscr:
2497 const IDESC *idesc = &sh64_media_insn_data[itype];
2498 CGEN_INSN_WORD insn = entire_insn;
2499 #define FLD(f) abuf->fields.sfmt_fabsd.f
2500 UINT f_left;
2501 UINT f_right;
2502 UINT f_left_right;
2504 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2505 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
2506 f_left_right = f_left;
2508 /* Record the fields for the semantic handler. */
2509 FLD (f_left_right) = f_left_right;
2510 CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fputscr", "f_left_right 0x%x", 'x', f_left_right, (char *) 0));
2512 #if WITH_PROFILE_MODEL_P
2513 /* Record the fields for profiling. */
2514 if (PROFILE_MODEL_P (current_cpu))
2516 FLD (in_frgh) = f_left_right;
2518 #endif
2519 #undef FLD
2520 return idesc;
2523 extract_sfmt_fstd:
2525 const IDESC *idesc = &sh64_media_insn_data[itype];
2526 CGEN_INSN_WORD insn = entire_insn;
2527 #define FLD(f) abuf->fields.sfmt_fldd.f
2528 UINT f_left;
2529 SI f_disp10x8;
2530 UINT f_dest;
2532 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2533 f_disp10x8 = ((EXTRACT_MSB0_SINT (insn, 32, 12, 10)) << (3));
2534 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
2536 /* Record the fields for the semantic handler. */
2537 FLD (f_disp10x8) = f_disp10x8;
2538 FLD (f_dest) = f_dest;
2539 FLD (f_left) = f_left;
2540 CGEN_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));
2542 #if WITH_PROFILE_MODEL_P
2543 /* Record the fields for profiling. */
2544 if (PROFILE_MODEL_P (current_cpu))
2546 FLD (in_drf) = f_dest;
2547 FLD (in_rm) = f_left;
2549 #endif
2550 #undef FLD
2551 return idesc;
2554 extract_sfmt_fsts:
2556 const IDESC *idesc = &sh64_media_insn_data[itype];
2557 CGEN_INSN_WORD insn = entire_insn;
2558 #define FLD(f) abuf->fields.sfmt_flds.f
2559 UINT f_left;
2560 SI f_disp10x4;
2561 UINT f_dest;
2563 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2564 f_disp10x4 = ((EXTRACT_MSB0_SINT (insn, 32, 12, 10)) << (2));
2565 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
2567 /* Record the fields for the semantic handler. */
2568 FLD (f_disp10x4) = f_disp10x4;
2569 FLD (f_dest) = f_dest;
2570 FLD (f_left) = f_left;
2571 CGEN_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));
2573 #if WITH_PROFILE_MODEL_P
2574 /* Record the fields for profiling. */
2575 if (PROFILE_MODEL_P (current_cpu))
2577 FLD (in_frf) = f_dest;
2578 FLD (in_rm) = f_left;
2580 #endif
2581 #undef FLD
2582 return idesc;
2585 extract_sfmt_fstxd:
2587 const IDESC *idesc = &sh64_media_insn_data[itype];
2588 CGEN_INSN_WORD insn = entire_insn;
2589 #define FLD(f) abuf->fields.sfmt_add.f
2590 UINT f_left;
2591 UINT f_right;
2592 UINT f_dest;
2594 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2595 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
2596 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
2598 /* Record the fields for the semantic handler. */
2599 FLD (f_dest) = f_dest;
2600 FLD (f_left) = f_left;
2601 FLD (f_right) = f_right;
2602 CGEN_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));
2604 #if WITH_PROFILE_MODEL_P
2605 /* Record the fields for profiling. */
2606 if (PROFILE_MODEL_P (current_cpu))
2608 FLD (in_drf) = f_dest;
2609 FLD (in_rm) = f_left;
2610 FLD (in_rn) = f_right;
2612 #endif
2613 #undef FLD
2614 return idesc;
2617 extract_sfmt_fstxs:
2619 const IDESC *idesc = &sh64_media_insn_data[itype];
2620 CGEN_INSN_WORD insn = entire_insn;
2621 #define FLD(f) abuf->fields.sfmt_add.f
2622 UINT f_left;
2623 UINT f_right;
2624 UINT f_dest;
2626 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2627 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
2628 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
2630 /* Record the fields for the semantic handler. */
2631 FLD (f_dest) = f_dest;
2632 FLD (f_left) = f_left;
2633 FLD (f_right) = f_right;
2634 CGEN_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));
2636 #if WITH_PROFILE_MODEL_P
2637 /* Record the fields for profiling. */
2638 if (PROFILE_MODEL_P (current_cpu))
2640 FLD (in_frf) = f_dest;
2641 FLD (in_rm) = f_left;
2642 FLD (in_rn) = f_right;
2644 #endif
2645 #undef FLD
2646 return idesc;
2649 extract_sfmt_fsubd:
2651 const IDESC *idesc = &sh64_media_insn_data[itype];
2652 CGEN_INSN_WORD insn = entire_insn;
2653 #define FLD(f) abuf->fields.sfmt_add.f
2654 UINT f_left;
2655 UINT f_right;
2656 UINT f_dest;
2658 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2659 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
2660 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
2662 /* Record the fields for the semantic handler. */
2663 FLD (f_left) = f_left;
2664 FLD (f_right) = f_right;
2665 FLD (f_dest) = f_dest;
2666 CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fsubd", "f_left 0x%x", 'x', f_left, "f_right 0x%x", 'x', f_right, "f_dest 0x%x", 'x', f_dest, (char *) 0));
2668 #if WITH_PROFILE_MODEL_P
2669 /* Record the fields for profiling. */
2670 if (PROFILE_MODEL_P (current_cpu))
2672 FLD (in_drg) = f_left;
2673 FLD (in_drh) = f_right;
2674 FLD (out_drf) = f_dest;
2676 #endif
2677 #undef FLD
2678 return idesc;
2681 extract_sfmt_ftrcdq:
2683 const IDESC *idesc = &sh64_media_insn_data[itype];
2684 CGEN_INSN_WORD insn = entire_insn;
2685 #define FLD(f) abuf->fields.sfmt_fabsd.f
2686 UINT f_left;
2687 UINT f_right;
2688 UINT f_dest;
2689 UINT f_left_right;
2691 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2692 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
2693 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
2694 f_left_right = f_left;
2696 /* Record the fields for the semantic handler. */
2697 FLD (f_left_right) = f_left_right;
2698 FLD (f_dest) = f_dest;
2699 CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ftrcdq", "f_left_right 0x%x", 'x', f_left_right, "f_dest 0x%x", 'x', f_dest, (char *) 0));
2701 #if WITH_PROFILE_MODEL_P
2702 /* Record the fields for profiling. */
2703 if (PROFILE_MODEL_P (current_cpu))
2705 FLD (in_drgh) = f_left_right;
2706 FLD (out_drf) = f_dest;
2708 #endif
2709 #undef FLD
2710 return idesc;
2713 extract_sfmt_ftrvs:
2715 const IDESC *idesc = &sh64_media_insn_data[itype];
2716 CGEN_INSN_WORD insn = entire_insn;
2717 #define FLD(f) abuf->fields.sfmt_add.f
2718 UINT f_left;
2719 UINT f_right;
2720 UINT f_dest;
2722 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2723 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
2724 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
2726 /* Record the fields for the semantic handler. */
2727 FLD (f_dest) = f_dest;
2728 FLD (f_left) = f_left;
2729 FLD (f_right) = f_right;
2730 CGEN_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));
2732 #if WITH_PROFILE_MODEL_P
2733 /* Record the fields for profiling. */
2734 if (PROFILE_MODEL_P (current_cpu))
2736 FLD (in_fvf) = f_dest;
2737 FLD (in_fvh) = f_right;
2738 FLD (in_mtrxg) = f_left;
2739 FLD (out_fvf) = f_dest;
2740 FLD (out_fvh) = f_right;
2741 FLD (out_mtrxg) = f_left;
2743 #endif
2744 #undef FLD
2745 return idesc;
2748 extract_sfmt_getcfg:
2750 const IDESC *idesc = &sh64_media_insn_data[itype];
2751 CGEN_INSN_WORD insn = entire_insn;
2752 #define FLD(f) abuf->fields.sfmt_getcfg.f
2753 UINT f_left;
2754 INT f_disp6;
2755 UINT f_dest;
2757 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2758 f_disp6 = EXTRACT_MSB0_SINT (insn, 32, 16, 6);
2759 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
2761 /* Record the fields for the semantic handler. */
2762 FLD (f_disp6) = f_disp6;
2763 FLD (f_left) = f_left;
2764 FLD (f_dest) = f_dest;
2765 CGEN_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));
2767 #if WITH_PROFILE_MODEL_P
2768 /* Record the fields for profiling. */
2769 if (PROFILE_MODEL_P (current_cpu))
2771 FLD (in_rm) = f_left;
2772 FLD (out_rd) = f_dest;
2774 #endif
2775 #undef FLD
2776 return idesc;
2779 extract_sfmt_getcon:
2781 const IDESC *idesc = &sh64_media_insn_data[itype];
2782 CGEN_INSN_WORD insn = entire_insn;
2783 #define FLD(f) abuf->fields.sfmt_xori.f
2784 UINT f_left;
2785 UINT f_dest;
2787 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2788 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
2790 /* Record the fields for the semantic handler. */
2791 FLD (f_left) = f_left;
2792 FLD (f_dest) = f_dest;
2793 CGEN_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));
2795 #if WITH_PROFILE_MODEL_P
2796 /* Record the fields for profiling. */
2797 if (PROFILE_MODEL_P (current_cpu))
2799 FLD (out_rd) = f_dest;
2801 #endif
2802 #undef FLD
2803 return idesc;
2806 extract_sfmt_gettr:
2808 const IDESC *idesc = &sh64_media_insn_data[itype];
2809 CGEN_INSN_WORD insn = entire_insn;
2810 #define FLD(f) abuf->fields.sfmt_blink.f
2811 UINT f_trb;
2812 UINT f_dest;
2814 f_trb = EXTRACT_MSB0_UINT (insn, 32, 9, 3);
2815 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
2817 /* Record the fields for the semantic handler. */
2818 FLD (f_trb) = f_trb;
2819 FLD (f_dest) = f_dest;
2820 CGEN_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));
2822 #if WITH_PROFILE_MODEL_P
2823 /* Record the fields for profiling. */
2824 if (PROFILE_MODEL_P (current_cpu))
2826 FLD (in_trb) = f_trb;
2827 FLD (out_rd) = f_dest;
2829 #endif
2830 #undef FLD
2831 return idesc;
2834 extract_sfmt_ldb:
2836 const IDESC *idesc = &sh64_media_insn_data[itype];
2837 CGEN_INSN_WORD insn = entire_insn;
2838 #define FLD(f) abuf->fields.sfmt_addi.f
2839 UINT f_left;
2840 INT f_disp10;
2841 UINT f_dest;
2843 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2844 f_disp10 = EXTRACT_MSB0_SINT (insn, 32, 12, 10);
2845 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
2847 /* Record the fields for the semantic handler. */
2848 FLD (f_disp10) = f_disp10;
2849 FLD (f_left) = f_left;
2850 FLD (f_dest) = f_dest;
2851 CGEN_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));
2853 #if WITH_PROFILE_MODEL_P
2854 /* Record the fields for profiling. */
2855 if (PROFILE_MODEL_P (current_cpu))
2857 FLD (in_rm) = f_left;
2858 FLD (out_rd) = f_dest;
2860 #endif
2861 #undef FLD
2862 return idesc;
2865 extract_sfmt_ldl:
2867 const IDESC *idesc = &sh64_media_insn_data[itype];
2868 CGEN_INSN_WORD insn = entire_insn;
2869 #define FLD(f) abuf->fields.sfmt_flds.f
2870 UINT f_left;
2871 SI f_disp10x4;
2872 UINT f_dest;
2874 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2875 f_disp10x4 = ((EXTRACT_MSB0_SINT (insn, 32, 12, 10)) << (2));
2876 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
2878 /* Record the fields for the semantic handler. */
2879 FLD (f_disp10x4) = f_disp10x4;
2880 FLD (f_left) = f_left;
2881 FLD (f_dest) = f_dest;
2882 CGEN_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));
2884 #if WITH_PROFILE_MODEL_P
2885 /* Record the fields for profiling. */
2886 if (PROFILE_MODEL_P (current_cpu))
2888 FLD (in_rm) = f_left;
2889 FLD (out_rd) = f_dest;
2891 #endif
2892 #undef FLD
2893 return idesc;
2896 extract_sfmt_ldq:
2898 const IDESC *idesc = &sh64_media_insn_data[itype];
2899 CGEN_INSN_WORD insn = entire_insn;
2900 #define FLD(f) abuf->fields.sfmt_fldd.f
2901 UINT f_left;
2902 SI f_disp10x8;
2903 UINT f_dest;
2905 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2906 f_disp10x8 = ((EXTRACT_MSB0_SINT (insn, 32, 12, 10)) << (3));
2907 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
2909 /* Record the fields for the semantic handler. */
2910 FLD (f_disp10x8) = f_disp10x8;
2911 FLD (f_left) = f_left;
2912 FLD (f_dest) = f_dest;
2913 CGEN_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));
2915 #if WITH_PROFILE_MODEL_P
2916 /* Record the fields for profiling. */
2917 if (PROFILE_MODEL_P (current_cpu))
2919 FLD (in_rm) = f_left;
2920 FLD (out_rd) = f_dest;
2922 #endif
2923 #undef FLD
2924 return idesc;
2927 extract_sfmt_lduw:
2929 const IDESC *idesc = &sh64_media_insn_data[itype];
2930 CGEN_INSN_WORD insn = entire_insn;
2931 #define FLD(f) abuf->fields.sfmt_lduw.f
2932 UINT f_left;
2933 SI f_disp10x2;
2934 UINT f_dest;
2936 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2937 f_disp10x2 = ((EXTRACT_MSB0_SINT (insn, 32, 12, 10)) << (1));
2938 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
2940 /* Record the fields for the semantic handler. */
2941 FLD (f_disp10x2) = f_disp10x2;
2942 FLD (f_left) = f_left;
2943 FLD (f_dest) = f_dest;
2944 CGEN_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));
2946 #if WITH_PROFILE_MODEL_P
2947 /* Record the fields for profiling. */
2948 if (PROFILE_MODEL_P (current_cpu))
2950 FLD (in_rm) = f_left;
2951 FLD (out_rd) = f_dest;
2953 #endif
2954 #undef FLD
2955 return idesc;
2958 extract_sfmt_ldhil:
2960 const IDESC *idesc = &sh64_media_insn_data[itype];
2961 CGEN_INSN_WORD insn = entire_insn;
2962 #define FLD(f) abuf->fields.sfmt_getcfg.f
2963 UINT f_left;
2964 INT f_disp6;
2965 UINT f_dest;
2967 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2968 f_disp6 = EXTRACT_MSB0_SINT (insn, 32, 16, 6);
2969 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
2971 /* Record the fields for the semantic handler. */
2972 FLD (f_disp6) = f_disp6;
2973 FLD (f_left) = f_left;
2974 FLD (f_dest) = f_dest;
2975 CGEN_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));
2977 #if WITH_PROFILE_MODEL_P
2978 /* Record the fields for profiling. */
2979 if (PROFILE_MODEL_P (current_cpu))
2981 FLD (in_rm) = f_left;
2982 FLD (out_rd) = f_dest;
2984 #endif
2985 #undef FLD
2986 return idesc;
2989 extract_sfmt_ldhiq:
2991 const IDESC *idesc = &sh64_media_insn_data[itype];
2992 CGEN_INSN_WORD insn = entire_insn;
2993 #define FLD(f) abuf->fields.sfmt_getcfg.f
2994 UINT f_left;
2995 INT f_disp6;
2996 UINT f_dest;
2998 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2999 f_disp6 = EXTRACT_MSB0_SINT (insn, 32, 16, 6);
3000 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
3002 /* Record the fields for the semantic handler. */
3003 FLD (f_disp6) = f_disp6;
3004 FLD (f_left) = f_left;
3005 FLD (f_dest) = f_dest;
3006 CGEN_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));
3008 #if WITH_PROFILE_MODEL_P
3009 /* Record the fields for profiling. */
3010 if (PROFILE_MODEL_P (current_cpu))
3012 FLD (in_rm) = f_left;
3013 FLD (out_rd) = f_dest;
3015 #endif
3016 #undef FLD
3017 return idesc;
3020 extract_sfmt_ldlol:
3022 const IDESC *idesc = &sh64_media_insn_data[itype];
3023 CGEN_INSN_WORD insn = entire_insn;
3024 #define FLD(f) abuf->fields.sfmt_getcfg.f
3025 UINT f_left;
3026 INT f_disp6;
3027 UINT f_dest;
3029 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
3030 f_disp6 = EXTRACT_MSB0_SINT (insn, 32, 16, 6);
3031 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
3033 /* Record the fields for the semantic handler. */
3034 FLD (f_disp6) = f_disp6;
3035 FLD (f_left) = f_left;
3036 FLD (f_dest) = f_dest;
3037 CGEN_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));
3039 #if WITH_PROFILE_MODEL_P
3040 /* Record the fields for profiling. */
3041 if (PROFILE_MODEL_P (current_cpu))
3043 FLD (in_rm) = f_left;
3044 FLD (out_rd) = f_dest;
3046 #endif
3047 #undef FLD
3048 return idesc;
3051 extract_sfmt_ldloq:
3053 const IDESC *idesc = &sh64_media_insn_data[itype];
3054 CGEN_INSN_WORD insn = entire_insn;
3055 #define FLD(f) abuf->fields.sfmt_getcfg.f
3056 UINT f_left;
3057 INT f_disp6;
3058 UINT f_dest;
3060 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
3061 f_disp6 = EXTRACT_MSB0_SINT (insn, 32, 16, 6);
3062 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
3064 /* Record the fields for the semantic handler. */
3065 FLD (f_disp6) = f_disp6;
3066 FLD (f_left) = f_left;
3067 FLD (f_dest) = f_dest;
3068 CGEN_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));
3070 #if WITH_PROFILE_MODEL_P
3071 /* Record the fields for profiling. */
3072 if (PROFILE_MODEL_P (current_cpu))
3074 FLD (in_rm) = f_left;
3075 FLD (out_rd) = f_dest;
3077 #endif
3078 #undef FLD
3079 return idesc;
3082 extract_sfmt_ldxb:
3084 const IDESC *idesc = &sh64_media_insn_data[itype];
3085 CGEN_INSN_WORD insn = entire_insn;
3086 #define FLD(f) abuf->fields.sfmt_add.f
3087 UINT f_left;
3088 UINT f_right;
3089 UINT f_dest;
3091 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
3092 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
3093 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
3095 /* Record the fields for the semantic handler. */
3096 FLD (f_left) = f_left;
3097 FLD (f_right) = f_right;
3098 FLD (f_dest) = f_dest;
3099 CGEN_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));
3101 #if WITH_PROFILE_MODEL_P
3102 /* Record the fields for profiling. */
3103 if (PROFILE_MODEL_P (current_cpu))
3105 FLD (in_rm) = f_left;
3106 FLD (in_rn) = f_right;
3107 FLD (out_rd) = f_dest;
3109 #endif
3110 #undef FLD
3111 return idesc;
3114 extract_sfmt_ldxl:
3116 const IDESC *idesc = &sh64_media_insn_data[itype];
3117 CGEN_INSN_WORD insn = entire_insn;
3118 #define FLD(f) abuf->fields.sfmt_add.f
3119 UINT f_left;
3120 UINT f_right;
3121 UINT f_dest;
3123 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
3124 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
3125 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
3127 /* Record the fields for the semantic handler. */
3128 FLD (f_left) = f_left;
3129 FLD (f_right) = f_right;
3130 FLD (f_dest) = f_dest;
3131 CGEN_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));
3133 #if WITH_PROFILE_MODEL_P
3134 /* Record the fields for profiling. */
3135 if (PROFILE_MODEL_P (current_cpu))
3137 FLD (in_rm) = f_left;
3138 FLD (in_rn) = f_right;
3139 FLD (out_rd) = f_dest;
3141 #endif
3142 #undef FLD
3143 return idesc;
3146 extract_sfmt_ldxq:
3148 const IDESC *idesc = &sh64_media_insn_data[itype];
3149 CGEN_INSN_WORD insn = entire_insn;
3150 #define FLD(f) abuf->fields.sfmt_add.f
3151 UINT f_left;
3152 UINT f_right;
3153 UINT f_dest;
3155 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
3156 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
3157 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
3159 /* Record the fields for the semantic handler. */
3160 FLD (f_left) = f_left;
3161 FLD (f_right) = f_right;
3162 FLD (f_dest) = f_dest;
3163 CGEN_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));
3165 #if WITH_PROFILE_MODEL_P
3166 /* Record the fields for profiling. */
3167 if (PROFILE_MODEL_P (current_cpu))
3169 FLD (in_rm) = f_left;
3170 FLD (in_rn) = f_right;
3171 FLD (out_rd) = f_dest;
3173 #endif
3174 #undef FLD
3175 return idesc;
3178 extract_sfmt_ldxub:
3180 const IDESC *idesc = &sh64_media_insn_data[itype];
3181 CGEN_INSN_WORD insn = entire_insn;
3182 #define FLD(f) abuf->fields.sfmt_add.f
3183 UINT f_left;
3184 UINT f_right;
3185 UINT f_dest;
3187 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
3188 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
3189 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
3191 /* Record the fields for the semantic handler. */
3192 FLD (f_left) = f_left;
3193 FLD (f_right) = f_right;
3194 FLD (f_dest) = f_dest;
3195 CGEN_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));
3197 #if WITH_PROFILE_MODEL_P
3198 /* Record the fields for profiling. */
3199 if (PROFILE_MODEL_P (current_cpu))
3201 FLD (in_rm) = f_left;
3202 FLD (in_rn) = f_right;
3203 FLD (out_rd) = f_dest;
3205 #endif
3206 #undef FLD
3207 return idesc;
3210 extract_sfmt_ldxuw:
3212 const IDESC *idesc = &sh64_media_insn_data[itype];
3213 CGEN_INSN_WORD insn = entire_insn;
3214 #define FLD(f) abuf->fields.sfmt_add.f
3215 UINT f_left;
3216 UINT f_right;
3217 UINT f_dest;
3219 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
3220 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
3221 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
3223 /* Record the fields for the semantic handler. */
3224 FLD (f_left) = f_left;
3225 FLD (f_right) = f_right;
3226 FLD (f_dest) = f_dest;
3227 CGEN_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));
3229 #if WITH_PROFILE_MODEL_P
3230 /* Record the fields for profiling. */
3231 if (PROFILE_MODEL_P (current_cpu))
3233 FLD (in_rm) = f_left;
3234 FLD (in_rn) = f_right;
3235 FLD (out_rd) = f_dest;
3237 #endif
3238 #undef FLD
3239 return idesc;
3242 extract_sfmt_ldxw:
3244 const IDESC *idesc = &sh64_media_insn_data[itype];
3245 CGEN_INSN_WORD insn = entire_insn;
3246 #define FLD(f) abuf->fields.sfmt_add.f
3247 UINT f_left;
3248 UINT f_right;
3249 UINT f_dest;
3251 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
3252 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
3253 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
3255 /* Record the fields for the semantic handler. */
3256 FLD (f_left) = f_left;
3257 FLD (f_right) = f_right;
3258 FLD (f_dest) = f_dest;
3259 CGEN_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));
3261 #if WITH_PROFILE_MODEL_P
3262 /* Record the fields for profiling. */
3263 if (PROFILE_MODEL_P (current_cpu))
3265 FLD (in_rm) = f_left;
3266 FLD (in_rn) = f_right;
3267 FLD (out_rd) = f_dest;
3269 #endif
3270 #undef FLD
3271 return idesc;
3274 extract_sfmt_mcmv:
3276 const IDESC *idesc = &sh64_media_insn_data[itype];
3277 CGEN_INSN_WORD insn = entire_insn;
3278 #define FLD(f) abuf->fields.sfmt_add.f
3279 UINT f_left;
3280 UINT f_right;
3281 UINT f_dest;
3283 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
3284 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
3285 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
3287 /* Record the fields for the semantic handler. */
3288 FLD (f_dest) = f_dest;
3289 FLD (f_left) = f_left;
3290 FLD (f_right) = f_right;
3291 CGEN_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));
3293 #if WITH_PROFILE_MODEL_P
3294 /* Record the fields for profiling. */
3295 if (PROFILE_MODEL_P (current_cpu))
3297 FLD (in_rd) = f_dest;
3298 FLD (in_rm) = f_left;
3299 FLD (in_rn) = f_right;
3300 FLD (out_rd) = f_dest;
3302 #endif
3303 #undef FLD
3304 return idesc;
3307 extract_sfmt_mmacnfx_wl:
3309 const IDESC *idesc = &sh64_media_insn_data[itype];
3310 CGEN_INSN_WORD insn = entire_insn;
3311 #define FLD(f) abuf->fields.sfmt_add.f
3312 UINT f_left;
3313 UINT f_right;
3314 UINT f_dest;
3316 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
3317 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
3318 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
3320 /* Record the fields for the semantic handler. */
3321 FLD (f_dest) = f_dest;
3322 FLD (f_left) = f_left;
3323 FLD (f_right) = f_right;
3324 CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mmacnfx_wl", "f_dest 0x%x", 'x', f_dest, "f_left 0x%x", 'x', f_left, "f_right 0x%x", 'x', f_right, (char *) 0));
3326 #if WITH_PROFILE_MODEL_P
3327 /* Record the fields for profiling. */
3328 if (PROFILE_MODEL_P (current_cpu))
3330 FLD (in_rd) = f_dest;
3331 FLD (in_rm) = f_left;
3332 FLD (in_rn) = f_right;
3333 FLD (out_rd) = f_dest;
3335 #endif
3336 #undef FLD
3337 return idesc;
3340 extract_sfmt_movi:
3342 const IDESC *idesc = &sh64_media_insn_data[itype];
3343 CGEN_INSN_WORD insn = entire_insn;
3344 #define FLD(f) abuf->fields.sfmt_movi.f
3345 INT f_imm16;
3346 UINT f_dest;
3348 f_imm16 = EXTRACT_MSB0_SINT (insn, 32, 6, 16);
3349 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
3351 /* Record the fields for the semantic handler. */
3352 FLD (f_imm16) = f_imm16;
3353 FLD (f_dest) = f_dest;
3354 CGEN_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));
3356 #if WITH_PROFILE_MODEL_P
3357 /* Record the fields for profiling. */
3358 if (PROFILE_MODEL_P (current_cpu))
3360 FLD (out_rd) = f_dest;
3362 #endif
3363 #undef FLD
3364 return idesc;
3367 extract_sfmt_nop:
3369 const IDESC *idesc = &sh64_media_insn_data[itype];
3370 #define FLD(f) abuf->fields.sfmt_empty.f
3373 /* Record the fields for the semantic handler. */
3374 CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_nop", (char *) 0));
3376 #undef FLD
3377 return idesc;
3380 extract_sfmt_ori:
3382 const IDESC *idesc = &sh64_media_insn_data[itype];
3383 CGEN_INSN_WORD insn = entire_insn;
3384 #define FLD(f) abuf->fields.sfmt_ori.f
3385 UINT f_left;
3386 INT f_imm10;
3387 UINT f_dest;
3389 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
3390 f_imm10 = EXTRACT_MSB0_SINT (insn, 32, 12, 10);
3391 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
3393 /* Record the fields for the semantic handler. */
3394 FLD (f_imm10) = f_imm10;
3395 FLD (f_left) = f_left;
3396 FLD (f_dest) = f_dest;
3397 CGEN_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));
3399 #if WITH_PROFILE_MODEL_P
3400 /* Record the fields for profiling. */
3401 if (PROFILE_MODEL_P (current_cpu))
3403 FLD (in_rm) = f_left;
3404 FLD (out_rd) = f_dest;
3406 #endif
3407 #undef FLD
3408 return idesc;
3411 extract_sfmt_prefi:
3413 const IDESC *idesc = &sh64_media_insn_data[itype];
3414 CGEN_INSN_WORD insn = entire_insn;
3415 #define FLD(f) abuf->fields.sfmt_xori.f
3416 UINT f_left;
3418 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
3420 /* Record the fields for the semantic handler. */
3421 FLD (f_left) = f_left;
3422 CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_prefi", "f_left 0x%x", 'x', f_left, (char *) 0));
3424 #if WITH_PROFILE_MODEL_P
3425 /* Record the fields for profiling. */
3426 if (PROFILE_MODEL_P (current_cpu))
3428 FLD (in_rm) = f_left;
3429 FLD (out_rm) = f_left;
3431 #endif
3432 #undef FLD
3433 return idesc;
3436 extract_sfmt_pta:
3438 const IDESC *idesc = &sh64_media_insn_data[itype];
3439 CGEN_INSN_WORD insn = entire_insn;
3440 #define FLD(f) abuf->fields.sfmt_pta.f
3441 DI f_disp16;
3442 UINT f_tra;
3444 f_disp16 = ((((EXTRACT_MSB0_SINT (insn, 32, 6, 16)) << (2))) + (pc));
3445 f_tra = EXTRACT_MSB0_UINT (insn, 32, 25, 3);
3447 /* Record the fields for the semantic handler. */
3448 FLD (f_disp16) = f_disp16;
3449 FLD (f_tra) = f_tra;
3450 CGEN_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));
3452 #if WITH_PROFILE_MODEL_P
3453 /* Record the fields for profiling. */
3454 if (PROFILE_MODEL_P (current_cpu))
3456 FLD (out_tra) = f_tra;
3458 #endif
3459 #undef FLD
3460 return idesc;
3463 extract_sfmt_ptabs:
3465 const IDESC *idesc = &sh64_media_insn_data[itype];
3466 CGEN_INSN_WORD insn = entire_insn;
3467 #define FLD(f) abuf->fields.sfmt_beq.f
3468 UINT f_right;
3469 UINT f_tra;
3471 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
3472 f_tra = EXTRACT_MSB0_UINT (insn, 32, 25, 3);
3474 /* Record the fields for the semantic handler. */
3475 FLD (f_right) = f_right;
3476 FLD (f_tra) = f_tra;
3477 CGEN_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));
3479 #if WITH_PROFILE_MODEL_P
3480 /* Record the fields for profiling. */
3481 if (PROFILE_MODEL_P (current_cpu))
3483 FLD (in_rn) = f_right;
3484 FLD (out_tra) = f_tra;
3486 #endif
3487 #undef FLD
3488 return idesc;
3491 extract_sfmt_ptrel:
3493 const IDESC *idesc = &sh64_media_insn_data[itype];
3494 CGEN_INSN_WORD insn = entire_insn;
3495 #define FLD(f) abuf->fields.sfmt_beq.f
3496 UINT f_right;
3497 UINT f_tra;
3499 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
3500 f_tra = EXTRACT_MSB0_UINT (insn, 32, 25, 3);
3502 /* Record the fields for the semantic handler. */
3503 FLD (f_right) = f_right;
3504 FLD (f_tra) = f_tra;
3505 CGEN_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));
3507 #if WITH_PROFILE_MODEL_P
3508 /* Record the fields for profiling. */
3509 if (PROFILE_MODEL_P (current_cpu))
3511 FLD (in_rn) = f_right;
3512 FLD (out_tra) = f_tra;
3514 #endif
3515 #undef FLD
3516 return idesc;
3519 extract_sfmt_putcfg:
3521 const IDESC *idesc = &sh64_media_insn_data[itype];
3522 CGEN_INSN_WORD insn = entire_insn;
3523 #define FLD(f) abuf->fields.sfmt_getcfg.f
3524 UINT f_left;
3525 INT f_disp6;
3526 UINT f_dest;
3528 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
3529 f_disp6 = EXTRACT_MSB0_SINT (insn, 32, 16, 6);
3530 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
3532 /* Record the fields for the semantic handler. */
3533 FLD (f_disp6) = f_disp6;
3534 FLD (f_dest) = f_dest;
3535 FLD (f_left) = f_left;
3536 CGEN_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));
3538 #if WITH_PROFILE_MODEL_P
3539 /* Record the fields for profiling. */
3540 if (PROFILE_MODEL_P (current_cpu))
3542 FLD (in_rd) = f_dest;
3543 FLD (in_rm) = f_left;
3545 #endif
3546 #undef FLD
3547 return idesc;
3550 extract_sfmt_putcon:
3552 const IDESC *idesc = &sh64_media_insn_data[itype];
3553 CGEN_INSN_WORD insn = entire_insn;
3554 #define FLD(f) abuf->fields.sfmt_xori.f
3555 UINT f_left;
3556 UINT f_dest;
3558 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
3559 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
3561 /* Record the fields for the semantic handler. */
3562 FLD (f_left) = f_left;
3563 FLD (f_dest) = f_dest;
3564 CGEN_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));
3566 #if WITH_PROFILE_MODEL_P
3567 /* Record the fields for profiling. */
3568 if (PROFILE_MODEL_P (current_cpu))
3570 FLD (in_rm) = f_left;
3572 #endif
3573 #undef FLD
3574 return idesc;
3577 extract_sfmt_shari:
3579 const IDESC *idesc = &sh64_media_insn_data[itype];
3580 CGEN_INSN_WORD insn = entire_insn;
3581 #define FLD(f) abuf->fields.sfmt_shari.f
3582 UINT f_left;
3583 UINT f_uimm6;
3584 UINT f_dest;
3586 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
3587 f_uimm6 = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
3588 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
3590 /* Record the fields for the semantic handler. */
3591 FLD (f_left) = f_left;
3592 FLD (f_uimm6) = f_uimm6;
3593 FLD (f_dest) = f_dest;
3594 CGEN_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));
3596 #if WITH_PROFILE_MODEL_P
3597 /* Record the fields for profiling. */
3598 if (PROFILE_MODEL_P (current_cpu))
3600 FLD (in_rm) = f_left;
3601 FLD (out_rd) = f_dest;
3603 #endif
3604 #undef FLD
3605 return idesc;
3608 extract_sfmt_shori:
3610 const IDESC *idesc = &sh64_media_insn_data[itype];
3611 CGEN_INSN_WORD insn = entire_insn;
3612 #define FLD(f) abuf->fields.sfmt_shori.f
3613 UINT f_uimm16;
3614 UINT f_dest;
3616 f_uimm16 = EXTRACT_MSB0_UINT (insn, 32, 6, 16);
3617 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
3619 /* Record the fields for the semantic handler. */
3620 FLD (f_dest) = f_dest;
3621 FLD (f_uimm16) = f_uimm16;
3622 CGEN_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));
3624 #if WITH_PROFILE_MODEL_P
3625 /* Record the fields for profiling. */
3626 if (PROFILE_MODEL_P (current_cpu))
3628 FLD (in_rd) = f_dest;
3629 FLD (out_rd) = f_dest;
3631 #endif
3632 #undef FLD
3633 return idesc;
3636 extract_sfmt_stb:
3638 const IDESC *idesc = &sh64_media_insn_data[itype];
3639 CGEN_INSN_WORD insn = entire_insn;
3640 #define FLD(f) abuf->fields.sfmt_addi.f
3641 UINT f_left;
3642 INT f_disp10;
3643 UINT f_dest;
3645 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
3646 f_disp10 = EXTRACT_MSB0_SINT (insn, 32, 12, 10);
3647 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
3649 /* Record the fields for the semantic handler. */
3650 FLD (f_disp10) = f_disp10;
3651 FLD (f_dest) = f_dest;
3652 FLD (f_left) = f_left;
3653 CGEN_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));
3655 #if WITH_PROFILE_MODEL_P
3656 /* Record the fields for profiling. */
3657 if (PROFILE_MODEL_P (current_cpu))
3659 FLD (in_rd) = f_dest;
3660 FLD (in_rm) = f_left;
3662 #endif
3663 #undef FLD
3664 return idesc;
3667 extract_sfmt_stl:
3669 const IDESC *idesc = &sh64_media_insn_data[itype];
3670 CGEN_INSN_WORD insn = entire_insn;
3671 #define FLD(f) abuf->fields.sfmt_flds.f
3672 UINT f_left;
3673 SI f_disp10x4;
3674 UINT f_dest;
3676 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
3677 f_disp10x4 = ((EXTRACT_MSB0_SINT (insn, 32, 12, 10)) << (2));
3678 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
3680 /* Record the fields for the semantic handler. */
3681 FLD (f_disp10x4) = f_disp10x4;
3682 FLD (f_dest) = f_dest;
3683 FLD (f_left) = f_left;
3684 CGEN_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));
3686 #if WITH_PROFILE_MODEL_P
3687 /* Record the fields for profiling. */
3688 if (PROFILE_MODEL_P (current_cpu))
3690 FLD (in_rd) = f_dest;
3691 FLD (in_rm) = f_left;
3693 #endif
3694 #undef FLD
3695 return idesc;
3698 extract_sfmt_stq:
3700 const IDESC *idesc = &sh64_media_insn_data[itype];
3701 CGEN_INSN_WORD insn = entire_insn;
3702 #define FLD(f) abuf->fields.sfmt_fldd.f
3703 UINT f_left;
3704 SI f_disp10x8;
3705 UINT f_dest;
3707 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
3708 f_disp10x8 = ((EXTRACT_MSB0_SINT (insn, 32, 12, 10)) << (3));
3709 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
3711 /* Record the fields for the semantic handler. */
3712 FLD (f_disp10x8) = f_disp10x8;
3713 FLD (f_dest) = f_dest;
3714 FLD (f_left) = f_left;
3715 CGEN_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));
3717 #if WITH_PROFILE_MODEL_P
3718 /* Record the fields for profiling. */
3719 if (PROFILE_MODEL_P (current_cpu))
3721 FLD (in_rd) = f_dest;
3722 FLD (in_rm) = f_left;
3724 #endif
3725 #undef FLD
3726 return idesc;
3729 extract_sfmt_stw:
3731 const IDESC *idesc = &sh64_media_insn_data[itype];
3732 CGEN_INSN_WORD insn = entire_insn;
3733 #define FLD(f) abuf->fields.sfmt_lduw.f
3734 UINT f_left;
3735 SI f_disp10x2;
3736 UINT f_dest;
3738 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
3739 f_disp10x2 = ((EXTRACT_MSB0_SINT (insn, 32, 12, 10)) << (1));
3740 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
3742 /* Record the fields for the semantic handler. */
3743 FLD (f_disp10x2) = f_disp10x2;
3744 FLD (f_dest) = f_dest;
3745 FLD (f_left) = f_left;
3746 CGEN_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));
3748 #if WITH_PROFILE_MODEL_P
3749 /* Record the fields for profiling. */
3750 if (PROFILE_MODEL_P (current_cpu))
3752 FLD (in_rd) = f_dest;
3753 FLD (in_rm) = f_left;
3755 #endif
3756 #undef FLD
3757 return idesc;
3760 extract_sfmt_sthil:
3762 const IDESC *idesc = &sh64_media_insn_data[itype];
3763 CGEN_INSN_WORD insn = entire_insn;
3764 #define FLD(f) abuf->fields.sfmt_getcfg.f
3765 UINT f_left;
3766 INT f_disp6;
3767 UINT f_dest;
3769 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
3770 f_disp6 = EXTRACT_MSB0_SINT (insn, 32, 16, 6);
3771 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
3773 /* Record the fields for the semantic handler. */
3774 FLD (f_disp6) = f_disp6;
3775 FLD (f_dest) = f_dest;
3776 FLD (f_left) = f_left;
3777 CGEN_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));
3779 #if WITH_PROFILE_MODEL_P
3780 /* Record the fields for profiling. */
3781 if (PROFILE_MODEL_P (current_cpu))
3783 FLD (in_rd) = f_dest;
3784 FLD (in_rm) = f_left;
3786 #endif
3787 #undef FLD
3788 return idesc;
3791 extract_sfmt_sthiq:
3793 const IDESC *idesc = &sh64_media_insn_data[itype];
3794 CGEN_INSN_WORD insn = entire_insn;
3795 #define FLD(f) abuf->fields.sfmt_getcfg.f
3796 UINT f_left;
3797 INT f_disp6;
3798 UINT f_dest;
3800 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
3801 f_disp6 = EXTRACT_MSB0_SINT (insn, 32, 16, 6);
3802 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
3804 /* Record the fields for the semantic handler. */
3805 FLD (f_disp6) = f_disp6;
3806 FLD (f_dest) = f_dest;
3807 FLD (f_left) = f_left;
3808 CGEN_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));
3810 #if WITH_PROFILE_MODEL_P
3811 /* Record the fields for profiling. */
3812 if (PROFILE_MODEL_P (current_cpu))
3814 FLD (in_rd) = f_dest;
3815 FLD (in_rm) = f_left;
3817 #endif
3818 #undef FLD
3819 return idesc;
3822 extract_sfmt_stlol:
3824 const IDESC *idesc = &sh64_media_insn_data[itype];
3825 CGEN_INSN_WORD insn = entire_insn;
3826 #define FLD(f) abuf->fields.sfmt_getcfg.f
3827 UINT f_left;
3828 INT f_disp6;
3829 UINT f_dest;
3831 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
3832 f_disp6 = EXTRACT_MSB0_SINT (insn, 32, 16, 6);
3833 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
3835 /* Record the fields for the semantic handler. */
3836 FLD (f_disp6) = f_disp6;
3837 FLD (f_dest) = f_dest;
3838 FLD (f_left) = f_left;
3839 CGEN_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));
3841 #if WITH_PROFILE_MODEL_P
3842 /* Record the fields for profiling. */
3843 if (PROFILE_MODEL_P (current_cpu))
3845 FLD (in_rd) = f_dest;
3846 FLD (in_rm) = f_left;
3848 #endif
3849 #undef FLD
3850 return idesc;
3853 extract_sfmt_stloq:
3855 const IDESC *idesc = &sh64_media_insn_data[itype];
3856 CGEN_INSN_WORD insn = entire_insn;
3857 #define FLD(f) abuf->fields.sfmt_getcfg.f
3858 UINT f_left;
3859 INT f_disp6;
3860 UINT f_dest;
3862 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
3863 f_disp6 = EXTRACT_MSB0_SINT (insn, 32, 16, 6);
3864 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
3866 /* Record the fields for the semantic handler. */
3867 FLD (f_disp6) = f_disp6;
3868 FLD (f_dest) = f_dest;
3869 FLD (f_left) = f_left;
3870 CGEN_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));
3872 #if WITH_PROFILE_MODEL_P
3873 /* Record the fields for profiling. */
3874 if (PROFILE_MODEL_P (current_cpu))
3876 FLD (in_rd) = f_dest;
3877 FLD (in_rm) = f_left;
3879 #endif
3880 #undef FLD
3881 return idesc;
3884 extract_sfmt_stxb:
3886 const IDESC *idesc = &sh64_media_insn_data[itype];
3887 CGEN_INSN_WORD insn = entire_insn;
3888 #define FLD(f) abuf->fields.sfmt_add.f
3889 UINT f_left;
3890 UINT f_right;
3891 UINT f_dest;
3893 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
3894 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
3895 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
3897 /* Record the fields for the semantic handler. */
3898 FLD (f_dest) = f_dest;
3899 FLD (f_left) = f_left;
3900 FLD (f_right) = f_right;
3901 CGEN_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));
3903 #if WITH_PROFILE_MODEL_P
3904 /* Record the fields for profiling. */
3905 if (PROFILE_MODEL_P (current_cpu))
3907 FLD (in_rd) = f_dest;
3908 FLD (in_rm) = f_left;
3909 FLD (in_rn) = f_right;
3911 #endif
3912 #undef FLD
3913 return idesc;
3916 extract_sfmt_stxl:
3918 const IDESC *idesc = &sh64_media_insn_data[itype];
3919 CGEN_INSN_WORD insn = entire_insn;
3920 #define FLD(f) abuf->fields.sfmt_add.f
3921 UINT f_left;
3922 UINT f_right;
3923 UINT f_dest;
3925 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
3926 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
3927 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
3929 /* Record the fields for the semantic handler. */
3930 FLD (f_dest) = f_dest;
3931 FLD (f_left) = f_left;
3932 FLD (f_right) = f_right;
3933 CGEN_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));
3935 #if WITH_PROFILE_MODEL_P
3936 /* Record the fields for profiling. */
3937 if (PROFILE_MODEL_P (current_cpu))
3939 FLD (in_rd) = f_dest;
3940 FLD (in_rm) = f_left;
3941 FLD (in_rn) = f_right;
3943 #endif
3944 #undef FLD
3945 return idesc;
3948 extract_sfmt_stxq:
3950 const IDESC *idesc = &sh64_media_insn_data[itype];
3951 CGEN_INSN_WORD insn = entire_insn;
3952 #define FLD(f) abuf->fields.sfmt_add.f
3953 UINT f_left;
3954 UINT f_right;
3955 UINT f_dest;
3957 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
3958 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
3959 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
3961 /* Record the fields for the semantic handler. */
3962 FLD (f_dest) = f_dest;
3963 FLD (f_left) = f_left;
3964 FLD (f_right) = f_right;
3965 CGEN_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));
3967 #if WITH_PROFILE_MODEL_P
3968 /* Record the fields for profiling. */
3969 if (PROFILE_MODEL_P (current_cpu))
3971 FLD (in_rd) = f_dest;
3972 FLD (in_rm) = f_left;
3973 FLD (in_rn) = f_right;
3975 #endif
3976 #undef FLD
3977 return idesc;
3980 extract_sfmt_stxw:
3982 const IDESC *idesc = &sh64_media_insn_data[itype];
3983 CGEN_INSN_WORD insn = entire_insn;
3984 #define FLD(f) abuf->fields.sfmt_add.f
3985 UINT f_left;
3986 UINT f_right;
3987 UINT f_dest;
3989 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
3990 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
3991 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
3993 /* Record the fields for the semantic handler. */
3994 FLD (f_dest) = f_dest;
3995 FLD (f_left) = f_left;
3996 FLD (f_right) = f_right;
3997 CGEN_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));
3999 #if WITH_PROFILE_MODEL_P
4000 /* Record the fields for profiling. */
4001 if (PROFILE_MODEL_P (current_cpu))
4003 FLD (in_rd) = f_dest;
4004 FLD (in_rm) = f_left;
4005 FLD (in_rn) = f_right;
4007 #endif
4008 #undef FLD
4009 return idesc;
4012 extract_sfmt_swapq:
4014 const IDESC *idesc = &sh64_media_insn_data[itype];
4015 CGEN_INSN_WORD insn = entire_insn;
4016 #define FLD(f) abuf->fields.sfmt_add.f
4017 UINT f_left;
4018 UINT f_right;
4019 UINT f_dest;
4021 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
4022 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
4023 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
4025 /* Record the fields for the semantic handler. */
4026 FLD (f_dest) = f_dest;
4027 FLD (f_left) = f_left;
4028 FLD (f_right) = f_right;
4029 CGEN_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));
4031 #if WITH_PROFILE_MODEL_P
4032 /* Record the fields for profiling. */
4033 if (PROFILE_MODEL_P (current_cpu))
4035 FLD (in_rd) = f_dest;
4036 FLD (in_rm) = f_left;
4037 FLD (in_rn) = f_right;
4038 FLD (out_rd) = f_dest;
4040 #endif
4041 #undef FLD
4042 return idesc;
4045 extract_sfmt_trapa:
4047 const IDESC *idesc = &sh64_media_insn_data[itype];
4048 CGEN_INSN_WORD insn = entire_insn;
4049 #define FLD(f) abuf->fields.sfmt_xori.f
4050 UINT f_left;
4052 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
4054 /* Record the fields for the semantic handler. */
4055 FLD (f_left) = f_left;
4056 CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_trapa", "f_left 0x%x", 'x', f_left, (char *) 0));
4058 #if WITH_PROFILE_MODEL_P
4059 /* Record the fields for profiling. */
4060 if (PROFILE_MODEL_P (current_cpu))
4062 FLD (in_rm) = f_left;
4064 #endif
4065 #undef FLD
4066 return idesc;
4069 extract_sfmt_xori:
4071 const IDESC *idesc = &sh64_media_insn_data[itype];
4072 CGEN_INSN_WORD insn = entire_insn;
4073 #define FLD(f) abuf->fields.sfmt_xori.f
4074 UINT f_left;
4075 INT f_imm6;
4076 UINT f_dest;
4078 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
4079 f_imm6 = EXTRACT_MSB0_SINT (insn, 32, 16, 6);
4080 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
4082 /* Record the fields for the semantic handler. */
4083 FLD (f_imm6) = f_imm6;
4084 FLD (f_left) = f_left;
4085 FLD (f_dest) = f_dest;
4086 CGEN_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));
4088 #if WITH_PROFILE_MODEL_P
4089 /* Record the fields for profiling. */
4090 if (PROFILE_MODEL_P (current_cpu))
4092 FLD (in_rm) = f_left;
4093 FLD (out_rd) = f_dest;
4095 #endif
4096 #undef FLD
4097 return idesc;