]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - sim/sh64/decode-media.c
Update years in copyright notice for the GDB files.
[thirdparty/binutils-gdb.git] / sim / sh64 / decode-media.c
CommitLineData
cbb38b47
BE
1/* Simulator instruction decoder for sh64_media.
2
3THIS FILE IS MACHINE GENERATED WITH CGEN.
4
8acc9f48 5Copyright 1996-2013 Free Software Foundation, Inc.
cbb38b47 6
c7e628df 7This file is part of the GNU simulators.
cbb38b47 8
fda1c30b
DE
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.
cbb38b47 13
fda1c30b
DE
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.
cbb38b47 18
fda1c30b 19 You should have received a copy of the GNU General Public License along
51b318de 20 with this program; if not, see <http://www.gnu.org/licenses/>.
cbb38b47
BE
21
22*/
23
24#define WANT_CPU sh64
25#define WANT_CPU_SH64
26
27#include "sim-main.h"
28#include "sim-assert.h"
29
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). */
c7e628df 35static IDESC sh64_media_insn_data[SH64_MEDIA_INSN__MAX];
cbb38b47
BE
36
37/* Commas between elements are contained in the macros.
38 Some of these are conditionally compiled out. */
39
40static const struct insn_sem sh64_media_insn_sem[] =
41{
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 },
c5351010 65 { SH_INSN_BNEI, SH64_MEDIA_INSN_BNEI, SH64_MEDIA_SFMT_BNEI },
cbb38b47
BE
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 },
c7e628df 89 { SH_INSN_FGETSCR, SH64_MEDIA_INSN_FGETSCR, SH64_MEDIA_SFMT_FGETSCR },
cbb38b47
BE
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 },
c7e628df 112 { SH_INSN_FPUTSCR, SH64_MEDIA_INSN_FPUTSCR, SH64_MEDIA_SFMT_FPUTSCR },
cbb38b47
BE
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 },
c7e628df 116 { SH_INSN_FSTP, SH64_MEDIA_INSN_FSTP, SH64_MEDIA_SFMT_FLDP },
cbb38b47
BE
117 { SH_INSN_FSTS, SH64_MEDIA_INSN_FSTS, SH64_MEDIA_SFMT_FSTS },
118 { SH_INSN_FSTXD, SH64_MEDIA_INSN_FSTXD, SH64_MEDIA_SFMT_FSTXD },
c7e628df 119 { SH_INSN_FSTXP, SH64_MEDIA_INSN_FSTXP, SH64_MEDIA_SFMT_FLDXP },
cbb38b47 120 { SH_INSN_FSTXS, SH64_MEDIA_INSN_FSTXS, SH64_MEDIA_SFMT_FSTXS },
c5351010 121 { SH_INSN_FSUBD, SH64_MEDIA_INSN_FSUBD, SH64_MEDIA_SFMT_FSUBD },
cbb38b47
BE
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 },
c5351010 125 { SH_INSN_FTRCDQ, SH64_MEDIA_INSN_FTRCDQ, SH64_MEDIA_SFMT_FTRCDQ },
cbb38b47
BE
126 { SH_INSN_FTRCSQ, SH64_MEDIA_INSN_FTRCSQ, SH64_MEDIA_SFMT_FCNVSD },
127 { SH_INSN_FTRVS, SH64_MEDIA_INSN_FTRVS, SH64_MEDIA_SFMT_FTRVS },
c7e628df 128 { SH_INSN_GETCFG, SH64_MEDIA_INSN_GETCFG, SH64_MEDIA_SFMT_GETCFG },
cbb38b47
BE
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 },
c7e628df
DB
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 },
cbb38b47 142 { SH_INSN_LDXB, SH64_MEDIA_INSN_LDXB, SH64_MEDIA_SFMT_LDXB },
c7e628df
DB
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 },
cbb38b47
BE
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 },
c5351010 173 { SH_INSN_MMACNFX_WL, SH64_MEDIA_INSN_MMACNFX_WL, SH64_MEDIA_SFMT_MMACNFX_WL },
cbb38b47
BE
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 },
fda1c30b 183 { SH_INSN_MPERMW, SH64_MEDIA_INSN_MPERMW, SH64_MEDIA_SFMT_ADD },
cbb38b47
BE
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 },
c7e628df 207 { SH_INSN_NOP, SH64_MEDIA_INSN_NOP, SH64_MEDIA_SFMT_NOP },
cbb38b47
BE
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 },
c5351010 214 { SH_INSN_PREFI, SH64_MEDIA_INSN_PREFI, SH64_MEDIA_SFMT_PREFI },
cbb38b47
BE
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 },
c7e628df 219 { SH_INSN_PUTCFG, SH64_MEDIA_INSN_PUTCFG, SH64_MEDIA_SFMT_PUTCFG },
cbb38b47 220 { SH_INSN_PUTCON, SH64_MEDIA_INSN_PUTCON, SH64_MEDIA_SFMT_PUTCON },
c7e628df 221 { SH_INSN_RTE, SH64_MEDIA_INSN_RTE, SH64_MEDIA_SFMT_NOP },
cbb38b47
BE
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 },
fda1c30b 225 { SH_INSN_SHARIL, SH64_MEDIA_INSN_SHARIL, SH64_MEDIA_SFMT_SHARI },
cbb38b47
BE
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 },
fda1c30b 229 { SH_INSN_SHLLIL, SH64_MEDIA_INSN_SHLLIL, SH64_MEDIA_SFMT_SHARI },
cbb38b47
BE
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 },
fda1c30b 233 { SH_INSN_SHLRIL, SH64_MEDIA_INSN_SHLRIL, SH64_MEDIA_SFMT_SHARI },
cbb38b47 234 { SH_INSN_SHORI, SH64_MEDIA_INSN_SHORI, SH64_MEDIA_SFMT_SHORI },
c7e628df 235 { SH_INSN_SLEEP, SH64_MEDIA_INSN_SLEEP, SH64_MEDIA_SFMT_NOP },
cbb38b47
BE
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 },
c7e628df
DB
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 },
cbb38b47 244 { SH_INSN_STXB, SH64_MEDIA_INSN_STXB, SH64_MEDIA_SFMT_STXB },
c7e628df
DB
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 },
cbb38b47
BE
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 },
c7e628df
DB
251 { SH_INSN_SYNCI, SH64_MEDIA_INSN_SYNCI, SH64_MEDIA_SFMT_NOP },
252 { SH_INSN_SYNCO, SH64_MEDIA_INSN_SYNCO, SH64_MEDIA_SFMT_NOP },
cbb38b47
BE
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 },
256};
257
2310652a
DE
258static const struct insn_sem sh64_media_insn_sem_invalid =
259{
cbb38b47
BE
260 VIRTUAL_INSN_X_INVALID, SH64_MEDIA_INSN_X_INVALID, SH64_MEDIA_SFMT_EMPTY
261};
262
263/* Initialize an IDESC from the compile-time computable parts. */
264
265static INLINE void
266init_idesc (SIM_CPU *cpu, IDESC *id, const struct insn_sem *t)
267{
268 const CGEN_INSN *insn_table = CGEN_CPU_INSN_TABLE (CPU_CPU_DESC (cpu))->init_entries;
269
270 id->num = t->index;
271 id->sfmt = t->sfmt;
272 if ((int) t->type <= 0)
273 id->idata = & cgen_virtual_insn_table[- (int) t->type];
274 else
275 id->idata = & insn_table[t->type];
276 id->attrs = CGEN_INSN_ATTRS (id->idata);
277 /* Oh my god, a magic number. */
278 id->length = CGEN_INSN_BITSIZE (id->idata) / 8;
279
280#if WITH_PROFILE_MODEL_P
281 id->timing = & MODEL_TIMING (CPU_MODEL (cpu)) [t->index];
282 {
283 SIM_DESC sd = CPU_STATE (cpu);
284 SIM_ASSERT (t->index == id->timing->num);
285 }
286#endif
287
288 /* Semantic pointers are initialized elsewhere. */
289}
290
291/* Initialize the instruction descriptor table. */
292
293void
294sh64_media_init_idesc_table (SIM_CPU *cpu)
295{
296 IDESC *id,*tabend;
297 const struct insn_sem *t,*tend;
c7e628df 298 int tabsize = SH64_MEDIA_INSN__MAX;
cbb38b47
BE
299 IDESC *table = sh64_media_insn_data;
300
301 memset (table, 0, tabsize * sizeof (IDESC));
302
303 /* First set all entries to the `invalid insn'. */
304 t = & sh64_media_insn_sem_invalid;
305 for (id = table, tabend = table + tabsize; id < tabend; ++id)
306 init_idesc (cpu, id, t);
307
308 /* Now fill in the values for the chosen cpu. */
309 for (t = sh64_media_insn_sem, tend = t + sizeof (sh64_media_insn_sem) / sizeof (*t);
310 t != tend; ++t)
311 {
312 init_idesc (cpu, & table[t->index], t);
313 }
314
315 /* Link the IDESC table into the cpu. */
316 CPU_IDESC (cpu) = table;
317}
318
319/* Given an instruction, return a pointer to its IDESC entry. */
320
321const IDESC *
322sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
197fa1aa 323 CGEN_INSN_WORD base_insn, CGEN_INSN_WORD entire_insn,
cbb38b47
BE
324 ARGBUF *abuf)
325{
326 /* Result of decoder. */
327 SH64_MEDIA_INSN_TYPE itype;
328
329 {
197fa1aa 330 CGEN_INSN_WORD insn = base_insn;
cbb38b47
BE
331
332 {
333 unsigned int val = (((insn >> 22) & (63 << 4)) | ((insn >> 16) & (15 << 0)));
334 switch (val)
335 {
c7e628df
DB
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)
fda1c30b 606 { itype = SH64_MEDIA_INSN_MPERMW; goto extract_sfmt_add; }
c7e628df
DB
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)
c5351010 710 { itype = SH64_MEDIA_INSN_FSUBD; goto extract_sfmt_fsubd; }
c7e628df
DB
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)
c5351010 762 { itype = SH64_MEDIA_INSN_FTRCDQ; goto extract_sfmt_ftrcdq; }
c7e628df
DB
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)
c5351010 846 { itype = SH64_MEDIA_INSN_MMACNFX_WL; goto extract_sfmt_mmacnfx_wl; }
c7e628df
DB
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 */
cbb38b47
BE
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 */
c7e628df
DB
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 */
cbb38b47
BE
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 */
c7e628df
DB
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 */
cbb38b47
BE
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 */
c7e628df
DB
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 */
cbb38b47
BE
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 */
c7e628df
DB
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 */
cbb38b47
BE
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 */
c7e628df
DB
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 */
cbb38b47
BE
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 */
c7e628df
DB
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 */
cbb38b47
BE
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 */
c7e628df
DB
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 */
cbb38b47
BE
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 */
c7e628df
DB
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 */
cbb38b47
BE
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 */
c7e628df
DB
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 */
cbb38b47
BE
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 */
c7e628df
DB
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 */
cbb38b47
BE
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 */
c7e628df
DB
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 */
cbb38b47
BE
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 */
c7e628df
DB
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 */
cbb38b47
BE
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 */
c7e628df
DB
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 */
cbb38b47
BE
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 */
c7e628df
DB
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 */
cbb38b47
BE
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 */
c7e628df
DB
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 */
cbb38b47
BE
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 */
c7e628df
DB
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)
fda1c30b 1298 { itype = SH64_MEDIA_INSN_SHLLIL; goto extract_sfmt_shari; }
c7e628df
DB
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)
fda1c30b 1306 { itype = SH64_MEDIA_INSN_SHLRIL; goto extract_sfmt_shari; }
c7e628df
DB
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)
fda1c30b 1314 { itype = SH64_MEDIA_INSN_SHARIL; goto extract_sfmt_shari; }
c7e628df
DB
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 */
cbb38b47
BE
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 */
c7e628df
DB
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 */
cbb38b47
BE
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 */
c7e628df
DB
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 */
cbb38b47
BE
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 */
c7e628df
DB
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 */
cbb38b47
BE
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 */
c7e628df
DB
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 */
cbb38b47
BE
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 */
c7e628df
DB
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 */
cbb38b47
BE
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 */
c7e628df
DB
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)
c5351010 1440 { itype = SH64_MEDIA_INSN_PREFI; goto extract_sfmt_prefi; }
c7e628df
DB
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)
c5351010 1488 { itype = SH64_MEDIA_INSN_BNEI; goto extract_sfmt_bnei; }
c7e628df
DB
1489 itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
1490 case 928 : /* fall through */
cbb38b47
BE
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 */
c7e628df
DB
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 */
cbb38b47
BE
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 */
c7e628df
DB
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;
cbb38b47
BE
1529 }
1530 }
1531 }
1532
1533 /* The instruction has been decoded, now extract the fields. */
1534
1535 extract_sfmt_empty:
1536 {
1537 const IDESC *idesc = &sh64_media_insn_data[itype];
2310652a 1538#define FLD(f) abuf->fields.sfmt_empty.f
cbb38b47
BE
1539
1540
1541 /* Record the fields for the semantic handler. */
1542 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_empty", (char *) 0));
1543
1544#undef FLD
1545 return idesc;
1546 }
1547
1548 extract_sfmt_add:
1549 {
1550 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 1551 CGEN_INSN_WORD insn = entire_insn;
cbb38b47
BE
1552#define FLD(f) abuf->fields.sfmt_add.f
1553 UINT f_left;
1554 UINT f_right;
1555 UINT f_dest;
1556
c7e628df
DB
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);
cbb38b47
BE
1560
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 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));
1566
c7e628df
DB
1567#if WITH_PROFILE_MODEL_P
1568 /* Record the fields for profiling. */
1569 if (PROFILE_MODEL_P (current_cpu))
1570 {
1571 FLD (in_rm) = f_left;
1572 FLD (in_rn) = f_right;
1573 FLD (out_rd) = f_dest;
1574 }
1575#endif
cbb38b47
BE
1576#undef FLD
1577 return idesc;
1578 }
1579
1580 extract_sfmt_addi:
1581 {
1582 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 1583 CGEN_INSN_WORD insn = entire_insn;
cbb38b47
BE
1584#define FLD(f) abuf->fields.sfmt_addi.f
1585 UINT f_left;
1586 INT f_disp10;
1587 UINT f_dest;
1588
c7e628df 1589 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
62836bf4 1590 f_disp10 = EXTRACT_MSB0_SINT (insn, 32, 12, 10);
c7e628df 1591 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
cbb38b47
BE
1592
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 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));
1598
c7e628df
DB
1599#if WITH_PROFILE_MODEL_P
1600 /* Record the fields for profiling. */
1601 if (PROFILE_MODEL_P (current_cpu))
1602 {
1603 FLD (in_rm) = f_left;
1604 FLD (out_rd) = f_dest;
1605 }
1606#endif
cbb38b47
BE
1607#undef FLD
1608 return idesc;
1609 }
1610
1611 extract_sfmt_alloco:
1612 {
1613 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 1614 CGEN_INSN_WORD insn = entire_insn;
c7e628df
DB
1615#define FLD(f) abuf->fields.sfmt_xori.f
1616 UINT f_left;
cbb38b47 1617
c7e628df 1618 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
cbb38b47
BE
1619
1620 /* Record the fields for the semantic handler. */
c7e628df
DB
1621 FLD (f_left) = f_left;
1622 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_alloco", "f_left 0x%x", 'x', f_left, (char *) 0));
cbb38b47 1623
c7e628df
DB
1624#if WITH_PROFILE_MODEL_P
1625 /* Record the fields for profiling. */
1626 if (PROFILE_MODEL_P (current_cpu))
1627 {
1628 FLD (in_rm) = f_left;
1629 FLD (out_rm) = f_left;
1630 }
1631#endif
cbb38b47
BE
1632#undef FLD
1633 return idesc;
1634 }
1635
1636 extract_sfmt_beq:
1637 {
1638 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 1639 CGEN_INSN_WORD insn = entire_insn;
cbb38b47
BE
1640#define FLD(f) abuf->fields.sfmt_beq.f
1641 UINT f_left;
1642 UINT f_right;
1643 UINT f_tra;
1644
c7e628df
DB
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);
cbb38b47
BE
1648
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 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));
1654
c7e628df
DB
1655#if WITH_PROFILE_MODEL_P
1656 /* Record the fields for profiling. */
1657 if (PROFILE_MODEL_P (current_cpu))
1658 {
1659 FLD (in_rm) = f_left;
1660 FLD (in_rn) = f_right;
1661 FLD (in_tra) = f_tra;
1662 }
1663#endif
cbb38b47
BE
1664#undef FLD
1665 return idesc;
1666 }
1667
1668 extract_sfmt_beqi:
1669 {
1670 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 1671 CGEN_INSN_WORD insn = entire_insn;
cbb38b47
BE
1672#define FLD(f) abuf->fields.sfmt_beqi.f
1673 UINT f_left;
1674 INT f_imm6;
1675 UINT f_tra;
1676
c7e628df 1677 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
62836bf4 1678 f_imm6 = EXTRACT_MSB0_SINT (insn, 32, 16, 6);
c7e628df 1679 f_tra = EXTRACT_MSB0_UINT (insn, 32, 25, 3);
cbb38b47
BE
1680
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 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));
1686
c7e628df
DB
1687#if WITH_PROFILE_MODEL_P
1688 /* Record the fields for profiling. */
1689 if (PROFILE_MODEL_P (current_cpu))
1690 {
1691 FLD (in_rm) = f_left;
1692 FLD (in_tra) = f_tra;
1693 }
1694#endif
cbb38b47
BE
1695#undef FLD
1696 return idesc;
1697 }
1698
1699 extract_sfmt_blink:
1700 {
1701 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 1702 CGEN_INSN_WORD insn = entire_insn;
cbb38b47
BE
1703#define FLD(f) abuf->fields.sfmt_blink.f
1704 UINT f_trb;
1705 UINT f_dest;
1706
c7e628df
DB
1707 f_trb = EXTRACT_MSB0_UINT (insn, 32, 9, 3);
1708 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
cbb38b47
BE
1709
1710 /* Record the fields for the semantic handler. */
cbb38b47 1711 FLD (f_dest) = f_dest;
c7e628df
DB
1712 FLD (f_trb) = f_trb;
1713 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));
cbb38b47 1714
c7e628df
DB
1715#if WITH_PROFILE_MODEL_P
1716 /* Record the fields for profiling. */
1717 if (PROFILE_MODEL_P (current_cpu))
1718 {
1719 FLD (in_trb) = f_trb;
1720 FLD (out_rd) = f_dest;
1721 }
1722#endif
c5351010
DE
1723#undef FLD
1724 return idesc;
1725 }
1726
1727 extract_sfmt_bnei:
1728 {
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;
1735
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);
1739
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 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));
1745
1746#if WITH_PROFILE_MODEL_P
1747 /* Record the fields for profiling. */
1748 if (PROFILE_MODEL_P (current_cpu))
1749 {
1750 FLD (in_rm) = f_left;
1751 FLD (in_tra) = f_tra;
1752 }
1753#endif
cbb38b47
BE
1754#undef FLD
1755 return idesc;
1756 }
1757
1758 extract_sfmt_brk:
1759 {
1760 const IDESC *idesc = &sh64_media_insn_data[itype];
2310652a 1761#define FLD(f) abuf->fields.sfmt_empty.f
cbb38b47
BE
1762
1763
1764 /* Record the fields for the semantic handler. */
1765 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_brk", (char *) 0));
1766
c7e628df
DB
1767#if WITH_PROFILE_MODEL_P
1768 /* Record the fields for profiling. */
1769 if (PROFILE_MODEL_P (current_cpu))
1770 {
1771 }
1772#endif
cbb38b47
BE
1773#undef FLD
1774 return idesc;
1775 }
1776
1777 extract_sfmt_byterev:
1778 {
1779 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 1780 CGEN_INSN_WORD insn = entire_insn;
cbb38b47
BE
1781#define FLD(f) abuf->fields.sfmt_xori.f
1782 UINT f_left;
1783 UINT f_dest;
1784
c7e628df
DB
1785 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
1786 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
cbb38b47
BE
1787
1788 /* Record the fields for the semantic handler. */
1789 FLD (f_left) = f_left;
1790 FLD (f_dest) = f_dest;
1791 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));
1792
c7e628df
DB
1793#if WITH_PROFILE_MODEL_P
1794 /* Record the fields for profiling. */
1795 if (PROFILE_MODEL_P (current_cpu))
1796 {
1797 FLD (in_rm) = f_left;
1798 FLD (out_rd) = f_dest;
1799 }
1800#endif
cbb38b47
BE
1801#undef FLD
1802 return idesc;
1803 }
1804
1805 extract_sfmt_cmveq:
1806 {
1807 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 1808 CGEN_INSN_WORD insn = entire_insn;
cbb38b47
BE
1809#define FLD(f) abuf->fields.sfmt_add.f
1810 UINT f_left;
1811 UINT f_right;
1812 UINT f_dest;
1813
c7e628df
DB
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);
cbb38b47
BE
1817
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 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));
1823
c7e628df
DB
1824#if WITH_PROFILE_MODEL_P
1825 /* Record the fields for profiling. */
1826 if (PROFILE_MODEL_P (current_cpu))
1827 {
1828 FLD (in_rm) = f_left;
1829 FLD (in_rn) = f_right;
1830 FLD (out_rd) = f_dest;
1831 }
1832#endif
cbb38b47
BE
1833#undef FLD
1834 return idesc;
1835 }
1836
1837 extract_sfmt_fabsd:
1838 {
1839 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 1840 CGEN_INSN_WORD insn = entire_insn;
cbb38b47
BE
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;
1846
c7e628df
DB
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);
cbb38b47
BE
1850 f_left_right = f_left;
1851
1852 /* Record the fields for the semantic handler. */
1853 FLD (f_left_right) = f_left_right;
1854 FLD (f_dest) = f_dest;
1855 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));
1856
c7e628df
DB
1857#if WITH_PROFILE_MODEL_P
1858 /* Record the fields for profiling. */
1859 if (PROFILE_MODEL_P (current_cpu))
1860 {
1861 FLD (in_drgh) = f_left_right;
1862 FLD (out_drf) = f_dest;
1863 }
1864#endif
cbb38b47
BE
1865#undef FLD
1866 return idesc;
1867 }
1868
1869 extract_sfmt_fabss:
1870 {
1871 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 1872 CGEN_INSN_WORD insn = entire_insn;
cbb38b47
BE
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;
1878
c7e628df
DB
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);
cbb38b47
BE
1882 f_left_right = f_left;
1883
1884 /* Record the fields for the semantic handler. */
1885 FLD (f_left_right) = f_left_right;
1886 FLD (f_dest) = f_dest;
1887 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));
1888
c7e628df
DB
1889#if WITH_PROFILE_MODEL_P
1890 /* Record the fields for profiling. */
1891 if (PROFILE_MODEL_P (current_cpu))
1892 {
1893 FLD (in_frgh) = f_left_right;
1894 FLD (out_frf) = f_dest;
1895 }
1896#endif
cbb38b47
BE
1897#undef FLD
1898 return idesc;
1899 }
1900
1901 extract_sfmt_faddd:
1902 {
1903 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 1904 CGEN_INSN_WORD insn = entire_insn;
cbb38b47
BE
1905#define FLD(f) abuf->fields.sfmt_add.f
1906 UINT f_left;
1907 UINT f_right;
1908 UINT f_dest;
1909
c7e628df
DB
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);
cbb38b47
BE
1913
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 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));
1919
c7e628df
DB
1920#if WITH_PROFILE_MODEL_P
1921 /* Record the fields for profiling. */
1922 if (PROFILE_MODEL_P (current_cpu))
1923 {
1924 FLD (in_drg) = f_left;
1925 FLD (in_drh) = f_right;
1926 FLD (out_drf) = f_dest;
1927 }
1928#endif
cbb38b47
BE
1929#undef FLD
1930 return idesc;
1931 }
1932
1933 extract_sfmt_fadds:
1934 {
1935 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 1936 CGEN_INSN_WORD insn = entire_insn;
cbb38b47
BE
1937#define FLD(f) abuf->fields.sfmt_add.f
1938 UINT f_left;
1939 UINT f_right;
1940 UINT f_dest;
1941
c7e628df
DB
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);
cbb38b47
BE
1945
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 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));
1951
c7e628df
DB
1952#if WITH_PROFILE_MODEL_P
1953 /* Record the fields for profiling. */
1954 if (PROFILE_MODEL_P (current_cpu))
1955 {
1956 FLD (in_frg) = f_left;
1957 FLD (in_frh) = f_right;
1958 FLD (out_frf) = f_dest;
1959 }
1960#endif
cbb38b47
BE
1961#undef FLD
1962 return idesc;
1963 }
1964
1965 extract_sfmt_fcmpeqd:
1966 {
1967 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 1968 CGEN_INSN_WORD insn = entire_insn;
cbb38b47
BE
1969#define FLD(f) abuf->fields.sfmt_add.f
1970 UINT f_left;
1971 UINT f_right;
1972 UINT f_dest;
1973
c7e628df
DB
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);
cbb38b47
BE
1977
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 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));
1983
c7e628df
DB
1984#if WITH_PROFILE_MODEL_P
1985 /* Record the fields for profiling. */
1986 if (PROFILE_MODEL_P (current_cpu))
1987 {
1988 FLD (in_drg) = f_left;
1989 FLD (in_drh) = f_right;
1990 FLD (out_rd) = f_dest;
1991 }
1992#endif
cbb38b47
BE
1993#undef FLD
1994 return idesc;
1995 }
1996
1997 extract_sfmt_fcmpeqs:
1998 {
1999 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 2000 CGEN_INSN_WORD insn = entire_insn;
cbb38b47
BE
2001#define FLD(f) abuf->fields.sfmt_add.f
2002 UINT f_left;
2003 UINT f_right;
2004 UINT f_dest;
2005
c7e628df
DB
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);
cbb38b47
BE
2009
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 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));
2015
c7e628df
DB
2016#if WITH_PROFILE_MODEL_P
2017 /* Record the fields for profiling. */
2018 if (PROFILE_MODEL_P (current_cpu))
2019 {
2020 FLD (in_frg) = f_left;
2021 FLD (in_frh) = f_right;
2022 FLD (out_rd) = f_dest;
2023 }
2024#endif
cbb38b47
BE
2025#undef FLD
2026 return idesc;
2027 }
2028
2029 extract_sfmt_fcnvds:
2030 {
2031 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 2032 CGEN_INSN_WORD insn = entire_insn;
cbb38b47
BE
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;
2038
c7e628df
DB
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);
cbb38b47
BE
2042 f_left_right = f_left;
2043
2044 /* Record the fields for the semantic handler. */
2045 FLD (f_left_right) = f_left_right;
2046 FLD (f_dest) = f_dest;
2047 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));
2048
c7e628df
DB
2049#if WITH_PROFILE_MODEL_P
2050 /* Record the fields for profiling. */
2051 if (PROFILE_MODEL_P (current_cpu))
2052 {
2053 FLD (in_drgh) = f_left_right;
2054 FLD (out_frf) = f_dest;
2055 }
2056#endif
cbb38b47
BE
2057#undef FLD
2058 return idesc;
2059 }
2060
2061 extract_sfmt_fcnvsd:
2062 {
2063 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 2064 CGEN_INSN_WORD insn = entire_insn;
cbb38b47
BE
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;
2070
c7e628df
DB
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);
cbb38b47
BE
2074 f_left_right = f_left;
2075
2076 /* Record the fields for the semantic handler. */
2077 FLD (f_left_right) = f_left_right;
2078 FLD (f_dest) = f_dest;
2079 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));
2080
c7e628df
DB
2081#if WITH_PROFILE_MODEL_P
2082 /* Record the fields for profiling. */
2083 if (PROFILE_MODEL_P (current_cpu))
2084 {
2085 FLD (in_frgh) = f_left_right;
2086 FLD (out_drf) = f_dest;
2087 }
2088#endif
2089#undef FLD
2090 return idesc;
2091 }
2092
2093 extract_sfmt_fgetscr:
2094 {
2095 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 2096 CGEN_INSN_WORD insn = entire_insn;
c7e628df
DB
2097#define FLD(f) abuf->fields.sfmt_shori.f
2098 UINT f_dest;
2099
2100 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
2101
2102 /* Record the fields for the semantic handler. */
2103 FLD (f_dest) = f_dest;
2104 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fgetscr", "f_dest 0x%x", 'x', f_dest, (char *) 0));
2105
2106#if WITH_PROFILE_MODEL_P
2107 /* Record the fields for profiling. */
2108 if (PROFILE_MODEL_P (current_cpu))
2109 {
2110 FLD (out_frf) = f_dest;
2111 }
2112#endif
cbb38b47
BE
2113#undef FLD
2114 return idesc;
2115 }
2116
2117 extract_sfmt_fiprs:
2118 {
2119 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 2120 CGEN_INSN_WORD insn = entire_insn;
cbb38b47
BE
2121#define FLD(f) abuf->fields.sfmt_add.f
2122 UINT f_left;
2123 UINT f_right;
2124 UINT f_dest;
2125
c7e628df
DB
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);
cbb38b47
BE
2129
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 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));
2135
c7e628df
DB
2136#if WITH_PROFILE_MODEL_P
2137 /* Record the fields for profiling. */
2138 if (PROFILE_MODEL_P (current_cpu))
2139 {
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;
2145 }
2146#endif
cbb38b47
BE
2147#undef FLD
2148 return idesc;
2149 }
2150
2151 extract_sfmt_fldd:
2152 {
2153 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 2154 CGEN_INSN_WORD insn = entire_insn;
cbb38b47
BE
2155#define FLD(f) abuf->fields.sfmt_fldd.f
2156 UINT f_left;
2157 SI f_disp10x8;
2158 UINT f_dest;
2159
c7e628df 2160 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
62836bf4 2161 f_disp10x8 = ((EXTRACT_MSB0_SINT (insn, 32, 12, 10)) << (3));
c7e628df 2162 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
cbb38b47
BE
2163
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 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));
2169
c7e628df
DB
2170#if WITH_PROFILE_MODEL_P
2171 /* Record the fields for profiling. */
2172 if (PROFILE_MODEL_P (current_cpu))
2173 {
2174 FLD (in_rm) = f_left;
2175 FLD (out_drf) = f_dest;
2176 }
2177#endif
cbb38b47
BE
2178#undef FLD
2179 return idesc;
2180 }
2181
2182 extract_sfmt_fldp:
2183 {
2184 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 2185 CGEN_INSN_WORD insn = entire_insn;
cbb38b47
BE
2186#define FLD(f) abuf->fields.sfmt_fldd.f
2187 UINT f_left;
2188 SI f_disp10x8;
2189 UINT f_dest;
2190
c7e628df 2191 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
62836bf4 2192 f_disp10x8 = ((EXTRACT_MSB0_SINT (insn, 32, 12, 10)) << (3));
c7e628df 2193 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
cbb38b47
BE
2194
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 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));
2200
c7e628df
DB
2201#if WITH_PROFILE_MODEL_P
2202 /* Record the fields for profiling. */
2203 if (PROFILE_MODEL_P (current_cpu))
2204 {
2205 FLD (in_fpf) = f_dest;
2206 FLD (in_rm) = f_left;
2207 FLD (out_fpf) = f_dest;
2208 }
2209#endif
cbb38b47
BE
2210#undef FLD
2211 return idesc;
2212 }
2213
2214 extract_sfmt_flds:
2215 {
2216 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 2217 CGEN_INSN_WORD insn = entire_insn;
cbb38b47
BE
2218#define FLD(f) abuf->fields.sfmt_flds.f
2219 UINT f_left;
2220 SI f_disp10x4;
2221 UINT f_dest;
2222
c7e628df 2223 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
62836bf4 2224 f_disp10x4 = ((EXTRACT_MSB0_SINT (insn, 32, 12, 10)) << (2));
c7e628df 2225 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
cbb38b47
BE
2226
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 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));
2232
c7e628df
DB
2233#if WITH_PROFILE_MODEL_P
2234 /* Record the fields for profiling. */
2235 if (PROFILE_MODEL_P (current_cpu))
2236 {
2237 FLD (in_rm) = f_left;
2238 FLD (out_frf) = f_dest;
2239 }
2240#endif
cbb38b47
BE
2241#undef FLD
2242 return idesc;
2243 }
2244
2245 extract_sfmt_fldxd:
2246 {
2247 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 2248 CGEN_INSN_WORD insn = entire_insn;
cbb38b47
BE
2249#define FLD(f) abuf->fields.sfmt_add.f
2250 UINT f_left;
2251 UINT f_right;
2252 UINT f_dest;
2253
c7e628df
DB
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);
cbb38b47
BE
2257
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 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));
2263
c7e628df
DB
2264#if WITH_PROFILE_MODEL_P
2265 /* Record the fields for profiling. */
2266 if (PROFILE_MODEL_P (current_cpu))
2267 {
2268 FLD (in_rm) = f_left;
2269 FLD (in_rn) = f_right;
2270 FLD (out_drf) = f_dest;
2271 }
2272#endif
cbb38b47
BE
2273#undef FLD
2274 return idesc;
2275 }
2276
2277 extract_sfmt_fldxp:
2278 {
2279 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 2280 CGEN_INSN_WORD insn = entire_insn;
cbb38b47
BE
2281#define FLD(f) abuf->fields.sfmt_add.f
2282 UINT f_left;
2283 UINT f_right;
2284 UINT f_dest;
2285
c7e628df
DB
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);
cbb38b47
BE
2289
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 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));
2295
c7e628df
DB
2296#if WITH_PROFILE_MODEL_P
2297 /* Record the fields for profiling. */
2298 if (PROFILE_MODEL_P (current_cpu))
2299 {
2300 FLD (in_fpf) = f_dest;
2301 FLD (in_rm) = f_left;
2302 FLD (in_rn) = f_right;
2303 FLD (out_fpf) = f_dest;
2304 }
2305#endif
cbb38b47
BE
2306#undef FLD
2307 return idesc;
2308 }
2309
2310 extract_sfmt_fldxs:
2311 {
2312 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 2313 CGEN_INSN_WORD insn = entire_insn;
cbb38b47
BE
2314#define FLD(f) abuf->fields.sfmt_add.f
2315 UINT f_left;
2316 UINT f_right;
2317 UINT f_dest;
2318
c7e628df
DB
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);
cbb38b47
BE
2322
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 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));
2328
c7e628df
DB
2329#if WITH_PROFILE_MODEL_P
2330 /* Record the fields for profiling. */
2331 if (PROFILE_MODEL_P (current_cpu))
2332 {
2333 FLD (in_rm) = f_left;
2334 FLD (in_rn) = f_right;
2335 FLD (out_frf) = f_dest;
2336 }
2337#endif
cbb38b47
BE
2338#undef FLD
2339 return idesc;
2340 }
2341
2342 extract_sfmt_fmacs:
2343 {
2344 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 2345 CGEN_INSN_WORD insn = entire_insn;
cbb38b47
BE
2346#define FLD(f) abuf->fields.sfmt_add.f
2347 UINT f_left;
2348 UINT f_right;
2349 UINT f_dest;
2350
c7e628df
DB
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);
cbb38b47
BE
2354
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 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));
2360
c7e628df
DB
2361#if WITH_PROFILE_MODEL_P
2362 /* Record the fields for profiling. */
2363 if (PROFILE_MODEL_P (current_cpu))
2364 {
2365 FLD (in_frf) = f_dest;
2366 FLD (in_frg) = f_left;
2367 FLD (in_frh) = f_right;
2368 FLD (out_frf) = f_dest;
2369 }
2370#endif
cbb38b47
BE
2371#undef FLD
2372 return idesc;
2373 }
2374
2375 extract_sfmt_fmovdq:
2376 {
2377 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 2378 CGEN_INSN_WORD insn = entire_insn;
cbb38b47
BE
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;
2384
c7e628df
DB
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);
cbb38b47
BE
2388 f_left_right = f_left;
2389
2390 /* Record the fields for the semantic handler. */
2391 FLD (f_left_right) = f_left_right;
2392 FLD (f_dest) = f_dest;
2393 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));
2394
c7e628df
DB
2395#if WITH_PROFILE_MODEL_P
2396 /* Record the fields for profiling. */
2397 if (PROFILE_MODEL_P (current_cpu))
2398 {
2399 FLD (in_drgh) = f_left_right;
2400 FLD (out_rd) = f_dest;
2401 }
2402#endif
cbb38b47
BE
2403#undef FLD
2404 return idesc;
2405 }
2406
2407 extract_sfmt_fmovls:
2408 {
2409 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 2410 CGEN_INSN_WORD insn = entire_insn;
cbb38b47
BE
2411#define FLD(f) abuf->fields.sfmt_xori.f
2412 UINT f_left;
2413 UINT f_dest;
2414
c7e628df
DB
2415 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2416 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
cbb38b47
BE
2417
2418 /* Record the fields for the semantic handler. */
2419 FLD (f_left) = f_left;
2420 FLD (f_dest) = f_dest;
2421 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));
2422
c7e628df
DB
2423#if WITH_PROFILE_MODEL_P
2424 /* Record the fields for profiling. */
2425 if (PROFILE_MODEL_P (current_cpu))
2426 {
2427 FLD (in_rm) = f_left;
2428 FLD (out_frf) = f_dest;
2429 }
2430#endif
cbb38b47
BE
2431#undef FLD
2432 return idesc;
2433 }
2434
2435 extract_sfmt_fmovqd:
2436 {
2437 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 2438 CGEN_INSN_WORD insn = entire_insn;
cbb38b47
BE
2439#define FLD(f) abuf->fields.sfmt_xori.f
2440 UINT f_left;
2441 UINT f_dest;
2442
c7e628df
DB
2443 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2444 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
cbb38b47
BE
2445
2446 /* Record the fields for the semantic handler. */
2447 FLD (f_left) = f_left;
2448 FLD (f_dest) = f_dest;
2449 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));
2450
c7e628df
DB
2451#if WITH_PROFILE_MODEL_P
2452 /* Record the fields for profiling. */
2453 if (PROFILE_MODEL_P (current_cpu))
2454 {
2455 FLD (in_rm) = f_left;
2456 FLD (out_drf) = f_dest;
2457 }
2458#endif
cbb38b47
BE
2459#undef FLD
2460 return idesc;
2461 }
2462
2463 extract_sfmt_fmovsl:
2464 {
2465 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 2466 CGEN_INSN_WORD insn = entire_insn;
cbb38b47
BE
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;
2472
c7e628df
DB
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);
cbb38b47
BE
2476 f_left_right = f_left;
2477
2478 /* Record the fields for the semantic handler. */
2479 FLD (f_left_right) = f_left_right;
2480 FLD (f_dest) = f_dest;
2481 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));
2482
c7e628df
DB
2483#if WITH_PROFILE_MODEL_P
2484 /* Record the fields for profiling. */
2485 if (PROFILE_MODEL_P (current_cpu))
2486 {
2487 FLD (in_frgh) = f_left_right;
2488 FLD (out_rd) = f_dest;
2489 }
2490#endif
cbb38b47
BE
2491#undef FLD
2492 return idesc;
2493 }
2494
c7e628df 2495 extract_sfmt_fputscr:
cbb38b47
BE
2496 {
2497 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 2498 CGEN_INSN_WORD insn = entire_insn;
c7e628df 2499#define FLD(f) abuf->fields.sfmt_fabsd.f
cbb38b47 2500 UINT f_left;
c7e628df
DB
2501 UINT f_right;
2502 UINT f_left_right;
cbb38b47 2503
c7e628df
DB
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;
cbb38b47
BE
2507
2508 /* Record the fields for the semantic handler. */
c7e628df
DB
2509 FLD (f_left_right) = f_left_right;
2510 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fputscr", "f_left_right 0x%x", 'x', f_left_right, (char *) 0));
cbb38b47 2511
c7e628df
DB
2512#if WITH_PROFILE_MODEL_P
2513 /* Record the fields for profiling. */
2514 if (PROFILE_MODEL_P (current_cpu))
2515 {
2516 FLD (in_frgh) = f_left_right;
2517 }
2518#endif
cbb38b47
BE
2519#undef FLD
2520 return idesc;
2521 }
2522
c7e628df 2523 extract_sfmt_fstd:
cbb38b47
BE
2524 {
2525 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 2526 CGEN_INSN_WORD insn = entire_insn;
cbb38b47
BE
2527#define FLD(f) abuf->fields.sfmt_fldd.f
2528 UINT f_left;
2529 SI f_disp10x8;
2530 UINT f_dest;
2531
c7e628df 2532 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
62836bf4 2533 f_disp10x8 = ((EXTRACT_MSB0_SINT (insn, 32, 12, 10)) << (3));
c7e628df 2534 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
cbb38b47
BE
2535
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;
c7e628df 2540 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));
cbb38b47 2541
c7e628df
DB
2542#if WITH_PROFILE_MODEL_P
2543 /* Record the fields for profiling. */
2544 if (PROFILE_MODEL_P (current_cpu))
2545 {
2546 FLD (in_drf) = f_dest;
2547 FLD (in_rm) = f_left;
2548 }
2549#endif
cbb38b47
BE
2550#undef FLD
2551 return idesc;
2552 }
2553
2554 extract_sfmt_fsts:
2555 {
2556 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 2557 CGEN_INSN_WORD insn = entire_insn;
cbb38b47
BE
2558#define FLD(f) abuf->fields.sfmt_flds.f
2559 UINT f_left;
2560 SI f_disp10x4;
2561 UINT f_dest;
2562
c7e628df 2563 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
62836bf4 2564 f_disp10x4 = ((EXTRACT_MSB0_SINT (insn, 32, 12, 10)) << (2));
c7e628df 2565 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
cbb38b47
BE
2566
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 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));
2572
c7e628df
DB
2573#if WITH_PROFILE_MODEL_P
2574 /* Record the fields for profiling. */
2575 if (PROFILE_MODEL_P (current_cpu))
2576 {
2577 FLD (in_frf) = f_dest;
2578 FLD (in_rm) = f_left;
2579 }
2580#endif
cbb38b47
BE
2581#undef FLD
2582 return idesc;
2583 }
2584
2585 extract_sfmt_fstxd:
2586 {
2587 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 2588 CGEN_INSN_WORD insn = entire_insn;
cbb38b47
BE
2589#define FLD(f) abuf->fields.sfmt_add.f
2590 UINT f_left;
2591 UINT f_right;
2592 UINT f_dest;
2593
c7e628df
DB
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);
cbb38b47
BE
2597
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 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));
2603
c7e628df
DB
2604#if WITH_PROFILE_MODEL_P
2605 /* Record the fields for profiling. */
2606 if (PROFILE_MODEL_P (current_cpu))
2607 {
2608 FLD (in_drf) = f_dest;
2609 FLD (in_rm) = f_left;
2610 FLD (in_rn) = f_right;
2611 }
2612#endif
cbb38b47
BE
2613#undef FLD
2614 return idesc;
2615 }
2616
c7e628df 2617 extract_sfmt_fstxs:
cbb38b47
BE
2618 {
2619 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 2620 CGEN_INSN_WORD insn = entire_insn;
cbb38b47
BE
2621#define FLD(f) abuf->fields.sfmt_add.f
2622 UINT f_left;
2623 UINT f_right;
2624 UINT f_dest;
2625
c7e628df
DB
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);
cbb38b47
BE
2629
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;
c7e628df 2634 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));
cbb38b47 2635
c7e628df
DB
2636#if WITH_PROFILE_MODEL_P
2637 /* Record the fields for profiling. */
2638 if (PROFILE_MODEL_P (current_cpu))
2639 {
2640 FLD (in_frf) = f_dest;
2641 FLD (in_rm) = f_left;
2642 FLD (in_rn) = f_right;
2643 }
2644#endif
c5351010
DE
2645#undef FLD
2646 return idesc;
2647 }
2648
2649 extract_sfmt_fsubd:
2650 {
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;
2657
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);
2661
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 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));
2667
2668#if WITH_PROFILE_MODEL_P
2669 /* Record the fields for profiling. */
2670 if (PROFILE_MODEL_P (current_cpu))
2671 {
2672 FLD (in_drg) = f_left;
2673 FLD (in_drh) = f_right;
2674 FLD (out_drf) = f_dest;
2675 }
2676#endif
2677#undef FLD
2678 return idesc;
2679 }
2680
2681 extract_sfmt_ftrcdq:
2682 {
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;
2690
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;
2695
2696 /* Record the fields for the semantic handler. */
2697 FLD (f_left_right) = f_left_right;
2698 FLD (f_dest) = f_dest;
2699 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));
2700
2701#if WITH_PROFILE_MODEL_P
2702 /* Record the fields for profiling. */
2703 if (PROFILE_MODEL_P (current_cpu))
2704 {
2705 FLD (in_drgh) = f_left_right;
2706 FLD (out_drf) = f_dest;
2707 }
2708#endif
cbb38b47
BE
2709#undef FLD
2710 return idesc;
2711 }
2712
c7e628df 2713 extract_sfmt_ftrvs:
cbb38b47
BE
2714 {
2715 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 2716 CGEN_INSN_WORD insn = entire_insn;
cbb38b47
BE
2717#define FLD(f) abuf->fields.sfmt_add.f
2718 UINT f_left;
2719 UINT f_right;
2720 UINT f_dest;
2721
c7e628df
DB
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);
cbb38b47
BE
2725
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;
c7e628df 2730 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));
cbb38b47 2731
c7e628df
DB
2732#if WITH_PROFILE_MODEL_P
2733 /* Record the fields for profiling. */
2734 if (PROFILE_MODEL_P (current_cpu))
2735 {
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;
2742 }
2743#endif
cbb38b47
BE
2744#undef FLD
2745 return idesc;
2746 }
2747
c7e628df 2748 extract_sfmt_getcfg:
cbb38b47
BE
2749 {
2750 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 2751 CGEN_INSN_WORD insn = entire_insn;
c7e628df 2752#define FLD(f) abuf->fields.sfmt_getcfg.f
cbb38b47 2753 UINT f_left;
c7e628df 2754 INT f_disp6;
cbb38b47
BE
2755 UINT f_dest;
2756
c7e628df 2757 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
62836bf4 2758 f_disp6 = EXTRACT_MSB0_SINT (insn, 32, 16, 6);
c7e628df 2759 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
cbb38b47
BE
2760
2761 /* Record the fields for the semantic handler. */
c7e628df 2762 FLD (f_disp6) = f_disp6;
cbb38b47 2763 FLD (f_left) = f_left;
c7e628df
DB
2764 FLD (f_dest) = f_dest;
2765 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));
cbb38b47 2766
c7e628df
DB
2767#if WITH_PROFILE_MODEL_P
2768 /* Record the fields for profiling. */
2769 if (PROFILE_MODEL_P (current_cpu))
2770 {
2771 FLD (in_rm) = f_left;
2772 FLD (out_rd) = f_dest;
2773 }
2774#endif
cbb38b47
BE
2775#undef FLD
2776 return idesc;
2777 }
2778
2779 extract_sfmt_getcon:
2780 {
2781 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 2782 CGEN_INSN_WORD insn = entire_insn;
cbb38b47
BE
2783#define FLD(f) abuf->fields.sfmt_xori.f
2784 UINT f_left;
2785 UINT f_dest;
2786
c7e628df
DB
2787 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
2788 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
cbb38b47
BE
2789
2790 /* Record the fields for the semantic handler. */
2791 FLD (f_left) = f_left;
2792 FLD (f_dest) = f_dest;
2793 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));
2794
c7e628df
DB
2795#if WITH_PROFILE_MODEL_P
2796 /* Record the fields for profiling. */
2797 if (PROFILE_MODEL_P (current_cpu))
2798 {
2799 FLD (out_rd) = f_dest;
2800 }
2801#endif
cbb38b47
BE
2802#undef FLD
2803 return idesc;
2804 }
2805
2806 extract_sfmt_gettr:
2807 {
2808 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 2809 CGEN_INSN_WORD insn = entire_insn;
cbb38b47
BE
2810#define FLD(f) abuf->fields.sfmt_blink.f
2811 UINT f_trb;
2812 UINT f_dest;
2813
c7e628df
DB
2814 f_trb = EXTRACT_MSB0_UINT (insn, 32, 9, 3);
2815 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
cbb38b47
BE
2816
2817 /* Record the fields for the semantic handler. */
2818 FLD (f_trb) = f_trb;
2819 FLD (f_dest) = f_dest;
2820 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));
2821
c7e628df
DB
2822#if WITH_PROFILE_MODEL_P
2823 /* Record the fields for profiling. */
2824 if (PROFILE_MODEL_P (current_cpu))
2825 {
2826 FLD (in_trb) = f_trb;
2827 FLD (out_rd) = f_dest;
2828 }
2829#endif
cbb38b47
BE
2830#undef FLD
2831 return idesc;
2832 }
2833
2834 extract_sfmt_ldb:
2835 {
2836 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 2837 CGEN_INSN_WORD insn = entire_insn;
cbb38b47
BE
2838#define FLD(f) abuf->fields.sfmt_addi.f
2839 UINT f_left;
2840 INT f_disp10;
2841 UINT f_dest;
2842
c7e628df 2843 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
62836bf4 2844 f_disp10 = EXTRACT_MSB0_SINT (insn, 32, 12, 10);
c7e628df 2845 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
cbb38b47
BE
2846
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 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));
2852
c7e628df
DB
2853#if WITH_PROFILE_MODEL_P
2854 /* Record the fields for profiling. */
2855 if (PROFILE_MODEL_P (current_cpu))
2856 {
2857 FLD (in_rm) = f_left;
2858 FLD (out_rd) = f_dest;
2859 }
2860#endif
cbb38b47
BE
2861#undef FLD
2862 return idesc;
2863 }
2864
2865 extract_sfmt_ldl:
2866 {
2867 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 2868 CGEN_INSN_WORD insn = entire_insn;
cbb38b47
BE
2869#define FLD(f) abuf->fields.sfmt_flds.f
2870 UINT f_left;
2871 SI f_disp10x4;
2872 UINT f_dest;
2873
c7e628df 2874 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
62836bf4 2875 f_disp10x4 = ((EXTRACT_MSB0_SINT (insn, 32, 12, 10)) << (2));
c7e628df 2876 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
cbb38b47
BE
2877
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 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));
2883
c7e628df
DB
2884#if WITH_PROFILE_MODEL_P
2885 /* Record the fields for profiling. */
2886 if (PROFILE_MODEL_P (current_cpu))
2887 {
2888 FLD (in_rm) = f_left;
2889 FLD (out_rd) = f_dest;
2890 }
2891#endif
cbb38b47
BE
2892#undef FLD
2893 return idesc;
2894 }
2895
2896 extract_sfmt_ldq:
2897 {
2898 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 2899 CGEN_INSN_WORD insn = entire_insn;
cbb38b47
BE
2900#define FLD(f) abuf->fields.sfmt_fldd.f
2901 UINT f_left;
2902 SI f_disp10x8;
2903 UINT f_dest;
2904
c7e628df 2905 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
62836bf4 2906 f_disp10x8 = ((EXTRACT_MSB0_SINT (insn, 32, 12, 10)) << (3));
c7e628df 2907 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
cbb38b47
BE
2908
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 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));
2914
c7e628df
DB
2915#if WITH_PROFILE_MODEL_P
2916 /* Record the fields for profiling. */
2917 if (PROFILE_MODEL_P (current_cpu))
2918 {
2919 FLD (in_rm) = f_left;
2920 FLD (out_rd) = f_dest;
2921 }
2922#endif
cbb38b47
BE
2923#undef FLD
2924 return idesc;
2925 }
2926
2927 extract_sfmt_lduw:
2928 {
2929 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 2930 CGEN_INSN_WORD insn = entire_insn;
cbb38b47
BE
2931#define FLD(f) abuf->fields.sfmt_lduw.f
2932 UINT f_left;
2933 SI f_disp10x2;
2934 UINT f_dest;
2935
c7e628df 2936 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
62836bf4 2937 f_disp10x2 = ((EXTRACT_MSB0_SINT (insn, 32, 12, 10)) << (1));
c7e628df 2938 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
cbb38b47
BE
2939
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 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));
2945
c7e628df
DB
2946#if WITH_PROFILE_MODEL_P
2947 /* Record the fields for profiling. */
2948 if (PROFILE_MODEL_P (current_cpu))
2949 {
2950 FLD (in_rm) = f_left;
2951 FLD (out_rd) = f_dest;
2952 }
2953#endif
cbb38b47
BE
2954#undef FLD
2955 return idesc;
2956 }
2957
c7e628df 2958 extract_sfmt_ldhil:
cbb38b47
BE
2959 {
2960 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 2961 CGEN_INSN_WORD insn = entire_insn;
c7e628df 2962#define FLD(f) abuf->fields.sfmt_getcfg.f
cbb38b47 2963 UINT f_left;
c7e628df 2964 INT f_disp6;
cbb38b47
BE
2965 UINT f_dest;
2966
c7e628df 2967 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
62836bf4 2968 f_disp6 = EXTRACT_MSB0_SINT (insn, 32, 16, 6);
c7e628df 2969 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
cbb38b47
BE
2970
2971 /* Record the fields for the semantic handler. */
c7e628df 2972 FLD (f_disp6) = f_disp6;
cbb38b47 2973 FLD (f_left) = f_left;
cbb38b47 2974 FLD (f_dest) = f_dest;
c7e628df 2975 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));
cbb38b47 2976
c7e628df
DB
2977#if WITH_PROFILE_MODEL_P
2978 /* Record the fields for profiling. */
2979 if (PROFILE_MODEL_P (current_cpu))
2980 {
2981 FLD (in_rm) = f_left;
2982 FLD (out_rd) = f_dest;
2983 }
2984#endif
cbb38b47
BE
2985#undef FLD
2986 return idesc;
2987 }
2988
c7e628df 2989 extract_sfmt_ldhiq:
cbb38b47
BE
2990 {
2991 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 2992 CGEN_INSN_WORD insn = entire_insn;
c7e628df 2993#define FLD(f) abuf->fields.sfmt_getcfg.f
cbb38b47 2994 UINT f_left;
c7e628df 2995 INT f_disp6;
cbb38b47
BE
2996 UINT f_dest;
2997
c7e628df 2998 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
62836bf4 2999 f_disp6 = EXTRACT_MSB0_SINT (insn, 32, 16, 6);
c7e628df 3000 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
cbb38b47
BE
3001
3002 /* Record the fields for the semantic handler. */
c7e628df 3003 FLD (f_disp6) = f_disp6;
cbb38b47 3004 FLD (f_left) = f_left;
c7e628df
DB
3005 FLD (f_dest) = f_dest;
3006 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));
cbb38b47 3007
c7e628df
DB
3008#if WITH_PROFILE_MODEL_P
3009 /* Record the fields for profiling. */
3010 if (PROFILE_MODEL_P (current_cpu))
3011 {
3012 FLD (in_rm) = f_left;
3013 FLD (out_rd) = f_dest;
3014 }
3015#endif
cbb38b47
BE
3016#undef FLD
3017 return idesc;
3018 }
3019
c7e628df 3020 extract_sfmt_ldlol:
cbb38b47
BE
3021 {
3022 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 3023 CGEN_INSN_WORD insn = entire_insn;
c7e628df
DB
3024#define FLD(f) abuf->fields.sfmt_getcfg.f
3025 UINT f_left;
3026 INT f_disp6;
cbb38b47
BE
3027 UINT f_dest;
3028
c7e628df 3029 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
62836bf4 3030 f_disp6 = EXTRACT_MSB0_SINT (insn, 32, 16, 6);
c7e628df 3031 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
cbb38b47
BE
3032
3033 /* Record the fields for the semantic handler. */
c7e628df
DB
3034 FLD (f_disp6) = f_disp6;
3035 FLD (f_left) = f_left;
cbb38b47 3036 FLD (f_dest) = f_dest;
c7e628df 3037 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));
cbb38b47 3038
c7e628df
DB
3039#if WITH_PROFILE_MODEL_P
3040 /* Record the fields for profiling. */
3041 if (PROFILE_MODEL_P (current_cpu))
3042 {
3043 FLD (in_rm) = f_left;
3044 FLD (out_rd) = f_dest;
3045 }
3046#endif
3047#undef FLD
3048 return idesc;
3049 }
3050
3051 extract_sfmt_ldloq:
3052 {
3053 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 3054 CGEN_INSN_WORD insn = entire_insn;
c7e628df
DB
3055#define FLD(f) abuf->fields.sfmt_getcfg.f
3056 UINT f_left;
3057 INT f_disp6;
3058 UINT f_dest;
3059
3060 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
62836bf4 3061 f_disp6 = EXTRACT_MSB0_SINT (insn, 32, 16, 6);
c7e628df
DB
3062 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
3063
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 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));
3069
3070#if WITH_PROFILE_MODEL_P
3071 /* Record the fields for profiling. */
3072 if (PROFILE_MODEL_P (current_cpu))
3073 {
3074 FLD (in_rm) = f_left;
3075 FLD (out_rd) = f_dest;
3076 }
3077#endif
3078#undef FLD
3079 return idesc;
3080 }
3081
3082 extract_sfmt_ldxb:
3083 {
3084 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 3085 CGEN_INSN_WORD insn = entire_insn;
c7e628df
DB
3086#define FLD(f) abuf->fields.sfmt_add.f
3087 UINT f_left;
3088 UINT f_right;
3089 UINT f_dest;
3090
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);
3094
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 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));
3100
3101#if WITH_PROFILE_MODEL_P
3102 /* Record the fields for profiling. */
3103 if (PROFILE_MODEL_P (current_cpu))
3104 {
3105 FLD (in_rm) = f_left;
3106 FLD (in_rn) = f_right;
3107 FLD (out_rd) = f_dest;
3108 }
3109#endif
3110#undef FLD
3111 return idesc;
3112 }
3113
3114 extract_sfmt_ldxl:
3115 {
3116 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 3117 CGEN_INSN_WORD insn = entire_insn;
c7e628df
DB
3118#define FLD(f) abuf->fields.sfmt_add.f
3119 UINT f_left;
3120 UINT f_right;
3121 UINT f_dest;
3122
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);
3126
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 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));
3132
3133#if WITH_PROFILE_MODEL_P
3134 /* Record the fields for profiling. */
3135 if (PROFILE_MODEL_P (current_cpu))
3136 {
3137 FLD (in_rm) = f_left;
3138 FLD (in_rn) = f_right;
3139 FLD (out_rd) = f_dest;
3140 }
3141#endif
3142#undef FLD
3143 return idesc;
3144 }
3145
3146 extract_sfmt_ldxq:
3147 {
3148 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 3149 CGEN_INSN_WORD insn = entire_insn;
c7e628df
DB
3150#define FLD(f) abuf->fields.sfmt_add.f
3151 UINT f_left;
3152 UINT f_right;
3153 UINT f_dest;
3154
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);
3158
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 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));
3164
3165#if WITH_PROFILE_MODEL_P
3166 /* Record the fields for profiling. */
3167 if (PROFILE_MODEL_P (current_cpu))
3168 {
3169 FLD (in_rm) = f_left;
3170 FLD (in_rn) = f_right;
3171 FLD (out_rd) = f_dest;
3172 }
3173#endif
3174#undef FLD
3175 return idesc;
3176 }
3177
3178 extract_sfmt_ldxub:
3179 {
3180 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 3181 CGEN_INSN_WORD insn = entire_insn;
c7e628df
DB
3182#define FLD(f) abuf->fields.sfmt_add.f
3183 UINT f_left;
3184 UINT f_right;
3185 UINT f_dest;
3186
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);
3190
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 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));
3196
3197#if WITH_PROFILE_MODEL_P
3198 /* Record the fields for profiling. */
3199 if (PROFILE_MODEL_P (current_cpu))
3200 {
3201 FLD (in_rm) = f_left;
3202 FLD (in_rn) = f_right;
3203 FLD (out_rd) = f_dest;
3204 }
3205#endif
3206#undef FLD
3207 return idesc;
3208 }
3209
3210 extract_sfmt_ldxuw:
3211 {
3212 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 3213 CGEN_INSN_WORD insn = entire_insn;
c7e628df
DB
3214#define FLD(f) abuf->fields.sfmt_add.f
3215 UINT f_left;
3216 UINT f_right;
3217 UINT f_dest;
3218
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);
3222
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 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));
3228
3229#if WITH_PROFILE_MODEL_P
3230 /* Record the fields for profiling. */
3231 if (PROFILE_MODEL_P (current_cpu))
3232 {
3233 FLD (in_rm) = f_left;
3234 FLD (in_rn) = f_right;
3235 FLD (out_rd) = f_dest;
3236 }
3237#endif
3238#undef FLD
3239 return idesc;
3240 }
3241
3242 extract_sfmt_ldxw:
3243 {
3244 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 3245 CGEN_INSN_WORD insn = entire_insn;
c7e628df
DB
3246#define FLD(f) abuf->fields.sfmt_add.f
3247 UINT f_left;
3248 UINT f_right;
3249 UINT f_dest;
3250
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);
3254
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 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));
3260
3261#if WITH_PROFILE_MODEL_P
3262 /* Record the fields for profiling. */
3263 if (PROFILE_MODEL_P (current_cpu))
3264 {
3265 FLD (in_rm) = f_left;
3266 FLD (in_rn) = f_right;
3267 FLD (out_rd) = f_dest;
3268 }
3269#endif
3270#undef FLD
3271 return idesc;
3272 }
3273
3274 extract_sfmt_mcmv:
3275 {
3276 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 3277 CGEN_INSN_WORD insn = entire_insn;
c7e628df
DB
3278#define FLD(f) abuf->fields.sfmt_add.f
3279 UINT f_left;
3280 UINT f_right;
3281 UINT f_dest;
3282
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);
3286
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 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));
3292
c5351010
DE
3293#if WITH_PROFILE_MODEL_P
3294 /* Record the fields for profiling. */
3295 if (PROFILE_MODEL_P (current_cpu))
3296 {
3297 FLD (in_rd) = f_dest;
3298 FLD (in_rm) = f_left;
3299 FLD (in_rn) = f_right;
3300 FLD (out_rd) = f_dest;
3301 }
3302#endif
3303#undef FLD
3304 return idesc;
3305 }
3306
3307 extract_sfmt_mmacnfx_wl:
3308 {
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;
3315
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);
3319
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 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));
3325
c7e628df
DB
3326#if WITH_PROFILE_MODEL_P
3327 /* Record the fields for profiling. */
3328 if (PROFILE_MODEL_P (current_cpu))
3329 {
3330 FLD (in_rd) = f_dest;
3331 FLD (in_rm) = f_left;
3332 FLD (in_rn) = f_right;
3333 FLD (out_rd) = f_dest;
3334 }
3335#endif
3336#undef FLD
3337 return idesc;
3338 }
3339
3340 extract_sfmt_movi:
3341 {
3342 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 3343 CGEN_INSN_WORD insn = entire_insn;
c7e628df
DB
3344#define FLD(f) abuf->fields.sfmt_movi.f
3345 INT f_imm16;
3346 UINT f_dest;
3347
62836bf4 3348 f_imm16 = EXTRACT_MSB0_SINT (insn, 32, 6, 16);
c7e628df
DB
3349 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
3350
3351 /* Record the fields for the semantic handler. */
3352 FLD (f_imm16) = f_imm16;
3353 FLD (f_dest) = f_dest;
3354 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));
3355
3356#if WITH_PROFILE_MODEL_P
3357 /* Record the fields for profiling. */
3358 if (PROFILE_MODEL_P (current_cpu))
3359 {
3360 FLD (out_rd) = f_dest;
3361 }
3362#endif
c7e628df
DB
3363#undef FLD
3364 return idesc;
3365 }
3366
3367 extract_sfmt_nop:
3368 {
3369 const IDESC *idesc = &sh64_media_insn_data[itype];
2310652a 3370#define FLD(f) abuf->fields.sfmt_empty.f
c7e628df
DB
3371
3372
3373 /* Record the fields for the semantic handler. */
3374 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_nop", (char *) 0));
3375
cbb38b47
BE
3376#undef FLD
3377 return idesc;
3378 }
3379
3380 extract_sfmt_ori:
3381 {
3382 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 3383 CGEN_INSN_WORD insn = entire_insn;
cbb38b47
BE
3384#define FLD(f) abuf->fields.sfmt_ori.f
3385 UINT f_left;
3386 INT f_imm10;
3387 UINT f_dest;
3388
c7e628df 3389 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
62836bf4 3390 f_imm10 = EXTRACT_MSB0_SINT (insn, 32, 12, 10);
c7e628df 3391 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
cbb38b47
BE
3392
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 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));
3398
c7e628df
DB
3399#if WITH_PROFILE_MODEL_P
3400 /* Record the fields for profiling. */
3401 if (PROFILE_MODEL_P (current_cpu))
3402 {
3403 FLD (in_rm) = f_left;
3404 FLD (out_rd) = f_dest;
3405 }
3406#endif
c5351010
DE
3407#undef FLD
3408 return idesc;
3409 }
3410
3411 extract_sfmt_prefi:
3412 {
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;
3417
3418 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
3419
3420 /* Record the fields for the semantic handler. */
3421 FLD (f_left) = f_left;
3422 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_prefi", "f_left 0x%x", 'x', f_left, (char *) 0));
3423
3424#if WITH_PROFILE_MODEL_P
3425 /* Record the fields for profiling. */
3426 if (PROFILE_MODEL_P (current_cpu))
3427 {
3428 FLD (in_rm) = f_left;
3429 FLD (out_rm) = f_left;
3430 }
3431#endif
cbb38b47
BE
3432#undef FLD
3433 return idesc;
3434 }
3435
3436 extract_sfmt_pta:
3437 {
3438 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 3439 CGEN_INSN_WORD insn = entire_insn;
cbb38b47
BE
3440#define FLD(f) abuf->fields.sfmt_pta.f
3441 DI f_disp16;
3442 UINT f_tra;
3443
62836bf4 3444 f_disp16 = ((((EXTRACT_MSB0_SINT (insn, 32, 6, 16)) << (2))) + (pc));
c7e628df 3445 f_tra = EXTRACT_MSB0_UINT (insn, 32, 25, 3);
cbb38b47
BE
3446
3447 /* Record the fields for the semantic handler. */
3448 FLD (f_disp16) = f_disp16;
3449 FLD (f_tra) = f_tra;
3450 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));
3451
c7e628df
DB
3452#if WITH_PROFILE_MODEL_P
3453 /* Record the fields for profiling. */
3454 if (PROFILE_MODEL_P (current_cpu))
3455 {
3456 FLD (out_tra) = f_tra;
3457 }
3458#endif
cbb38b47
BE
3459#undef FLD
3460 return idesc;
3461 }
3462
3463 extract_sfmt_ptabs:
3464 {
3465 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 3466 CGEN_INSN_WORD insn = entire_insn;
cbb38b47
BE
3467#define FLD(f) abuf->fields.sfmt_beq.f
3468 UINT f_right;
3469 UINT f_tra;
3470
c7e628df
DB
3471 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
3472 f_tra = EXTRACT_MSB0_UINT (insn, 32, 25, 3);
cbb38b47
BE
3473
3474 /* Record the fields for the semantic handler. */
3475 FLD (f_right) = f_right;
3476 FLD (f_tra) = f_tra;
3477 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));
3478
c7e628df
DB
3479#if WITH_PROFILE_MODEL_P
3480 /* Record the fields for profiling. */
3481 if (PROFILE_MODEL_P (current_cpu))
3482 {
3483 FLD (in_rn) = f_right;
3484 FLD (out_tra) = f_tra;
3485 }
3486#endif
cbb38b47
BE
3487#undef FLD
3488 return idesc;
3489 }
3490
3491 extract_sfmt_ptrel:
3492 {
3493 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 3494 CGEN_INSN_WORD insn = entire_insn;
cbb38b47
BE
3495#define FLD(f) abuf->fields.sfmt_beq.f
3496 UINT f_right;
3497 UINT f_tra;
3498
c7e628df
DB
3499 f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
3500 f_tra = EXTRACT_MSB0_UINT (insn, 32, 25, 3);
cbb38b47
BE
3501
3502 /* Record the fields for the semantic handler. */
3503 FLD (f_right) = f_right;
3504 FLD (f_tra) = f_tra;
3505 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));
3506
c7e628df
DB
3507#if WITH_PROFILE_MODEL_P
3508 /* Record the fields for profiling. */
3509 if (PROFILE_MODEL_P (current_cpu))
3510 {
3511 FLD (in_rn) = f_right;
3512 FLD (out_tra) = f_tra;
3513 }
3514#endif
3515#undef FLD
3516 return idesc;
3517 }
3518
3519 extract_sfmt_putcfg:
3520 {
3521 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 3522 CGEN_INSN_WORD insn = entire_insn;
c7e628df
DB
3523#define FLD(f) abuf->fields.sfmt_getcfg.f
3524 UINT f_left;
3525 INT f_disp6;
3526 UINT f_dest;
3527
3528 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
62836bf4 3529 f_disp6 = EXTRACT_MSB0_SINT (insn, 32, 16, 6);
c7e628df
DB
3530 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
3531
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 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));
3537
3538#if WITH_PROFILE_MODEL_P
3539 /* Record the fields for profiling. */
3540 if (PROFILE_MODEL_P (current_cpu))
3541 {
3542 FLD (in_rd) = f_dest;
3543 FLD (in_rm) = f_left;
3544 }
3545#endif
cbb38b47
BE
3546#undef FLD
3547 return idesc;
3548 }
3549
3550 extract_sfmt_putcon:
3551 {
3552 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 3553 CGEN_INSN_WORD insn = entire_insn;
cbb38b47
BE
3554#define FLD(f) abuf->fields.sfmt_xori.f
3555 UINT f_left;
3556 UINT f_dest;
3557
c7e628df
DB
3558 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
3559 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
cbb38b47
BE
3560
3561 /* Record the fields for the semantic handler. */
3562 FLD (f_left) = f_left;
3563 FLD (f_dest) = f_dest;
3564 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));
3565
c7e628df
DB
3566#if WITH_PROFILE_MODEL_P
3567 /* Record the fields for profiling. */
3568 if (PROFILE_MODEL_P (current_cpu))
3569 {
3570 FLD (in_rm) = f_left;
3571 }
3572#endif
cbb38b47
BE
3573#undef FLD
3574 return idesc;
3575 }
3576
3577 extract_sfmt_shari:
3578 {
3579 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 3580 CGEN_INSN_WORD insn = entire_insn;
cbb38b47
BE
3581#define FLD(f) abuf->fields.sfmt_shari.f
3582 UINT f_left;
3583 UINT f_uimm6;
3584 UINT f_dest;
3585
c7e628df
DB
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);
cbb38b47
BE
3589
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 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));
3595
c7e628df
DB
3596#if WITH_PROFILE_MODEL_P
3597 /* Record the fields for profiling. */
3598 if (PROFILE_MODEL_P (current_cpu))
3599 {
3600 FLD (in_rm) = f_left;
3601 FLD (out_rd) = f_dest;
3602 }
3603#endif
cbb38b47
BE
3604#undef FLD
3605 return idesc;
3606 }
3607
3608 extract_sfmt_shori:
3609 {
3610 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 3611 CGEN_INSN_WORD insn = entire_insn;
cbb38b47
BE
3612#define FLD(f) abuf->fields.sfmt_shori.f
3613 UINT f_uimm16;
3614 UINT f_dest;
3615
c7e628df
DB
3616 f_uimm16 = EXTRACT_MSB0_UINT (insn, 32, 6, 16);
3617 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
cbb38b47
BE
3618
3619 /* Record the fields for the semantic handler. */
3620 FLD (f_dest) = f_dest;
3621 FLD (f_uimm16) = f_uimm16;
3622 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));
3623
c7e628df
DB
3624#if WITH_PROFILE_MODEL_P
3625 /* Record the fields for profiling. */
3626 if (PROFILE_MODEL_P (current_cpu))
3627 {
3628 FLD (in_rd) = f_dest;
3629 FLD (out_rd) = f_dest;
3630 }
3631#endif
cbb38b47
BE
3632#undef FLD
3633 return idesc;
3634 }
3635
3636 extract_sfmt_stb:
3637 {
3638 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 3639 CGEN_INSN_WORD insn = entire_insn;
cbb38b47
BE
3640#define FLD(f) abuf->fields.sfmt_addi.f
3641 UINT f_left;
3642 INT f_disp10;
3643 UINT f_dest;
3644
c7e628df 3645 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
62836bf4 3646 f_disp10 = EXTRACT_MSB0_SINT (insn, 32, 12, 10);
c7e628df 3647 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
cbb38b47
BE
3648
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 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));
3654
c7e628df
DB
3655#if WITH_PROFILE_MODEL_P
3656 /* Record the fields for profiling. */
3657 if (PROFILE_MODEL_P (current_cpu))
3658 {
3659 FLD (in_rd) = f_dest;
3660 FLD (in_rm) = f_left;
3661 }
3662#endif
cbb38b47
BE
3663#undef FLD
3664 return idesc;
3665 }
3666
3667 extract_sfmt_stl:
3668 {
3669 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 3670 CGEN_INSN_WORD insn = entire_insn;
cbb38b47
BE
3671#define FLD(f) abuf->fields.sfmt_flds.f
3672 UINT f_left;
3673 SI f_disp10x4;
3674 UINT f_dest;
3675
c7e628df 3676 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
62836bf4 3677 f_disp10x4 = ((EXTRACT_MSB0_SINT (insn, 32, 12, 10)) << (2));
c7e628df 3678 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
cbb38b47
BE
3679
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 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));
3685
c7e628df
DB
3686#if WITH_PROFILE_MODEL_P
3687 /* Record the fields for profiling. */
3688 if (PROFILE_MODEL_P (current_cpu))
3689 {
3690 FLD (in_rd) = f_dest;
3691 FLD (in_rm) = f_left;
3692 }
3693#endif
cbb38b47
BE
3694#undef FLD
3695 return idesc;
3696 }
3697
3698 extract_sfmt_stq:
3699 {
3700 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 3701 CGEN_INSN_WORD insn = entire_insn;
cbb38b47
BE
3702#define FLD(f) abuf->fields.sfmt_fldd.f
3703 UINT f_left;
3704 SI f_disp10x8;
3705 UINT f_dest;
3706
c7e628df 3707 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
62836bf4 3708 f_disp10x8 = ((EXTRACT_MSB0_SINT (insn, 32, 12, 10)) << (3));
c7e628df 3709 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
cbb38b47
BE
3710
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 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));
3716
c7e628df
DB
3717#if WITH_PROFILE_MODEL_P
3718 /* Record the fields for profiling. */
3719 if (PROFILE_MODEL_P (current_cpu))
3720 {
3721 FLD (in_rd) = f_dest;
3722 FLD (in_rm) = f_left;
3723 }
3724#endif
cbb38b47
BE
3725#undef FLD
3726 return idesc;
3727 }
3728
3729 extract_sfmt_stw:
3730 {
3731 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 3732 CGEN_INSN_WORD insn = entire_insn;
cbb38b47
BE
3733#define FLD(f) abuf->fields.sfmt_lduw.f
3734 UINT f_left;
3735 SI f_disp10x2;
3736 UINT f_dest;
3737
c7e628df 3738 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
62836bf4 3739 f_disp10x2 = ((EXTRACT_MSB0_SINT (insn, 32, 12, 10)) << (1));
c7e628df 3740 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
cbb38b47
BE
3741
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 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));
3747
c7e628df
DB
3748#if WITH_PROFILE_MODEL_P
3749 /* Record the fields for profiling. */
3750 if (PROFILE_MODEL_P (current_cpu))
3751 {
3752 FLD (in_rd) = f_dest;
3753 FLD (in_rm) = f_left;
3754 }
3755#endif
cbb38b47
BE
3756#undef FLD
3757 return idesc;
3758 }
3759
3760 extract_sfmt_sthil:
3761 {
3762 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 3763 CGEN_INSN_WORD insn = entire_insn;
c7e628df 3764#define FLD(f) abuf->fields.sfmt_getcfg.f
cbb38b47
BE
3765 UINT f_left;
3766 INT f_disp6;
3767 UINT f_dest;
3768
c7e628df 3769 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
62836bf4 3770 f_disp6 = EXTRACT_MSB0_SINT (insn, 32, 16, 6);
c7e628df 3771 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
cbb38b47
BE
3772
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 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));
3778
c7e628df
DB
3779#if WITH_PROFILE_MODEL_P
3780 /* Record the fields for profiling. */
3781 if (PROFILE_MODEL_P (current_cpu))
3782 {
3783 FLD (in_rd) = f_dest;
3784 FLD (in_rm) = f_left;
3785 }
3786#endif
3787#undef FLD
3788 return idesc;
3789 }
3790
3791 extract_sfmt_sthiq:
3792 {
3793 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 3794 CGEN_INSN_WORD insn = entire_insn;
c7e628df
DB
3795#define FLD(f) abuf->fields.sfmt_getcfg.f
3796 UINT f_left;
3797 INT f_disp6;
3798 UINT f_dest;
3799
3800 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
62836bf4 3801 f_disp6 = EXTRACT_MSB0_SINT (insn, 32, 16, 6);
c7e628df
DB
3802 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
3803
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 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));
3809
3810#if WITH_PROFILE_MODEL_P
3811 /* Record the fields for profiling. */
3812 if (PROFILE_MODEL_P (current_cpu))
3813 {
3814 FLD (in_rd) = f_dest;
3815 FLD (in_rm) = f_left;
3816 }
3817#endif
3818#undef FLD
3819 return idesc;
3820 }
3821
3822 extract_sfmt_stlol:
3823 {
3824 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 3825 CGEN_INSN_WORD insn = entire_insn;
c7e628df
DB
3826#define FLD(f) abuf->fields.sfmt_getcfg.f
3827 UINT f_left;
3828 INT f_disp6;
3829 UINT f_dest;
3830
3831 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
62836bf4 3832 f_disp6 = EXTRACT_MSB0_SINT (insn, 32, 16, 6);
c7e628df
DB
3833 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
3834
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 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));
3840
3841#if WITH_PROFILE_MODEL_P
3842 /* Record the fields for profiling. */
3843 if (PROFILE_MODEL_P (current_cpu))
3844 {
3845 FLD (in_rd) = f_dest;
3846 FLD (in_rm) = f_left;
3847 }
3848#endif
3849#undef FLD
3850 return idesc;
3851 }
3852
3853 extract_sfmt_stloq:
3854 {
3855 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 3856 CGEN_INSN_WORD insn = entire_insn;
c7e628df
DB
3857#define FLD(f) abuf->fields.sfmt_getcfg.f
3858 UINT f_left;
3859 INT f_disp6;
3860 UINT f_dest;
3861
3862 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
62836bf4 3863 f_disp6 = EXTRACT_MSB0_SINT (insn, 32, 16, 6);
c7e628df
DB
3864 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
3865
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 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));
3871
3872#if WITH_PROFILE_MODEL_P
3873 /* Record the fields for profiling. */
3874 if (PROFILE_MODEL_P (current_cpu))
3875 {
3876 FLD (in_rd) = f_dest;
3877 FLD (in_rm) = f_left;
3878 }
3879#endif
cbb38b47
BE
3880#undef FLD
3881 return idesc;
3882 }
3883
3884 extract_sfmt_stxb:
3885 {
3886 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 3887 CGEN_INSN_WORD insn = entire_insn;
cbb38b47
BE
3888#define FLD(f) abuf->fields.sfmt_add.f
3889 UINT f_left;
3890 UINT f_right;
3891 UINT f_dest;
3892
c7e628df
DB
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);
cbb38b47
BE
3896
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 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));
3902
c7e628df
DB
3903#if WITH_PROFILE_MODEL_P
3904 /* Record the fields for profiling. */
3905 if (PROFILE_MODEL_P (current_cpu))
3906 {
3907 FLD (in_rd) = f_dest;
3908 FLD (in_rm) = f_left;
3909 FLD (in_rn) = f_right;
3910 }
3911#endif
3912#undef FLD
3913 return idesc;
3914 }
3915
3916 extract_sfmt_stxl:
3917 {
3918 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 3919 CGEN_INSN_WORD insn = entire_insn;
c7e628df
DB
3920#define FLD(f) abuf->fields.sfmt_add.f
3921 UINT f_left;
3922 UINT f_right;
3923 UINT f_dest;
3924
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);
3928
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 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));
3934
3935#if WITH_PROFILE_MODEL_P
3936 /* Record the fields for profiling. */
3937 if (PROFILE_MODEL_P (current_cpu))
3938 {
3939 FLD (in_rd) = f_dest;
3940 FLD (in_rm) = f_left;
3941 FLD (in_rn) = f_right;
3942 }
3943#endif
3944#undef FLD
3945 return idesc;
3946 }
3947
3948 extract_sfmt_stxq:
3949 {
3950 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 3951 CGEN_INSN_WORD insn = entire_insn;
c7e628df
DB
3952#define FLD(f) abuf->fields.sfmt_add.f
3953 UINT f_left;
3954 UINT f_right;
3955 UINT f_dest;
3956
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);
3960
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 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));
3966
3967#if WITH_PROFILE_MODEL_P
3968 /* Record the fields for profiling. */
3969 if (PROFILE_MODEL_P (current_cpu))
3970 {
3971 FLD (in_rd) = f_dest;
3972 FLD (in_rm) = f_left;
3973 FLD (in_rn) = f_right;
3974 }
3975#endif
3976#undef FLD
3977 return idesc;
3978 }
3979
3980 extract_sfmt_stxw:
3981 {
3982 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 3983 CGEN_INSN_WORD insn = entire_insn;
c7e628df
DB
3984#define FLD(f) abuf->fields.sfmt_add.f
3985 UINT f_left;
3986 UINT f_right;
3987 UINT f_dest;
3988
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);
3992
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 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));
3998
3999#if WITH_PROFILE_MODEL_P
4000 /* Record the fields for profiling. */
4001 if (PROFILE_MODEL_P (current_cpu))
4002 {
4003 FLD (in_rd) = f_dest;
4004 FLD (in_rm) = f_left;
4005 FLD (in_rn) = f_right;
4006 }
4007#endif
cbb38b47
BE
4008#undef FLD
4009 return idesc;
4010 }
4011
4012 extract_sfmt_swapq:
4013 {
4014 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 4015 CGEN_INSN_WORD insn = entire_insn;
cbb38b47
BE
4016#define FLD(f) abuf->fields.sfmt_add.f
4017 UINT f_left;
4018 UINT f_right;
4019 UINT f_dest;
4020
c7e628df
DB
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);
cbb38b47
BE
4024
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 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));
4030
c7e628df
DB
4031#if WITH_PROFILE_MODEL_P
4032 /* Record the fields for profiling. */
4033 if (PROFILE_MODEL_P (current_cpu))
4034 {
4035 FLD (in_rd) = f_dest;
4036 FLD (in_rm) = f_left;
4037 FLD (in_rn) = f_right;
4038 FLD (out_rd) = f_dest;
4039 }
4040#endif
cbb38b47
BE
4041#undef FLD
4042 return idesc;
4043 }
4044
4045 extract_sfmt_trapa:
4046 {
4047 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 4048 CGEN_INSN_WORD insn = entire_insn;
cbb38b47
BE
4049#define FLD(f) abuf->fields.sfmt_xori.f
4050 UINT f_left;
4051
c7e628df 4052 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
cbb38b47
BE
4053
4054 /* Record the fields for the semantic handler. */
4055 FLD (f_left) = f_left;
4056 TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_trapa", "f_left 0x%x", 'x', f_left, (char *) 0));
4057
c7e628df
DB
4058#if WITH_PROFILE_MODEL_P
4059 /* Record the fields for profiling. */
4060 if (PROFILE_MODEL_P (current_cpu))
4061 {
4062 FLD (in_rm) = f_left;
4063 }
4064#endif
cbb38b47
BE
4065#undef FLD
4066 return idesc;
4067 }
4068
4069 extract_sfmt_xori:
4070 {
4071 const IDESC *idesc = &sh64_media_insn_data[itype];
197fa1aa 4072 CGEN_INSN_WORD insn = entire_insn;
cbb38b47
BE
4073#define FLD(f) abuf->fields.sfmt_xori.f
4074 UINT f_left;
4075 INT f_imm6;
4076 UINT f_dest;
4077
c7e628df 4078 f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
62836bf4 4079 f_imm6 = EXTRACT_MSB0_SINT (insn, 32, 16, 6);
c7e628df 4080 f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
cbb38b47
BE
4081
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 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));
4087
c7e628df
DB
4088#if WITH_PROFILE_MODEL_P
4089 /* Record the fields for profiling. */
4090 if (PROFILE_MODEL_P (current_cpu))
4091 {
4092 FLD (in_rm) = f_left;
4093 FLD (out_rd) = f_dest;
4094 }
4095#endif
cbb38b47
BE
4096#undef FLD
4097 return idesc;
4098 }
4099
4100}