ubsan: fr30: left shift of negative value
[deliverable/binutils-gdb.git] / sim / sh64 / decode-media.c
index f1471f332bbff01994374ed6b8363045e8a54455..969dcb9000e6555bc612564937a986bb511e217f 100644 (file)
@@ -2,23 +2,22 @@
 
 THIS FILE IS MACHINE GENERATED WITH CGEN.
 
-Copyright (C) 1996, 1997, 1998, 1999, 2000 Free Software Foundation, Inc.
+Copyright 1996-2020 Free Software Foundation, Inc.
 
-This file is part of the GNU Simulators.
+This file is part of the GNU simulators.
 
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
+   This file is free software; you can redistribute it and/or modify
+   it under the terms of the GNU General Public License as published by
+   the Free Software Foundation; either version 3, or (at your option)
+   any later version.
 
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
+   It is distributed in the hope that it will be useful, but WITHOUT
+   ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+   or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
+   License for more details.
 
-You should have received a copy of the GNU General Public License along
-with this program; if not, write to the Free Software Foundation, Inc.,
-59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+   You should have received a copy of the GNU General Public License along
+   with this program; if not, see <http://www.gnu.org/licenses/>.
 
 */
 
@@ -33,7 +32,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
    teensy bit of cpu in the decoder.  Moving it to malloc space is trivial
    but won't be done until necessary (we don't currently support the runtime
    addition of instructions nor an SMP machine with different cpus).  */
-static IDESC sh64_media_insn_data[SH64_MEDIA_INSN_MAX];
+static IDESC sh64_media_insn_data[SH64_MEDIA_INSN__MAX];
 
 /* Commas between elements are contained in the macros.
    Some of these are conditionally compiled out.  */
@@ -63,7 +62,7 @@ static const struct insn_sem sh64_media_insn_sem[] =
   { SH_INSN_BGTU, SH64_MEDIA_INSN_BGTU, SH64_MEDIA_SFMT_BEQ },
   { SH_INSN_BLINK, SH64_MEDIA_INSN_BLINK, SH64_MEDIA_SFMT_BLINK },
   { SH_INSN_BNE, SH64_MEDIA_INSN_BNE, SH64_MEDIA_SFMT_BEQ },
-  { SH_INSN_BNEI, SH64_MEDIA_INSN_BNEI, SH64_MEDIA_SFMT_BEQI },
+  { SH_INSN_BNEI, SH64_MEDIA_INSN_BNEI, SH64_MEDIA_SFMT_BNEI },
   { SH_INSN_BRK, SH64_MEDIA_INSN_BRK, SH64_MEDIA_SFMT_BRK },
   { SH_INSN_BYTEREV, SH64_MEDIA_INSN_BYTEREV, SH64_MEDIA_SFMT_BYTEREV },
   { SH_INSN_CMPEQ, SH64_MEDIA_INSN_CMPEQ, SH64_MEDIA_SFMT_ADD },
@@ -87,7 +86,7 @@ static const struct insn_sem sh64_media_insn_sem[] =
   { SH_INSN_FCNVSD, SH64_MEDIA_INSN_FCNVSD, SH64_MEDIA_SFMT_FCNVSD },
   { SH_INSN_FDIVD, SH64_MEDIA_INSN_FDIVD, SH64_MEDIA_SFMT_FADDD },
   { SH_INSN_FDIVS, SH64_MEDIA_INSN_FDIVS, SH64_MEDIA_SFMT_FADDS },
-  { SH_INSN_FGETSCR, SH64_MEDIA_INSN_FGETSCR, SH64_MEDIA_SFMT_ALLOCO },
+  { SH_INSN_FGETSCR, SH64_MEDIA_INSN_FGETSCR, SH64_MEDIA_SFMT_FGETSCR },
   { SH_INSN_FIPRS, SH64_MEDIA_INSN_FIPRS, SH64_MEDIA_SFMT_FIPRS },
   { SH_INSN_FLDD, SH64_MEDIA_INSN_FLDD, SH64_MEDIA_SFMT_FLDD },
   { SH_INSN_FLDP, SH64_MEDIA_INSN_FLDP, SH64_MEDIA_SFMT_FLDP },
@@ -110,23 +109,23 @@ static const struct insn_sem sh64_media_insn_sem[] =
   { SH_INSN_FMULS, SH64_MEDIA_INSN_FMULS, SH64_MEDIA_SFMT_FADDS },
   { SH_INSN_FNEGD, SH64_MEDIA_INSN_FNEGD, SH64_MEDIA_SFMT_FABSD },
   { SH_INSN_FNEGS, SH64_MEDIA_INSN_FNEGS, SH64_MEDIA_SFMT_FABSS },
-  { SH_INSN_FPUTSCR, SH64_MEDIA_INSN_FPUTSCR, SH64_MEDIA_SFMT_ALLOCO },
+  { SH_INSN_FPUTSCR, SH64_MEDIA_INSN_FPUTSCR, SH64_MEDIA_SFMT_FPUTSCR },
   { SH_INSN_FSQRTD, SH64_MEDIA_INSN_FSQRTD, SH64_MEDIA_SFMT_FABSD },
   { SH_INSN_FSQRTS, SH64_MEDIA_INSN_FSQRTS, SH64_MEDIA_SFMT_FABSS },
   { SH_INSN_FSTD, SH64_MEDIA_INSN_FSTD, SH64_MEDIA_SFMT_FSTD },
-  { SH_INSN_FSTP, SH64_MEDIA_INSN_FSTP, SH64_MEDIA_SFMT_FSTP },
+  { SH_INSN_FSTP, SH64_MEDIA_INSN_FSTP, SH64_MEDIA_SFMT_FLDP },
   { SH_INSN_FSTS, SH64_MEDIA_INSN_FSTS, SH64_MEDIA_SFMT_FSTS },
   { SH_INSN_FSTXD, SH64_MEDIA_INSN_FSTXD, SH64_MEDIA_SFMT_FSTXD },
-  { SH_INSN_FSTXP, SH64_MEDIA_INSN_FSTXP, SH64_MEDIA_SFMT_FSTXP },
+  { SH_INSN_FSTXP, SH64_MEDIA_INSN_FSTXP, SH64_MEDIA_SFMT_FLDXP },
   { SH_INSN_FSTXS, SH64_MEDIA_INSN_FSTXS, SH64_MEDIA_SFMT_FSTXS },
-  { SH_INSN_FSUBD, SH64_MEDIA_INSN_FSUBD, SH64_MEDIA_SFMT_FADDD },
+  { SH_INSN_FSUBD, SH64_MEDIA_INSN_FSUBD, SH64_MEDIA_SFMT_FSUBD },
   { SH_INSN_FSUBS, SH64_MEDIA_INSN_FSUBS, SH64_MEDIA_SFMT_FADDS },
   { SH_INSN_FTRCDL, SH64_MEDIA_INSN_FTRCDL, SH64_MEDIA_SFMT_FCNVDS },
   { SH_INSN_FTRCSL, SH64_MEDIA_INSN_FTRCSL, SH64_MEDIA_SFMT_FABSS },
-  { SH_INSN_FTRCDQ, SH64_MEDIA_INSN_FTRCDQ, SH64_MEDIA_SFMT_FABSD },
+  { SH_INSN_FTRCDQ, SH64_MEDIA_INSN_FTRCDQ, SH64_MEDIA_SFMT_FTRCDQ },
   { SH_INSN_FTRCSQ, SH64_MEDIA_INSN_FTRCSQ, SH64_MEDIA_SFMT_FCNVSD },
   { SH_INSN_FTRVS, SH64_MEDIA_INSN_FTRVS, SH64_MEDIA_SFMT_FTRVS },
-  { SH_INSN_GETCFG, SH64_MEDIA_INSN_GETCFG, SH64_MEDIA_SFMT_ALLOCO },
+  { SH_INSN_GETCFG, SH64_MEDIA_INSN_GETCFG, SH64_MEDIA_SFMT_GETCFG },
   { SH_INSN_GETCON, SH64_MEDIA_INSN_GETCON, SH64_MEDIA_SFMT_GETCON },
   { SH_INSN_GETTR, SH64_MEDIA_INSN_GETTR, SH64_MEDIA_SFMT_GETTR },
   { SH_INSN_ICBI, SH64_MEDIA_INSN_ICBI, SH64_MEDIA_SFMT_ALLOCO },
@@ -136,16 +135,16 @@ static const struct insn_sem sh64_media_insn_sem[] =
   { SH_INSN_LDUB, SH64_MEDIA_INSN_LDUB, SH64_MEDIA_SFMT_LDB },
   { SH_INSN_LDUW, SH64_MEDIA_INSN_LDUW, SH64_MEDIA_SFMT_LDUW },
   { SH_INSN_LDW, SH64_MEDIA_INSN_LDW, SH64_MEDIA_SFMT_LDUW },
-  { SH_INSN_LDHIL, SH64_MEDIA_INSN_LDHIL, SH64_MEDIA_SFMT_ALLOCO },
-  { SH_INSN_LDHIQ, SH64_MEDIA_INSN_LDHIQ, SH64_MEDIA_SFMT_ALLOCO },
-  { SH_INSN_LDLOL, SH64_MEDIA_INSN_LDLOL, SH64_MEDIA_SFMT_ALLOCO },
-  { SH_INSN_LDLOQ, SH64_MEDIA_INSN_LDLOQ, SH64_MEDIA_SFMT_ALLOCO },
+  { SH_INSN_LDHIL, SH64_MEDIA_INSN_LDHIL, SH64_MEDIA_SFMT_LDHIL },
+  { SH_INSN_LDHIQ, SH64_MEDIA_INSN_LDHIQ, SH64_MEDIA_SFMT_LDHIQ },
+  { SH_INSN_LDLOL, SH64_MEDIA_INSN_LDLOL, SH64_MEDIA_SFMT_LDLOL },
+  { SH_INSN_LDLOQ, SH64_MEDIA_INSN_LDLOQ, SH64_MEDIA_SFMT_LDLOQ },
   { SH_INSN_LDXB, SH64_MEDIA_INSN_LDXB, SH64_MEDIA_SFMT_LDXB },
-  { SH_INSN_LDXL, SH64_MEDIA_INSN_LDXL, SH64_MEDIA_SFMT_LDXB },
-  { SH_INSN_LDXQ, SH64_MEDIA_INSN_LDXQ, SH64_MEDIA_SFMT_LDXB },
-  { SH_INSN_LDXUB, SH64_MEDIA_INSN_LDXUB, SH64_MEDIA_SFMT_LDXB },
-  { SH_INSN_LDXUW, SH64_MEDIA_INSN_LDXUW, SH64_MEDIA_SFMT_LDXB },
-  { SH_INSN_LDXW, SH64_MEDIA_INSN_LDXW, SH64_MEDIA_SFMT_LDXB },
+  { SH_INSN_LDXL, SH64_MEDIA_INSN_LDXL, SH64_MEDIA_SFMT_LDXL },
+  { SH_INSN_LDXQ, SH64_MEDIA_INSN_LDXQ, SH64_MEDIA_SFMT_LDXQ },
+  { SH_INSN_LDXUB, SH64_MEDIA_INSN_LDXUB, SH64_MEDIA_SFMT_LDXUB },
+  { SH_INSN_LDXUW, SH64_MEDIA_INSN_LDXUW, SH64_MEDIA_SFMT_LDXUW },
+  { SH_INSN_LDXW, SH64_MEDIA_INSN_LDXW, SH64_MEDIA_SFMT_LDXW },
   { SH_INSN_MABSL, SH64_MEDIA_INSN_MABSL, SH64_MEDIA_SFMT_BYTEREV },
   { SH_INSN_MABSW, SH64_MEDIA_INSN_MABSW, SH64_MEDIA_SFMT_BYTEREV },
   { SH_INSN_MADDL, SH64_MEDIA_INSN_MADDL, SH64_MEDIA_SFMT_ADD },
@@ -171,7 +170,7 @@ static const struct insn_sem sh64_media_insn_sem[] =
   { SH_INSN_MEXTR6, SH64_MEDIA_INSN_MEXTR6, SH64_MEDIA_SFMT_ADD },
   { SH_INSN_MEXTR7, SH64_MEDIA_INSN_MEXTR7, SH64_MEDIA_SFMT_ADD },
   { SH_INSN_MMACFXWL, SH64_MEDIA_INSN_MMACFXWL, SH64_MEDIA_SFMT_MCMV },
-  { SH_INSN_MMACNFX_WL, SH64_MEDIA_INSN_MMACNFX_WL, SH64_MEDIA_SFMT_MCMV },
+  { SH_INSN_MMACNFX_WL, SH64_MEDIA_INSN_MMACNFX_WL, SH64_MEDIA_SFMT_MMACNFX_WL },
   { SH_INSN_MMULL, SH64_MEDIA_INSN_MMULL, SH64_MEDIA_SFMT_ADD },
   { SH_INSN_MMULW, SH64_MEDIA_INSN_MMULW, SH64_MEDIA_SFMT_ADD },
   { SH_INSN_MMULFXL, SH64_MEDIA_INSN_MMULFXL, SH64_MEDIA_SFMT_ADD },
@@ -181,7 +180,7 @@ static const struct insn_sem sh64_media_insn_sem[] =
   { SH_INSN_MMULLOWL, SH64_MEDIA_INSN_MMULLOWL, SH64_MEDIA_SFMT_ADD },
   { SH_INSN_MMULSUMWQ, SH64_MEDIA_INSN_MMULSUMWQ, SH64_MEDIA_SFMT_MCMV },
   { SH_INSN_MOVI, SH64_MEDIA_INSN_MOVI, SH64_MEDIA_SFMT_MOVI },
-  { SH_INSN_MPERMW, SH64_MEDIA_INSN_MPERMW, SH64_MEDIA_SFMT_MPERMW },
+  { SH_INSN_MPERMW, SH64_MEDIA_INSN_MPERMW, SH64_MEDIA_SFMT_ADD },
   { SH_INSN_MSADUBQ, SH64_MEDIA_INSN_MSADUBQ, SH64_MEDIA_SFMT_MCMV },
   { SH_INSN_MSHALDSL, SH64_MEDIA_INSN_MSHALDSL, SH64_MEDIA_SFMT_ADD },
   { SH_INSN_MSHALDSW, SH64_MEDIA_INSN_MSHALDSW, SH64_MEDIA_SFMT_ADD },
@@ -205,58 +204,59 @@ static const struct insn_sem sh64_media_insn_sem[] =
   { SH_INSN_MSUBSW, SH64_MEDIA_INSN_MSUBSW, SH64_MEDIA_SFMT_ADD },
   { SH_INSN_MULSL, SH64_MEDIA_INSN_MULSL, SH64_MEDIA_SFMT_ADD },
   { SH_INSN_MULUL, SH64_MEDIA_INSN_MULUL, SH64_MEDIA_SFMT_ADD },
-  { SH_INSN_NOP, SH64_MEDIA_INSN_NOP, SH64_MEDIA_SFMT_ALLOCO },
+  { SH_INSN_NOP, SH64_MEDIA_INSN_NOP, SH64_MEDIA_SFMT_NOP },
   { SH_INSN_NSB, SH64_MEDIA_INSN_NSB, SH64_MEDIA_SFMT_BYTEREV },
   { SH_INSN_OCBI, SH64_MEDIA_INSN_OCBI, SH64_MEDIA_SFMT_ALLOCO },
   { SH_INSN_OCBP, SH64_MEDIA_INSN_OCBP, SH64_MEDIA_SFMT_ALLOCO },
   { SH_INSN_OCBWB, SH64_MEDIA_INSN_OCBWB, SH64_MEDIA_SFMT_ALLOCO },
   { SH_INSN_OR, SH64_MEDIA_INSN_OR, SH64_MEDIA_SFMT_ADD },
   { SH_INSN_ORI, SH64_MEDIA_INSN_ORI, SH64_MEDIA_SFMT_ORI },
-  { SH_INSN_PREFI, SH64_MEDIA_INSN_PREFI, SH64_MEDIA_SFMT_ALLOCO },
+  { SH_INSN_PREFI, SH64_MEDIA_INSN_PREFI, SH64_MEDIA_SFMT_PREFI },
   { SH_INSN_PTA, SH64_MEDIA_INSN_PTA, SH64_MEDIA_SFMT_PTA },
   { SH_INSN_PTABS, SH64_MEDIA_INSN_PTABS, SH64_MEDIA_SFMT_PTABS },
   { SH_INSN_PTB, SH64_MEDIA_INSN_PTB, SH64_MEDIA_SFMT_PTA },
   { SH_INSN_PTREL, SH64_MEDIA_INSN_PTREL, SH64_MEDIA_SFMT_PTREL },
-  { SH_INSN_PUTCFG, SH64_MEDIA_INSN_PUTCFG, SH64_MEDIA_SFMT_ALLOCO },
+  { SH_INSN_PUTCFG, SH64_MEDIA_INSN_PUTCFG, SH64_MEDIA_SFMT_PUTCFG },
   { SH_INSN_PUTCON, SH64_MEDIA_INSN_PUTCON, SH64_MEDIA_SFMT_PUTCON },
-  { SH_INSN_RTE, SH64_MEDIA_INSN_RTE, SH64_MEDIA_SFMT_ALLOCO },
+  { SH_INSN_RTE, SH64_MEDIA_INSN_RTE, SH64_MEDIA_SFMT_NOP },
   { SH_INSN_SHARD, SH64_MEDIA_INSN_SHARD, SH64_MEDIA_SFMT_ADD },
   { SH_INSN_SHARDL, SH64_MEDIA_INSN_SHARDL, SH64_MEDIA_SFMT_ADD },
   { SH_INSN_SHARI, SH64_MEDIA_INSN_SHARI, SH64_MEDIA_SFMT_SHARI },
-  { SH_INSN_SHARIL, SH64_MEDIA_INSN_SHARIL, SH64_MEDIA_SFMT_SHARIL },
+  { SH_INSN_SHARIL, SH64_MEDIA_INSN_SHARIL, SH64_MEDIA_SFMT_SHARI },
   { SH_INSN_SHLLD, SH64_MEDIA_INSN_SHLLD, SH64_MEDIA_SFMT_ADD },
   { SH_INSN_SHLLDL, SH64_MEDIA_INSN_SHLLDL, SH64_MEDIA_SFMT_ADD },
   { SH_INSN_SHLLI, SH64_MEDIA_INSN_SHLLI, SH64_MEDIA_SFMT_SHARI },
-  { SH_INSN_SHLLIL, SH64_MEDIA_INSN_SHLLIL, SH64_MEDIA_SFMT_SHARIL },
+  { SH_INSN_SHLLIL, SH64_MEDIA_INSN_SHLLIL, SH64_MEDIA_SFMT_SHARI },
   { SH_INSN_SHLRD, SH64_MEDIA_INSN_SHLRD, SH64_MEDIA_SFMT_ADD },
   { SH_INSN_SHLRDL, SH64_MEDIA_INSN_SHLRDL, SH64_MEDIA_SFMT_ADD },
   { SH_INSN_SHLRI, SH64_MEDIA_INSN_SHLRI, SH64_MEDIA_SFMT_SHARI },
-  { SH_INSN_SHLRIL, SH64_MEDIA_INSN_SHLRIL, SH64_MEDIA_SFMT_SHARIL },
+  { SH_INSN_SHLRIL, SH64_MEDIA_INSN_SHLRIL, SH64_MEDIA_SFMT_SHARI },
   { SH_INSN_SHORI, SH64_MEDIA_INSN_SHORI, SH64_MEDIA_SFMT_SHORI },
-  { SH_INSN_SLEEP, SH64_MEDIA_INSN_SLEEP, SH64_MEDIA_SFMT_ALLOCO },
+  { SH_INSN_SLEEP, SH64_MEDIA_INSN_SLEEP, SH64_MEDIA_SFMT_NOP },
   { SH_INSN_STB, SH64_MEDIA_INSN_STB, SH64_MEDIA_SFMT_STB },
   { SH_INSN_STL, SH64_MEDIA_INSN_STL, SH64_MEDIA_SFMT_STL },
   { SH_INSN_STQ, SH64_MEDIA_INSN_STQ, SH64_MEDIA_SFMT_STQ },
   { SH_INSN_STW, SH64_MEDIA_INSN_STW, SH64_MEDIA_SFMT_STW },
   { SH_INSN_STHIL, SH64_MEDIA_INSN_STHIL, SH64_MEDIA_SFMT_STHIL },
-  { SH_INSN_STHIQ, SH64_MEDIA_INSN_STHIQ, SH64_MEDIA_SFMT_STHIL },
-  { SH_INSN_STLOL, SH64_MEDIA_INSN_STLOL, SH64_MEDIA_SFMT_ALLOCO },
-  { SH_INSN_STLOQ, SH64_MEDIA_INSN_STLOQ, SH64_MEDIA_SFMT_ALLOCO },
+  { SH_INSN_STHIQ, SH64_MEDIA_INSN_STHIQ, SH64_MEDIA_SFMT_STHIQ },
+  { SH_INSN_STLOL, SH64_MEDIA_INSN_STLOL, SH64_MEDIA_SFMT_STLOL },
+  { SH_INSN_STLOQ, SH64_MEDIA_INSN_STLOQ, SH64_MEDIA_SFMT_STLOQ },
   { SH_INSN_STXB, SH64_MEDIA_INSN_STXB, SH64_MEDIA_SFMT_STXB },
-  { SH_INSN_STXL, SH64_MEDIA_INSN_STXL, SH64_MEDIA_SFMT_STXB },
-  { SH_INSN_STXQ, SH64_MEDIA_INSN_STXQ, SH64_MEDIA_SFMT_STXB },
-  { SH_INSN_STXW, SH64_MEDIA_INSN_STXW, SH64_MEDIA_SFMT_STXB },
+  { SH_INSN_STXL, SH64_MEDIA_INSN_STXL, SH64_MEDIA_SFMT_STXL },
+  { SH_INSN_STXQ, SH64_MEDIA_INSN_STXQ, SH64_MEDIA_SFMT_STXQ },
+  { SH_INSN_STXW, SH64_MEDIA_INSN_STXW, SH64_MEDIA_SFMT_STXW },
   { SH_INSN_SUB, SH64_MEDIA_INSN_SUB, SH64_MEDIA_SFMT_ADD },
   { SH_INSN_SUBL, SH64_MEDIA_INSN_SUBL, SH64_MEDIA_SFMT_ADD },
   { SH_INSN_SWAPQ, SH64_MEDIA_INSN_SWAPQ, SH64_MEDIA_SFMT_SWAPQ },
-  { SH_INSN_SYNCI, SH64_MEDIA_INSN_SYNCI, SH64_MEDIA_SFMT_ALLOCO },
-  { SH_INSN_SYNCO, SH64_MEDIA_INSN_SYNCO, SH64_MEDIA_SFMT_ALLOCO },
+  { SH_INSN_SYNCI, SH64_MEDIA_INSN_SYNCI, SH64_MEDIA_SFMT_NOP },
+  { SH_INSN_SYNCO, SH64_MEDIA_INSN_SYNCO, SH64_MEDIA_SFMT_NOP },
   { SH_INSN_TRAPA, SH64_MEDIA_INSN_TRAPA, SH64_MEDIA_SFMT_TRAPA },
   { SH_INSN_XOR, SH64_MEDIA_INSN_XOR, SH64_MEDIA_SFMT_ADD },
   { SH_INSN_XORI, SH64_MEDIA_INSN_XORI, SH64_MEDIA_SFMT_XORI },
 };
 
-static const struct insn_sem sh64_media_insn_sem_invalid = {
+static const struct insn_sem sh64_media_insn_sem_invalid =
+{
   VIRTUAL_INSN_X_INVALID, SH64_MEDIA_INSN_X_INVALID, SH64_MEDIA_SFMT_EMPTY
 };
 
@@ -295,7 +295,7 @@ sh64_media_init_idesc_table (SIM_CPU *cpu)
 {
   IDESC *id,*tabend;
   const struct insn_sem *t,*tend;
-  int tabsize = SH64_MEDIA_INSN_MAX;
+  int tabsize = SH64_MEDIA_INSN__MAX;
   IDESC *table = sh64_media_insn_data;
 
   memset (table, 0, tabsize * sizeof (IDESC));
@@ -306,7 +306,7 @@ sh64_media_init_idesc_table (SIM_CPU *cpu)
     init_idesc (cpu, id, t);
 
   /* Now fill in the values for the chosen cpu.  */
-  for (t = sh64_media_insn_sem, tend = t + sizeof (sh64_media_insn_sem) / sizeof (*t);
+  for (t = sh64_media_insn_sem, tend = t + ARRAY_SIZE (sh64_media_insn_sem);
        t != tend; ++t)
     {
       init_idesc (cpu, & table[t->index], t);
@@ -320,20 +320,656 @@ sh64_media_init_idesc_table (SIM_CPU *cpu)
 
 const IDESC *
 sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
-              CGEN_INSN_INT base_insn, CGEN_INSN_INT entire_insn,
+              CGEN_INSN_WORD base_insn, CGEN_INSN_WORD entire_insn,
               ARGBUF *abuf)
 {
   /* Result of decoder.  */
   SH64_MEDIA_INSN_TYPE itype;
 
   {
-    CGEN_INSN_INT insn = base_insn;
+    CGEN_INSN_WORD insn = base_insn;
 
     {
       unsigned int val = (((insn >> 22) & (63 << 4)) | ((insn >> 16) & (15 << 0)));
       switch (val)
       {
-      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 */
+      case 1 :
+        if ((entire_insn & 0xfc0f000f) == 0x10000)
+          { itype = SH64_MEDIA_INSN_CMPEQ; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 3 :
+        if ((entire_insn & 0xfc0f000f) == 0x30000)
+          { itype = SH64_MEDIA_INSN_CMPGT; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 7 :
+        if ((entire_insn & 0xfc0f000f) == 0x70000)
+          { itype = SH64_MEDIA_INSN_CMPGTU; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 8 :
+        if ((entire_insn & 0xfc0f000f) == 0x80000)
+          { itype = SH64_MEDIA_INSN_ADDL; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 9 :
+        if ((entire_insn & 0xfc0f000f) == 0x90000)
+          { itype = SH64_MEDIA_INSN_ADD; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 10 :
+        if ((entire_insn & 0xfc0f000f) == 0xa0000)
+          { itype = SH64_MEDIA_INSN_SUBL; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 11 :
+        if ((entire_insn & 0xfc0f000f) == 0xb0000)
+          { itype = SH64_MEDIA_INSN_SUB; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 12 :
+        if ((entire_insn & 0xfc0f000f) == 0xc0000)
+          { itype = SH64_MEDIA_INSN_ADDZL; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 13 :
+        if ((entire_insn & 0xfc0ffc0f) == 0xdfc00)
+          { itype = SH64_MEDIA_INSN_NSB; goto extract_sfmt_byterev; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 14 :
+        if ((entire_insn & 0xfc0f000f) == 0xe0000)
+          { itype = SH64_MEDIA_INSN_MULUL; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 15 :
+        if ((entire_insn & 0xfc0ffc0f) == 0xffc00)
+          { itype = SH64_MEDIA_INSN_BYTEREV; goto extract_sfmt_byterev; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 16 :
+        if ((entire_insn & 0xfc0f000f) == 0x4000000)
+          { itype = SH64_MEDIA_INSN_SHLLDL; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 17 :
+        if ((entire_insn & 0xfc0f000f) == 0x4010000)
+          { itype = SH64_MEDIA_INSN_SHLLD; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 18 :
+        if ((entire_insn & 0xfc0f000f) == 0x4020000)
+          { itype = SH64_MEDIA_INSN_SHLRDL; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 19 :
+        if ((entire_insn & 0xfc0f000f) == 0x4030000)
+          { itype = SH64_MEDIA_INSN_SHLRD; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 22 :
+        if ((entire_insn & 0xfc0f000f) == 0x4060000)
+          { itype = SH64_MEDIA_INSN_SHARDL; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 23 :
+        if ((entire_insn & 0xfc0f000f) == 0x4070000)
+          { itype = SH64_MEDIA_INSN_SHARD; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 25 :
+        if ((entire_insn & 0xfc0f000f) == 0x4090000)
+          { itype = SH64_MEDIA_INSN_OR; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 27 :
+        if ((entire_insn & 0xfc0f000f) == 0x40b0000)
+          { itype = SH64_MEDIA_INSN_AND; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 29 :
+        if ((entire_insn & 0xfc0f000f) == 0x40d0000)
+          { itype = SH64_MEDIA_INSN_XOR; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 30 :
+        if ((entire_insn & 0xfc0f000f) == 0x40e0000)
+          { itype = SH64_MEDIA_INSN_MULSL; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 31 :
+        if ((entire_insn & 0xfc0f000f) == 0x40f0000)
+          { itype = SH64_MEDIA_INSN_ANDC; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 33 :
+        if ((entire_insn & 0xfc0f000f) == 0x8010000)
+          { itype = SH64_MEDIA_INSN_MADDW; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 34 :
+        if ((entire_insn & 0xfc0f000f) == 0x8020000)
+          { itype = SH64_MEDIA_INSN_MADDL; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 36 :
+        if ((entire_insn & 0xfc0f000f) == 0x8040000)
+          { itype = SH64_MEDIA_INSN_MADDSUB; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 37 :
+        if ((entire_insn & 0xfc0f000f) == 0x8050000)
+          { itype = SH64_MEDIA_INSN_MADDSW; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 38 :
+        if ((entire_insn & 0xfc0f000f) == 0x8060000)
+          { itype = SH64_MEDIA_INSN_MADDSL; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 41 :
+        if ((entire_insn & 0xfc0f000f) == 0x8090000)
+          { itype = SH64_MEDIA_INSN_MSUBW; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 42 :
+        if ((entire_insn & 0xfc0f000f) == 0x80a0000)
+          { itype = SH64_MEDIA_INSN_MSUBL; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 44 :
+        if ((entire_insn & 0xfc0f000f) == 0x80c0000)
+          { itype = SH64_MEDIA_INSN_MSUBSUB; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 45 :
+        if ((entire_insn & 0xfc0f000f) == 0x80d0000)
+          { itype = SH64_MEDIA_INSN_MSUBSW; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 46 :
+        if ((entire_insn & 0xfc0f000f) == 0x80e0000)
+          { itype = SH64_MEDIA_INSN_MSUBSL; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 49 :
+        if ((entire_insn & 0xfc0f000f) == 0xc010000)
+          { itype = SH64_MEDIA_INSN_MSHLLDW; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 50 :
+        if ((entire_insn & 0xfc0f000f) == 0xc020000)
+          { itype = SH64_MEDIA_INSN_MSHLLDL; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 53 :
+        if ((entire_insn & 0xfc0f000f) == 0xc050000)
+          { itype = SH64_MEDIA_INSN_MSHALDSW; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 54 :
+        if ((entire_insn & 0xfc0f000f) == 0xc060000)
+          { itype = SH64_MEDIA_INSN_MSHALDSL; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 57 :
+        if ((entire_insn & 0xfc0f000f) == 0xc090000)
+          { itype = SH64_MEDIA_INSN_MSHARDW; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 58 :
+        if ((entire_insn & 0xfc0f000f) == 0xc0a0000)
+          { itype = SH64_MEDIA_INSN_MSHARDL; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 59 :
+        if ((entire_insn & 0xfc0f000f) == 0xc0b0000)
+          { itype = SH64_MEDIA_INSN_MSHARDSQ; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 61 :
+        if ((entire_insn & 0xfc0f000f) == 0xc0d0000)
+          { itype = SH64_MEDIA_INSN_MSHLRDW; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 62 :
+        if ((entire_insn & 0xfc0f000f) == 0xc0e0000)
+          { itype = SH64_MEDIA_INSN_MSHLRDL; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 86 :
+        if ((entire_insn & 0xfc0f000f) == 0x14060000)
+          { itype = SH64_MEDIA_INSN_FIPRS; goto extract_sfmt_fiprs; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 94 :
+        if ((entire_insn & 0xfc0f000f) == 0x140e0000)
+          { itype = SH64_MEDIA_INSN_FTRVS; goto extract_sfmt_ftrvs; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 96 :
+        if ((entire_insn & 0xfc0f000f) == 0x18000000)
+          { itype = SH64_MEDIA_INSN_FABSS; goto extract_sfmt_fabss; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 97 :
+        if ((entire_insn & 0xfc0f000f) == 0x18010000)
+          { itype = SH64_MEDIA_INSN_FABSD; goto extract_sfmt_fabsd; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 98 :
+        if ((entire_insn & 0xfc0f000f) == 0x18020000)
+          { itype = SH64_MEDIA_INSN_FNEGS; goto extract_sfmt_fabss; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 99 :
+        if ((entire_insn & 0xfc0f000f) == 0x18030000)
+          { itype = SH64_MEDIA_INSN_FNEGD; goto extract_sfmt_fabsd; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 112 :
+        if ((entire_insn & 0xfc0ffc0f) == 0x1c00fc00)
+          { itype = SH64_MEDIA_INSN_FMOVLS; goto extract_sfmt_fmovls; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 113 :
+        if ((entire_insn & 0xfc0ffc0f) == 0x1c01fc00)
+          { itype = SH64_MEDIA_INSN_FMOVQD; goto extract_sfmt_fmovqd; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 114 :
+        if ((entire_insn & 0xfffffc0f) == 0x1ff2fc00)
+          { itype = SH64_MEDIA_INSN_FGETSCR; goto extract_sfmt_fgetscr; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 120 :
+        if ((entire_insn & 0xfc0f000f) == 0x1c080000)
+          { itype = SH64_MEDIA_INSN_FLDXS; goto extract_sfmt_fldxs; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 121 :
+        if ((entire_insn & 0xfc0f000f) == 0x1c090000)
+          { itype = SH64_MEDIA_INSN_FLDXD; goto extract_sfmt_fldxd; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 125 :
+        if ((entire_insn & 0xfc0f000f) == 0x1c0d0000)
+          { itype = SH64_MEDIA_INSN_FLDXP; goto extract_sfmt_fldxp; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 129 :
+        if ((entire_insn & 0xfc0f000f) == 0x20010000)
+          { itype = SH64_MEDIA_INSN_CMVEQ; goto extract_sfmt_cmveq; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 131 :
+        if ((entire_insn & 0xfc0f000f) == 0x20030000)
+          { itype = SH64_MEDIA_INSN_SWAPQ; goto extract_sfmt_swapq; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 133 :
+        if ((entire_insn & 0xfc0f000f) == 0x20050000)
+          { itype = SH64_MEDIA_INSN_CMVNE; goto extract_sfmt_cmveq; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 159 :
+        if ((entire_insn & 0xfc0ffc0f) == 0x240ffc00)
+          { itype = SH64_MEDIA_INSN_GETCON; goto extract_sfmt_getcon; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 160 :
+        if ((entire_insn & 0xfc0f000f) == 0x28000000)
+          { itype = SH64_MEDIA_INSN_MCMPEQB; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 161 :
+        if ((entire_insn & 0xfc0f000f) == 0x28010000)
+          { itype = SH64_MEDIA_INSN_MCMPEQW; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 162 :
+        if ((entire_insn & 0xfc0f000f) == 0x28020000)
+          { itype = SH64_MEDIA_INSN_MCMPEQL; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 164 :
+        if ((entire_insn & 0xfc0f000f) == 0x28040000)
+          { itype = SH64_MEDIA_INSN_MCMPGTUB; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 165 :
+        if ((entire_insn & 0xfc0f000f) == 0x28050000)
+          { itype = SH64_MEDIA_INSN_MCMPGTW; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 166 :
+        if ((entire_insn & 0xfc0f000f) == 0x28060000)
+          { itype = SH64_MEDIA_INSN_MCMPGTL; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 167 :
+        if ((entire_insn & 0xfc0f000f) == 0x28070000)
+          { itype = SH64_MEDIA_INSN_MEXTR1; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 169 :
+        if ((entire_insn & 0xfc0ffc0f) == 0x2809fc00)
+          { itype = SH64_MEDIA_INSN_MABSW; goto extract_sfmt_byterev; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 170 :
+        if ((entire_insn & 0xfc0ffc0f) == 0x280afc00)
+          { itype = SH64_MEDIA_INSN_MABSL; goto extract_sfmt_byterev; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 171 :
+        if ((entire_insn & 0xfc0f000f) == 0x280b0000)
+          { itype = SH64_MEDIA_INSN_MEXTR2; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 173 :
+        if ((entire_insn & 0xfc0f000f) == 0x280d0000)
+          { itype = SH64_MEDIA_INSN_MPERMW; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 175 :
+        if ((entire_insn & 0xfc0f000f) == 0x280f0000)
+          { itype = SH64_MEDIA_INSN_MEXTR3; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 176 :
+        if ((entire_insn & 0xfc0f000f) == 0x2c000000)
+          { itype = SH64_MEDIA_INSN_MSHFLOB; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 177 :
+        if ((entire_insn & 0xfc0f000f) == 0x2c010000)
+          { itype = SH64_MEDIA_INSN_MSHFLOW; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 178 :
+        if ((entire_insn & 0xfc0f000f) == 0x2c020000)
+          { itype = SH64_MEDIA_INSN_MSHFLOL; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 179 :
+        if ((entire_insn & 0xfc0f000f) == 0x2c030000)
+          { itype = SH64_MEDIA_INSN_MEXTR4; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 180 :
+        if ((entire_insn & 0xfc0f000f) == 0x2c040000)
+          { itype = SH64_MEDIA_INSN_MSHFHIB; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 181 :
+        if ((entire_insn & 0xfc0f000f) == 0x2c050000)
+          { itype = SH64_MEDIA_INSN_MSHFHIW; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 182 :
+        if ((entire_insn & 0xfc0f000f) == 0x2c060000)
+          { itype = SH64_MEDIA_INSN_MSHFHIL; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 183 :
+        if ((entire_insn & 0xfc0f000f) == 0x2c070000)
+          { itype = SH64_MEDIA_INSN_MEXTR5; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 187 :
+        if ((entire_insn & 0xfc0f000f) == 0x2c0b0000)
+          { itype = SH64_MEDIA_INSN_MEXTR6; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 191 :
+        if ((entire_insn & 0xfc0f000f) == 0x2c0f0000)
+          { itype = SH64_MEDIA_INSN_MEXTR7; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 192 :
+        if ((entire_insn & 0xfc0f000f) == 0x30000000)
+          { itype = SH64_MEDIA_INSN_FMOVSL; goto extract_sfmt_fmovsl; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 193 :
+        if ((entire_insn & 0xfc0f000f) == 0x30010000)
+          { itype = SH64_MEDIA_INSN_FMOVDQ; goto extract_sfmt_fmovdq; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 194 :
+        if ((entire_insn & 0xfc0f03ff) == 0x300203f0)
+          { itype = SH64_MEDIA_INSN_FPUTSCR; goto extract_sfmt_fputscr; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 200 :
+        if ((entire_insn & 0xfc0f000f) == 0x30080000)
+          { itype = SH64_MEDIA_INSN_FCMPEQS; goto extract_sfmt_fcmpeqs; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 201 :
+        if ((entire_insn & 0xfc0f000f) == 0x30090000)
+          { itype = SH64_MEDIA_INSN_FCMPEQD; goto extract_sfmt_fcmpeqd; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 202 :
+        if ((entire_insn & 0xfc0f000f) == 0x300a0000)
+          { itype = SH64_MEDIA_INSN_FCMPUNS; goto extract_sfmt_fcmpeqs; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 203 :
+        if ((entire_insn & 0xfc0f000f) == 0x300b0000)
+          { itype = SH64_MEDIA_INSN_FCMPUND; goto extract_sfmt_fcmpeqd; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 204 :
+        if ((entire_insn & 0xfc0f000f) == 0x300c0000)
+          { itype = SH64_MEDIA_INSN_FCMPGTS; goto extract_sfmt_fcmpeqs; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 205 :
+        if ((entire_insn & 0xfc0f000f) == 0x300d0000)
+          { itype = SH64_MEDIA_INSN_FCMPGTD; goto extract_sfmt_fcmpeqd; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 206 :
+        if ((entire_insn & 0xfc0f000f) == 0x300e0000)
+          { itype = SH64_MEDIA_INSN_FCMPGES; goto extract_sfmt_fcmpeqs; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 207 :
+        if ((entire_insn & 0xfc0f000f) == 0x300f0000)
+          { itype = SH64_MEDIA_INSN_FCMPGED; goto extract_sfmt_fcmpeqd; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 208 :
+        if ((entire_insn & 0xfc0f000f) == 0x34000000)
+          { itype = SH64_MEDIA_INSN_FADDS; goto extract_sfmt_fadds; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 209 :
+        if ((entire_insn & 0xfc0f000f) == 0x34010000)
+          { itype = SH64_MEDIA_INSN_FADDD; goto extract_sfmt_faddd; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 210 :
+        if ((entire_insn & 0xfc0f000f) == 0x34020000)
+          { itype = SH64_MEDIA_INSN_FSUBS; goto extract_sfmt_fadds; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 211 :
+        if ((entire_insn & 0xfc0f000f) == 0x34030000)
+          { itype = SH64_MEDIA_INSN_FSUBD; goto extract_sfmt_fsubd; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 212 :
+        if ((entire_insn & 0xfc0f000f) == 0x34040000)
+          { itype = SH64_MEDIA_INSN_FDIVS; goto extract_sfmt_fadds; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 213 :
+        if ((entire_insn & 0xfc0f000f) == 0x34050000)
+          { itype = SH64_MEDIA_INSN_FDIVD; goto extract_sfmt_faddd; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 214 :
+        if ((entire_insn & 0xfc0f000f) == 0x34060000)
+          { itype = SH64_MEDIA_INSN_FMULS; goto extract_sfmt_fadds; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 215 :
+        if ((entire_insn & 0xfc0f000f) == 0x34070000)
+          { itype = SH64_MEDIA_INSN_FMULD; goto extract_sfmt_faddd; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 222 :
+        if ((entire_insn & 0xfc0f000f) == 0x340e0000)
+          { itype = SH64_MEDIA_INSN_FMACS; goto extract_sfmt_fmacs; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 224 :
+        if ((entire_insn & 0xfc0f000f) == 0x38000000)
+          { itype = SH64_MEDIA_INSN_FMOVS; goto extract_sfmt_fabss; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 225 :
+        if ((entire_insn & 0xfc0f000f) == 0x38010000)
+          { itype = SH64_MEDIA_INSN_FMOVD; goto extract_sfmt_fabsd; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 228 :
+        if ((entire_insn & 0xfc0f000f) == 0x38040000)
+          { itype = SH64_MEDIA_INSN_FSQRTS; goto extract_sfmt_fabss; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 229 :
+        if ((entire_insn & 0xfc0f000f) == 0x38050000)
+          { itype = SH64_MEDIA_INSN_FSQRTD; goto extract_sfmt_fabsd; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 230 :
+        if ((entire_insn & 0xfc0f000f) == 0x38060000)
+          { itype = SH64_MEDIA_INSN_FCNVSD; goto extract_sfmt_fcnvsd; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 231 :
+        if ((entire_insn & 0xfc0f000f) == 0x38070000)
+          { itype = SH64_MEDIA_INSN_FCNVDS; goto extract_sfmt_fcnvds; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 232 :
+        if ((entire_insn & 0xfc0f000f) == 0x38080000)
+          { itype = SH64_MEDIA_INSN_FTRCSL; goto extract_sfmt_fabss; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 233 :
+        if ((entire_insn & 0xfc0f000f) == 0x38090000)
+          { itype = SH64_MEDIA_INSN_FTRCDQ; goto extract_sfmt_ftrcdq; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 234 :
+        if ((entire_insn & 0xfc0f000f) == 0x380a0000)
+          { itype = SH64_MEDIA_INSN_FTRCSQ; goto extract_sfmt_fcnvsd; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 235 :
+        if ((entire_insn & 0xfc0f000f) == 0x380b0000)
+          { itype = SH64_MEDIA_INSN_FTRCDL; goto extract_sfmt_fcnvds; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 236 :
+        if ((entire_insn & 0xfc0f000f) == 0x380c0000)
+          { itype = SH64_MEDIA_INSN_FLOATLS; goto extract_sfmt_fabss; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 237 :
+        if ((entire_insn & 0xfc0f000f) == 0x380d0000)
+          { itype = SH64_MEDIA_INSN_FLOATQD; goto extract_sfmt_fabsd; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 238 :
+        if ((entire_insn & 0xfc0f000f) == 0x380e0000)
+          { itype = SH64_MEDIA_INSN_FLOATLD; goto extract_sfmt_fcnvsd; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 239 :
+        if ((entire_insn & 0xfc0f000f) == 0x380f0000)
+          { itype = SH64_MEDIA_INSN_FLOATQS; goto extract_sfmt_fcnvds; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 248 :
+        if ((entire_insn & 0xfc0f000f) == 0x3c080000)
+          { itype = SH64_MEDIA_INSN_FSTXS; goto extract_sfmt_fstxs; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 249 :
+        if ((entire_insn & 0xfc0f000f) == 0x3c090000)
+          { itype = SH64_MEDIA_INSN_FSTXD; goto extract_sfmt_fstxd; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 253 :
+        if ((entire_insn & 0xfc0f000f) == 0x3c0d0000)
+          { itype = SH64_MEDIA_INSN_FSTXP; goto extract_sfmt_fldxp; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 256 :
+        if ((entire_insn & 0xfc0f000f) == 0x40000000)
+          { itype = SH64_MEDIA_INSN_LDXB; goto extract_sfmt_ldxb; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 257 :
+        if ((entire_insn & 0xfc0f000f) == 0x40010000)
+          { itype = SH64_MEDIA_INSN_LDXW; goto extract_sfmt_ldxw; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 258 :
+        if ((entire_insn & 0xfc0f000f) == 0x40020000)
+          { itype = SH64_MEDIA_INSN_LDXL; goto extract_sfmt_ldxl; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 259 :
+        if ((entire_insn & 0xfc0f000f) == 0x40030000)
+          { itype = SH64_MEDIA_INSN_LDXQ; goto extract_sfmt_ldxq; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 260 :
+        if ((entire_insn & 0xfc0f000f) == 0x40040000)
+          { itype = SH64_MEDIA_INSN_LDXUB; goto extract_sfmt_ldxub; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 261 :
+        if ((entire_insn & 0xfc0f000f) == 0x40050000)
+          { itype = SH64_MEDIA_INSN_LDXUW; goto extract_sfmt_ldxuw; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 273 :
+        if ((entire_insn & 0xff8ffc0f) == 0x4401fc00)
+          { itype = SH64_MEDIA_INSN_BLINK; goto extract_sfmt_blink; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 277 :
+        if ((entire_insn & 0xff8ffc0f) == 0x4405fc00)
+          { itype = SH64_MEDIA_INSN_GETTR; goto extract_sfmt_gettr; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 288 :
+        if ((entire_insn & 0xfc0f000f) == 0x48000000)
+          { itype = SH64_MEDIA_INSN_MSADUBQ; goto extract_sfmt_mcmv; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 289 :
+        if ((entire_insn & 0xfc0f000f) == 0x48010000)
+          { itype = SH64_MEDIA_INSN_MMACFXWL; goto extract_sfmt_mcmv; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 291 :
+        if ((entire_insn & 0xfc0f000f) == 0x48030000)
+          { itype = SH64_MEDIA_INSN_MCMV; goto extract_sfmt_mcmv; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 293 :
+        if ((entire_insn & 0xfc0f000f) == 0x48050000)
+          { itype = SH64_MEDIA_INSN_MMACNFX_WL; goto extract_sfmt_mmacnfx_wl; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 297 :
+        if ((entire_insn & 0xfc0f000f) == 0x48090000)
+          { itype = SH64_MEDIA_INSN_MMULSUMWQ; goto extract_sfmt_mcmv; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 305 :
+        if ((entire_insn & 0xfc0f000f) == 0x4c010000)
+          { itype = SH64_MEDIA_INSN_MMULW; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 306 :
+        if ((entire_insn & 0xfc0f000f) == 0x4c020000)
+          { itype = SH64_MEDIA_INSN_MMULL; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 309 :
+        if ((entire_insn & 0xfc0f000f) == 0x4c050000)
+          { itype = SH64_MEDIA_INSN_MMULFXW; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 310 :
+        if ((entire_insn & 0xfc0f000f) == 0x4c060000)
+          { itype = SH64_MEDIA_INSN_MMULFXL; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 312 :
+        if ((entire_insn & 0xfc0f000f) == 0x4c080000)
+          { itype = SH64_MEDIA_INSN_MCNVSWB; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 313 :
+        if ((entire_insn & 0xfc0f000f) == 0x4c090000)
+          { itype = SH64_MEDIA_INSN_MMULFXRPW; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 314 :
+        if ((entire_insn & 0xfc0f000f) == 0x4c0a0000)
+          { itype = SH64_MEDIA_INSN_MMULLOWL; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 316 :
+        if ((entire_insn & 0xfc0f000f) == 0x4c0c0000)
+          { itype = SH64_MEDIA_INSN_MCNVSWUB; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 317 :
+        if ((entire_insn & 0xfc0f000f) == 0x4c0d0000)
+          { itype = SH64_MEDIA_INSN_MCNVSLW; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 318 :
+        if ((entire_insn & 0xfc0f000f) == 0x4c0e0000)
+          { itype = SH64_MEDIA_INSN_MMULHIWL; goto extract_sfmt_add; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 384 :
+        if ((entire_insn & 0xfc0f000f) == 0x60000000)
+          { itype = SH64_MEDIA_INSN_STXB; goto extract_sfmt_stxb; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 385 :
+        if ((entire_insn & 0xfc0f000f) == 0x60010000)
+          { itype = SH64_MEDIA_INSN_STXW; goto extract_sfmt_stxw; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 386 :
+        if ((entire_insn & 0xfc0f000f) == 0x60020000)
+          { itype = SH64_MEDIA_INSN_STXL; goto extract_sfmt_stxl; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 387 :
+        if ((entire_insn & 0xfc0f000f) == 0x60030000)
+          { itype = SH64_MEDIA_INSN_STXQ; goto extract_sfmt_stxq; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 401 :
+        if ((entire_insn & 0xfc0f018f) == 0x64010000)
+          { itype = SH64_MEDIA_INSN_BEQ; goto extract_sfmt_beq; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 403 :
+        if ((entire_insn & 0xfc0f018f) == 0x64030000)
+          { itype = SH64_MEDIA_INSN_BGE; goto extract_sfmt_beq; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 405 :
+        if ((entire_insn & 0xfc0f018f) == 0x64050000)
+          { itype = SH64_MEDIA_INSN_BNE; goto extract_sfmt_beq; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 407 :
+        if ((entire_insn & 0xfc0f018f) == 0x64070000)
+          { itype = SH64_MEDIA_INSN_BGT; goto extract_sfmt_beq; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 411 :
+        if ((entire_insn & 0xfc0f018f) == 0x640b0000)
+          { itype = SH64_MEDIA_INSN_BGEU; goto extract_sfmt_beq; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 415 :
+        if ((entire_insn & 0xfc0f018f) == 0x640f0000)
+          { itype = SH64_MEDIA_INSN_BGTU; goto extract_sfmt_beq; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 417 :
+        if ((entire_insn & 0xffff018f) == 0x6bf10000)
+          { itype = SH64_MEDIA_INSN_PTABS; goto extract_sfmt_ptabs; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 421 :
+        if ((entire_insn & 0xffff018f) == 0x6bf50000)
+          { itype = SH64_MEDIA_INSN_PTREL; goto extract_sfmt_ptrel; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 432 :
+        if ((entire_insn & 0xffffffff) == 0x6ff0fff0)
+          { itype = SH64_MEDIA_INSN_NOP; goto extract_sfmt_nop; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 433 :
+        if ((entire_insn & 0xfc0fffff) == 0x6c01fff0)
+          { itype = SH64_MEDIA_INSN_TRAPA; goto extract_sfmt_trapa; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 434 :
+        if ((entire_insn & 0xffffffff) == 0x6ff2fff0)
+          { itype = SH64_MEDIA_INSN_SYNCI; goto extract_sfmt_nop; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 435 :
+        if ((entire_insn & 0xffffffff) == 0x6ff3fff0)
+          { itype = SH64_MEDIA_INSN_RTE; goto extract_sfmt_nop; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 437 :
+        if ((entire_insn & 0xffffffff) == 0x6ff5fff0)
+          { itype = SH64_MEDIA_INSN_BRK; goto extract_sfmt_brk; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 438 :
+        if ((entire_insn & 0xffffffff) == 0x6ff6fff0)
+          { itype = SH64_MEDIA_INSN_SYNCO; goto extract_sfmt_nop; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 439 :
+        if ((entire_insn & 0xffffffff) == 0x6ff7fff0)
+          { itype = SH64_MEDIA_INSN_SLEEP; goto extract_sfmt_nop; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 447 :
+        if ((entire_insn & 0xfc0ffc0f) == 0x6c0ffc00)
+          { itype = SH64_MEDIA_INSN_PUTCON; goto extract_sfmt_putcon; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 512 : /* fall through */
       case 513 : /* fall through */
       case 514 : /* fall through */
       case 515 : /* fall through */
@@ -348,7 +984,11 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
       case 524 : /* fall through */
       case 525 : /* fall through */
       case 526 : /* fall through */
-      case 527 : itype = SH64_MEDIA_INSN_LDB; goto extract_sfmt_ldb;      case 528 : /* fall through */
+      case 527 :
+        if ((entire_insn & 0xfc00000f) == 0x80000000)
+          { itype = SH64_MEDIA_INSN_LDB; goto extract_sfmt_ldb; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 528 : /* fall through */
       case 529 : /* fall through */
       case 530 : /* fall through */
       case 531 : /* fall through */
@@ -363,7 +1003,11 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
       case 540 : /* fall through */
       case 541 : /* fall through */
       case 542 : /* fall through */
-      case 543 : itype = SH64_MEDIA_INSN_LDW; goto extract_sfmt_lduw;      case 544 : /* fall through */
+      case 543 :
+        if ((entire_insn & 0xfc00000f) == 0x84000000)
+          { itype = SH64_MEDIA_INSN_LDW; goto extract_sfmt_lduw; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 544 : /* fall through */
       case 545 : /* fall through */
       case 546 : /* fall through */
       case 547 : /* fall through */
@@ -378,7 +1022,11 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
       case 556 : /* fall through */
       case 557 : /* fall through */
       case 558 : /* fall through */
-      case 559 : itype = SH64_MEDIA_INSN_LDL; goto extract_sfmt_ldl;      case 560 : /* fall through */
+      case 559 :
+        if ((entire_insn & 0xfc00000f) == 0x88000000)
+          { itype = SH64_MEDIA_INSN_LDL; goto extract_sfmt_ldl; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 560 : /* fall through */
       case 561 : /* fall through */
       case 562 : /* fall through */
       case 563 : /* fall through */
@@ -393,7 +1041,11 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
       case 572 : /* fall through */
       case 573 : /* fall through */
       case 574 : /* fall through */
-      case 575 : itype = SH64_MEDIA_INSN_LDQ; goto extract_sfmt_ldq;      case 576 : /* fall through */
+      case 575 :
+        if ((entire_insn & 0xfc00000f) == 0x8c000000)
+          { itype = SH64_MEDIA_INSN_LDQ; goto extract_sfmt_ldq; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 576 : /* fall through */
       case 577 : /* fall through */
       case 578 : /* fall through */
       case 579 : /* fall through */
@@ -408,7 +1060,11 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
       case 588 : /* fall through */
       case 589 : /* fall through */
       case 590 : /* fall through */
-      case 591 : itype = SH64_MEDIA_INSN_LDUB; goto extract_sfmt_ldb;      case 592 : /* fall through */
+      case 591 :
+        if ((entire_insn & 0xfc00000f) == 0x90000000)
+          { itype = SH64_MEDIA_INSN_LDUB; goto extract_sfmt_ldb; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 592 : /* fall through */
       case 593 : /* fall through */
       case 594 : /* fall through */
       case 595 : /* fall through */
@@ -423,7 +1079,11 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
       case 604 : /* fall through */
       case 605 : /* fall through */
       case 606 : /* fall through */
-      case 607 : itype = SH64_MEDIA_INSN_FLDS; goto extract_sfmt_flds;      case 608 : /* fall through */
+      case 607 :
+        if ((entire_insn & 0xfc00000f) == 0x94000000)
+          { itype = SH64_MEDIA_INSN_FLDS; goto extract_sfmt_flds; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 608 : /* fall through */
       case 609 : /* fall through */
       case 610 : /* fall through */
       case 611 : /* fall through */
@@ -438,7 +1098,11 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
       case 620 : /* fall through */
       case 621 : /* fall through */
       case 622 : /* fall through */
-      case 623 : itype = SH64_MEDIA_INSN_FLDP; goto extract_sfmt_fldp;      case 624 : /* fall through */
+      case 623 :
+        if ((entire_insn & 0xfc00000f) == 0x98000000)
+          { itype = SH64_MEDIA_INSN_FLDP; goto extract_sfmt_fldp; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 624 : /* fall through */
       case 625 : /* fall through */
       case 626 : /* fall through */
       case 627 : /* fall through */
@@ -453,7 +1117,11 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
       case 636 : /* fall through */
       case 637 : /* fall through */
       case 638 : /* fall through */
-      case 639 : itype = SH64_MEDIA_INSN_FLDD; goto extract_sfmt_fldd;      case 640 : /* fall through */
+      case 639 :
+        if ((entire_insn & 0xfc00000f) == 0x9c000000)
+          { itype = SH64_MEDIA_INSN_FLDD; goto extract_sfmt_fldd; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 640 : /* fall through */
       case 641 : /* fall through */
       case 642 : /* fall through */
       case 643 : /* fall through */
@@ -468,7 +1136,11 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
       case 652 : /* fall through */
       case 653 : /* fall through */
       case 654 : /* fall through */
-      case 655 : itype = SH64_MEDIA_INSN_STB; goto extract_sfmt_stb;      case 656 : /* fall through */
+      case 655 :
+        if ((entire_insn & 0xfc00000f) == 0xa0000000)
+          { itype = SH64_MEDIA_INSN_STB; goto extract_sfmt_stb; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 656 : /* fall through */
       case 657 : /* fall through */
       case 658 : /* fall through */
       case 659 : /* fall through */
@@ -483,7 +1155,11 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
       case 668 : /* fall through */
       case 669 : /* fall through */
       case 670 : /* fall through */
-      case 671 : itype = SH64_MEDIA_INSN_STW; goto extract_sfmt_stw;      case 672 : /* fall through */
+      case 671 :
+        if ((entire_insn & 0xfc00000f) == 0xa4000000)
+          { itype = SH64_MEDIA_INSN_STW; goto extract_sfmt_stw; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 672 : /* fall through */
       case 673 : /* fall through */
       case 674 : /* fall through */
       case 675 : /* fall through */
@@ -498,7 +1174,11 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
       case 684 : /* fall through */
       case 685 : /* fall through */
       case 686 : /* fall through */
-      case 687 : itype = SH64_MEDIA_INSN_STL; goto extract_sfmt_stl;      case 688 : /* fall through */
+      case 687 :
+        if ((entire_insn & 0xfc00000f) == 0xa8000000)
+          { itype = SH64_MEDIA_INSN_STL; goto extract_sfmt_stl; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 688 : /* fall through */
       case 689 : /* fall through */
       case 690 : /* fall through */
       case 691 : /* fall through */
@@ -513,7 +1193,11 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
       case 700 : /* fall through */
       case 701 : /* fall through */
       case 702 : /* fall through */
-      case 703 : itype = SH64_MEDIA_INSN_STQ; goto extract_sfmt_stq;      case 704 : /* fall through */
+      case 703 :
+        if ((entire_insn & 0xfc00000f) == 0xac000000)
+          { itype = SH64_MEDIA_INSN_STQ; goto extract_sfmt_stq; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 704 : /* fall through */
       case 705 : /* fall through */
       case 706 : /* fall through */
       case 707 : /* fall through */
@@ -528,7 +1212,11 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
       case 716 : /* fall through */
       case 717 : /* fall through */
       case 718 : /* fall through */
-      case 719 : itype = SH64_MEDIA_INSN_LDUW; goto extract_sfmt_lduw;      case 720 : /* fall through */
+      case 719 :
+        if ((entire_insn & 0xfc00000f) == 0xb0000000)
+          { itype = SH64_MEDIA_INSN_LDUW; goto extract_sfmt_lduw; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 720 : /* fall through */
       case 721 : /* fall through */
       case 722 : /* fall through */
       case 723 : /* fall through */
@@ -543,7 +1231,11 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
       case 732 : /* fall through */
       case 733 : /* fall through */
       case 734 : /* fall through */
-      case 735 : itype = SH64_MEDIA_INSN_FSTS; goto extract_sfmt_fsts;      case 736 : /* fall through */
+      case 735 :
+        if ((entire_insn & 0xfc00000f) == 0xb4000000)
+          { itype = SH64_MEDIA_INSN_FSTS; goto extract_sfmt_fsts; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 736 : /* fall through */
       case 737 : /* fall through */
       case 738 : /* fall through */
       case 739 : /* fall through */
@@ -558,7 +1250,11 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
       case 748 : /* fall through */
       case 749 : /* fall through */
       case 750 : /* fall through */
-      case 751 : itype = SH64_MEDIA_INSN_FSTP; goto extract_sfmt_fstp;      case 752 : /* fall through */
+      case 751 :
+        if ((entire_insn & 0xfc00000f) == 0xb8000000)
+          { itype = SH64_MEDIA_INSN_FSTP; goto extract_sfmt_fldp; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 752 : /* fall through */
       case 753 : /* fall through */
       case 754 : /* fall through */
       case 755 : /* fall through */
@@ -573,7 +1269,59 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
       case 764 : /* fall through */
       case 765 : /* fall through */
       case 766 : /* fall through */
-      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 */
+      case 767 :
+        if ((entire_insn & 0xfc00000f) == 0xbc000000)
+          { itype = SH64_MEDIA_INSN_FSTD; goto extract_sfmt_fstd; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 770 :
+        if ((entire_insn & 0xfc0f000f) == 0xc0020000)
+          { itype = SH64_MEDIA_INSN_LDLOL; goto extract_sfmt_ldlol; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 771 :
+        if ((entire_insn & 0xfc0f000f) == 0xc0030000)
+          { itype = SH64_MEDIA_INSN_LDLOQ; goto extract_sfmt_ldloq; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 774 :
+        if ((entire_insn & 0xfc0f000f) == 0xc0060000)
+          { itype = SH64_MEDIA_INSN_LDHIL; goto extract_sfmt_ldhil; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 775 :
+        if ((entire_insn & 0xfc0f000f) == 0xc0070000)
+          { itype = SH64_MEDIA_INSN_LDHIQ; goto extract_sfmt_ldhiq; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 783 :
+        if ((entire_insn & 0xfc0f000f) == 0xc00f0000)
+          { itype = SH64_MEDIA_INSN_GETCFG; goto extract_sfmt_getcfg; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 784 :
+        if ((entire_insn & 0xfc0f000f) == 0xc4000000)
+          { itype = SH64_MEDIA_INSN_SHLLIL; goto extract_sfmt_shari; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 785 :
+        if ((entire_insn & 0xfc0f000f) == 0xc4010000)
+          { itype = SH64_MEDIA_INSN_SHLLI; goto extract_sfmt_shari; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 786 :
+        if ((entire_insn & 0xfc0f000f) == 0xc4020000)
+          { itype = SH64_MEDIA_INSN_SHLRIL; goto extract_sfmt_shari; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 787 :
+        if ((entire_insn & 0xfc0f000f) == 0xc4030000)
+          { itype = SH64_MEDIA_INSN_SHLRI; goto extract_sfmt_shari; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 790 :
+        if ((entire_insn & 0xfc0f000f) == 0xc4060000)
+          { itype = SH64_MEDIA_INSN_SHARIL; goto extract_sfmt_shari; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 791 :
+        if ((entire_insn & 0xfc0f000f) == 0xc4070000)
+          { itype = SH64_MEDIA_INSN_SHARI; goto extract_sfmt_shari; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 797 :
+        if ((entire_insn & 0xfc0f000f) == 0xc40d0000)
+          { itype = SH64_MEDIA_INSN_XORI; goto extract_sfmt_xori; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 800 : /* fall through */
       case 801 : /* fall through */
       case 802 : /* fall through */
       case 803 : /* fall through */
@@ -588,7 +1336,11 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
       case 812 : /* fall through */
       case 813 : /* fall through */
       case 814 : /* fall through */
-      case 815 : itype = SH64_MEDIA_INSN_SHORI; goto extract_sfmt_shori;      case 816 : /* fall through */
+      case 815 :
+        if ((entire_insn & 0xfc00000f) == 0xc8000000)
+          { itype = SH64_MEDIA_INSN_SHORI; goto extract_sfmt_shori; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 816 : /* fall through */
       case 817 : /* fall through */
       case 818 : /* fall through */
       case 819 : /* fall through */
@@ -603,7 +1355,11 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
       case 828 : /* fall through */
       case 829 : /* fall through */
       case 830 : /* fall through */
-      case 831 : itype = SH64_MEDIA_INSN_MOVI; goto extract_sfmt_movi;      case 832 : /* fall through */
+      case 831 :
+        if ((entire_insn & 0xfc00000f) == 0xcc000000)
+          { itype = SH64_MEDIA_INSN_MOVI; goto extract_sfmt_movi; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 832 : /* fall through */
       case 833 : /* fall through */
       case 834 : /* fall through */
       case 835 : /* fall through */
@@ -618,7 +1374,11 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
       case 844 : /* fall through */
       case 845 : /* fall through */
       case 846 : /* fall through */
-      case 847 : itype = SH64_MEDIA_INSN_ADDI; goto extract_sfmt_addi;      case 848 : /* fall through */
+      case 847 :
+        if ((entire_insn & 0xfc00000f) == 0xd0000000)
+          { itype = SH64_MEDIA_INSN_ADDI; goto extract_sfmt_addi; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 848 : /* fall through */
       case 849 : /* fall through */
       case 850 : /* fall through */
       case 851 : /* fall through */
@@ -633,7 +1393,11 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
       case 860 : /* fall through */
       case 861 : /* fall through */
       case 862 : /* fall through */
-      case 863 : itype = SH64_MEDIA_INSN_ADDIL; goto extract_sfmt_addi;      case 864 : /* fall through */
+      case 863 :
+        if ((entire_insn & 0xfc00000f) == 0xd4000000)
+          { itype = SH64_MEDIA_INSN_ADDIL; goto extract_sfmt_addi; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 864 : /* fall through */
       case 865 : /* fall through */
       case 866 : /* fall through */
       case 867 : /* fall through */
@@ -648,7 +1412,11 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
       case 876 : /* fall through */
       case 877 : /* fall through */
       case 878 : /* fall through */
-      case 879 : itype = SH64_MEDIA_INSN_ANDI; goto extract_sfmt_addi;      case 880 : /* fall through */
+      case 879 :
+        if ((entire_insn & 0xfc00000f) == 0xd8000000)
+          { itype = SH64_MEDIA_INSN_ANDI; goto extract_sfmt_addi; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 880 : /* fall through */
       case 881 : /* fall through */
       case 882 : /* fall through */
       case 883 : /* fall through */
@@ -663,7 +1431,63 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
       case 892 : /* fall through */
       case 893 : /* fall through */
       case 894 : /* fall through */
-      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 */
+      case 895 :
+        if ((entire_insn & 0xfc00000f) == 0xdc000000)
+          { itype = SH64_MEDIA_INSN_ORI; goto extract_sfmt_ori; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 897 :
+        if ((entire_insn & 0xfc0ffc0f) == 0xe001fc00)
+          { itype = SH64_MEDIA_INSN_PREFI; goto extract_sfmt_prefi; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 898 :
+        if ((entire_insn & 0xfc0f000f) == 0xe0020000)
+          { itype = SH64_MEDIA_INSN_STLOL; goto extract_sfmt_stlol; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 899 :
+        if ((entire_insn & 0xfc0f000f) == 0xe0030000)
+          { itype = SH64_MEDIA_INSN_STLOQ; goto extract_sfmt_stloq; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 900 :
+        if ((entire_insn & 0xfc0f03ff) == 0xe00403f0)
+          { itype = SH64_MEDIA_INSN_ALLOCO; goto extract_sfmt_alloco; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 901 :
+        if ((entire_insn & 0xfc0f03ff) == 0xe00503f0)
+          { itype = SH64_MEDIA_INSN_ICBI; goto extract_sfmt_alloco; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 902 :
+        if ((entire_insn & 0xfc0f000f) == 0xe0060000)
+          { itype = SH64_MEDIA_INSN_STHIL; goto extract_sfmt_sthil; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 903 :
+        if ((entire_insn & 0xfc0f000f) == 0xe0070000)
+          { itype = SH64_MEDIA_INSN_STHIQ; goto extract_sfmt_sthiq; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 904 :
+        if ((entire_insn & 0xfc0f03ff) == 0xe00803f0)
+          { itype = SH64_MEDIA_INSN_OCBP; goto extract_sfmt_alloco; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 905 :
+        if ((entire_insn & 0xfc0f03ff) == 0xe00903f0)
+          { itype = SH64_MEDIA_INSN_OCBI; goto extract_sfmt_alloco; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 908 :
+        if ((entire_insn & 0xfc0f03ff) == 0xe00c03f0)
+          { itype = SH64_MEDIA_INSN_OCBWB; goto extract_sfmt_alloco; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 911 :
+        if ((entire_insn & 0xfc0f000f) == 0xe00f0000)
+          { itype = SH64_MEDIA_INSN_PUTCFG; goto extract_sfmt_putcfg; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 913 :
+        if ((entire_insn & 0xfc0f018f) == 0xe4010000)
+          { itype = SH64_MEDIA_INSN_BEQI; goto extract_sfmt_beqi; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 917 :
+        if ((entire_insn & 0xfc0f018f) == 0xe4050000)
+          { itype = SH64_MEDIA_INSN_BNEI; goto extract_sfmt_bnei; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 928 : /* fall through */
       case 929 : /* fall through */
       case 930 : /* fall through */
       case 931 : /* fall through */
@@ -678,7 +1502,11 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
       case 940 : /* fall through */
       case 941 : /* fall through */
       case 942 : /* fall through */
-      case 943 : itype = SH64_MEDIA_INSN_PTA; goto extract_sfmt_pta;      case 944 : /* fall through */
+      case 943 :
+        if ((entire_insn & 0xfc00018f) == 0xe8000000)
+          { itype = SH64_MEDIA_INSN_PTA; goto extract_sfmt_pta; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 944 : /* fall through */
       case 945 : /* fall through */
       case 946 : /* fall through */
       case 947 : /* fall through */
@@ -693,7 +1521,11 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
       case 956 : /* fall through */
       case 957 : /* fall through */
       case 958 : /* fall through */
-      case 959 : itype = SH64_MEDIA_INSN_PTB; goto extract_sfmt_pta;      default : itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      case 959 :
+        if ((entire_insn & 0xfc00018f) == 0xec000000)
+          { itype = SH64_MEDIA_INSN_PTB; goto extract_sfmt_pta; }
+        itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
+      default : itype = SH64_MEDIA_INSN_X_INVALID; goto extract_sfmt_empty;
       }
     }
   }
@@ -703,11 +1535,11 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
  extract_sfmt_empty:
   {
     const IDESC *idesc = &sh64_media_insn_data[itype];
-#define FLD(f) abuf->fields.fmt_empty.f
+#define FLD(f) abuf->fields.sfmt_empty.f
 
 
   /* Record the fields for the semantic handler.  */
-  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_empty", (char *) 0));
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_empty", (char *) 0));
 
 #undef FLD
     return idesc;
@@ -716,22 +1548,31 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
  extract_sfmt_add:
   {
     const IDESC *idesc = &sh64_media_insn_data[itype];
-    CGEN_INSN_INT insn = entire_insn;
+    CGEN_INSN_WORD insn = entire_insn;
 #define FLD(f) abuf->fields.sfmt_add.f
     UINT f_left;
     UINT f_right;
     UINT f_dest;
 
-    f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6);
-    f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6);
-    f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6);
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
 
   /* Record the fields for the semantic handler.  */
   FLD (f_left) = f_left;
   FLD (f_right) = f_right;
   FLD (f_dest) = f_dest;
-  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));
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_add", "f_left 0x%x", 'x', f_left, "f_right 0x%x", 'x', f_right, "f_dest 0x%x", 'x', f_dest, (char *) 0));
 
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_rm) = f_left;
+      FLD (in_rn) = f_right;
+      FLD (out_rd) = f_dest;
+    }
+#endif
 #undef FLD
     return idesc;
   }
@@ -739,22 +1580,30 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
  extract_sfmt_addi:
   {
     const IDESC *idesc = &sh64_media_insn_data[itype];
-    CGEN_INSN_INT insn = entire_insn;
+    CGEN_INSN_WORD insn = entire_insn;
 #define FLD(f) abuf->fields.sfmt_addi.f
     UINT f_left;
     INT f_disp10;
     UINT f_dest;
 
-    f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6);
-    f_disp10 = EXTRACT_LSB0_INT (insn, 32, 19, 10);
-    f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6);
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_disp10 = EXTRACT_MSB0_SINT (insn, 32, 12, 10);
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
 
   /* Record the fields for the semantic handler.  */
   FLD (f_disp10) = f_disp10;
   FLD (f_left) = f_left;
   FLD (f_dest) = f_dest;
-  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));
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addi", "f_disp10 0x%x", 'x', f_disp10, "f_left 0x%x", 'x', f_left, "f_dest 0x%x", 'x', f_dest, (char *) 0));
 
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_rm) = f_left;
+      FLD (out_rd) = f_dest;
+    }
+#endif
 #undef FLD
     return idesc;
   }
@@ -762,12 +1611,24 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
  extract_sfmt_alloco:
   {
     const IDESC *idesc = &sh64_media_insn_data[itype];
-#define FLD(f) abuf->fields.fmt_empty.f
+    CGEN_INSN_WORD insn = entire_insn;
+#define FLD(f) abuf->fields.sfmt_xori.f
+    UINT f_left;
 
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
 
   /* Record the fields for the semantic handler.  */
-  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_alloco", (char *) 0));
+  FLD (f_left) = f_left;
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_alloco", "f_left 0x%x", 'x', f_left, (char *) 0));
 
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_rm) = f_left;
+      FLD (out_rm) = f_left;
+    }
+#endif
 #undef FLD
     return idesc;
   }
@@ -775,22 +1636,31 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
  extract_sfmt_beq:
   {
     const IDESC *idesc = &sh64_media_insn_data[itype];
-    CGEN_INSN_INT insn = entire_insn;
+    CGEN_INSN_WORD insn = entire_insn;
 #define FLD(f) abuf->fields.sfmt_beq.f
     UINT f_left;
     UINT f_right;
     UINT f_tra;
 
-    f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6);
-    f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6);
-    f_tra = EXTRACT_LSB0_UINT (insn, 32, 6, 3);
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
+    f_tra = EXTRACT_MSB0_UINT (insn, 32, 25, 3);
 
   /* Record the fields for the semantic handler.  */
   FLD (f_left) = f_left;
   FLD (f_right) = f_right;
   FLD (f_tra) = f_tra;
-  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));
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_beq", "f_left 0x%x", 'x', f_left, "f_right 0x%x", 'x', f_right, "f_tra 0x%x", 'x', f_tra, (char *) 0));
 
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_rm) = f_left;
+      FLD (in_rn) = f_right;
+      FLD (in_tra) = f_tra;
+    }
+#endif
 #undef FLD
     return idesc;
   }
@@ -798,22 +1668,30 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
  extract_sfmt_beqi:
   {
     const IDESC *idesc = &sh64_media_insn_data[itype];
-    CGEN_INSN_INT insn = entire_insn;
+    CGEN_INSN_WORD insn = entire_insn;
 #define FLD(f) abuf->fields.sfmt_beqi.f
     UINT f_left;
     INT f_imm6;
     UINT f_tra;
 
-    f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6);
-    f_imm6 = EXTRACT_LSB0_INT (insn, 32, 15, 6);
-    f_tra = EXTRACT_LSB0_UINT (insn, 32, 6, 3);
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_imm6 = EXTRACT_MSB0_SINT (insn, 32, 16, 6);
+    f_tra = EXTRACT_MSB0_UINT (insn, 32, 25, 3);
 
   /* Record the fields for the semantic handler.  */
   FLD (f_imm6) = f_imm6;
   FLD (f_left) = f_left;
   FLD (f_tra) = f_tra;
-  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));
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_beqi", "f_imm6 0x%x", 'x', f_imm6, "f_left 0x%x", 'x', f_left, "f_tra 0x%x", 'x', f_tra, (char *) 0));
 
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_rm) = f_left;
+      FLD (in_tra) = f_tra;
+    }
+#endif
 #undef FLD
     return idesc;
   }
@@ -821,19 +1699,58 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
  extract_sfmt_blink:
   {
     const IDESC *idesc = &sh64_media_insn_data[itype];
-    CGEN_INSN_INT insn = entire_insn;
+    CGEN_INSN_WORD insn = entire_insn;
 #define FLD(f) abuf->fields.sfmt_blink.f
     UINT f_trb;
     UINT f_dest;
 
-    f_trb = EXTRACT_LSB0_UINT (insn, 32, 22, 3);
-    f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6);
+    f_trb = EXTRACT_MSB0_UINT (insn, 32, 9, 3);
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
 
   /* Record the fields for the semantic handler.  */
-  FLD (f_trb) = f_trb;
   FLD (f_dest) = f_dest;
-  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));
+  FLD (f_trb) = f_trb;
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_blink", "f_dest 0x%x", 'x', f_dest, "f_trb 0x%x", 'x', f_trb, (char *) 0));
+
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_trb) = f_trb;
+      FLD (out_rd) = f_dest;
+    }
+#endif
+#undef FLD
+    return idesc;
+  }
+
+ extract_sfmt_bnei:
+  {
+    const IDESC *idesc = &sh64_media_insn_data[itype];
+    CGEN_INSN_WORD insn = entire_insn;
+#define FLD(f) abuf->fields.sfmt_beqi.f
+    UINT f_left;
+    INT f_imm6;
+    UINT f_tra;
+
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_imm6 = EXTRACT_MSB0_SINT (insn, 32, 16, 6);
+    f_tra = EXTRACT_MSB0_UINT (insn, 32, 25, 3);
+
+  /* Record the fields for the semantic handler.  */
+  FLD (f_imm6) = f_imm6;
+  FLD (f_left) = f_left;
+  FLD (f_tra) = f_tra;
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bnei", "f_imm6 0x%x", 'x', f_imm6, "f_left 0x%x", 'x', f_left, "f_tra 0x%x", 'x', f_tra, (char *) 0));
 
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_rm) = f_left;
+      FLD (in_tra) = f_tra;
+    }
+#endif
 #undef FLD
     return idesc;
   }
@@ -841,12 +1758,18 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
  extract_sfmt_brk:
   {
     const IDESC *idesc = &sh64_media_insn_data[itype];
-#define FLD(f) abuf->fields.fmt_empty.f
+#define FLD(f) abuf->fields.sfmt_empty.f
 
 
   /* Record the fields for the semantic handler.  */
-  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_brk", (char *) 0));
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_brk", (char *) 0));
 
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+    }
+#endif
 #undef FLD
     return idesc;
   }
@@ -854,19 +1777,27 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
  extract_sfmt_byterev:
   {
     const IDESC *idesc = &sh64_media_insn_data[itype];
-    CGEN_INSN_INT insn = entire_insn;
+    CGEN_INSN_WORD insn = entire_insn;
 #define FLD(f) abuf->fields.sfmt_xori.f
     UINT f_left;
     UINT f_dest;
 
-    f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6);
-    f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6);
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
 
   /* Record the fields for the semantic handler.  */
   FLD (f_left) = f_left;
   FLD (f_dest) = f_dest;
-  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));
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_byterev", "f_left 0x%x", 'x', f_left, "f_dest 0x%x", 'x', f_dest, (char *) 0));
 
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_rm) = f_left;
+      FLD (out_rd) = f_dest;
+    }
+#endif
 #undef FLD
     return idesc;
   }
@@ -874,22 +1805,31 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
  extract_sfmt_cmveq:
   {
     const IDESC *idesc = &sh64_media_insn_data[itype];
-    CGEN_INSN_INT insn = entire_insn;
+    CGEN_INSN_WORD insn = entire_insn;
 #define FLD(f) abuf->fields.sfmt_add.f
     UINT f_left;
     UINT f_right;
     UINT f_dest;
 
-    f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6);
-    f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6);
-    f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6);
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
 
   /* Record the fields for the semantic handler.  */
   FLD (f_left) = f_left;
   FLD (f_right) = f_right;
   FLD (f_dest) = f_dest;
-  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));
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_cmveq", "f_left 0x%x", 'x', f_left, "f_right 0x%x", 'x', f_right, "f_dest 0x%x", 'x', f_dest, (char *) 0));
 
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_rm) = f_left;
+      FLD (in_rn) = f_right;
+      FLD (out_rd) = f_dest;
+    }
+#endif
 #undef FLD
     return idesc;
   }
@@ -897,23 +1837,31 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
  extract_sfmt_fabsd:
   {
     const IDESC *idesc = &sh64_media_insn_data[itype];
-    CGEN_INSN_INT insn = entire_insn;
+    CGEN_INSN_WORD insn = entire_insn;
 #define FLD(f) abuf->fields.sfmt_fabsd.f
     UINT f_left;
     UINT f_right;
     UINT f_dest;
     UINT f_left_right;
 
-    f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6);
-    f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6);
-    f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6);
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
   f_left_right = f_left;
 
   /* Record the fields for the semantic handler.  */
   FLD (f_left_right) = f_left_right;
   FLD (f_dest) = f_dest;
-  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));
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fabsd", "f_left_right 0x%x", 'x', f_left_right, "f_dest 0x%x", 'x', f_dest, (char *) 0));
 
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_drgh) = f_left_right;
+      FLD (out_drf) = f_dest;
+    }
+#endif
 #undef FLD
     return idesc;
   }
@@ -921,23 +1869,31 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
  extract_sfmt_fabss:
   {
     const IDESC *idesc = &sh64_media_insn_data[itype];
-    CGEN_INSN_INT insn = entire_insn;
+    CGEN_INSN_WORD insn = entire_insn;
 #define FLD(f) abuf->fields.sfmt_fabsd.f
     UINT f_left;
     UINT f_right;
     UINT f_dest;
     UINT f_left_right;
 
-    f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6);
-    f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6);
-    f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6);
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
   f_left_right = f_left;
 
   /* Record the fields for the semantic handler.  */
   FLD (f_left_right) = f_left_right;
   FLD (f_dest) = f_dest;
-  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));
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fabss", "f_left_right 0x%x", 'x', f_left_right, "f_dest 0x%x", 'x', f_dest, (char *) 0));
 
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_frgh) = f_left_right;
+      FLD (out_frf) = f_dest;
+    }
+#endif
 #undef FLD
     return idesc;
   }
@@ -945,22 +1901,31 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
  extract_sfmt_faddd:
   {
     const IDESC *idesc = &sh64_media_insn_data[itype];
-    CGEN_INSN_INT insn = entire_insn;
+    CGEN_INSN_WORD insn = entire_insn;
 #define FLD(f) abuf->fields.sfmt_add.f
     UINT f_left;
     UINT f_right;
     UINT f_dest;
 
-    f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6);
-    f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6);
-    f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6);
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
 
   /* Record the fields for the semantic handler.  */
   FLD (f_left) = f_left;
   FLD (f_right) = f_right;
   FLD (f_dest) = f_dest;
-  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));
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_faddd", "f_left 0x%x", 'x', f_left, "f_right 0x%x", 'x', f_right, "f_dest 0x%x", 'x', f_dest, (char *) 0));
 
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_drg) = f_left;
+      FLD (in_drh) = f_right;
+      FLD (out_drf) = f_dest;
+    }
+#endif
 #undef FLD
     return idesc;
   }
@@ -968,22 +1933,31 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
  extract_sfmt_fadds:
   {
     const IDESC *idesc = &sh64_media_insn_data[itype];
-    CGEN_INSN_INT insn = entire_insn;
+    CGEN_INSN_WORD insn = entire_insn;
 #define FLD(f) abuf->fields.sfmt_add.f
     UINT f_left;
     UINT f_right;
     UINT f_dest;
 
-    f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6);
-    f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6);
-    f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6);
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
 
   /* Record the fields for the semantic handler.  */
   FLD (f_left) = f_left;
   FLD (f_right) = f_right;
   FLD (f_dest) = f_dest;
-  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));
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fadds", "f_left 0x%x", 'x', f_left, "f_right 0x%x", 'x', f_right, "f_dest 0x%x", 'x', f_dest, (char *) 0));
 
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_frg) = f_left;
+      FLD (in_frh) = f_right;
+      FLD (out_frf) = f_dest;
+    }
+#endif
 #undef FLD
     return idesc;
   }
@@ -991,22 +1965,31 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
  extract_sfmt_fcmpeqd:
   {
     const IDESC *idesc = &sh64_media_insn_data[itype];
-    CGEN_INSN_INT insn = entire_insn;
+    CGEN_INSN_WORD insn = entire_insn;
 #define FLD(f) abuf->fields.sfmt_add.f
     UINT f_left;
     UINT f_right;
     UINT f_dest;
 
-    f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6);
-    f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6);
-    f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6);
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
 
   /* Record the fields for the semantic handler.  */
   FLD (f_left) = f_left;
   FLD (f_right) = f_right;
   FLD (f_dest) = f_dest;
-  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));
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fcmpeqd", "f_left 0x%x", 'x', f_left, "f_right 0x%x", 'x', f_right, "f_dest 0x%x", 'x', f_dest, (char *) 0));
 
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_drg) = f_left;
+      FLD (in_drh) = f_right;
+      FLD (out_rd) = f_dest;
+    }
+#endif
 #undef FLD
     return idesc;
   }
@@ -1014,22 +1997,31 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
  extract_sfmt_fcmpeqs:
   {
     const IDESC *idesc = &sh64_media_insn_data[itype];
-    CGEN_INSN_INT insn = entire_insn;
+    CGEN_INSN_WORD insn = entire_insn;
 #define FLD(f) abuf->fields.sfmt_add.f
     UINT f_left;
     UINT f_right;
     UINT f_dest;
 
-    f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6);
-    f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6);
-    f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6);
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
 
   /* Record the fields for the semantic handler.  */
   FLD (f_left) = f_left;
   FLD (f_right) = f_right;
   FLD (f_dest) = f_dest;
-  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));
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fcmpeqs", "f_left 0x%x", 'x', f_left, "f_right 0x%x", 'x', f_right, "f_dest 0x%x", 'x', f_dest, (char *) 0));
 
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_frg) = f_left;
+      FLD (in_frh) = f_right;
+      FLD (out_rd) = f_dest;
+    }
+#endif
 #undef FLD
     return idesc;
   }
@@ -1037,23 +2029,31 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
  extract_sfmt_fcnvds:
   {
     const IDESC *idesc = &sh64_media_insn_data[itype];
-    CGEN_INSN_INT insn = entire_insn;
+    CGEN_INSN_WORD insn = entire_insn;
 #define FLD(f) abuf->fields.sfmt_fabsd.f
     UINT f_left;
     UINT f_right;
     UINT f_dest;
     UINT f_left_right;
 
-    f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6);
-    f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6);
-    f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6);
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
   f_left_right = f_left;
 
   /* Record the fields for the semantic handler.  */
   FLD (f_left_right) = f_left_right;
   FLD (f_dest) = f_dest;
-  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));
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fcnvds", "f_left_right 0x%x", 'x', f_left_right, "f_dest 0x%x", 'x', f_dest, (char *) 0));
 
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_drgh) = f_left_right;
+      FLD (out_frf) = f_dest;
+    }
+#endif
 #undef FLD
     return idesc;
   }
@@ -1061,23 +2061,55 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
  extract_sfmt_fcnvsd:
   {
     const IDESC *idesc = &sh64_media_insn_data[itype];
-    CGEN_INSN_INT insn = entire_insn;
+    CGEN_INSN_WORD insn = entire_insn;
 #define FLD(f) abuf->fields.sfmt_fabsd.f
     UINT f_left;
     UINT f_right;
     UINT f_dest;
     UINT f_left_right;
 
-    f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6);
-    f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6);
-    f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6);
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
   f_left_right = f_left;
 
   /* Record the fields for the semantic handler.  */
   FLD (f_left_right) = f_left_right;
   FLD (f_dest) = f_dest;
-  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));
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fcnvsd", "f_left_right 0x%x", 'x', f_left_right, "f_dest 0x%x", 'x', f_dest, (char *) 0));
+
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_frgh) = f_left_right;
+      FLD (out_drf) = f_dest;
+    }
+#endif
+#undef FLD
+    return idesc;
+  }
+
+ extract_sfmt_fgetscr:
+  {
+    const IDESC *idesc = &sh64_media_insn_data[itype];
+    CGEN_INSN_WORD insn = entire_insn;
+#define FLD(f) abuf->fields.sfmt_shori.f
+    UINT f_dest;
+
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
+
+  /* Record the fields for the semantic handler.  */
+  FLD (f_dest) = f_dest;
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fgetscr", "f_dest 0x%x", 'x', f_dest, (char *) 0));
 
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (out_frf) = f_dest;
+    }
+#endif
 #undef FLD
     return idesc;
   }
@@ -1085,22 +2117,33 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
  extract_sfmt_fiprs:
   {
     const IDESC *idesc = &sh64_media_insn_data[itype];
-    CGEN_INSN_INT insn = entire_insn;
+    CGEN_INSN_WORD insn = entire_insn;
 #define FLD(f) abuf->fields.sfmt_add.f
     UINT f_left;
     UINT f_right;
     UINT f_dest;
 
-    f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6);
-    f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6);
-    f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6);
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
 
   /* Record the fields for the semantic handler.  */
   FLD (f_left) = f_left;
   FLD (f_right) = f_right;
   FLD (f_dest) = f_dest;
-  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));
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fiprs", "f_left 0x%x", 'x', f_left, "f_right 0x%x", 'x', f_right, "f_dest 0x%x", 'x', f_dest, (char *) 0));
 
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_fvg) = f_left;
+      FLD (in_fvh) = f_right;
+      FLD (out_frf) = f_dest;
+      FLD (out_fvg) = f_left;
+      FLD (out_fvh) = f_right;
+    }
+#endif
 #undef FLD
     return idesc;
   }
@@ -1108,22 +2151,30 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
  extract_sfmt_fldd:
   {
     const IDESC *idesc = &sh64_media_insn_data[itype];
-    CGEN_INSN_INT insn = entire_insn;
+    CGEN_INSN_WORD insn = entire_insn;
 #define FLD(f) abuf->fields.sfmt_fldd.f
     UINT f_left;
     SI f_disp10x8;
     UINT f_dest;
 
-    f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6);
-    f_disp10x8 = ((EXTRACT_LSB0_INT (insn, 32, 19, 10)) << (3));
-    f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6);
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_disp10x8 = ((EXTRACT_MSB0_SINT (insn, 32, 12, 10)) << (3));
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
 
   /* Record the fields for the semantic handler.  */
   FLD (f_disp10x8) = f_disp10x8;
   FLD (f_left) = f_left;
   FLD (f_dest) = f_dest;
-  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));
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fldd", "f_disp10x8 0x%x", 'x', f_disp10x8, "f_left 0x%x", 'x', f_left, "f_dest 0x%x", 'x', f_dest, (char *) 0));
 
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_rm) = f_left;
+      FLD (out_drf) = f_dest;
+    }
+#endif
 #undef FLD
     return idesc;
   }
@@ -1131,22 +2182,31 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
  extract_sfmt_fldp:
   {
     const IDESC *idesc = &sh64_media_insn_data[itype];
-    CGEN_INSN_INT insn = entire_insn;
+    CGEN_INSN_WORD insn = entire_insn;
 #define FLD(f) abuf->fields.sfmt_fldd.f
     UINT f_left;
     SI f_disp10x8;
     UINT f_dest;
 
-    f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6);
-    f_disp10x8 = ((EXTRACT_LSB0_INT (insn, 32, 19, 10)) << (3));
-    f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6);
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_disp10x8 = ((EXTRACT_MSB0_SINT (insn, 32, 12, 10)) << (3));
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
 
   /* Record the fields for the semantic handler.  */
   FLD (f_disp10x8) = f_disp10x8;
   FLD (f_dest) = f_dest;
   FLD (f_left) = f_left;
-  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));
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fldp", "f_disp10x8 0x%x", 'x', f_disp10x8, "f_dest 0x%x", 'x', f_dest, "f_left 0x%x", 'x', f_left, (char *) 0));
 
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_fpf) = f_dest;
+      FLD (in_rm) = f_left;
+      FLD (out_fpf) = f_dest;
+    }
+#endif
 #undef FLD
     return idesc;
   }
@@ -1154,22 +2214,30 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
  extract_sfmt_flds:
   {
     const IDESC *idesc = &sh64_media_insn_data[itype];
-    CGEN_INSN_INT insn = entire_insn;
+    CGEN_INSN_WORD insn = entire_insn;
 #define FLD(f) abuf->fields.sfmt_flds.f
     UINT f_left;
     SI f_disp10x4;
     UINT f_dest;
 
-    f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6);
-    f_disp10x4 = ((EXTRACT_LSB0_INT (insn, 32, 19, 10)) << (2));
-    f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6);
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_disp10x4 = ((EXTRACT_MSB0_SINT (insn, 32, 12, 10)) << (2));
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
 
   /* Record the fields for the semantic handler.  */
   FLD (f_disp10x4) = f_disp10x4;
   FLD (f_left) = f_left;
   FLD (f_dest) = f_dest;
-  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));
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_flds", "f_disp10x4 0x%x", 'x', f_disp10x4, "f_left 0x%x", 'x', f_left, "f_dest 0x%x", 'x', f_dest, (char *) 0));
 
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_rm) = f_left;
+      FLD (out_frf) = f_dest;
+    }
+#endif
 #undef FLD
     return idesc;
   }
@@ -1177,22 +2245,31 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
  extract_sfmt_fldxd:
   {
     const IDESC *idesc = &sh64_media_insn_data[itype];
-    CGEN_INSN_INT insn = entire_insn;
+    CGEN_INSN_WORD insn = entire_insn;
 #define FLD(f) abuf->fields.sfmt_add.f
     UINT f_left;
     UINT f_right;
     UINT f_dest;
 
-    f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6);
-    f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6);
-    f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6);
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
 
   /* Record the fields for the semantic handler.  */
   FLD (f_left) = f_left;
   FLD (f_right) = f_right;
   FLD (f_dest) = f_dest;
-  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));
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fldxd", "f_left 0x%x", 'x', f_left, "f_right 0x%x", 'x', f_right, "f_dest 0x%x", 'x', f_dest, (char *) 0));
 
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_rm) = f_left;
+      FLD (in_rn) = f_right;
+      FLD (out_drf) = f_dest;
+    }
+#endif
 #undef FLD
     return idesc;
   }
@@ -1200,22 +2277,32 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
  extract_sfmt_fldxp:
   {
     const IDESC *idesc = &sh64_media_insn_data[itype];
-    CGEN_INSN_INT insn = entire_insn;
+    CGEN_INSN_WORD insn = entire_insn;
 #define FLD(f) abuf->fields.sfmt_add.f
     UINT f_left;
     UINT f_right;
     UINT f_dest;
 
-    f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6);
-    f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6);
-    f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6);
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
 
   /* Record the fields for the semantic handler.  */
   FLD (f_dest) = f_dest;
   FLD (f_left) = f_left;
   FLD (f_right) = f_right;
-  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));
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fldxp", "f_dest 0x%x", 'x', f_dest, "f_left 0x%x", 'x', f_left, "f_right 0x%x", 'x', f_right, (char *) 0));
 
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_fpf) = f_dest;
+      FLD (in_rm) = f_left;
+      FLD (in_rn) = f_right;
+      FLD (out_fpf) = f_dest;
+    }
+#endif
 #undef FLD
     return idesc;
   }
@@ -1223,22 +2310,31 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
  extract_sfmt_fldxs:
   {
     const IDESC *idesc = &sh64_media_insn_data[itype];
-    CGEN_INSN_INT insn = entire_insn;
+    CGEN_INSN_WORD insn = entire_insn;
 #define FLD(f) abuf->fields.sfmt_add.f
     UINT f_left;
     UINT f_right;
     UINT f_dest;
 
-    f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6);
-    f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6);
-    f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6);
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
 
   /* Record the fields for the semantic handler.  */
   FLD (f_left) = f_left;
   FLD (f_right) = f_right;
   FLD (f_dest) = f_dest;
-  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));
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fldxs", "f_left 0x%x", 'x', f_left, "f_right 0x%x", 'x', f_right, "f_dest 0x%x", 'x', f_dest, (char *) 0));
 
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_rm) = f_left;
+      FLD (in_rn) = f_right;
+      FLD (out_frf) = f_dest;
+    }
+#endif
 #undef FLD
     return idesc;
   }
@@ -1246,22 +2342,32 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
  extract_sfmt_fmacs:
   {
     const IDESC *idesc = &sh64_media_insn_data[itype];
-    CGEN_INSN_INT insn = entire_insn;
+    CGEN_INSN_WORD insn = entire_insn;
 #define FLD(f) abuf->fields.sfmt_add.f
     UINT f_left;
     UINT f_right;
     UINT f_dest;
 
-    f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6);
-    f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6);
-    f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6);
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
 
   /* Record the fields for the semantic handler.  */
   FLD (f_dest) = f_dest;
   FLD (f_left) = f_left;
   FLD (f_right) = f_right;
-  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));
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fmacs", "f_dest 0x%x", 'x', f_dest, "f_left 0x%x", 'x', f_left, "f_right 0x%x", 'x', f_right, (char *) 0));
 
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_frf) = f_dest;
+      FLD (in_frg) = f_left;
+      FLD (in_frh) = f_right;
+      FLD (out_frf) = f_dest;
+    }
+#endif
 #undef FLD
     return idesc;
   }
@@ -1269,23 +2375,31 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
  extract_sfmt_fmovdq:
   {
     const IDESC *idesc = &sh64_media_insn_data[itype];
-    CGEN_INSN_INT insn = entire_insn;
+    CGEN_INSN_WORD insn = entire_insn;
 #define FLD(f) abuf->fields.sfmt_fabsd.f
     UINT f_left;
     UINT f_right;
     UINT f_dest;
     UINT f_left_right;
 
-    f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6);
-    f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6);
-    f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6);
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
   f_left_right = f_left;
 
   /* Record the fields for the semantic handler.  */
   FLD (f_left_right) = f_left_right;
   FLD (f_dest) = f_dest;
-  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));
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fmovdq", "f_left_right 0x%x", 'x', f_left_right, "f_dest 0x%x", 'x', f_dest, (char *) 0));
 
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_drgh) = f_left_right;
+      FLD (out_rd) = f_dest;
+    }
+#endif
 #undef FLD
     return idesc;
   }
@@ -1293,19 +2407,27 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
  extract_sfmt_fmovls:
   {
     const IDESC *idesc = &sh64_media_insn_data[itype];
-    CGEN_INSN_INT insn = entire_insn;
+    CGEN_INSN_WORD insn = entire_insn;
 #define FLD(f) abuf->fields.sfmt_xori.f
     UINT f_left;
     UINT f_dest;
 
-    f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6);
-    f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6);
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
 
   /* Record the fields for the semantic handler.  */
   FLD (f_left) = f_left;
   FLD (f_dest) = f_dest;
-  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));
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fmovls", "f_left 0x%x", 'x', f_left, "f_dest 0x%x", 'x', f_dest, (char *) 0));
 
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_rm) = f_left;
+      FLD (out_frf) = f_dest;
+    }
+#endif
 #undef FLD
     return idesc;
   }
@@ -1313,19 +2435,27 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
  extract_sfmt_fmovqd:
   {
     const IDESC *idesc = &sh64_media_insn_data[itype];
-    CGEN_INSN_INT insn = entire_insn;
+    CGEN_INSN_WORD insn = entire_insn;
 #define FLD(f) abuf->fields.sfmt_xori.f
     UINT f_left;
     UINT f_dest;
 
-    f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6);
-    f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6);
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
 
   /* Record the fields for the semantic handler.  */
   FLD (f_left) = f_left;
   FLD (f_dest) = f_dest;
-  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));
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fmovqd", "f_left 0x%x", 'x', f_left, "f_dest 0x%x", 'x', f_dest, (char *) 0));
 
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_rm) = f_left;
+      FLD (out_drf) = f_dest;
+    }
+#endif
 #undef FLD
     return idesc;
   }
@@ -1333,69 +2463,90 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
  extract_sfmt_fmovsl:
   {
     const IDESC *idesc = &sh64_media_insn_data[itype];
-    CGEN_INSN_INT insn = entire_insn;
+    CGEN_INSN_WORD insn = entire_insn;
 #define FLD(f) abuf->fields.sfmt_fabsd.f
     UINT f_left;
     UINT f_right;
     UINT f_dest;
     UINT f_left_right;
 
-    f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6);
-    f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6);
-    f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6);
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
   f_left_right = f_left;
 
   /* Record the fields for the semantic handler.  */
   FLD (f_left_right) = f_left_right;
   FLD (f_dest) = f_dest;
-  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));
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fmovsl", "f_left_right 0x%x", 'x', f_left_right, "f_dest 0x%x", 'x', f_dest, (char *) 0));
 
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_frgh) = f_left_right;
+      FLD (out_rd) = f_dest;
+    }
+#endif
 #undef FLD
     return idesc;
   }
 
- extract_sfmt_fstd:
+ extract_sfmt_fputscr:
   {
     const IDESC *idesc = &sh64_media_insn_data[itype];
-    CGEN_INSN_INT insn = entire_insn;
-#define FLD(f) abuf->fields.sfmt_fldd.f
+    CGEN_INSN_WORD insn = entire_insn;
+#define FLD(f) abuf->fields.sfmt_fabsd.f
     UINT f_left;
-    SI f_disp10x8;
-    UINT f_dest;
+    UINT f_right;
+    UINT f_left_right;
 
-    f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6);
-    f_disp10x8 = ((EXTRACT_LSB0_INT (insn, 32, 19, 10)) << (3));
-    f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6);
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
+  f_left_right = f_left;
 
   /* Record the fields for the semantic handler.  */
-  FLD (f_disp10x8) = f_disp10x8;
-  FLD (f_dest) = f_dest;
-  FLD (f_left) = f_left;
-  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));
+  FLD (f_left_right) = f_left_right;
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fputscr", "f_left_right 0x%x", 'x', f_left_right, (char *) 0));
 
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_frgh) = f_left_right;
+    }
+#endif
 #undef FLD
     return idesc;
   }
 
- extract_sfmt_fstp:
+ extract_sfmt_fstd:
   {
     const IDESC *idesc = &sh64_media_insn_data[itype];
-    CGEN_INSN_INT insn = entire_insn;
+    CGEN_INSN_WORD insn = entire_insn;
 #define FLD(f) abuf->fields.sfmt_fldd.f
     UINT f_left;
     SI f_disp10x8;
     UINT f_dest;
 
-    f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6);
-    f_disp10x8 = ((EXTRACT_LSB0_INT (insn, 32, 19, 10)) << (3));
-    f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6);
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_disp10x8 = ((EXTRACT_MSB0_SINT (insn, 32, 12, 10)) << (3));
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
 
   /* Record the fields for the semantic handler.  */
   FLD (f_disp10x8) = f_disp10x8;
   FLD (f_dest) = f_dest;
   FLD (f_left) = f_left;
-  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));
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fstd", "f_disp10x8 0x%x", 'x', f_disp10x8, "f_dest 0x%x", 'x', f_dest, "f_left 0x%x", 'x', f_left, (char *) 0));
 
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_drf) = f_dest;
+      FLD (in_rm) = f_left;
+    }
+#endif
 #undef FLD
     return idesc;
   }
@@ -1403,22 +2554,30 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
  extract_sfmt_fsts:
   {
     const IDESC *idesc = &sh64_media_insn_data[itype];
-    CGEN_INSN_INT insn = entire_insn;
+    CGEN_INSN_WORD insn = entire_insn;
 #define FLD(f) abuf->fields.sfmt_flds.f
     UINT f_left;
     SI f_disp10x4;
     UINT f_dest;
 
-    f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6);
-    f_disp10x4 = ((EXTRACT_LSB0_INT (insn, 32, 19, 10)) << (2));
-    f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6);
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_disp10x4 = ((EXTRACT_MSB0_SINT (insn, 32, 12, 10)) << (2));
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
 
   /* Record the fields for the semantic handler.  */
   FLD (f_disp10x4) = f_disp10x4;
   FLD (f_dest) = f_dest;
   FLD (f_left) = f_left;
-  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));
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fsts", "f_disp10x4 0x%x", 'x', f_disp10x4, "f_dest 0x%x", 'x', f_dest, "f_left 0x%x", 'x', f_left, (char *) 0));
 
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_frf) = f_dest;
+      FLD (in_rm) = f_left;
+    }
+#endif
 #undef FLD
     return idesc;
   }
@@ -1426,68 +2585,127 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
  extract_sfmt_fstxd:
   {
     const IDESC *idesc = &sh64_media_insn_data[itype];
-    CGEN_INSN_INT insn = entire_insn;
+    CGEN_INSN_WORD insn = entire_insn;
 #define FLD(f) abuf->fields.sfmt_add.f
     UINT f_left;
     UINT f_right;
     UINT f_dest;
 
-    f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6);
-    f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6);
-    f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6);
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
 
   /* Record the fields for the semantic handler.  */
   FLD (f_dest) = f_dest;
   FLD (f_left) = f_left;
   FLD (f_right) = f_right;
-  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));
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fstxd", "f_dest 0x%x", 'x', f_dest, "f_left 0x%x", 'x', f_left, "f_right 0x%x", 'x', f_right, (char *) 0));
 
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_drf) = f_dest;
+      FLD (in_rm) = f_left;
+      FLD (in_rn) = f_right;
+    }
+#endif
 #undef FLD
     return idesc;
   }
 
- extract_sfmt_fstxp:
+ extract_sfmt_fstxs:
   {
     const IDESC *idesc = &sh64_media_insn_data[itype];
-    CGEN_INSN_INT insn = entire_insn;
+    CGEN_INSN_WORD insn = entire_insn;
 #define FLD(f) abuf->fields.sfmt_add.f
     UINT f_left;
     UINT f_right;
     UINT f_dest;
 
-    f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6);
-    f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6);
-    f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6);
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
 
   /* Record the fields for the semantic handler.  */
   FLD (f_dest) = f_dest;
   FLD (f_left) = f_left;
   FLD (f_right) = f_right;
-  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));
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fstxs", "f_dest 0x%x", 'x', f_dest, "f_left 0x%x", 'x', f_left, "f_right 0x%x", 'x', f_right, (char *) 0));
 
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_frf) = f_dest;
+      FLD (in_rm) = f_left;
+      FLD (in_rn) = f_right;
+    }
+#endif
 #undef FLD
     return idesc;
   }
 
- extract_sfmt_fstxs:
+ extract_sfmt_fsubd:
   {
     const IDESC *idesc = &sh64_media_insn_data[itype];
-    CGEN_INSN_INT insn = entire_insn;
+    CGEN_INSN_WORD insn = entire_insn;
 #define FLD(f) abuf->fields.sfmt_add.f
     UINT f_left;
     UINT f_right;
     UINT f_dest;
 
-    f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6);
-    f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6);
-    f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6);
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
 
   /* Record the fields for the semantic handler.  */
-  FLD (f_dest) = f_dest;
   FLD (f_left) = f_left;
   FLD (f_right) = f_right;
-  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));
+  FLD (f_dest) = f_dest;
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_fsubd", "f_left 0x%x", 'x', f_left, "f_right 0x%x", 'x', f_right, "f_dest 0x%x", 'x', f_dest, (char *) 0));
+
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_drg) = f_left;
+      FLD (in_drh) = f_right;
+      FLD (out_drf) = f_dest;
+    }
+#endif
+#undef FLD
+    return idesc;
+  }
+
+ extract_sfmt_ftrcdq:
+  {
+    const IDESC *idesc = &sh64_media_insn_data[itype];
+    CGEN_INSN_WORD insn = entire_insn;
+#define FLD(f) abuf->fields.sfmt_fabsd.f
+    UINT f_left;
+    UINT f_right;
+    UINT f_dest;
+    UINT f_left_right;
+
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
+  f_left_right = f_left;
+
+  /* Record the fields for the semantic handler.  */
+  FLD (f_left_right) = f_left_right;
+  FLD (f_dest) = f_dest;
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ftrcdq", "f_left_right 0x%x", 'x', f_left_right, "f_dest 0x%x", 'x', f_dest, (char *) 0));
 
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_drgh) = f_left_right;
+      FLD (out_drf) = f_dest;
+    }
+#endif
 #undef FLD
     return idesc;
   }
@@ -1495,22 +2713,65 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
  extract_sfmt_ftrvs:
   {
     const IDESC *idesc = &sh64_media_insn_data[itype];
-    CGEN_INSN_INT insn = entire_insn;
+    CGEN_INSN_WORD insn = entire_insn;
 #define FLD(f) abuf->fields.sfmt_add.f
     UINT f_left;
     UINT f_right;
     UINT f_dest;
 
-    f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6);
-    f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6);
-    f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6);
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
 
   /* Record the fields for the semantic handler.  */
   FLD (f_dest) = f_dest;
   FLD (f_left) = f_left;
   FLD (f_right) = f_right;
-  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));
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ftrvs", "f_dest 0x%x", 'x', f_dest, "f_left 0x%x", 'x', f_left, "f_right 0x%x", 'x', f_right, (char *) 0));
+
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_fvf) = f_dest;
+      FLD (in_fvh) = f_right;
+      FLD (in_mtrxg) = f_left;
+      FLD (out_fvf) = f_dest;
+      FLD (out_fvh) = f_right;
+      FLD (out_mtrxg) = f_left;
+    }
+#endif
+#undef FLD
+    return idesc;
+  }
+
+ extract_sfmt_getcfg:
+  {
+    const IDESC *idesc = &sh64_media_insn_data[itype];
+    CGEN_INSN_WORD insn = entire_insn;
+#define FLD(f) abuf->fields.sfmt_getcfg.f
+    UINT f_left;
+    INT f_disp6;
+    UINT f_dest;
+
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_disp6 = EXTRACT_MSB0_SINT (insn, 32, 16, 6);
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
+
+  /* Record the fields for the semantic handler.  */
+  FLD (f_disp6) = f_disp6;
+  FLD (f_left) = f_left;
+  FLD (f_dest) = f_dest;
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_getcfg", "f_disp6 0x%x", 'x', f_disp6, "f_left 0x%x", 'x', f_left, "f_dest 0x%x", 'x', f_dest, (char *) 0));
 
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_rm) = f_left;
+      FLD (out_rd) = f_dest;
+    }
+#endif
 #undef FLD
     return idesc;
   }
@@ -1518,19 +2779,26 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
  extract_sfmt_getcon:
   {
     const IDESC *idesc = &sh64_media_insn_data[itype];
-    CGEN_INSN_INT insn = entire_insn;
+    CGEN_INSN_WORD insn = entire_insn;
 #define FLD(f) abuf->fields.sfmt_xori.f
     UINT f_left;
     UINT f_dest;
 
-    f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6);
-    f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6);
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
 
   /* Record the fields for the semantic handler.  */
   FLD (f_left) = f_left;
   FLD (f_dest) = f_dest;
-  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));
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_getcon", "f_left 0x%x", 'x', f_left, "f_dest 0x%x", 'x', f_dest, (char *) 0));
 
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (out_rd) = f_dest;
+    }
+#endif
 #undef FLD
     return idesc;
   }
@@ -1538,19 +2806,27 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
  extract_sfmt_gettr:
   {
     const IDESC *idesc = &sh64_media_insn_data[itype];
-    CGEN_INSN_INT insn = entire_insn;
+    CGEN_INSN_WORD insn = entire_insn;
 #define FLD(f) abuf->fields.sfmt_blink.f
     UINT f_trb;
     UINT f_dest;
 
-    f_trb = EXTRACT_LSB0_UINT (insn, 32, 22, 3);
-    f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6);
+    f_trb = EXTRACT_MSB0_UINT (insn, 32, 9, 3);
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
 
   /* Record the fields for the semantic handler.  */
   FLD (f_trb) = f_trb;
   FLD (f_dest) = f_dest;
-  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));
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_gettr", "f_trb 0x%x", 'x', f_trb, "f_dest 0x%x", 'x', f_dest, (char *) 0));
 
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_trb) = f_trb;
+      FLD (out_rd) = f_dest;
+    }
+#endif
 #undef FLD
     return idesc;
   }
@@ -1558,45 +2834,61 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
  extract_sfmt_ldb:
   {
     const IDESC *idesc = &sh64_media_insn_data[itype];
-    CGEN_INSN_INT insn = entire_insn;
+    CGEN_INSN_WORD insn = entire_insn;
 #define FLD(f) abuf->fields.sfmt_addi.f
     UINT f_left;
     INT f_disp10;
     UINT f_dest;
 
-    f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6);
-    f_disp10 = EXTRACT_LSB0_INT (insn, 32, 19, 10);
-    f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6);
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_disp10 = EXTRACT_MSB0_SINT (insn, 32, 12, 10);
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
 
   /* Record the fields for the semantic handler.  */
   FLD (f_disp10) = f_disp10;
   FLD (f_left) = f_left;
   FLD (f_dest) = f_dest;
-  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));
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldb", "f_disp10 0x%x", 'x', f_disp10, "f_left 0x%x", 'x', f_left, "f_dest 0x%x", 'x', f_dest, (char *) 0));
 
-#undef FLD
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_rm) = f_left;
+      FLD (out_rd) = f_dest;
+    }
+#endif
+#undef FLD
     return idesc;
   }
 
  extract_sfmt_ldl:
   {
     const IDESC *idesc = &sh64_media_insn_data[itype];
-    CGEN_INSN_INT insn = entire_insn;
+    CGEN_INSN_WORD insn = entire_insn;
 #define FLD(f) abuf->fields.sfmt_flds.f
     UINT f_left;
     SI f_disp10x4;
     UINT f_dest;
 
-    f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6);
-    f_disp10x4 = ((EXTRACT_LSB0_INT (insn, 32, 19, 10)) << (2));
-    f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6);
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_disp10x4 = ((EXTRACT_MSB0_SINT (insn, 32, 12, 10)) << (2));
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
 
   /* Record the fields for the semantic handler.  */
   FLD (f_disp10x4) = f_disp10x4;
   FLD (f_left) = f_left;
   FLD (f_dest) = f_dest;
-  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));
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldl", "f_disp10x4 0x%x", 'x', f_disp10x4, "f_left 0x%x", 'x', f_left, "f_dest 0x%x", 'x', f_dest, (char *) 0));
 
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_rm) = f_left;
+      FLD (out_rd) = f_dest;
+    }
+#endif
 #undef FLD
     return idesc;
   }
@@ -1604,22 +2896,30 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
  extract_sfmt_ldq:
   {
     const IDESC *idesc = &sh64_media_insn_data[itype];
-    CGEN_INSN_INT insn = entire_insn;
+    CGEN_INSN_WORD insn = entire_insn;
 #define FLD(f) abuf->fields.sfmt_fldd.f
     UINT f_left;
     SI f_disp10x8;
     UINT f_dest;
 
-    f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6);
-    f_disp10x8 = ((EXTRACT_LSB0_INT (insn, 32, 19, 10)) << (3));
-    f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6);
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_disp10x8 = ((EXTRACT_MSB0_SINT (insn, 32, 12, 10)) << (3));
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
 
   /* Record the fields for the semantic handler.  */
   FLD (f_disp10x8) = f_disp10x8;
   FLD (f_left) = f_left;
   FLD (f_dest) = f_dest;
-  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));
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldq", "f_disp10x8 0x%x", 'x', f_disp10x8, "f_left 0x%x", 'x', f_left, "f_dest 0x%x", 'x', f_dest, (char *) 0));
 
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_rm) = f_left;
+      FLD (out_rd) = f_dest;
+    }
+#endif
 #undef FLD
     return idesc;
   }
@@ -1627,22 +2927,154 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
  extract_sfmt_lduw:
   {
     const IDESC *idesc = &sh64_media_insn_data[itype];
-    CGEN_INSN_INT insn = entire_insn;
+    CGEN_INSN_WORD insn = entire_insn;
 #define FLD(f) abuf->fields.sfmt_lduw.f
     UINT f_left;
     SI f_disp10x2;
     UINT f_dest;
 
-    f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6);
-    f_disp10x2 = ((EXTRACT_LSB0_INT (insn, 32, 19, 10)) << (1));
-    f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6);
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_disp10x2 = ((EXTRACT_MSB0_SINT (insn, 32, 12, 10)) << (1));
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
 
   /* Record the fields for the semantic handler.  */
   FLD (f_disp10x2) = f_disp10x2;
   FLD (f_left) = f_left;
   FLD (f_dest) = f_dest;
-  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));
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_lduw", "f_disp10x2 0x%x", 'x', f_disp10x2, "f_left 0x%x", 'x', f_left, "f_dest 0x%x", 'x', f_dest, (char *) 0));
+
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_rm) = f_left;
+      FLD (out_rd) = f_dest;
+    }
+#endif
+#undef FLD
+    return idesc;
+  }
+
+ extract_sfmt_ldhil:
+  {
+    const IDESC *idesc = &sh64_media_insn_data[itype];
+    CGEN_INSN_WORD insn = entire_insn;
+#define FLD(f) abuf->fields.sfmt_getcfg.f
+    UINT f_left;
+    INT f_disp6;
+    UINT f_dest;
+
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_disp6 = EXTRACT_MSB0_SINT (insn, 32, 16, 6);
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
+
+  /* Record the fields for the semantic handler.  */
+  FLD (f_disp6) = f_disp6;
+  FLD (f_left) = f_left;
+  FLD (f_dest) = f_dest;
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldhil", "f_disp6 0x%x", 'x', f_disp6, "f_left 0x%x", 'x', f_left, "f_dest 0x%x", 'x', f_dest, (char *) 0));
 
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_rm) = f_left;
+      FLD (out_rd) = f_dest;
+    }
+#endif
+#undef FLD
+    return idesc;
+  }
+
+ extract_sfmt_ldhiq:
+  {
+    const IDESC *idesc = &sh64_media_insn_data[itype];
+    CGEN_INSN_WORD insn = entire_insn;
+#define FLD(f) abuf->fields.sfmt_getcfg.f
+    UINT f_left;
+    INT f_disp6;
+    UINT f_dest;
+
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_disp6 = EXTRACT_MSB0_SINT (insn, 32, 16, 6);
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
+
+  /* Record the fields for the semantic handler.  */
+  FLD (f_disp6) = f_disp6;
+  FLD (f_left) = f_left;
+  FLD (f_dest) = f_dest;
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldhiq", "f_disp6 0x%x", 'x', f_disp6, "f_left 0x%x", 'x', f_left, "f_dest 0x%x", 'x', f_dest, (char *) 0));
+
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_rm) = f_left;
+      FLD (out_rd) = f_dest;
+    }
+#endif
+#undef FLD
+    return idesc;
+  }
+
+ extract_sfmt_ldlol:
+  {
+    const IDESC *idesc = &sh64_media_insn_data[itype];
+    CGEN_INSN_WORD insn = entire_insn;
+#define FLD(f) abuf->fields.sfmt_getcfg.f
+    UINT f_left;
+    INT f_disp6;
+    UINT f_dest;
+
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_disp6 = EXTRACT_MSB0_SINT (insn, 32, 16, 6);
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
+
+  /* Record the fields for the semantic handler.  */
+  FLD (f_disp6) = f_disp6;
+  FLD (f_left) = f_left;
+  FLD (f_dest) = f_dest;
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldlol", "f_disp6 0x%x", 'x', f_disp6, "f_left 0x%x", 'x', f_left, "f_dest 0x%x", 'x', f_dest, (char *) 0));
+
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_rm) = f_left;
+      FLD (out_rd) = f_dest;
+    }
+#endif
+#undef FLD
+    return idesc;
+  }
+
+ extract_sfmt_ldloq:
+  {
+    const IDESC *idesc = &sh64_media_insn_data[itype];
+    CGEN_INSN_WORD insn = entire_insn;
+#define FLD(f) abuf->fields.sfmt_getcfg.f
+    UINT f_left;
+    INT f_disp6;
+    UINT f_dest;
+
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_disp6 = EXTRACT_MSB0_SINT (insn, 32, 16, 6);
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
+
+  /* Record the fields for the semantic handler.  */
+  FLD (f_disp6) = f_disp6;
+  FLD (f_left) = f_left;
+  FLD (f_dest) = f_dest;
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldloq", "f_disp6 0x%x", 'x', f_disp6, "f_left 0x%x", 'x', f_left, "f_dest 0x%x", 'x', f_dest, (char *) 0));
+
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_rm) = f_left;
+      FLD (out_rd) = f_dest;
+    }
+#endif
 #undef FLD
     return idesc;
   }
@@ -1650,87 +3082,296 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
  extract_sfmt_ldxb:
   {
     const IDESC *idesc = &sh64_media_insn_data[itype];
-    CGEN_INSN_INT insn = entire_insn;
+    CGEN_INSN_WORD insn = entire_insn;
 #define FLD(f) abuf->fields.sfmt_add.f
     UINT f_left;
     UINT f_right;
     UINT f_dest;
 
-    f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6);
-    f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6);
-    f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6);
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
 
   /* Record the fields for the semantic handler.  */
   FLD (f_left) = f_left;
   FLD (f_right) = f_right;
   FLD (f_dest) = f_dest;
-  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));
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldxb", "f_left 0x%x", 'x', f_left, "f_right 0x%x", 'x', f_right, "f_dest 0x%x", 'x', f_dest, (char *) 0));
 
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_rm) = f_left;
+      FLD (in_rn) = f_right;
+      FLD (out_rd) = f_dest;
+    }
+#endif
 #undef FLD
     return idesc;
   }
 
- extract_sfmt_mcmv:
+ extract_sfmt_ldxl:
+  {
+    const IDESC *idesc = &sh64_media_insn_data[itype];
+    CGEN_INSN_WORD insn = entire_insn;
+#define FLD(f) abuf->fields.sfmt_add.f
+    UINT f_left;
+    UINT f_right;
+    UINT f_dest;
+
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
+
+  /* Record the fields for the semantic handler.  */
+  FLD (f_left) = f_left;
+  FLD (f_right) = f_right;
+  FLD (f_dest) = f_dest;
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldxl", "f_left 0x%x", 'x', f_left, "f_right 0x%x", 'x', f_right, "f_dest 0x%x", 'x', f_dest, (char *) 0));
+
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_rm) = f_left;
+      FLD (in_rn) = f_right;
+      FLD (out_rd) = f_dest;
+    }
+#endif
+#undef FLD
+    return idesc;
+  }
+
+ extract_sfmt_ldxq:
   {
     const IDESC *idesc = &sh64_media_insn_data[itype];
-    CGEN_INSN_INT insn = entire_insn;
+    CGEN_INSN_WORD insn = entire_insn;
 #define FLD(f) abuf->fields.sfmt_add.f
     UINT f_left;
     UINT f_right;
     UINT f_dest;
 
-    f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6);
-    f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6);
-    f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6);
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
 
   /* Record the fields for the semantic handler.  */
+  FLD (f_left) = f_left;
+  FLD (f_right) = f_right;
   FLD (f_dest) = f_dest;
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldxq", "f_left 0x%x", 'x', f_left, "f_right 0x%x", 'x', f_right, "f_dest 0x%x", 'x', f_dest, (char *) 0));
+
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_rm) = f_left;
+      FLD (in_rn) = f_right;
+      FLD (out_rd) = f_dest;
+    }
+#endif
+#undef FLD
+    return idesc;
+  }
+
+ extract_sfmt_ldxub:
+  {
+    const IDESC *idesc = &sh64_media_insn_data[itype];
+    CGEN_INSN_WORD insn = entire_insn;
+#define FLD(f) abuf->fields.sfmt_add.f
+    UINT f_left;
+    UINT f_right;
+    UINT f_dest;
+
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
+
+  /* Record the fields for the semantic handler.  */
   FLD (f_left) = f_left;
   FLD (f_right) = f_right;
-  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));
+  FLD (f_dest) = f_dest;
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldxub", "f_left 0x%x", 'x', f_left, "f_right 0x%x", 'x', f_right, "f_dest 0x%x", 'x', f_dest, (char *) 0));
 
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_rm) = f_left;
+      FLD (in_rn) = f_right;
+      FLD (out_rd) = f_dest;
+    }
+#endif
 #undef FLD
     return idesc;
   }
 
- extract_sfmt_movi:
+ extract_sfmt_ldxuw:
   {
     const IDESC *idesc = &sh64_media_insn_data[itype];
-    CGEN_INSN_INT insn = entire_insn;
-#define FLD(f) abuf->fields.sfmt_movi.f
-    INT f_imm16;
+    CGEN_INSN_WORD insn = entire_insn;
+#define FLD(f) abuf->fields.sfmt_add.f
+    UINT f_left;
+    UINT f_right;
     UINT f_dest;
 
-    f_imm16 = EXTRACT_LSB0_INT (insn, 32, 25, 16);
-    f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6);
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
 
   /* Record the fields for the semantic handler.  */
-  FLD (f_imm16) = f_imm16;
+  FLD (f_left) = f_left;
+  FLD (f_right) = f_right;
   FLD (f_dest) = f_dest;
-  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));
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldxuw", "f_left 0x%x", 'x', f_left, "f_right 0x%x", 'x', f_right, "f_dest 0x%x", 'x', f_dest, (char *) 0));
 
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_rm) = f_left;
+      FLD (in_rn) = f_right;
+      FLD (out_rd) = f_dest;
+    }
+#endif
 #undef FLD
     return idesc;
   }
 
- extract_sfmt_mpermw:
+ extract_sfmt_ldxw:
   {
     const IDESC *idesc = &sh64_media_insn_data[itype];
-    CGEN_INSN_INT insn = entire_insn;
+    CGEN_INSN_WORD insn = entire_insn;
 #define FLD(f) abuf->fields.sfmt_add.f
     UINT f_left;
     UINT f_right;
     UINT f_dest;
 
-    f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6);
-    f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6);
-    f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6);
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
 
   /* Record the fields for the semantic handler.  */
   FLD (f_left) = f_left;
   FLD (f_right) = f_right;
   FLD (f_dest) = f_dest;
-  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));
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldxw", "f_left 0x%x", 'x', f_left, "f_right 0x%x", 'x', f_right, "f_dest 0x%x", 'x', f_dest, (char *) 0));
+
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_rm) = f_left;
+      FLD (in_rn) = f_right;
+      FLD (out_rd) = f_dest;
+    }
+#endif
+#undef FLD
+    return idesc;
+  }
+
+ extract_sfmt_mcmv:
+  {
+    const IDESC *idesc = &sh64_media_insn_data[itype];
+    CGEN_INSN_WORD insn = entire_insn;
+#define FLD(f) abuf->fields.sfmt_add.f
+    UINT f_left;
+    UINT f_right;
+    UINT f_dest;
+
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
+
+  /* Record the fields for the semantic handler.  */
+  FLD (f_dest) = f_dest;
+  FLD (f_left) = f_left;
+  FLD (f_right) = f_right;
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mcmv", "f_dest 0x%x", 'x', f_dest, "f_left 0x%x", 'x', f_left, "f_right 0x%x", 'x', f_right, (char *) 0));
+
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_rd) = f_dest;
+      FLD (in_rm) = f_left;
+      FLD (in_rn) = f_right;
+      FLD (out_rd) = f_dest;
+    }
+#endif
+#undef FLD
+    return idesc;
+  }
+
+ extract_sfmt_mmacnfx_wl:
+  {
+    const IDESC *idesc = &sh64_media_insn_data[itype];
+    CGEN_INSN_WORD insn = entire_insn;
+#define FLD(f) abuf->fields.sfmt_add.f
+    UINT f_left;
+    UINT f_right;
+    UINT f_dest;
+
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
+
+  /* Record the fields for the semantic handler.  */
+  FLD (f_dest) = f_dest;
+  FLD (f_left) = f_left;
+  FLD (f_right) = f_right;
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mmacnfx_wl", "f_dest 0x%x", 'x', f_dest, "f_left 0x%x", 'x', f_left, "f_right 0x%x", 'x', f_right, (char *) 0));
+
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_rd) = f_dest;
+      FLD (in_rm) = f_left;
+      FLD (in_rn) = f_right;
+      FLD (out_rd) = f_dest;
+    }
+#endif
+#undef FLD
+    return idesc;
+  }
+
+ extract_sfmt_movi:
+  {
+    const IDESC *idesc = &sh64_media_insn_data[itype];
+    CGEN_INSN_WORD insn = entire_insn;
+#define FLD(f) abuf->fields.sfmt_movi.f
+    INT f_imm16;
+    UINT f_dest;
+
+    f_imm16 = EXTRACT_MSB0_SINT (insn, 32, 6, 16);
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
+
+  /* Record the fields for the semantic handler.  */
+  FLD (f_imm16) = f_imm16;
+  FLD (f_dest) = f_dest;
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movi", "f_imm16 0x%x", 'x', f_imm16, "f_dest 0x%x", 'x', f_dest, (char *) 0));
+
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (out_rd) = f_dest;
+    }
+#endif
+#undef FLD
+    return idesc;
+  }
+
+ extract_sfmt_nop:
+  {
+    const IDESC *idesc = &sh64_media_insn_data[itype];
+#define FLD(f) abuf->fields.sfmt_empty.f
+
+
+  /* Record the fields for the semantic handler.  */
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_nop", (char *) 0));
 
 #undef FLD
     return idesc;
@@ -1739,22 +3380,55 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
  extract_sfmt_ori:
   {
     const IDESC *idesc = &sh64_media_insn_data[itype];
-    CGEN_INSN_INT insn = entire_insn;
+    CGEN_INSN_WORD insn = entire_insn;
 #define FLD(f) abuf->fields.sfmt_ori.f
     UINT f_left;
     INT f_imm10;
     UINT f_dest;
 
-    f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6);
-    f_imm10 = EXTRACT_LSB0_INT (insn, 32, 19, 10);
-    f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6);
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_imm10 = EXTRACT_MSB0_SINT (insn, 32, 12, 10);
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
 
   /* Record the fields for the semantic handler.  */
   FLD (f_imm10) = f_imm10;
   FLD (f_left) = f_left;
   FLD (f_dest) = f_dest;
-  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));
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ori", "f_imm10 0x%x", 'x', f_imm10, "f_left 0x%x", 'x', f_left, "f_dest 0x%x", 'x', f_dest, (char *) 0));
 
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_rm) = f_left;
+      FLD (out_rd) = f_dest;
+    }
+#endif
+#undef FLD
+    return idesc;
+  }
+
+ extract_sfmt_prefi:
+  {
+    const IDESC *idesc = &sh64_media_insn_data[itype];
+    CGEN_INSN_WORD insn = entire_insn;
+#define FLD(f) abuf->fields.sfmt_xori.f
+    UINT f_left;
+
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+
+  /* Record the fields for the semantic handler.  */
+  FLD (f_left) = f_left;
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_prefi", "f_left 0x%x", 'x', f_left, (char *) 0));
+
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_rm) = f_left;
+      FLD (out_rm) = f_left;
+    }
+#endif
 #undef FLD
     return idesc;
   }
@@ -1762,19 +3436,26 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
  extract_sfmt_pta:
   {
     const IDESC *idesc = &sh64_media_insn_data[itype];
-    CGEN_INSN_INT insn = entire_insn;
+    CGEN_INSN_WORD insn = entire_insn;
 #define FLD(f) abuf->fields.sfmt_pta.f
     DI f_disp16;
     UINT f_tra;
 
-    f_disp16 = ((((EXTRACT_LSB0_INT (insn, 32, 25, 16)) << (2))) + (pc));
-    f_tra = EXTRACT_LSB0_UINT (insn, 32, 6, 3);
+    f_disp16 = ((((EXTRACT_MSB0_SINT (insn, 32, 6, 16)) << (2))) + (pc));
+    f_tra = EXTRACT_MSB0_UINT (insn, 32, 25, 3);
 
   /* Record the fields for the semantic handler.  */
   FLD (f_disp16) = f_disp16;
   FLD (f_tra) = f_tra;
-  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));
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_pta", "f_disp16 0x%x", 'x', f_disp16, "f_tra 0x%x", 'x', f_tra, (char *) 0));
 
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (out_tra) = f_tra;
+    }
+#endif
 #undef FLD
     return idesc;
   }
@@ -1782,19 +3463,27 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
  extract_sfmt_ptabs:
   {
     const IDESC *idesc = &sh64_media_insn_data[itype];
-    CGEN_INSN_INT insn = entire_insn;
+    CGEN_INSN_WORD insn = entire_insn;
 #define FLD(f) abuf->fields.sfmt_beq.f
     UINT f_right;
     UINT f_tra;
 
-    f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6);
-    f_tra = EXTRACT_LSB0_UINT (insn, 32, 6, 3);
+    f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
+    f_tra = EXTRACT_MSB0_UINT (insn, 32, 25, 3);
 
   /* Record the fields for the semantic handler.  */
   FLD (f_right) = f_right;
   FLD (f_tra) = f_tra;
-  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));
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ptabs", "f_right 0x%x", 'x', f_right, "f_tra 0x%x", 'x', f_tra, (char *) 0));
 
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_rn) = f_right;
+      FLD (out_tra) = f_tra;
+    }
+#endif
 #undef FLD
     return idesc;
   }
@@ -1802,85 +3491,116 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
  extract_sfmt_ptrel:
   {
     const IDESC *idesc = &sh64_media_insn_data[itype];
-    CGEN_INSN_INT insn = entire_insn;
+    CGEN_INSN_WORD insn = entire_insn;
 #define FLD(f) abuf->fields.sfmt_beq.f
     UINT f_right;
     UINT f_tra;
 
-    f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6);
-    f_tra = EXTRACT_LSB0_UINT (insn, 32, 6, 3);
+    f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
+    f_tra = EXTRACT_MSB0_UINT (insn, 32, 25, 3);
 
   /* Record the fields for the semantic handler.  */
   FLD (f_right) = f_right;
   FLD (f_tra) = f_tra;
-  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));
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ptrel", "f_right 0x%x", 'x', f_right, "f_tra 0x%x", 'x', f_tra, (char *) 0));
 
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_rn) = f_right;
+      FLD (out_tra) = f_tra;
+    }
+#endif
 #undef FLD
     return idesc;
   }
 
- extract_sfmt_putcon:
+ extract_sfmt_putcfg:
   {
     const IDESC *idesc = &sh64_media_insn_data[itype];
-    CGEN_INSN_INT insn = entire_insn;
-#define FLD(f) abuf->fields.sfmt_xori.f
+    CGEN_INSN_WORD insn = entire_insn;
+#define FLD(f) abuf->fields.sfmt_getcfg.f
     UINT f_left;
+    INT f_disp6;
     UINT f_dest;
 
-    f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6);
-    f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6);
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_disp6 = EXTRACT_MSB0_SINT (insn, 32, 16, 6);
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
 
   /* Record the fields for the semantic handler.  */
-  FLD (f_left) = f_left;
+  FLD (f_disp6) = f_disp6;
   FLD (f_dest) = f_dest;
-  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));
+  FLD (f_left) = f_left;
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_putcfg", "f_disp6 0x%x", 'x', f_disp6, "f_dest 0x%x", 'x', f_dest, "f_left 0x%x", 'x', f_left, (char *) 0));
 
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_rd) = f_dest;
+      FLD (in_rm) = f_left;
+    }
+#endif
 #undef FLD
     return idesc;
   }
 
- extract_sfmt_shari:
+ extract_sfmt_putcon:
   {
     const IDESC *idesc = &sh64_media_insn_data[itype];
-    CGEN_INSN_INT insn = entire_insn;
-#define FLD(f) abuf->fields.sfmt_shari.f
+    CGEN_INSN_WORD insn = entire_insn;
+#define FLD(f) abuf->fields.sfmt_xori.f
     UINT f_left;
-    UINT f_uimm6;
     UINT f_dest;
 
-    f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6);
-    f_uimm6 = EXTRACT_LSB0_UINT (insn, 32, 15, 6);
-    f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6);
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
 
   /* Record the fields for the semantic handler.  */
   FLD (f_left) = f_left;
-  FLD (f_uimm6) = f_uimm6;
   FLD (f_dest) = f_dest;
-  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));
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_putcon", "f_left 0x%x", 'x', f_left, "f_dest 0x%x", 'x', f_dest, (char *) 0));
 
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_rm) = f_left;
+    }
+#endif
 #undef FLD
     return idesc;
   }
 
- extract_sfmt_sharil:
+ extract_sfmt_shari:
   {
     const IDESC *idesc = &sh64_media_insn_data[itype];
-    CGEN_INSN_INT insn = entire_insn;
+    CGEN_INSN_WORD insn = entire_insn;
 #define FLD(f) abuf->fields.sfmt_shari.f
     UINT f_left;
     UINT f_uimm6;
     UINT f_dest;
 
-    f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6);
-    f_uimm6 = EXTRACT_LSB0_UINT (insn, 32, 15, 6);
-    f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6);
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_uimm6 = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
 
   /* Record the fields for the semantic handler.  */
   FLD (f_left) = f_left;
   FLD (f_uimm6) = f_uimm6;
   FLD (f_dest) = f_dest;
-  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));
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_shari", "f_left 0x%x", 'x', f_left, "f_uimm6 0x%x", 'x', f_uimm6, "f_dest 0x%x", 'x', f_dest, (char *) 0));
 
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_rm) = f_left;
+      FLD (out_rd) = f_dest;
+    }
+#endif
 #undef FLD
     return idesc;
   }
@@ -1888,19 +3608,27 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
  extract_sfmt_shori:
   {
     const IDESC *idesc = &sh64_media_insn_data[itype];
-    CGEN_INSN_INT insn = entire_insn;
+    CGEN_INSN_WORD insn = entire_insn;
 #define FLD(f) abuf->fields.sfmt_shori.f
     UINT f_uimm16;
     UINT f_dest;
 
-    f_uimm16 = EXTRACT_LSB0_UINT (insn, 32, 25, 16);
-    f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6);
+    f_uimm16 = EXTRACT_MSB0_UINT (insn, 32, 6, 16);
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
 
   /* Record the fields for the semantic handler.  */
   FLD (f_dest) = f_dest;
   FLD (f_uimm16) = f_uimm16;
-  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));
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_shori", "f_dest 0x%x", 'x', f_dest, "f_uimm16 0x%x", 'x', f_uimm16, (char *) 0));
 
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_rd) = f_dest;
+      FLD (out_rd) = f_dest;
+    }
+#endif
 #undef FLD
     return idesc;
   }
@@ -1908,22 +3636,30 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
  extract_sfmt_stb:
   {
     const IDESC *idesc = &sh64_media_insn_data[itype];
-    CGEN_INSN_INT insn = entire_insn;
+    CGEN_INSN_WORD insn = entire_insn;
 #define FLD(f) abuf->fields.sfmt_addi.f
     UINT f_left;
     INT f_disp10;
     UINT f_dest;
 
-    f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6);
-    f_disp10 = EXTRACT_LSB0_INT (insn, 32, 19, 10);
-    f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6);
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_disp10 = EXTRACT_MSB0_SINT (insn, 32, 12, 10);
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
 
   /* Record the fields for the semantic handler.  */
   FLD (f_disp10) = f_disp10;
   FLD (f_dest) = f_dest;
   FLD (f_left) = f_left;
-  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));
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_stb", "f_disp10 0x%x", 'x', f_disp10, "f_dest 0x%x", 'x', f_dest, "f_left 0x%x", 'x', f_left, (char *) 0));
 
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_rd) = f_dest;
+      FLD (in_rm) = f_left;
+    }
+#endif
 #undef FLD
     return idesc;
   }
@@ -1931,22 +3667,30 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
  extract_sfmt_stl:
   {
     const IDESC *idesc = &sh64_media_insn_data[itype];
-    CGEN_INSN_INT insn = entire_insn;
+    CGEN_INSN_WORD insn = entire_insn;
 #define FLD(f) abuf->fields.sfmt_flds.f
     UINT f_left;
     SI f_disp10x4;
     UINT f_dest;
 
-    f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6);
-    f_disp10x4 = ((EXTRACT_LSB0_INT (insn, 32, 19, 10)) << (2));
-    f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6);
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_disp10x4 = ((EXTRACT_MSB0_SINT (insn, 32, 12, 10)) << (2));
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
 
   /* Record the fields for the semantic handler.  */
   FLD (f_disp10x4) = f_disp10x4;
   FLD (f_dest) = f_dest;
   FLD (f_left) = f_left;
-  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));
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_stl", "f_disp10x4 0x%x", 'x', f_disp10x4, "f_dest 0x%x", 'x', f_dest, "f_left 0x%x", 'x', f_left, (char *) 0));
 
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_rd) = f_dest;
+      FLD (in_rm) = f_left;
+    }
+#endif
 #undef FLD
     return idesc;
   }
@@ -1954,22 +3698,30 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
  extract_sfmt_stq:
   {
     const IDESC *idesc = &sh64_media_insn_data[itype];
-    CGEN_INSN_INT insn = entire_insn;
+    CGEN_INSN_WORD insn = entire_insn;
 #define FLD(f) abuf->fields.sfmt_fldd.f
     UINT f_left;
     SI f_disp10x8;
     UINT f_dest;
 
-    f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6);
-    f_disp10x8 = ((EXTRACT_LSB0_INT (insn, 32, 19, 10)) << (3));
-    f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6);
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_disp10x8 = ((EXTRACT_MSB0_SINT (insn, 32, 12, 10)) << (3));
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
 
   /* Record the fields for the semantic handler.  */
   FLD (f_disp10x8) = f_disp10x8;
   FLD (f_dest) = f_dest;
   FLD (f_left) = f_left;
-  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));
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_stq", "f_disp10x8 0x%x", 'x', f_disp10x8, "f_dest 0x%x", 'x', f_dest, "f_left 0x%x", 'x', f_left, (char *) 0));
 
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_rd) = f_dest;
+      FLD (in_rm) = f_left;
+    }
+#endif
 #undef FLD
     return idesc;
   }
@@ -1977,22 +3729,30 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
  extract_sfmt_stw:
   {
     const IDESC *idesc = &sh64_media_insn_data[itype];
-    CGEN_INSN_INT insn = entire_insn;
+    CGEN_INSN_WORD insn = entire_insn;
 #define FLD(f) abuf->fields.sfmt_lduw.f
     UINT f_left;
     SI f_disp10x2;
     UINT f_dest;
 
-    f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6);
-    f_disp10x2 = ((EXTRACT_LSB0_INT (insn, 32, 19, 10)) << (1));
-    f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6);
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_disp10x2 = ((EXTRACT_MSB0_SINT (insn, 32, 12, 10)) << (1));
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
 
   /* Record the fields for the semantic handler.  */
   FLD (f_disp10x2) = f_disp10x2;
   FLD (f_dest) = f_dest;
   FLD (f_left) = f_left;
-  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));
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_stw", "f_disp10x2 0x%x", 'x', f_disp10x2, "f_dest 0x%x", 'x', f_dest, "f_left 0x%x", 'x', f_left, (char *) 0));
 
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_rd) = f_dest;
+      FLD (in_rm) = f_left;
+    }
+#endif
 #undef FLD
     return idesc;
   }
@@ -2000,22 +3760,123 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
  extract_sfmt_sthil:
   {
     const IDESC *idesc = &sh64_media_insn_data[itype];
-    CGEN_INSN_INT insn = entire_insn;
-#define FLD(f) abuf->fields.sfmt_sthil.f
+    CGEN_INSN_WORD insn = entire_insn;
+#define FLD(f) abuf->fields.sfmt_getcfg.f
     UINT f_left;
     INT f_disp6;
     UINT f_dest;
 
-    f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6);
-    f_disp6 = EXTRACT_LSB0_INT (insn, 32, 15, 6);
-    f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6);
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_disp6 = EXTRACT_MSB0_SINT (insn, 32, 16, 6);
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
 
   /* Record the fields for the semantic handler.  */
   FLD (f_disp6) = f_disp6;
   FLD (f_dest) = f_dest;
   FLD (f_left) = f_left;
-  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));
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_sthil", "f_disp6 0x%x", 'x', f_disp6, "f_dest 0x%x", 'x', f_dest, "f_left 0x%x", 'x', f_left, (char *) 0));
 
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_rd) = f_dest;
+      FLD (in_rm) = f_left;
+    }
+#endif
+#undef FLD
+    return idesc;
+  }
+
+ extract_sfmt_sthiq:
+  {
+    const IDESC *idesc = &sh64_media_insn_data[itype];
+    CGEN_INSN_WORD insn = entire_insn;
+#define FLD(f) abuf->fields.sfmt_getcfg.f
+    UINT f_left;
+    INT f_disp6;
+    UINT f_dest;
+
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_disp6 = EXTRACT_MSB0_SINT (insn, 32, 16, 6);
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
+
+  /* Record the fields for the semantic handler.  */
+  FLD (f_disp6) = f_disp6;
+  FLD (f_dest) = f_dest;
+  FLD (f_left) = f_left;
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_sthiq", "f_disp6 0x%x", 'x', f_disp6, "f_dest 0x%x", 'x', f_dest, "f_left 0x%x", 'x', f_left, (char *) 0));
+
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_rd) = f_dest;
+      FLD (in_rm) = f_left;
+    }
+#endif
+#undef FLD
+    return idesc;
+  }
+
+ extract_sfmt_stlol:
+  {
+    const IDESC *idesc = &sh64_media_insn_data[itype];
+    CGEN_INSN_WORD insn = entire_insn;
+#define FLD(f) abuf->fields.sfmt_getcfg.f
+    UINT f_left;
+    INT f_disp6;
+    UINT f_dest;
+
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_disp6 = EXTRACT_MSB0_SINT (insn, 32, 16, 6);
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
+
+  /* Record the fields for the semantic handler.  */
+  FLD (f_disp6) = f_disp6;
+  FLD (f_dest) = f_dest;
+  FLD (f_left) = f_left;
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_stlol", "f_disp6 0x%x", 'x', f_disp6, "f_dest 0x%x", 'x', f_dest, "f_left 0x%x", 'x', f_left, (char *) 0));
+
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_rd) = f_dest;
+      FLD (in_rm) = f_left;
+    }
+#endif
+#undef FLD
+    return idesc;
+  }
+
+ extract_sfmt_stloq:
+  {
+    const IDESC *idesc = &sh64_media_insn_data[itype];
+    CGEN_INSN_WORD insn = entire_insn;
+#define FLD(f) abuf->fields.sfmt_getcfg.f
+    UINT f_left;
+    INT f_disp6;
+    UINT f_dest;
+
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_disp6 = EXTRACT_MSB0_SINT (insn, 32, 16, 6);
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
+
+  /* Record the fields for the semantic handler.  */
+  FLD (f_disp6) = f_disp6;
+  FLD (f_dest) = f_dest;
+  FLD (f_left) = f_left;
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_stloq", "f_disp6 0x%x", 'x', f_disp6, "f_dest 0x%x", 'x', f_dest, "f_left 0x%x", 'x', f_left, (char *) 0));
+
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_rd) = f_dest;
+      FLD (in_rm) = f_left;
+    }
+#endif
 #undef FLD
     return idesc;
   }
@@ -2023,22 +3884,127 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
  extract_sfmt_stxb:
   {
     const IDESC *idesc = &sh64_media_insn_data[itype];
-    CGEN_INSN_INT insn = entire_insn;
+    CGEN_INSN_WORD insn = entire_insn;
+#define FLD(f) abuf->fields.sfmt_add.f
+    UINT f_left;
+    UINT f_right;
+    UINT f_dest;
+
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
+
+  /* Record the fields for the semantic handler.  */
+  FLD (f_dest) = f_dest;
+  FLD (f_left) = f_left;
+  FLD (f_right) = f_right;
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_stxb", "f_dest 0x%x", 'x', f_dest, "f_left 0x%x", 'x', f_left, "f_right 0x%x", 'x', f_right, (char *) 0));
+
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_rd) = f_dest;
+      FLD (in_rm) = f_left;
+      FLD (in_rn) = f_right;
+    }
+#endif
+#undef FLD
+    return idesc;
+  }
+
+ extract_sfmt_stxl:
+  {
+    const IDESC *idesc = &sh64_media_insn_data[itype];
+    CGEN_INSN_WORD insn = entire_insn;
+#define FLD(f) abuf->fields.sfmt_add.f
+    UINT f_left;
+    UINT f_right;
+    UINT f_dest;
+
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
+
+  /* Record the fields for the semantic handler.  */
+  FLD (f_dest) = f_dest;
+  FLD (f_left) = f_left;
+  FLD (f_right) = f_right;
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_stxl", "f_dest 0x%x", 'x', f_dest, "f_left 0x%x", 'x', f_left, "f_right 0x%x", 'x', f_right, (char *) 0));
+
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_rd) = f_dest;
+      FLD (in_rm) = f_left;
+      FLD (in_rn) = f_right;
+    }
+#endif
+#undef FLD
+    return idesc;
+  }
+
+ extract_sfmt_stxq:
+  {
+    const IDESC *idesc = &sh64_media_insn_data[itype];
+    CGEN_INSN_WORD insn = entire_insn;
 #define FLD(f) abuf->fields.sfmt_add.f
     UINT f_left;
     UINT f_right;
     UINT f_dest;
 
-    f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6);
-    f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6);
-    f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6);
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
 
   /* Record the fields for the semantic handler.  */
   FLD (f_dest) = f_dest;
   FLD (f_left) = f_left;
   FLD (f_right) = f_right;
-  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));
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_stxq", "f_dest 0x%x", 'x', f_dest, "f_left 0x%x", 'x', f_left, "f_right 0x%x", 'x', f_right, (char *) 0));
 
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_rd) = f_dest;
+      FLD (in_rm) = f_left;
+      FLD (in_rn) = f_right;
+    }
+#endif
+#undef FLD
+    return idesc;
+  }
+
+ extract_sfmt_stxw:
+  {
+    const IDESC *idesc = &sh64_media_insn_data[itype];
+    CGEN_INSN_WORD insn = entire_insn;
+#define FLD(f) abuf->fields.sfmt_add.f
+    UINT f_left;
+    UINT f_right;
+    UINT f_dest;
+
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
+
+  /* Record the fields for the semantic handler.  */
+  FLD (f_dest) = f_dest;
+  FLD (f_left) = f_left;
+  FLD (f_right) = f_right;
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_stxw", "f_dest 0x%x", 'x', f_dest, "f_left 0x%x", 'x', f_left, "f_right 0x%x", 'x', f_right, (char *) 0));
+
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_rd) = f_dest;
+      FLD (in_rm) = f_left;
+      FLD (in_rn) = f_right;
+    }
+#endif
 #undef FLD
     return idesc;
   }
@@ -2046,22 +4012,32 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
  extract_sfmt_swapq:
   {
     const IDESC *idesc = &sh64_media_insn_data[itype];
-    CGEN_INSN_INT insn = entire_insn;
+    CGEN_INSN_WORD insn = entire_insn;
 #define FLD(f) abuf->fields.sfmt_add.f
     UINT f_left;
     UINT f_right;
     UINT f_dest;
 
-    f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6);
-    f_right = EXTRACT_LSB0_UINT (insn, 32, 15, 6);
-    f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6);
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_right = EXTRACT_MSB0_UINT (insn, 32, 16, 6);
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
 
   /* Record the fields for the semantic handler.  */
   FLD (f_dest) = f_dest;
   FLD (f_left) = f_left;
   FLD (f_right) = f_right;
-  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));
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_swapq", "f_dest 0x%x", 'x', f_dest, "f_left 0x%x", 'x', f_left, "f_right 0x%x", 'x', f_right, (char *) 0));
 
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_rd) = f_dest;
+      FLD (in_rm) = f_left;
+      FLD (in_rn) = f_right;
+      FLD (out_rd) = f_dest;
+    }
+#endif
 #undef FLD
     return idesc;
   }
@@ -2069,16 +4045,23 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
  extract_sfmt_trapa:
   {
     const IDESC *idesc = &sh64_media_insn_data[itype];
-    CGEN_INSN_INT insn = entire_insn;
+    CGEN_INSN_WORD insn = entire_insn;
 #define FLD(f) abuf->fields.sfmt_xori.f
     UINT f_left;
 
-    f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6);
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
 
   /* Record the fields for the semantic handler.  */
   FLD (f_left) = f_left;
-  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_trapa", "f_left 0x%x", 'x', f_left, (char *) 0));
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_trapa", "f_left 0x%x", 'x', f_left, (char *) 0));
 
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_rm) = f_left;
+    }
+#endif
 #undef FLD
     return idesc;
   }
@@ -2086,22 +4069,30 @@ sh64_media_decode (SIM_CPU *current_cpu, IADDR pc,
  extract_sfmt_xori:
   {
     const IDESC *idesc = &sh64_media_insn_data[itype];
-    CGEN_INSN_INT insn = entire_insn;
+    CGEN_INSN_WORD insn = entire_insn;
 #define FLD(f) abuf->fields.sfmt_xori.f
     UINT f_left;
     INT f_imm6;
     UINT f_dest;
 
-    f_left = EXTRACT_LSB0_UINT (insn, 32, 25, 6);
-    f_imm6 = EXTRACT_LSB0_INT (insn, 32, 15, 6);
-    f_dest = EXTRACT_LSB0_UINT (insn, 32, 9, 6);
+    f_left = EXTRACT_MSB0_UINT (insn, 32, 6, 6);
+    f_imm6 = EXTRACT_MSB0_SINT (insn, 32, 16, 6);
+    f_dest = EXTRACT_MSB0_UINT (insn, 32, 22, 6);
 
   /* Record the fields for the semantic handler.  */
   FLD (f_imm6) = f_imm6;
   FLD (f_left) = f_left;
   FLD (f_dest) = f_dest;
-  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));
+  CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_xori", "f_imm6 0x%x", 'x', f_imm6, "f_left 0x%x", 'x', f_left, "f_dest 0x%x", 'x', f_dest, (char *) 0));
 
+#if WITH_PROFILE_MODEL_P
+  /* Record the fields for profiling.  */
+  if (PROFILE_MODEL_P (current_cpu))
+    {
+      FLD (in_rm) = f_left;
+      FLD (out_rd) = f_dest;
+    }
+#endif
 #undef FLD
     return idesc;
   }
This page took 0.105021 seconds and 4 git commands to generate.