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