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