xref: /netbsd-src/external/gpl3/gdb/dist/sim/m32r/decode.c (revision 05fa08567a80471fd0eb3843a238392874f2577c)
14e98e3e1Schristos /* Simulator instruction decoder for m32rbf.
24e98e3e1Schristos 
34e98e3e1Schristos THIS FILE IS MACHINE GENERATED WITH CGEN.
44e98e3e1Schristos 
5*05fa0856Schristos Copyright (C) 1996-2024 Free Software Foundation, Inc.
64e98e3e1Schristos 
74e98e3e1Schristos This file is part of the GNU simulators.
84e98e3e1Schristos 
94e98e3e1Schristos    This file is free software; you can redistribute it and/or modify
104e98e3e1Schristos    it under the terms of the GNU General Public License as published by
114e98e3e1Schristos    the Free Software Foundation; either version 3, or (at your option)
124e98e3e1Schristos    any later version.
134e98e3e1Schristos 
144e98e3e1Schristos    It is distributed in the hope that it will be useful, but WITHOUT
154e98e3e1Schristos    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
164e98e3e1Schristos    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
174e98e3e1Schristos    License for more details.
184e98e3e1Schristos 
194e98e3e1Schristos    You should have received a copy of the GNU General Public License along
20*05fa0856Schristos    with this program; if not, write to the Free Software Foundation, Inc.,
21*05fa0856Schristos    51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
224e98e3e1Schristos 
234e98e3e1Schristos */
244e98e3e1Schristos 
254e98e3e1Schristos #define WANT_CPU m32rbf
264e98e3e1Schristos #define WANT_CPU_M32RBF
274e98e3e1Schristos 
284e98e3e1Schristos #include "sim-main.h"
294e98e3e1Schristos #include "sim-assert.h"
30*05fa0856Schristos #include "cgen-mem.h"
31*05fa0856Schristos #include "cgen-ops.h"
324e98e3e1Schristos 
334e98e3e1Schristos /* The instruction descriptor array.
344e98e3e1Schristos    This is computed at runtime.  Space for it is not malloc'd to save a
354e98e3e1Schristos    teensy bit of cpu in the decoder.  Moving it to malloc space is trivial
364e98e3e1Schristos    but won't be done until necessary (we don't currently support the runtime
374e98e3e1Schristos    addition of instructions nor an SMP machine with different cpus).  */
384e98e3e1Schristos static IDESC m32rbf_insn_data[M32RBF_INSN__MAX];
394e98e3e1Schristos 
404e98e3e1Schristos /* Commas between elements are contained in the macros.
414e98e3e1Schristos    Some of these are conditionally compiled out.  */
424e98e3e1Schristos 
434e98e3e1Schristos static const struct insn_sem m32rbf_insn_sem[] =
444e98e3e1Schristos {
454e98e3e1Schristos   { VIRTUAL_INSN_X_INVALID, M32RBF_INSN_X_INVALID, M32RBF_SFMT_EMPTY },
464e98e3e1Schristos   { VIRTUAL_INSN_X_AFTER, M32RBF_INSN_X_AFTER, M32RBF_SFMT_EMPTY },
474e98e3e1Schristos   { VIRTUAL_INSN_X_BEFORE, M32RBF_INSN_X_BEFORE, M32RBF_SFMT_EMPTY },
484e98e3e1Schristos   { VIRTUAL_INSN_X_CTI_CHAIN, M32RBF_INSN_X_CTI_CHAIN, M32RBF_SFMT_EMPTY },
494e98e3e1Schristos   { VIRTUAL_INSN_X_CHAIN, M32RBF_INSN_X_CHAIN, M32RBF_SFMT_EMPTY },
504e98e3e1Schristos   { VIRTUAL_INSN_X_BEGIN, M32RBF_INSN_X_BEGIN, M32RBF_SFMT_EMPTY },
514e98e3e1Schristos   { M32R_INSN_ADD, M32RBF_INSN_ADD, M32RBF_SFMT_ADD },
524e98e3e1Schristos   { M32R_INSN_ADD3, M32RBF_INSN_ADD3, M32RBF_SFMT_ADD3 },
534e98e3e1Schristos   { M32R_INSN_AND, M32RBF_INSN_AND, M32RBF_SFMT_ADD },
544e98e3e1Schristos   { M32R_INSN_AND3, M32RBF_INSN_AND3, M32RBF_SFMT_AND3 },
554e98e3e1Schristos   { M32R_INSN_OR, M32RBF_INSN_OR, M32RBF_SFMT_ADD },
564e98e3e1Schristos   { M32R_INSN_OR3, M32RBF_INSN_OR3, M32RBF_SFMT_OR3 },
574e98e3e1Schristos   { M32R_INSN_XOR, M32RBF_INSN_XOR, M32RBF_SFMT_ADD },
584e98e3e1Schristos   { M32R_INSN_XOR3, M32RBF_INSN_XOR3, M32RBF_SFMT_AND3 },
594e98e3e1Schristos   { M32R_INSN_ADDI, M32RBF_INSN_ADDI, M32RBF_SFMT_ADDI },
604e98e3e1Schristos   { M32R_INSN_ADDV, M32RBF_INSN_ADDV, M32RBF_SFMT_ADDV },
614e98e3e1Schristos   { M32R_INSN_ADDV3, M32RBF_INSN_ADDV3, M32RBF_SFMT_ADDV3 },
624e98e3e1Schristos   { M32R_INSN_ADDX, M32RBF_INSN_ADDX, M32RBF_SFMT_ADDX },
634e98e3e1Schristos   { M32R_INSN_BC8, M32RBF_INSN_BC8, M32RBF_SFMT_BC8 },
644e98e3e1Schristos   { M32R_INSN_BC24, M32RBF_INSN_BC24, M32RBF_SFMT_BC24 },
654e98e3e1Schristos   { M32R_INSN_BEQ, M32RBF_INSN_BEQ, M32RBF_SFMT_BEQ },
664e98e3e1Schristos   { M32R_INSN_BEQZ, M32RBF_INSN_BEQZ, M32RBF_SFMT_BEQZ },
674e98e3e1Schristos   { M32R_INSN_BGEZ, M32RBF_INSN_BGEZ, M32RBF_SFMT_BEQZ },
684e98e3e1Schristos   { M32R_INSN_BGTZ, M32RBF_INSN_BGTZ, M32RBF_SFMT_BEQZ },
694e98e3e1Schristos   { M32R_INSN_BLEZ, M32RBF_INSN_BLEZ, M32RBF_SFMT_BEQZ },
704e98e3e1Schristos   { M32R_INSN_BLTZ, M32RBF_INSN_BLTZ, M32RBF_SFMT_BEQZ },
714e98e3e1Schristos   { M32R_INSN_BNEZ, M32RBF_INSN_BNEZ, M32RBF_SFMT_BEQZ },
724e98e3e1Schristos   { M32R_INSN_BL8, M32RBF_INSN_BL8, M32RBF_SFMT_BL8 },
734e98e3e1Schristos   { M32R_INSN_BL24, M32RBF_INSN_BL24, M32RBF_SFMT_BL24 },
744e98e3e1Schristos   { M32R_INSN_BNC8, M32RBF_INSN_BNC8, M32RBF_SFMT_BC8 },
754e98e3e1Schristos   { M32R_INSN_BNC24, M32RBF_INSN_BNC24, M32RBF_SFMT_BC24 },
764e98e3e1Schristos   { M32R_INSN_BNE, M32RBF_INSN_BNE, M32RBF_SFMT_BEQ },
774e98e3e1Schristos   { M32R_INSN_BRA8, M32RBF_INSN_BRA8, M32RBF_SFMT_BRA8 },
784e98e3e1Schristos   { M32R_INSN_BRA24, M32RBF_INSN_BRA24, M32RBF_SFMT_BRA24 },
794e98e3e1Schristos   { M32R_INSN_CMP, M32RBF_INSN_CMP, M32RBF_SFMT_CMP },
804e98e3e1Schristos   { M32R_INSN_CMPI, M32RBF_INSN_CMPI, M32RBF_SFMT_CMPI },
814e98e3e1Schristos   { M32R_INSN_CMPU, M32RBF_INSN_CMPU, M32RBF_SFMT_CMP },
824e98e3e1Schristos   { M32R_INSN_CMPUI, M32RBF_INSN_CMPUI, M32RBF_SFMT_CMPI },
834e98e3e1Schristos   { M32R_INSN_DIV, M32RBF_INSN_DIV, M32RBF_SFMT_DIV },
844e98e3e1Schristos   { M32R_INSN_DIVU, M32RBF_INSN_DIVU, M32RBF_SFMT_DIV },
854e98e3e1Schristos   { M32R_INSN_REM, M32RBF_INSN_REM, M32RBF_SFMT_DIV },
864e98e3e1Schristos   { M32R_INSN_REMU, M32RBF_INSN_REMU, M32RBF_SFMT_DIV },
874e98e3e1Schristos   { M32R_INSN_JL, M32RBF_INSN_JL, M32RBF_SFMT_JL },
884e98e3e1Schristos   { M32R_INSN_JMP, M32RBF_INSN_JMP, M32RBF_SFMT_JMP },
894e98e3e1Schristos   { M32R_INSN_LD, M32RBF_INSN_LD, M32RBF_SFMT_LD },
904e98e3e1Schristos   { M32R_INSN_LD_D, M32RBF_INSN_LD_D, M32RBF_SFMT_LD_D },
914e98e3e1Schristos   { M32R_INSN_LDB, M32RBF_INSN_LDB, M32RBF_SFMT_LDB },
924e98e3e1Schristos   { M32R_INSN_LDB_D, M32RBF_INSN_LDB_D, M32RBF_SFMT_LDB_D },
934e98e3e1Schristos   { M32R_INSN_LDH, M32RBF_INSN_LDH, M32RBF_SFMT_LDH },
944e98e3e1Schristos   { M32R_INSN_LDH_D, M32RBF_INSN_LDH_D, M32RBF_SFMT_LDH_D },
954e98e3e1Schristos   { M32R_INSN_LDUB, M32RBF_INSN_LDUB, M32RBF_SFMT_LDB },
964e98e3e1Schristos   { M32R_INSN_LDUB_D, M32RBF_INSN_LDUB_D, M32RBF_SFMT_LDB_D },
974e98e3e1Schristos   { M32R_INSN_LDUH, M32RBF_INSN_LDUH, M32RBF_SFMT_LDH },
984e98e3e1Schristos   { M32R_INSN_LDUH_D, M32RBF_INSN_LDUH_D, M32RBF_SFMT_LDH_D },
994e98e3e1Schristos   { M32R_INSN_LD_PLUS, M32RBF_INSN_LD_PLUS, M32RBF_SFMT_LD_PLUS },
1004e98e3e1Schristos   { M32R_INSN_LD24, M32RBF_INSN_LD24, M32RBF_SFMT_LD24 },
1014e98e3e1Schristos   { M32R_INSN_LDI8, M32RBF_INSN_LDI8, M32RBF_SFMT_LDI8 },
1024e98e3e1Schristos   { M32R_INSN_LDI16, M32RBF_INSN_LDI16, M32RBF_SFMT_LDI16 },
1034e98e3e1Schristos   { M32R_INSN_LOCK, M32RBF_INSN_LOCK, M32RBF_SFMT_LOCK },
1044e98e3e1Schristos   { M32R_INSN_MACHI, M32RBF_INSN_MACHI, M32RBF_SFMT_MACHI },
1054e98e3e1Schristos   { M32R_INSN_MACLO, M32RBF_INSN_MACLO, M32RBF_SFMT_MACHI },
1064e98e3e1Schristos   { M32R_INSN_MACWHI, M32RBF_INSN_MACWHI, M32RBF_SFMT_MACHI },
1074e98e3e1Schristos   { M32R_INSN_MACWLO, M32RBF_INSN_MACWLO, M32RBF_SFMT_MACHI },
1084e98e3e1Schristos   { M32R_INSN_MUL, M32RBF_INSN_MUL, M32RBF_SFMT_ADD },
1094e98e3e1Schristos   { M32R_INSN_MULHI, M32RBF_INSN_MULHI, M32RBF_SFMT_MULHI },
1104e98e3e1Schristos   { M32R_INSN_MULLO, M32RBF_INSN_MULLO, M32RBF_SFMT_MULHI },
1114e98e3e1Schristos   { M32R_INSN_MULWHI, M32RBF_INSN_MULWHI, M32RBF_SFMT_MULHI },
1124e98e3e1Schristos   { M32R_INSN_MULWLO, M32RBF_INSN_MULWLO, M32RBF_SFMT_MULHI },
1134e98e3e1Schristos   { M32R_INSN_MV, M32RBF_INSN_MV, M32RBF_SFMT_MV },
1144e98e3e1Schristos   { M32R_INSN_MVFACHI, M32RBF_INSN_MVFACHI, M32RBF_SFMT_MVFACHI },
1154e98e3e1Schristos   { M32R_INSN_MVFACLO, M32RBF_INSN_MVFACLO, M32RBF_SFMT_MVFACHI },
1164e98e3e1Schristos   { M32R_INSN_MVFACMI, M32RBF_INSN_MVFACMI, M32RBF_SFMT_MVFACHI },
1174e98e3e1Schristos   { M32R_INSN_MVFC, M32RBF_INSN_MVFC, M32RBF_SFMT_MVFC },
1184e98e3e1Schristos   { M32R_INSN_MVTACHI, M32RBF_INSN_MVTACHI, M32RBF_SFMT_MVTACHI },
1194e98e3e1Schristos   { M32R_INSN_MVTACLO, M32RBF_INSN_MVTACLO, M32RBF_SFMT_MVTACHI },
1204e98e3e1Schristos   { M32R_INSN_MVTC, M32RBF_INSN_MVTC, M32RBF_SFMT_MVTC },
1214e98e3e1Schristos   { M32R_INSN_NEG, M32RBF_INSN_NEG, M32RBF_SFMT_MV },
1224e98e3e1Schristos   { M32R_INSN_NOP, M32RBF_INSN_NOP, M32RBF_SFMT_NOP },
1234e98e3e1Schristos   { M32R_INSN_NOT, M32RBF_INSN_NOT, M32RBF_SFMT_MV },
1244e98e3e1Schristos   { M32R_INSN_RAC, M32RBF_INSN_RAC, M32RBF_SFMT_RAC },
1254e98e3e1Schristos   { M32R_INSN_RACH, M32RBF_INSN_RACH, M32RBF_SFMT_RAC },
1264e98e3e1Schristos   { M32R_INSN_RTE, M32RBF_INSN_RTE, M32RBF_SFMT_RTE },
1274e98e3e1Schristos   { M32R_INSN_SETH, M32RBF_INSN_SETH, M32RBF_SFMT_SETH },
1284e98e3e1Schristos   { M32R_INSN_SLL, M32RBF_INSN_SLL, M32RBF_SFMT_ADD },
1294e98e3e1Schristos   { M32R_INSN_SLL3, M32RBF_INSN_SLL3, M32RBF_SFMT_SLL3 },
1304e98e3e1Schristos   { M32R_INSN_SLLI, M32RBF_INSN_SLLI, M32RBF_SFMT_SLLI },
1314e98e3e1Schristos   { M32R_INSN_SRA, M32RBF_INSN_SRA, M32RBF_SFMT_ADD },
1324e98e3e1Schristos   { M32R_INSN_SRA3, M32RBF_INSN_SRA3, M32RBF_SFMT_SLL3 },
1334e98e3e1Schristos   { M32R_INSN_SRAI, M32RBF_INSN_SRAI, M32RBF_SFMT_SLLI },
1344e98e3e1Schristos   { M32R_INSN_SRL, M32RBF_INSN_SRL, M32RBF_SFMT_ADD },
1354e98e3e1Schristos   { M32R_INSN_SRL3, M32RBF_INSN_SRL3, M32RBF_SFMT_SLL3 },
1364e98e3e1Schristos   { M32R_INSN_SRLI, M32RBF_INSN_SRLI, M32RBF_SFMT_SLLI },
1374e98e3e1Schristos   { M32R_INSN_ST, M32RBF_INSN_ST, M32RBF_SFMT_ST },
1384e98e3e1Schristos   { M32R_INSN_ST_D, M32RBF_INSN_ST_D, M32RBF_SFMT_ST_D },
1394e98e3e1Schristos   { M32R_INSN_STB, M32RBF_INSN_STB, M32RBF_SFMT_STB },
1404e98e3e1Schristos   { M32R_INSN_STB_D, M32RBF_INSN_STB_D, M32RBF_SFMT_STB_D },
1414e98e3e1Schristos   { M32R_INSN_STH, M32RBF_INSN_STH, M32RBF_SFMT_STH },
1424e98e3e1Schristos   { M32R_INSN_STH_D, M32RBF_INSN_STH_D, M32RBF_SFMT_STH_D },
1434e98e3e1Schristos   { M32R_INSN_ST_PLUS, M32RBF_INSN_ST_PLUS, M32RBF_SFMT_ST_PLUS },
1444e98e3e1Schristos   { M32R_INSN_ST_MINUS, M32RBF_INSN_ST_MINUS, M32RBF_SFMT_ST_PLUS },
1454e98e3e1Schristos   { M32R_INSN_SUB, M32RBF_INSN_SUB, M32RBF_SFMT_ADD },
1464e98e3e1Schristos   { M32R_INSN_SUBV, M32RBF_INSN_SUBV, M32RBF_SFMT_ADDV },
1474e98e3e1Schristos   { M32R_INSN_SUBX, M32RBF_INSN_SUBX, M32RBF_SFMT_ADDX },
1484e98e3e1Schristos   { M32R_INSN_TRAP, M32RBF_INSN_TRAP, M32RBF_SFMT_TRAP },
1494e98e3e1Schristos   { M32R_INSN_UNLOCK, M32RBF_INSN_UNLOCK, M32RBF_SFMT_UNLOCK },
1504e98e3e1Schristos   { M32R_INSN_CLRPSW, M32RBF_INSN_CLRPSW, M32RBF_SFMT_CLRPSW },
1514e98e3e1Schristos   { M32R_INSN_SETPSW, M32RBF_INSN_SETPSW, M32RBF_SFMT_SETPSW },
1524e98e3e1Schristos   { M32R_INSN_BSET, M32RBF_INSN_BSET, M32RBF_SFMT_BSET },
1534e98e3e1Schristos   { M32R_INSN_BCLR, M32RBF_INSN_BCLR, M32RBF_SFMT_BSET },
1544e98e3e1Schristos   { M32R_INSN_BTST, M32RBF_INSN_BTST, M32RBF_SFMT_BTST },
1554e98e3e1Schristos };
1564e98e3e1Schristos 
1574e98e3e1Schristos static const struct insn_sem m32rbf_insn_sem_invalid =
1584e98e3e1Schristos {
1594e98e3e1Schristos   VIRTUAL_INSN_X_INVALID, M32RBF_INSN_X_INVALID, M32RBF_SFMT_EMPTY
1604e98e3e1Schristos };
1614e98e3e1Schristos 
1624e98e3e1Schristos /* Initialize an IDESC from the compile-time computable parts.  */
1634e98e3e1Schristos 
1644e98e3e1Schristos static INLINE void
1654e98e3e1Schristos init_idesc (SIM_CPU *cpu, IDESC *id, const struct insn_sem *t)
1664e98e3e1Schristos {
1674e98e3e1Schristos   const CGEN_INSN *insn_table = CGEN_CPU_INSN_TABLE (CPU_CPU_DESC (cpu))->init_entries;
1684e98e3e1Schristos 
1694e98e3e1Schristos   id->num = t->index;
1704e98e3e1Schristos   id->sfmt = t->sfmt;
1714e98e3e1Schristos   if ((int) t->type <= 0)
1724e98e3e1Schristos     id->idata = & cgen_virtual_insn_table[- (int) t->type];
1734e98e3e1Schristos   else
1744e98e3e1Schristos     id->idata = & insn_table[t->type];
1754e98e3e1Schristos   id->attrs = CGEN_INSN_ATTRS (id->idata);
1764e98e3e1Schristos   /* Oh my god, a magic number.  */
1774e98e3e1Schristos   id->length = CGEN_INSN_BITSIZE (id->idata) / 8;
1784e98e3e1Schristos 
1794e98e3e1Schristos #if WITH_PROFILE_MODEL_P
1804e98e3e1Schristos   id->timing = & MODEL_TIMING (CPU_MODEL (cpu)) [t->index];
1814e98e3e1Schristos   {
1824e98e3e1Schristos     SIM_DESC sd = CPU_STATE (cpu);
1834e98e3e1Schristos     SIM_ASSERT (t->index == id->timing->num);
1844e98e3e1Schristos   }
1854e98e3e1Schristos #endif
1864e98e3e1Schristos 
1874e98e3e1Schristos   /* Semantic pointers are initialized elsewhere.  */
1884e98e3e1Schristos }
1894e98e3e1Schristos 
1904e98e3e1Schristos /* Initialize the instruction descriptor table.  */
1914e98e3e1Schristos 
1924e98e3e1Schristos void
1934e98e3e1Schristos m32rbf_init_idesc_table (SIM_CPU *cpu)
1944e98e3e1Schristos {
1954e98e3e1Schristos   IDESC *id,*tabend;
1964e98e3e1Schristos   const struct insn_sem *t,*tend;
1974e98e3e1Schristos   int tabsize = M32RBF_INSN__MAX;
1984e98e3e1Schristos   IDESC *table = m32rbf_insn_data;
1994e98e3e1Schristos 
2004e98e3e1Schristos   memset (table, 0, tabsize * sizeof (IDESC));
2014e98e3e1Schristos 
2024e98e3e1Schristos   /* First set all entries to the `invalid insn'.  */
2034e98e3e1Schristos   t = & m32rbf_insn_sem_invalid;
2044e98e3e1Schristos   for (id = table, tabend = table + tabsize; id < tabend; ++id)
2054e98e3e1Schristos     init_idesc (cpu, id, t);
2064e98e3e1Schristos 
2074e98e3e1Schristos   /* Now fill in the values for the chosen cpu.  */
208796c32c9Schristos   for (t = m32rbf_insn_sem, tend = t + ARRAY_SIZE (m32rbf_insn_sem);
2094e98e3e1Schristos        t != tend; ++t)
2104e98e3e1Schristos     {
2114e98e3e1Schristos       init_idesc (cpu, & table[t->index], t);
2124e98e3e1Schristos     }
2134e98e3e1Schristos 
2144e98e3e1Schristos   /* Link the IDESC table into the cpu.  */
2154e98e3e1Schristos   CPU_IDESC (cpu) = table;
2164e98e3e1Schristos }
2174e98e3e1Schristos 
2184e98e3e1Schristos /* Given an instruction, return a pointer to its IDESC entry.  */
2194e98e3e1Schristos 
2204e98e3e1Schristos const IDESC *
2214e98e3e1Schristos m32rbf_decode (SIM_CPU *current_cpu, IADDR pc,
2224e98e3e1Schristos               CGEN_INSN_WORD base_insn, CGEN_INSN_WORD entire_insn,
2234e98e3e1Schristos               ARGBUF *abuf)
2244e98e3e1Schristos {
2254e98e3e1Schristos   /* Result of decoder.  */
2264e98e3e1Schristos   M32RBF_INSN_TYPE itype;
2274e98e3e1Schristos 
2284e98e3e1Schristos   {
2294e98e3e1Schristos     CGEN_INSN_WORD insn = base_insn;
2304e98e3e1Schristos 
2314e98e3e1Schristos     {
232*05fa0856Schristos       unsigned int val0 = (((insn >> 8) & (15 << 4)) | ((insn >> 4) & (15 << 0)));
233*05fa0856Schristos       switch (val0)
2344e98e3e1Schristos       {
2354e98e3e1Schristos       case 0: itype = M32RBF_INSN_SUBV; goto extract_sfmt_addv;
2364e98e3e1Schristos       case 1: itype = M32RBF_INSN_SUBX; goto extract_sfmt_addx;
2374e98e3e1Schristos       case 2: itype = M32RBF_INSN_SUB; goto extract_sfmt_add;
2384e98e3e1Schristos       case 3: itype = M32RBF_INSN_NEG; goto extract_sfmt_mv;
2394e98e3e1Schristos       case 4: itype = M32RBF_INSN_CMP; goto extract_sfmt_cmp;
2404e98e3e1Schristos       case 5: itype = M32RBF_INSN_CMPU; goto extract_sfmt_cmp;
2414e98e3e1Schristos       case 8: itype = M32RBF_INSN_ADDV; goto extract_sfmt_addv;
2424e98e3e1Schristos       case 9: itype = M32RBF_INSN_ADDX; goto extract_sfmt_addx;
2434e98e3e1Schristos       case 10: itype = M32RBF_INSN_ADD; goto extract_sfmt_add;
2444e98e3e1Schristos       case 11: itype = M32RBF_INSN_NOT; goto extract_sfmt_mv;
2454e98e3e1Schristos       case 12: itype = M32RBF_INSN_AND; goto extract_sfmt_add;
2464e98e3e1Schristos       case 13: itype = M32RBF_INSN_XOR; goto extract_sfmt_add;
2474e98e3e1Schristos       case 14: itype = M32RBF_INSN_OR; goto extract_sfmt_add;
2484e98e3e1Schristos       case 15:
2494e98e3e1Schristos         if ((entire_insn & 0xf8f0) == 0xf0)
2504e98e3e1Schristos           { itype = M32RBF_INSN_BTST; goto extract_sfmt_btst; }
2514e98e3e1Schristos         itype = M32RBF_INSN_X_INVALID; goto extract_sfmt_empty;
2524e98e3e1Schristos       case 16: itype = M32RBF_INSN_SRL; goto extract_sfmt_add;
2534e98e3e1Schristos       case 18: itype = M32RBF_INSN_SRA; goto extract_sfmt_add;
2544e98e3e1Schristos       case 20: itype = M32RBF_INSN_SLL; goto extract_sfmt_add;
2554e98e3e1Schristos       case 22: itype = M32RBF_INSN_MUL; goto extract_sfmt_add;
2564e98e3e1Schristos       case 24: itype = M32RBF_INSN_MV; goto extract_sfmt_mv;
2574e98e3e1Schristos       case 25: itype = M32RBF_INSN_MVFC; goto extract_sfmt_mvfc;
2584e98e3e1Schristos       case 26: itype = M32RBF_INSN_MVTC; goto extract_sfmt_mvtc;
2594e98e3e1Schristos       case 28:
2604e98e3e1Schristos         {
261*05fa0856Schristos           unsigned int val1 = (((insn >> 8) & (1 << 0)));
262*05fa0856Schristos           switch (val1)
2634e98e3e1Schristos           {
2644e98e3e1Schristos           case 0:
2654e98e3e1Schristos             if ((entire_insn & 0xfff0) == 0x1ec0)
2664e98e3e1Schristos               { itype = M32RBF_INSN_JL; goto extract_sfmt_jl; }
2674e98e3e1Schristos             itype = M32RBF_INSN_X_INVALID; goto extract_sfmt_empty;
2684e98e3e1Schristos           case 1:
2694e98e3e1Schristos             if ((entire_insn & 0xfff0) == 0x1fc0)
2704e98e3e1Schristos               { itype = M32RBF_INSN_JMP; goto extract_sfmt_jmp; }
2714e98e3e1Schristos             itype = M32RBF_INSN_X_INVALID; goto extract_sfmt_empty;
2724e98e3e1Schristos           default: itype = M32RBF_INSN_X_INVALID; goto extract_sfmt_empty;
2734e98e3e1Schristos           }
2744e98e3e1Schristos         }
2754e98e3e1Schristos       case 29:
2764e98e3e1Schristos         if ((entire_insn & 0xffff) == 0x10d6)
2774e98e3e1Schristos           { itype = M32RBF_INSN_RTE; goto extract_sfmt_rte; }
2784e98e3e1Schristos         itype = M32RBF_INSN_X_INVALID; goto extract_sfmt_empty;
2794e98e3e1Schristos       case 31:
2804e98e3e1Schristos         if ((entire_insn & 0xfff0) == 0x10f0)
2814e98e3e1Schristos           { itype = M32RBF_INSN_TRAP; goto extract_sfmt_trap; }
2824e98e3e1Schristos         itype = M32RBF_INSN_X_INVALID; goto extract_sfmt_empty;
2834e98e3e1Schristos       case 32: itype = M32RBF_INSN_STB; goto extract_sfmt_stb;
2844e98e3e1Schristos       case 34: itype = M32RBF_INSN_STH; goto extract_sfmt_sth;
2854e98e3e1Schristos       case 36: itype = M32RBF_INSN_ST; goto extract_sfmt_st;
2864e98e3e1Schristos       case 37: itype = M32RBF_INSN_UNLOCK; goto extract_sfmt_unlock;
2874e98e3e1Schristos       case 38: itype = M32RBF_INSN_ST_PLUS; goto extract_sfmt_st_plus;
2884e98e3e1Schristos       case 39: itype = M32RBF_INSN_ST_MINUS; goto extract_sfmt_st_plus;
2894e98e3e1Schristos       case 40: itype = M32RBF_INSN_LDB; goto extract_sfmt_ldb;
2904e98e3e1Schristos       case 41: itype = M32RBF_INSN_LDUB; goto extract_sfmt_ldb;
2914e98e3e1Schristos       case 42: itype = M32RBF_INSN_LDH; goto extract_sfmt_ldh;
2924e98e3e1Schristos       case 43: itype = M32RBF_INSN_LDUH; goto extract_sfmt_ldh;
2934e98e3e1Schristos       case 44: itype = M32RBF_INSN_LD; goto extract_sfmt_ld;
2944e98e3e1Schristos       case 45: itype = M32RBF_INSN_LOCK; goto extract_sfmt_lock;
2954e98e3e1Schristos       case 46: itype = M32RBF_INSN_LD_PLUS; goto extract_sfmt_ld_plus;
2964e98e3e1Schristos       case 48: itype = M32RBF_INSN_MULHI; goto extract_sfmt_mulhi;
2974e98e3e1Schristos       case 49: itype = M32RBF_INSN_MULLO; goto extract_sfmt_mulhi;
2984e98e3e1Schristos       case 50: itype = M32RBF_INSN_MULWHI; goto extract_sfmt_mulhi;
2994e98e3e1Schristos       case 51: itype = M32RBF_INSN_MULWLO; goto extract_sfmt_mulhi;
3004e98e3e1Schristos       case 52: itype = M32RBF_INSN_MACHI; goto extract_sfmt_machi;
3014e98e3e1Schristos       case 53: itype = M32RBF_INSN_MACLO; goto extract_sfmt_machi;
3024e98e3e1Schristos       case 54: itype = M32RBF_INSN_MACWHI; goto extract_sfmt_machi;
3034e98e3e1Schristos       case 55: itype = M32RBF_INSN_MACWLO; goto extract_sfmt_machi;
304*05fa0856Schristos       case 64:
305*05fa0856Schristos       case 65:
306*05fa0856Schristos       case 66:
307*05fa0856Schristos       case 67:
308*05fa0856Schristos       case 68:
309*05fa0856Schristos       case 69:
310*05fa0856Schristos       case 70:
311*05fa0856Schristos       case 71:
312*05fa0856Schristos       case 72:
313*05fa0856Schristos       case 73:
314*05fa0856Schristos       case 74:
315*05fa0856Schristos       case 75:
316*05fa0856Schristos       case 76:
317*05fa0856Schristos       case 77:
318*05fa0856Schristos       case 78:
3194e98e3e1Schristos       case 79: itype = M32RBF_INSN_ADDI; goto extract_sfmt_addi;
320*05fa0856Schristos       case 80:
3214e98e3e1Schristos       case 81: itype = M32RBF_INSN_SRLI; goto extract_sfmt_slli;
322*05fa0856Schristos       case 82:
3234e98e3e1Schristos       case 83: itype = M32RBF_INSN_SRAI; goto extract_sfmt_slli;
324*05fa0856Schristos       case 84:
3254e98e3e1Schristos       case 85: itype = M32RBF_INSN_SLLI; goto extract_sfmt_slli;
3264e98e3e1Schristos       case 87:
3274e98e3e1Schristos         {
328*05fa0856Schristos           unsigned int val1 = (((insn >> 0) & (1 << 0)));
329*05fa0856Schristos           switch (val1)
3304e98e3e1Schristos           {
3314e98e3e1Schristos           case 0:
3324e98e3e1Schristos             if ((entire_insn & 0xf0ff) == 0x5070)
3334e98e3e1Schristos               { itype = M32RBF_INSN_MVTACHI; goto extract_sfmt_mvtachi; }
3344e98e3e1Schristos             itype = M32RBF_INSN_X_INVALID; goto extract_sfmt_empty;
3354e98e3e1Schristos           case 1:
3364e98e3e1Schristos             if ((entire_insn & 0xf0ff) == 0x5071)
3374e98e3e1Schristos               { itype = M32RBF_INSN_MVTACLO; goto extract_sfmt_mvtachi; }
3384e98e3e1Schristos             itype = M32RBF_INSN_X_INVALID; goto extract_sfmt_empty;
3394e98e3e1Schristos           default: itype = M32RBF_INSN_X_INVALID; goto extract_sfmt_empty;
3404e98e3e1Schristos           }
3414e98e3e1Schristos         }
3424e98e3e1Schristos       case 88:
3434e98e3e1Schristos         if ((entire_insn & 0xffff) == 0x5080)
3444e98e3e1Schristos           { itype = M32RBF_INSN_RACH; goto extract_sfmt_rac; }
3454e98e3e1Schristos         itype = M32RBF_INSN_X_INVALID; goto extract_sfmt_empty;
3464e98e3e1Schristos       case 89:
3474e98e3e1Schristos         if ((entire_insn & 0xffff) == 0x5090)
3484e98e3e1Schristos           { itype = M32RBF_INSN_RAC; goto extract_sfmt_rac; }
3494e98e3e1Schristos         itype = M32RBF_INSN_X_INVALID; goto extract_sfmt_empty;
3504e98e3e1Schristos       case 95:
3514e98e3e1Schristos         {
352*05fa0856Schristos           unsigned int val1 = (((insn >> 0) & (3 << 0)));
353*05fa0856Schristos           switch (val1)
3544e98e3e1Schristos           {
3554e98e3e1Schristos           case 0:
3564e98e3e1Schristos             if ((entire_insn & 0xf0ff) == 0x50f0)
3574e98e3e1Schristos               { itype = M32RBF_INSN_MVFACHI; goto extract_sfmt_mvfachi; }
3584e98e3e1Schristos             itype = M32RBF_INSN_X_INVALID; goto extract_sfmt_empty;
3594e98e3e1Schristos           case 1:
3604e98e3e1Schristos             if ((entire_insn & 0xf0ff) == 0x50f1)
3614e98e3e1Schristos               { itype = M32RBF_INSN_MVFACLO; goto extract_sfmt_mvfachi; }
3624e98e3e1Schristos             itype = M32RBF_INSN_X_INVALID; goto extract_sfmt_empty;
3634e98e3e1Schristos           case 2:
3644e98e3e1Schristos             if ((entire_insn & 0xf0ff) == 0x50f2)
3654e98e3e1Schristos               { itype = M32RBF_INSN_MVFACMI; goto extract_sfmt_mvfachi; }
3664e98e3e1Schristos             itype = M32RBF_INSN_X_INVALID; goto extract_sfmt_empty;
3674e98e3e1Schristos           default: itype = M32RBF_INSN_X_INVALID; goto extract_sfmt_empty;
3684e98e3e1Schristos           }
3694e98e3e1Schristos         }
370*05fa0856Schristos       case 96:
371*05fa0856Schristos       case 97:
372*05fa0856Schristos       case 98:
373*05fa0856Schristos       case 99:
374*05fa0856Schristos       case 100:
375*05fa0856Schristos       case 101:
376*05fa0856Schristos       case 102:
377*05fa0856Schristos       case 103:
378*05fa0856Schristos       case 104:
379*05fa0856Schristos       case 105:
380*05fa0856Schristos       case 106:
381*05fa0856Schristos       case 107:
382*05fa0856Schristos       case 108:
383*05fa0856Schristos       case 109:
384*05fa0856Schristos       case 110:
3854e98e3e1Schristos       case 111: itype = M32RBF_INSN_LDI8; goto extract_sfmt_ldi8;
3864e98e3e1Schristos       case 112:
3874e98e3e1Schristos         {
388*05fa0856Schristos           unsigned int val1 = (((insn >> 8) & (15 << 0)));
389*05fa0856Schristos           switch (val1)
3904e98e3e1Schristos           {
3914e98e3e1Schristos           case 0:
3924e98e3e1Schristos             if ((entire_insn & 0xffff) == 0x7000)
3934e98e3e1Schristos               { itype = M32RBF_INSN_NOP; goto extract_sfmt_nop; }
3944e98e3e1Schristos             itype = M32RBF_INSN_X_INVALID; goto extract_sfmt_empty;
3954e98e3e1Schristos           case 1: itype = M32RBF_INSN_SETPSW; goto extract_sfmt_setpsw;
3964e98e3e1Schristos           case 2: itype = M32RBF_INSN_CLRPSW; goto extract_sfmt_clrpsw;
3974e98e3e1Schristos           case 12: itype = M32RBF_INSN_BC8; goto extract_sfmt_bc8;
3984e98e3e1Schristos           case 13: itype = M32RBF_INSN_BNC8; goto extract_sfmt_bc8;
3994e98e3e1Schristos           case 14: itype = M32RBF_INSN_BL8; goto extract_sfmt_bl8;
4004e98e3e1Schristos           case 15: itype = M32RBF_INSN_BRA8; goto extract_sfmt_bra8;
4014e98e3e1Schristos           default: itype = M32RBF_INSN_X_INVALID; goto extract_sfmt_empty;
4024e98e3e1Schristos           }
4034e98e3e1Schristos         }
404*05fa0856Schristos       case 113:
405*05fa0856Schristos       case 114:
406*05fa0856Schristos       case 115:
407*05fa0856Schristos       case 116:
408*05fa0856Schristos       case 117:
409*05fa0856Schristos       case 118:
410*05fa0856Schristos       case 119:
411*05fa0856Schristos       case 120:
412*05fa0856Schristos       case 121:
413*05fa0856Schristos       case 122:
414*05fa0856Schristos       case 123:
415*05fa0856Schristos       case 124:
416*05fa0856Schristos       case 125:
417*05fa0856Schristos       case 126:
4184e98e3e1Schristos       case 127:
4194e98e3e1Schristos         {
420*05fa0856Schristos           unsigned int val1 = (((insn >> 8) & (15 << 0)));
421*05fa0856Schristos           switch (val1)
4224e98e3e1Schristos           {
4234e98e3e1Schristos           case 1: itype = M32RBF_INSN_SETPSW; goto extract_sfmt_setpsw;
4244e98e3e1Schristos           case 2: itype = M32RBF_INSN_CLRPSW; goto extract_sfmt_clrpsw;
4254e98e3e1Schristos           case 12: itype = M32RBF_INSN_BC8; goto extract_sfmt_bc8;
4264e98e3e1Schristos           case 13: itype = M32RBF_INSN_BNC8; goto extract_sfmt_bc8;
4274e98e3e1Schristos           case 14: itype = M32RBF_INSN_BL8; goto extract_sfmt_bl8;
4284e98e3e1Schristos           case 15: itype = M32RBF_INSN_BRA8; goto extract_sfmt_bra8;
4294e98e3e1Schristos           default: itype = M32RBF_INSN_X_INVALID; goto extract_sfmt_empty;
4304e98e3e1Schristos           }
4314e98e3e1Schristos         }
4324e98e3e1Schristos       case 132:
4334e98e3e1Schristos         if ((entire_insn & 0xfff00000) == 0x80400000)
4344e98e3e1Schristos           { itype = M32RBF_INSN_CMPI; goto extract_sfmt_cmpi; }
4354e98e3e1Schristos         itype = M32RBF_INSN_X_INVALID; goto extract_sfmt_empty;
4364e98e3e1Schristos       case 133:
4374e98e3e1Schristos         if ((entire_insn & 0xfff00000) == 0x80500000)
4384e98e3e1Schristos           { itype = M32RBF_INSN_CMPUI; goto extract_sfmt_cmpi; }
4394e98e3e1Schristos         itype = M32RBF_INSN_X_INVALID; goto extract_sfmt_empty;
4404e98e3e1Schristos       case 136: itype = M32RBF_INSN_ADDV3; goto extract_sfmt_addv3;
4414e98e3e1Schristos       case 138: itype = M32RBF_INSN_ADD3; goto extract_sfmt_add3;
4424e98e3e1Schristos       case 140: itype = M32RBF_INSN_AND3; goto extract_sfmt_and3;
4434e98e3e1Schristos       case 141: itype = M32RBF_INSN_XOR3; goto extract_sfmt_and3;
4444e98e3e1Schristos       case 142: itype = M32RBF_INSN_OR3; goto extract_sfmt_or3;
4454e98e3e1Schristos       case 144:
4464e98e3e1Schristos         if ((entire_insn & 0xf0f0ffff) == 0x90000000)
4474e98e3e1Schristos           { itype = M32RBF_INSN_DIV; goto extract_sfmt_div; }
4484e98e3e1Schristos         itype = M32RBF_INSN_X_INVALID; goto extract_sfmt_empty;
4494e98e3e1Schristos       case 145:
4504e98e3e1Schristos         if ((entire_insn & 0xf0f0ffff) == 0x90100000)
4514e98e3e1Schristos           { itype = M32RBF_INSN_DIVU; goto extract_sfmt_div; }
4524e98e3e1Schristos         itype = M32RBF_INSN_X_INVALID; goto extract_sfmt_empty;
4534e98e3e1Schristos       case 146:
4544e98e3e1Schristos         if ((entire_insn & 0xf0f0ffff) == 0x90200000)
4554e98e3e1Schristos           { itype = M32RBF_INSN_REM; goto extract_sfmt_div; }
4564e98e3e1Schristos         itype = M32RBF_INSN_X_INVALID; goto extract_sfmt_empty;
4574e98e3e1Schristos       case 147:
4584e98e3e1Schristos         if ((entire_insn & 0xf0f0ffff) == 0x90300000)
4594e98e3e1Schristos           { itype = M32RBF_INSN_REMU; goto extract_sfmt_div; }
4604e98e3e1Schristos         itype = M32RBF_INSN_X_INVALID; goto extract_sfmt_empty;
4614e98e3e1Schristos       case 152: itype = M32RBF_INSN_SRL3; goto extract_sfmt_sll3;
4624e98e3e1Schristos       case 154: itype = M32RBF_INSN_SRA3; goto extract_sfmt_sll3;
4634e98e3e1Schristos       case 156: itype = M32RBF_INSN_SLL3; goto extract_sfmt_sll3;
4644e98e3e1Schristos       case 159:
4654e98e3e1Schristos         if ((entire_insn & 0xf0ff0000) == 0x90f00000)
4664e98e3e1Schristos           { itype = M32RBF_INSN_LDI16; goto extract_sfmt_ldi16; }
4674e98e3e1Schristos         itype = M32RBF_INSN_X_INVALID; goto extract_sfmt_empty;
4684e98e3e1Schristos       case 160: itype = M32RBF_INSN_STB_D; goto extract_sfmt_stb_d;
4694e98e3e1Schristos       case 162: itype = M32RBF_INSN_STH_D; goto extract_sfmt_sth_d;
4704e98e3e1Schristos       case 164: itype = M32RBF_INSN_ST_D; goto extract_sfmt_st_d;
4714e98e3e1Schristos       case 166:
4724e98e3e1Schristos         if ((entire_insn & 0xf8f00000) == 0xa0600000)
4734e98e3e1Schristos           { itype = M32RBF_INSN_BSET; goto extract_sfmt_bset; }
4744e98e3e1Schristos         itype = M32RBF_INSN_X_INVALID; goto extract_sfmt_empty;
4754e98e3e1Schristos       case 167:
4764e98e3e1Schristos         if ((entire_insn & 0xf8f00000) == 0xa0700000)
4774e98e3e1Schristos           { itype = M32RBF_INSN_BCLR; goto extract_sfmt_bset; }
4784e98e3e1Schristos         itype = M32RBF_INSN_X_INVALID; goto extract_sfmt_empty;
4794e98e3e1Schristos       case 168: itype = M32RBF_INSN_LDB_D; goto extract_sfmt_ldb_d;
4804e98e3e1Schristos       case 169: itype = M32RBF_INSN_LDUB_D; goto extract_sfmt_ldb_d;
4814e98e3e1Schristos       case 170: itype = M32RBF_INSN_LDH_D; goto extract_sfmt_ldh_d;
4824e98e3e1Schristos       case 171: itype = M32RBF_INSN_LDUH_D; goto extract_sfmt_ldh_d;
4834e98e3e1Schristos       case 172: itype = M32RBF_INSN_LD_D; goto extract_sfmt_ld_d;
4844e98e3e1Schristos       case 176: itype = M32RBF_INSN_BEQ; goto extract_sfmt_beq;
4854e98e3e1Schristos       case 177: itype = M32RBF_INSN_BNE; goto extract_sfmt_beq;
4864e98e3e1Schristos       case 184:
4874e98e3e1Schristos         if ((entire_insn & 0xfff00000) == 0xb0800000)
4884e98e3e1Schristos           { itype = M32RBF_INSN_BEQZ; goto extract_sfmt_beqz; }
4894e98e3e1Schristos         itype = M32RBF_INSN_X_INVALID; goto extract_sfmt_empty;
4904e98e3e1Schristos       case 185:
4914e98e3e1Schristos         if ((entire_insn & 0xfff00000) == 0xb0900000)
4924e98e3e1Schristos           { itype = M32RBF_INSN_BNEZ; goto extract_sfmt_beqz; }
4934e98e3e1Schristos         itype = M32RBF_INSN_X_INVALID; goto extract_sfmt_empty;
4944e98e3e1Schristos       case 186:
4954e98e3e1Schristos         if ((entire_insn & 0xfff00000) == 0xb0a00000)
4964e98e3e1Schristos           { itype = M32RBF_INSN_BLTZ; goto extract_sfmt_beqz; }
4974e98e3e1Schristos         itype = M32RBF_INSN_X_INVALID; goto extract_sfmt_empty;
4984e98e3e1Schristos       case 187:
4994e98e3e1Schristos         if ((entire_insn & 0xfff00000) == 0xb0b00000)
5004e98e3e1Schristos           { itype = M32RBF_INSN_BGEZ; goto extract_sfmt_beqz; }
5014e98e3e1Schristos         itype = M32RBF_INSN_X_INVALID; goto extract_sfmt_empty;
5024e98e3e1Schristos       case 188:
5034e98e3e1Schristos         if ((entire_insn & 0xfff00000) == 0xb0c00000)
5044e98e3e1Schristos           { itype = M32RBF_INSN_BLEZ; goto extract_sfmt_beqz; }
5054e98e3e1Schristos         itype = M32RBF_INSN_X_INVALID; goto extract_sfmt_empty;
5064e98e3e1Schristos       case 189:
5074e98e3e1Schristos         if ((entire_insn & 0xfff00000) == 0xb0d00000)
5084e98e3e1Schristos           { itype = M32RBF_INSN_BGTZ; goto extract_sfmt_beqz; }
5094e98e3e1Schristos         itype = M32RBF_INSN_X_INVALID; goto extract_sfmt_empty;
5104e98e3e1Schristos       case 220:
5114e98e3e1Schristos         if ((entire_insn & 0xf0ff0000) == 0xd0c00000)
5124e98e3e1Schristos           { itype = M32RBF_INSN_SETH; goto extract_sfmt_seth; }
5134e98e3e1Schristos         itype = M32RBF_INSN_X_INVALID; goto extract_sfmt_empty;
514*05fa0856Schristos       case 224:
515*05fa0856Schristos       case 225:
516*05fa0856Schristos       case 226:
517*05fa0856Schristos       case 227:
518*05fa0856Schristos       case 228:
519*05fa0856Schristos       case 229:
520*05fa0856Schristos       case 230:
521*05fa0856Schristos       case 231:
522*05fa0856Schristos       case 232:
523*05fa0856Schristos       case 233:
524*05fa0856Schristos       case 234:
525*05fa0856Schristos       case 235:
526*05fa0856Schristos       case 236:
527*05fa0856Schristos       case 237:
528*05fa0856Schristos       case 238:
5294e98e3e1Schristos       case 239: itype = M32RBF_INSN_LD24; goto extract_sfmt_ld24;
530*05fa0856Schristos       case 240:
531*05fa0856Schristos       case 241:
532*05fa0856Schristos       case 242:
533*05fa0856Schristos       case 243:
534*05fa0856Schristos       case 244:
535*05fa0856Schristos       case 245:
536*05fa0856Schristos       case 246:
537*05fa0856Schristos       case 247:
538*05fa0856Schristos       case 248:
539*05fa0856Schristos       case 249:
540*05fa0856Schristos       case 250:
541*05fa0856Schristos       case 251:
542*05fa0856Schristos       case 252:
543*05fa0856Schristos       case 253:
544*05fa0856Schristos       case 254:
5454e98e3e1Schristos       case 255:
5464e98e3e1Schristos         {
547*05fa0856Schristos           unsigned int val1 = (((insn >> 8) & (3 << 0)));
548*05fa0856Schristos           switch (val1)
5494e98e3e1Schristos           {
5504e98e3e1Schristos           case 0:
5514e98e3e1Schristos             if ((entire_insn & 0xff000000) == 0xfc000000)
5524e98e3e1Schristos               { itype = M32RBF_INSN_BC24; goto extract_sfmt_bc24; }
5534e98e3e1Schristos             itype = M32RBF_INSN_X_INVALID; goto extract_sfmt_empty;
5544e98e3e1Schristos           case 1:
5554e98e3e1Schristos             if ((entire_insn & 0xff000000) == 0xfd000000)
5564e98e3e1Schristos               { itype = M32RBF_INSN_BNC24; goto extract_sfmt_bc24; }
5574e98e3e1Schristos             itype = M32RBF_INSN_X_INVALID; goto extract_sfmt_empty;
5584e98e3e1Schristos           case 2:
5594e98e3e1Schristos             if ((entire_insn & 0xff000000) == 0xfe000000)
5604e98e3e1Schristos               { itype = M32RBF_INSN_BL24; goto extract_sfmt_bl24; }
5614e98e3e1Schristos             itype = M32RBF_INSN_X_INVALID; goto extract_sfmt_empty;
5624e98e3e1Schristos           case 3:
5634e98e3e1Schristos             if ((entire_insn & 0xff000000) == 0xff000000)
5644e98e3e1Schristos               { itype = M32RBF_INSN_BRA24; goto extract_sfmt_bra24; }
5654e98e3e1Schristos             itype = M32RBF_INSN_X_INVALID; goto extract_sfmt_empty;
5664e98e3e1Schristos           default: itype = M32RBF_INSN_X_INVALID; goto extract_sfmt_empty;
5674e98e3e1Schristos           }
5684e98e3e1Schristos         }
5694e98e3e1Schristos       default: itype = M32RBF_INSN_X_INVALID; goto extract_sfmt_empty;
5704e98e3e1Schristos       }
5714e98e3e1Schristos     }
5724e98e3e1Schristos   }
5734e98e3e1Schristos 
5744e98e3e1Schristos   /* The instruction has been decoded, now extract the fields.  */
5754e98e3e1Schristos 
5764e98e3e1Schristos  extract_sfmt_empty:
5774e98e3e1Schristos   {
5784e98e3e1Schristos     const IDESC *idesc = &m32rbf_insn_data[itype];
5794e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_empty.f
5804e98e3e1Schristos 
5814e98e3e1Schristos 
5824e98e3e1Schristos   /* Record the fields for the semantic handler.  */
583212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_empty", (char *) 0));
5844e98e3e1Schristos 
5854e98e3e1Schristos #undef FLD
5864e98e3e1Schristos     return idesc;
5874e98e3e1Schristos   }
5884e98e3e1Schristos 
5894e98e3e1Schristos  extract_sfmt_add:
5904e98e3e1Schristos   {
5914e98e3e1Schristos     const IDESC *idesc = &m32rbf_insn_data[itype];
5924e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
5934e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f
5944e98e3e1Schristos     UINT f_r1;
5954e98e3e1Schristos     UINT f_r2;
5964e98e3e1Schristos 
5974e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
5984e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
5994e98e3e1Schristos 
6004e98e3e1Schristos   /* Record the fields for the semantic handler.  */
6014e98e3e1Schristos   FLD (f_r1) = f_r1;
6024e98e3e1Schristos   FLD (f_r2) = f_r2;
6034e98e3e1Schristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
6044e98e3e1Schristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
605212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_add", "f_r1 0x%x", 'x', f_r1, "f_r2 0x%x", 'x', f_r2, "dr 0x%x", 'x', f_r1, "sr 0x%x", 'x', f_r2, (char *) 0));
6064e98e3e1Schristos 
6074e98e3e1Schristos #if WITH_PROFILE_MODEL_P
6084e98e3e1Schristos   /* Record the fields for profiling.  */
6094e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
6104e98e3e1Schristos     {
6114e98e3e1Schristos       FLD (in_dr) = f_r1;
6124e98e3e1Schristos       FLD (in_sr) = f_r2;
6134e98e3e1Schristos       FLD (out_dr) = f_r1;
6144e98e3e1Schristos     }
6154e98e3e1Schristos #endif
6164e98e3e1Schristos #undef FLD
6174e98e3e1Schristos     return idesc;
6184e98e3e1Schristos   }
6194e98e3e1Schristos 
6204e98e3e1Schristos  extract_sfmt_add3:
6214e98e3e1Schristos   {
6224e98e3e1Schristos     const IDESC *idesc = &m32rbf_insn_data[itype];
6234e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
6244e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add3.f
6254e98e3e1Schristos     UINT f_r1;
6264e98e3e1Schristos     UINT f_r2;
6274e98e3e1Schristos     INT f_simm16;
6284e98e3e1Schristos 
6294e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
6304e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
6314e98e3e1Schristos     f_simm16 = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
6324e98e3e1Schristos 
6334e98e3e1Schristos   /* Record the fields for the semantic handler.  */
6344e98e3e1Schristos   FLD (f_simm16) = f_simm16;
6354e98e3e1Schristos   FLD (f_r2) = f_r2;
6364e98e3e1Schristos   FLD (f_r1) = f_r1;
6374e98e3e1Schristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
6384e98e3e1Schristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
639212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_add3", "f_simm16 0x%x", 'x', f_simm16, "f_r2 0x%x", 'x', f_r2, "f_r1 0x%x", 'x', f_r1, "sr 0x%x", 'x', f_r2, "dr 0x%x", 'x', f_r1, (char *) 0));
6404e98e3e1Schristos 
6414e98e3e1Schristos #if WITH_PROFILE_MODEL_P
6424e98e3e1Schristos   /* Record the fields for profiling.  */
6434e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
6444e98e3e1Schristos     {
6454e98e3e1Schristos       FLD (in_sr) = f_r2;
6464e98e3e1Schristos       FLD (out_dr) = f_r1;
6474e98e3e1Schristos     }
6484e98e3e1Schristos #endif
6494e98e3e1Schristos #undef FLD
6504e98e3e1Schristos     return idesc;
6514e98e3e1Schristos   }
6524e98e3e1Schristos 
6534e98e3e1Schristos  extract_sfmt_and3:
6544e98e3e1Schristos   {
6554e98e3e1Schristos     const IDESC *idesc = &m32rbf_insn_data[itype];
6564e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
6574e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_and3.f
6584e98e3e1Schristos     UINT f_r1;
6594e98e3e1Schristos     UINT f_r2;
6604e98e3e1Schristos     UINT f_uimm16;
6614e98e3e1Schristos 
6624e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
6634e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
6644e98e3e1Schristos     f_uimm16 = EXTRACT_MSB0_UINT (insn, 32, 16, 16);
6654e98e3e1Schristos 
6664e98e3e1Schristos   /* Record the fields for the semantic handler.  */
6674e98e3e1Schristos   FLD (f_r2) = f_r2;
6684e98e3e1Schristos   FLD (f_uimm16) = f_uimm16;
6694e98e3e1Schristos   FLD (f_r1) = f_r1;
6704e98e3e1Schristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
6714e98e3e1Schristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
672212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_and3", "f_r2 0x%x", 'x', f_r2, "f_uimm16 0x%x", 'x', f_uimm16, "f_r1 0x%x", 'x', f_r1, "sr 0x%x", 'x', f_r2, "dr 0x%x", 'x', f_r1, (char *) 0));
6734e98e3e1Schristos 
6744e98e3e1Schristos #if WITH_PROFILE_MODEL_P
6754e98e3e1Schristos   /* Record the fields for profiling.  */
6764e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
6774e98e3e1Schristos     {
6784e98e3e1Schristos       FLD (in_sr) = f_r2;
6794e98e3e1Schristos       FLD (out_dr) = f_r1;
6804e98e3e1Schristos     }
6814e98e3e1Schristos #endif
6824e98e3e1Schristos #undef FLD
6834e98e3e1Schristos     return idesc;
6844e98e3e1Schristos   }
6854e98e3e1Schristos 
6864e98e3e1Schristos  extract_sfmt_or3:
6874e98e3e1Schristos   {
6884e98e3e1Schristos     const IDESC *idesc = &m32rbf_insn_data[itype];
6894e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
6904e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_and3.f
6914e98e3e1Schristos     UINT f_r1;
6924e98e3e1Schristos     UINT f_r2;
6934e98e3e1Schristos     UINT f_uimm16;
6944e98e3e1Schristos 
6954e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
6964e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
6974e98e3e1Schristos     f_uimm16 = EXTRACT_MSB0_UINT (insn, 32, 16, 16);
6984e98e3e1Schristos 
6994e98e3e1Schristos   /* Record the fields for the semantic handler.  */
7004e98e3e1Schristos   FLD (f_r2) = f_r2;
7014e98e3e1Schristos   FLD (f_uimm16) = f_uimm16;
7024e98e3e1Schristos   FLD (f_r1) = f_r1;
7034e98e3e1Schristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
7044e98e3e1Schristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
705212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_or3", "f_r2 0x%x", 'x', f_r2, "f_uimm16 0x%x", 'x', f_uimm16, "f_r1 0x%x", 'x', f_r1, "sr 0x%x", 'x', f_r2, "dr 0x%x", 'x', f_r1, (char *) 0));
7064e98e3e1Schristos 
7074e98e3e1Schristos #if WITH_PROFILE_MODEL_P
7084e98e3e1Schristos   /* Record the fields for profiling.  */
7094e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
7104e98e3e1Schristos     {
7114e98e3e1Schristos       FLD (in_sr) = f_r2;
7124e98e3e1Schristos       FLD (out_dr) = f_r1;
7134e98e3e1Schristos     }
7144e98e3e1Schristos #endif
7154e98e3e1Schristos #undef FLD
7164e98e3e1Schristos     return idesc;
7174e98e3e1Schristos   }
7184e98e3e1Schristos 
7194e98e3e1Schristos  extract_sfmt_addi:
7204e98e3e1Schristos   {
7214e98e3e1Schristos     const IDESC *idesc = &m32rbf_insn_data[itype];
7224e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
7234e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_addi.f
7244e98e3e1Schristos     UINT f_r1;
7254e98e3e1Schristos     INT f_simm8;
7264e98e3e1Schristos 
7274e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
7284e98e3e1Schristos     f_simm8 = EXTRACT_MSB0_SINT (insn, 16, 8, 8);
7294e98e3e1Schristos 
7304e98e3e1Schristos   /* Record the fields for the semantic handler.  */
7314e98e3e1Schristos   FLD (f_r1) = f_r1;
7324e98e3e1Schristos   FLD (f_simm8) = f_simm8;
7334e98e3e1Schristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
734212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addi", "f_r1 0x%x", 'x', f_r1, "f_simm8 0x%x", 'x', f_simm8, "dr 0x%x", 'x', f_r1, (char *) 0));
7354e98e3e1Schristos 
7364e98e3e1Schristos #if WITH_PROFILE_MODEL_P
7374e98e3e1Schristos   /* Record the fields for profiling.  */
7384e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
7394e98e3e1Schristos     {
7404e98e3e1Schristos       FLD (in_dr) = f_r1;
7414e98e3e1Schristos       FLD (out_dr) = f_r1;
7424e98e3e1Schristos     }
7434e98e3e1Schristos #endif
7444e98e3e1Schristos #undef FLD
7454e98e3e1Schristos     return idesc;
7464e98e3e1Schristos   }
7474e98e3e1Schristos 
7484e98e3e1Schristos  extract_sfmt_addv:
7494e98e3e1Schristos   {
7504e98e3e1Schristos     const IDESC *idesc = &m32rbf_insn_data[itype];
7514e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
7524e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f
7534e98e3e1Schristos     UINT f_r1;
7544e98e3e1Schristos     UINT f_r2;
7554e98e3e1Schristos 
7564e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
7574e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
7584e98e3e1Schristos 
7594e98e3e1Schristos   /* Record the fields for the semantic handler.  */
7604e98e3e1Schristos   FLD (f_r1) = f_r1;
7614e98e3e1Schristos   FLD (f_r2) = f_r2;
7624e98e3e1Schristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
7634e98e3e1Schristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
764212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addv", "f_r1 0x%x", 'x', f_r1, "f_r2 0x%x", 'x', f_r2, "dr 0x%x", 'x', f_r1, "sr 0x%x", 'x', f_r2, (char *) 0));
7654e98e3e1Schristos 
7664e98e3e1Schristos #if WITH_PROFILE_MODEL_P
7674e98e3e1Schristos   /* Record the fields for profiling.  */
7684e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
7694e98e3e1Schristos     {
7704e98e3e1Schristos       FLD (in_dr) = f_r1;
7714e98e3e1Schristos       FLD (in_sr) = f_r2;
7724e98e3e1Schristos       FLD (out_dr) = f_r1;
7734e98e3e1Schristos     }
7744e98e3e1Schristos #endif
7754e98e3e1Schristos #undef FLD
7764e98e3e1Schristos     return idesc;
7774e98e3e1Schristos   }
7784e98e3e1Schristos 
7794e98e3e1Schristos  extract_sfmt_addv3:
7804e98e3e1Schristos   {
7814e98e3e1Schristos     const IDESC *idesc = &m32rbf_insn_data[itype];
7824e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
7834e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add3.f
7844e98e3e1Schristos     UINT f_r1;
7854e98e3e1Schristos     UINT f_r2;
7864e98e3e1Schristos     INT f_simm16;
7874e98e3e1Schristos 
7884e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
7894e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
7904e98e3e1Schristos     f_simm16 = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
7914e98e3e1Schristos 
7924e98e3e1Schristos   /* Record the fields for the semantic handler.  */
7934e98e3e1Schristos   FLD (f_simm16) = f_simm16;
7944e98e3e1Schristos   FLD (f_r2) = f_r2;
7954e98e3e1Schristos   FLD (f_r1) = f_r1;
7964e98e3e1Schristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
7974e98e3e1Schristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
798212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addv3", "f_simm16 0x%x", 'x', f_simm16, "f_r2 0x%x", 'x', f_r2, "f_r1 0x%x", 'x', f_r1, "sr 0x%x", 'x', f_r2, "dr 0x%x", 'x', f_r1, (char *) 0));
7994e98e3e1Schristos 
8004e98e3e1Schristos #if WITH_PROFILE_MODEL_P
8014e98e3e1Schristos   /* Record the fields for profiling.  */
8024e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
8034e98e3e1Schristos     {
8044e98e3e1Schristos       FLD (in_sr) = f_r2;
8054e98e3e1Schristos       FLD (out_dr) = f_r1;
8064e98e3e1Schristos     }
8074e98e3e1Schristos #endif
8084e98e3e1Schristos #undef FLD
8094e98e3e1Schristos     return idesc;
8104e98e3e1Schristos   }
8114e98e3e1Schristos 
8124e98e3e1Schristos  extract_sfmt_addx:
8134e98e3e1Schristos   {
8144e98e3e1Schristos     const IDESC *idesc = &m32rbf_insn_data[itype];
8154e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
8164e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f
8174e98e3e1Schristos     UINT f_r1;
8184e98e3e1Schristos     UINT f_r2;
8194e98e3e1Schristos 
8204e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
8214e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
8224e98e3e1Schristos 
8234e98e3e1Schristos   /* Record the fields for the semantic handler.  */
8244e98e3e1Schristos   FLD (f_r1) = f_r1;
8254e98e3e1Schristos   FLD (f_r2) = f_r2;
8264e98e3e1Schristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
8274e98e3e1Schristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
828212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addx", "f_r1 0x%x", 'x', f_r1, "f_r2 0x%x", 'x', f_r2, "dr 0x%x", 'x', f_r1, "sr 0x%x", 'x', f_r2, (char *) 0));
8294e98e3e1Schristos 
8304e98e3e1Schristos #if WITH_PROFILE_MODEL_P
8314e98e3e1Schristos   /* Record the fields for profiling.  */
8324e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
8334e98e3e1Schristos     {
8344e98e3e1Schristos       FLD (in_dr) = f_r1;
8354e98e3e1Schristos       FLD (in_sr) = f_r2;
8364e98e3e1Schristos       FLD (out_dr) = f_r1;
8374e98e3e1Schristos     }
8384e98e3e1Schristos #endif
8394e98e3e1Schristos #undef FLD
8404e98e3e1Schristos     return idesc;
8414e98e3e1Schristos   }
8424e98e3e1Schristos 
8434e98e3e1Schristos  extract_sfmt_bc8:
8444e98e3e1Schristos   {
8454e98e3e1Schristos     const IDESC *idesc = &m32rbf_insn_data[itype];
8464e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
8474e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_bl8.f
8484e98e3e1Schristos     SI f_disp8;
8494e98e3e1Schristos 
850*05fa0856Schristos     f_disp8 = ((((EXTRACT_MSB0_SINT (insn, 16, 8, 8)) * (4))) + (((pc) & (-4))));
8514e98e3e1Schristos 
8524e98e3e1Schristos   /* Record the fields for the semantic handler.  */
8534e98e3e1Schristos   FLD (i_disp8) = f_disp8;
854212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bc8", "disp8 0x%x", 'x', f_disp8, (char *) 0));
8554e98e3e1Schristos 
8564e98e3e1Schristos #if WITH_PROFILE_MODEL_P
8574e98e3e1Schristos   /* Record the fields for profiling.  */
8584e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
8594e98e3e1Schristos     {
8604e98e3e1Schristos     }
8614e98e3e1Schristos #endif
8624e98e3e1Schristos #undef FLD
8634e98e3e1Schristos     return idesc;
8644e98e3e1Schristos   }
8654e98e3e1Schristos 
8664e98e3e1Schristos  extract_sfmt_bc24:
8674e98e3e1Schristos   {
8684e98e3e1Schristos     const IDESC *idesc = &m32rbf_insn_data[itype];
8694e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
8704e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_bl24.f
8714e98e3e1Schristos     SI f_disp24;
8724e98e3e1Schristos 
873*05fa0856Schristos     f_disp24 = ((((EXTRACT_MSB0_SINT (insn, 32, 8, 24)) * (4))) + (pc));
8744e98e3e1Schristos 
8754e98e3e1Schristos   /* Record the fields for the semantic handler.  */
8764e98e3e1Schristos   FLD (i_disp24) = f_disp24;
877212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bc24", "disp24 0x%x", 'x', f_disp24, (char *) 0));
8784e98e3e1Schristos 
8794e98e3e1Schristos #if WITH_PROFILE_MODEL_P
8804e98e3e1Schristos   /* Record the fields for profiling.  */
8814e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
8824e98e3e1Schristos     {
8834e98e3e1Schristos     }
8844e98e3e1Schristos #endif
8854e98e3e1Schristos #undef FLD
8864e98e3e1Schristos     return idesc;
8874e98e3e1Schristos   }
8884e98e3e1Schristos 
8894e98e3e1Schristos  extract_sfmt_beq:
8904e98e3e1Schristos   {
8914e98e3e1Schristos     const IDESC *idesc = &m32rbf_insn_data[itype];
8924e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
8934e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_beq.f
8944e98e3e1Schristos     UINT f_r1;
8954e98e3e1Schristos     UINT f_r2;
8964e98e3e1Schristos     SI f_disp16;
8974e98e3e1Schristos 
8984e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
8994e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
900*05fa0856Schristos     f_disp16 = ((((EXTRACT_MSB0_SINT (insn, 32, 16, 16)) * (4))) + (pc));
9014e98e3e1Schristos 
9024e98e3e1Schristos   /* Record the fields for the semantic handler.  */
9034e98e3e1Schristos   FLD (f_r1) = f_r1;
9044e98e3e1Schristos   FLD (f_r2) = f_r2;
9054e98e3e1Schristos   FLD (i_disp16) = f_disp16;
9064e98e3e1Schristos   FLD (i_src1) = & CPU (h_gr)[f_r1];
9074e98e3e1Schristos   FLD (i_src2) = & CPU (h_gr)[f_r2];
908212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_beq", "f_r1 0x%x", 'x', f_r1, "f_r2 0x%x", 'x', f_r2, "disp16 0x%x", 'x', f_disp16, "src1 0x%x", 'x', f_r1, "src2 0x%x", 'x', f_r2, (char *) 0));
9094e98e3e1Schristos 
9104e98e3e1Schristos #if WITH_PROFILE_MODEL_P
9114e98e3e1Schristos   /* Record the fields for profiling.  */
9124e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
9134e98e3e1Schristos     {
9144e98e3e1Schristos       FLD (in_src1) = f_r1;
9154e98e3e1Schristos       FLD (in_src2) = f_r2;
9164e98e3e1Schristos     }
9174e98e3e1Schristos #endif
9184e98e3e1Schristos #undef FLD
9194e98e3e1Schristos     return idesc;
9204e98e3e1Schristos   }
9214e98e3e1Schristos 
9224e98e3e1Schristos  extract_sfmt_beqz:
9234e98e3e1Schristos   {
9244e98e3e1Schristos     const IDESC *idesc = &m32rbf_insn_data[itype];
9254e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
9264e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_beq.f
9274e98e3e1Schristos     UINT f_r2;
9284e98e3e1Schristos     SI f_disp16;
9294e98e3e1Schristos 
9304e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
931*05fa0856Schristos     f_disp16 = ((((EXTRACT_MSB0_SINT (insn, 32, 16, 16)) * (4))) + (pc));
9324e98e3e1Schristos 
9334e98e3e1Schristos   /* Record the fields for the semantic handler.  */
9344e98e3e1Schristos   FLD (f_r2) = f_r2;
9354e98e3e1Schristos   FLD (i_disp16) = f_disp16;
9364e98e3e1Schristos   FLD (i_src2) = & CPU (h_gr)[f_r2];
937212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_beqz", "f_r2 0x%x", 'x', f_r2, "disp16 0x%x", 'x', f_disp16, "src2 0x%x", 'x', f_r2, (char *) 0));
9384e98e3e1Schristos 
9394e98e3e1Schristos #if WITH_PROFILE_MODEL_P
9404e98e3e1Schristos   /* Record the fields for profiling.  */
9414e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
9424e98e3e1Schristos     {
9434e98e3e1Schristos       FLD (in_src2) = f_r2;
9444e98e3e1Schristos     }
9454e98e3e1Schristos #endif
9464e98e3e1Schristos #undef FLD
9474e98e3e1Schristos     return idesc;
9484e98e3e1Schristos   }
9494e98e3e1Schristos 
9504e98e3e1Schristos  extract_sfmt_bl8:
9514e98e3e1Schristos   {
9524e98e3e1Schristos     const IDESC *idesc = &m32rbf_insn_data[itype];
9534e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
9544e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_bl8.f
9554e98e3e1Schristos     SI f_disp8;
9564e98e3e1Schristos 
957*05fa0856Schristos     f_disp8 = ((((EXTRACT_MSB0_SINT (insn, 16, 8, 8)) * (4))) + (((pc) & (-4))));
9584e98e3e1Schristos 
9594e98e3e1Schristos   /* Record the fields for the semantic handler.  */
9604e98e3e1Schristos   FLD (i_disp8) = f_disp8;
961212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bl8", "disp8 0x%x", 'x', f_disp8, (char *) 0));
9624e98e3e1Schristos 
9634e98e3e1Schristos #if WITH_PROFILE_MODEL_P
9644e98e3e1Schristos   /* Record the fields for profiling.  */
9654e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
9664e98e3e1Schristos     {
9674e98e3e1Schristos       FLD (out_h_gr_SI_14) = 14;
9684e98e3e1Schristos     }
9694e98e3e1Schristos #endif
9704e98e3e1Schristos #undef FLD
9714e98e3e1Schristos     return idesc;
9724e98e3e1Schristos   }
9734e98e3e1Schristos 
9744e98e3e1Schristos  extract_sfmt_bl24:
9754e98e3e1Schristos   {
9764e98e3e1Schristos     const IDESC *idesc = &m32rbf_insn_data[itype];
9774e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
9784e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_bl24.f
9794e98e3e1Schristos     SI f_disp24;
9804e98e3e1Schristos 
981*05fa0856Schristos     f_disp24 = ((((EXTRACT_MSB0_SINT (insn, 32, 8, 24)) * (4))) + (pc));
9824e98e3e1Schristos 
9834e98e3e1Schristos   /* Record the fields for the semantic handler.  */
9844e98e3e1Schristos   FLD (i_disp24) = f_disp24;
985212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bl24", "disp24 0x%x", 'x', f_disp24, (char *) 0));
9864e98e3e1Schristos 
9874e98e3e1Schristos #if WITH_PROFILE_MODEL_P
9884e98e3e1Schristos   /* Record the fields for profiling.  */
9894e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
9904e98e3e1Schristos     {
9914e98e3e1Schristos       FLD (out_h_gr_SI_14) = 14;
9924e98e3e1Schristos     }
9934e98e3e1Schristos #endif
9944e98e3e1Schristos #undef FLD
9954e98e3e1Schristos     return idesc;
9964e98e3e1Schristos   }
9974e98e3e1Schristos 
9984e98e3e1Schristos  extract_sfmt_bra8:
9994e98e3e1Schristos   {
10004e98e3e1Schristos     const IDESC *idesc = &m32rbf_insn_data[itype];
10014e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
10024e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_bl8.f
10034e98e3e1Schristos     SI f_disp8;
10044e98e3e1Schristos 
1005*05fa0856Schristos     f_disp8 = ((((EXTRACT_MSB0_SINT (insn, 16, 8, 8)) * (4))) + (((pc) & (-4))));
10064e98e3e1Schristos 
10074e98e3e1Schristos   /* Record the fields for the semantic handler.  */
10084e98e3e1Schristos   FLD (i_disp8) = f_disp8;
1009212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bra8", "disp8 0x%x", 'x', f_disp8, (char *) 0));
10104e98e3e1Schristos 
10114e98e3e1Schristos #if WITH_PROFILE_MODEL_P
10124e98e3e1Schristos   /* Record the fields for profiling.  */
10134e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
10144e98e3e1Schristos     {
10154e98e3e1Schristos     }
10164e98e3e1Schristos #endif
10174e98e3e1Schristos #undef FLD
10184e98e3e1Schristos     return idesc;
10194e98e3e1Schristos   }
10204e98e3e1Schristos 
10214e98e3e1Schristos  extract_sfmt_bra24:
10224e98e3e1Schristos   {
10234e98e3e1Schristos     const IDESC *idesc = &m32rbf_insn_data[itype];
10244e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
10254e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_bl24.f
10264e98e3e1Schristos     SI f_disp24;
10274e98e3e1Schristos 
1028*05fa0856Schristos     f_disp24 = ((((EXTRACT_MSB0_SINT (insn, 32, 8, 24)) * (4))) + (pc));
10294e98e3e1Schristos 
10304e98e3e1Schristos   /* Record the fields for the semantic handler.  */
10314e98e3e1Schristos   FLD (i_disp24) = f_disp24;
1032212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bra24", "disp24 0x%x", 'x', f_disp24, (char *) 0));
10334e98e3e1Schristos 
10344e98e3e1Schristos #if WITH_PROFILE_MODEL_P
10354e98e3e1Schristos   /* Record the fields for profiling.  */
10364e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
10374e98e3e1Schristos     {
10384e98e3e1Schristos     }
10394e98e3e1Schristos #endif
10404e98e3e1Schristos #undef FLD
10414e98e3e1Schristos     return idesc;
10424e98e3e1Schristos   }
10434e98e3e1Schristos 
10444e98e3e1Schristos  extract_sfmt_cmp:
10454e98e3e1Schristos   {
10464e98e3e1Schristos     const IDESC *idesc = &m32rbf_insn_data[itype];
10474e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
10484e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f
10494e98e3e1Schristos     UINT f_r1;
10504e98e3e1Schristos     UINT f_r2;
10514e98e3e1Schristos 
10524e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
10534e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
10544e98e3e1Schristos 
10554e98e3e1Schristos   /* Record the fields for the semantic handler.  */
10564e98e3e1Schristos   FLD (f_r1) = f_r1;
10574e98e3e1Schristos   FLD (f_r2) = f_r2;
10584e98e3e1Schristos   FLD (i_src1) = & CPU (h_gr)[f_r1];
10594e98e3e1Schristos   FLD (i_src2) = & CPU (h_gr)[f_r2];
1060212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_cmp", "f_r1 0x%x", 'x', f_r1, "f_r2 0x%x", 'x', f_r2, "src1 0x%x", 'x', f_r1, "src2 0x%x", 'x', f_r2, (char *) 0));
10614e98e3e1Schristos 
10624e98e3e1Schristos #if WITH_PROFILE_MODEL_P
10634e98e3e1Schristos   /* Record the fields for profiling.  */
10644e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
10654e98e3e1Schristos     {
10664e98e3e1Schristos       FLD (in_src1) = f_r1;
10674e98e3e1Schristos       FLD (in_src2) = f_r2;
10684e98e3e1Schristos     }
10694e98e3e1Schristos #endif
10704e98e3e1Schristos #undef FLD
10714e98e3e1Schristos     return idesc;
10724e98e3e1Schristos   }
10734e98e3e1Schristos 
10744e98e3e1Schristos  extract_sfmt_cmpi:
10754e98e3e1Schristos   {
10764e98e3e1Schristos     const IDESC *idesc = &m32rbf_insn_data[itype];
10774e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
10784e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_d.f
10794e98e3e1Schristos     UINT f_r2;
10804e98e3e1Schristos     INT f_simm16;
10814e98e3e1Schristos 
10824e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
10834e98e3e1Schristos     f_simm16 = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
10844e98e3e1Schristos 
10854e98e3e1Schristos   /* Record the fields for the semantic handler.  */
10864e98e3e1Schristos   FLD (f_simm16) = f_simm16;
10874e98e3e1Schristos   FLD (f_r2) = f_r2;
10884e98e3e1Schristos   FLD (i_src2) = & CPU (h_gr)[f_r2];
1089212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_cmpi", "f_simm16 0x%x", 'x', f_simm16, "f_r2 0x%x", 'x', f_r2, "src2 0x%x", 'x', f_r2, (char *) 0));
10904e98e3e1Schristos 
10914e98e3e1Schristos #if WITH_PROFILE_MODEL_P
10924e98e3e1Schristos   /* Record the fields for profiling.  */
10934e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
10944e98e3e1Schristos     {
10954e98e3e1Schristos       FLD (in_src2) = f_r2;
10964e98e3e1Schristos     }
10974e98e3e1Schristos #endif
10984e98e3e1Schristos #undef FLD
10994e98e3e1Schristos     return idesc;
11004e98e3e1Schristos   }
11014e98e3e1Schristos 
11024e98e3e1Schristos  extract_sfmt_div:
11034e98e3e1Schristos   {
11044e98e3e1Schristos     const IDESC *idesc = &m32rbf_insn_data[itype];
11054e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
11064e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f
11074e98e3e1Schristos     UINT f_r1;
11084e98e3e1Schristos     UINT f_r2;
11094e98e3e1Schristos 
11104e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
11114e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
11124e98e3e1Schristos 
11134e98e3e1Schristos   /* Record the fields for the semantic handler.  */
11144e98e3e1Schristos   FLD (f_r1) = f_r1;
11154e98e3e1Schristos   FLD (f_r2) = f_r2;
11164e98e3e1Schristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
11174e98e3e1Schristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
1118212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_div", "f_r1 0x%x", 'x', f_r1, "f_r2 0x%x", 'x', f_r2, "dr 0x%x", 'x', f_r1, "sr 0x%x", 'x', f_r2, (char *) 0));
11194e98e3e1Schristos 
11204e98e3e1Schristos #if WITH_PROFILE_MODEL_P
11214e98e3e1Schristos   /* Record the fields for profiling.  */
11224e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
11234e98e3e1Schristos     {
11244e98e3e1Schristos       FLD (in_dr) = f_r1;
11254e98e3e1Schristos       FLD (in_sr) = f_r2;
11264e98e3e1Schristos       FLD (out_dr) = f_r1;
11274e98e3e1Schristos     }
11284e98e3e1Schristos #endif
11294e98e3e1Schristos #undef FLD
11304e98e3e1Schristos     return idesc;
11314e98e3e1Schristos   }
11324e98e3e1Schristos 
11334e98e3e1Schristos  extract_sfmt_jl:
11344e98e3e1Schristos   {
11354e98e3e1Schristos     const IDESC *idesc = &m32rbf_insn_data[itype];
11364e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
11374e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_jl.f
11384e98e3e1Schristos     UINT f_r2;
11394e98e3e1Schristos 
11404e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
11414e98e3e1Schristos 
11424e98e3e1Schristos   /* Record the fields for the semantic handler.  */
11434e98e3e1Schristos   FLD (f_r2) = f_r2;
11444e98e3e1Schristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
1145212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_jl", "f_r2 0x%x", 'x', f_r2, "sr 0x%x", 'x', f_r2, (char *) 0));
11464e98e3e1Schristos 
11474e98e3e1Schristos #if WITH_PROFILE_MODEL_P
11484e98e3e1Schristos   /* Record the fields for profiling.  */
11494e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
11504e98e3e1Schristos     {
11514e98e3e1Schristos       FLD (in_sr) = f_r2;
11524e98e3e1Schristos       FLD (out_h_gr_SI_14) = 14;
11534e98e3e1Schristos     }
11544e98e3e1Schristos #endif
11554e98e3e1Schristos #undef FLD
11564e98e3e1Schristos     return idesc;
11574e98e3e1Schristos   }
11584e98e3e1Schristos 
11594e98e3e1Schristos  extract_sfmt_jmp:
11604e98e3e1Schristos   {
11614e98e3e1Schristos     const IDESC *idesc = &m32rbf_insn_data[itype];
11624e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
11634e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_jl.f
11644e98e3e1Schristos     UINT f_r2;
11654e98e3e1Schristos 
11664e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
11674e98e3e1Schristos 
11684e98e3e1Schristos   /* Record the fields for the semantic handler.  */
11694e98e3e1Schristos   FLD (f_r2) = f_r2;
11704e98e3e1Schristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
1171212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_jmp", "f_r2 0x%x", 'x', f_r2, "sr 0x%x", 'x', f_r2, (char *) 0));
11724e98e3e1Schristos 
11734e98e3e1Schristos #if WITH_PROFILE_MODEL_P
11744e98e3e1Schristos   /* Record the fields for profiling.  */
11754e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
11764e98e3e1Schristos     {
11774e98e3e1Schristos       FLD (in_sr) = f_r2;
11784e98e3e1Schristos     }
11794e98e3e1Schristos #endif
11804e98e3e1Schristos #undef FLD
11814e98e3e1Schristos     return idesc;
11824e98e3e1Schristos   }
11834e98e3e1Schristos 
11844e98e3e1Schristos  extract_sfmt_ld:
11854e98e3e1Schristos   {
11864e98e3e1Schristos     const IDESC *idesc = &m32rbf_insn_data[itype];
11874e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
11884e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f
11894e98e3e1Schristos     UINT f_r1;
11904e98e3e1Schristos     UINT f_r2;
11914e98e3e1Schristos 
11924e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
11934e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
11944e98e3e1Schristos 
11954e98e3e1Schristos   /* Record the fields for the semantic handler.  */
11964e98e3e1Schristos   FLD (f_r2) = f_r2;
11974e98e3e1Schristos   FLD (f_r1) = f_r1;
11984e98e3e1Schristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
11994e98e3e1Schristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
1200212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ld", "f_r2 0x%x", 'x', f_r2, "f_r1 0x%x", 'x', f_r1, "sr 0x%x", 'x', f_r2, "dr 0x%x", 'x', f_r1, (char *) 0));
12014e98e3e1Schristos 
12024e98e3e1Schristos #if WITH_PROFILE_MODEL_P
12034e98e3e1Schristos   /* Record the fields for profiling.  */
12044e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
12054e98e3e1Schristos     {
12064e98e3e1Schristos       FLD (in_sr) = f_r2;
12074e98e3e1Schristos       FLD (out_dr) = f_r1;
12084e98e3e1Schristos     }
12094e98e3e1Schristos #endif
12104e98e3e1Schristos #undef FLD
12114e98e3e1Schristos     return idesc;
12124e98e3e1Schristos   }
12134e98e3e1Schristos 
12144e98e3e1Schristos  extract_sfmt_ld_d:
12154e98e3e1Schristos   {
12164e98e3e1Schristos     const IDESC *idesc = &m32rbf_insn_data[itype];
12174e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
12184e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add3.f
12194e98e3e1Schristos     UINT f_r1;
12204e98e3e1Schristos     UINT f_r2;
12214e98e3e1Schristos     INT f_simm16;
12224e98e3e1Schristos 
12234e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
12244e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
12254e98e3e1Schristos     f_simm16 = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
12264e98e3e1Schristos 
12274e98e3e1Schristos   /* Record the fields for the semantic handler.  */
12284e98e3e1Schristos   FLD (f_simm16) = f_simm16;
12294e98e3e1Schristos   FLD (f_r2) = f_r2;
12304e98e3e1Schristos   FLD (f_r1) = f_r1;
12314e98e3e1Schristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
12324e98e3e1Schristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
1233212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ld_d", "f_simm16 0x%x", 'x', f_simm16, "f_r2 0x%x", 'x', f_r2, "f_r1 0x%x", 'x', f_r1, "sr 0x%x", 'x', f_r2, "dr 0x%x", 'x', f_r1, (char *) 0));
12344e98e3e1Schristos 
12354e98e3e1Schristos #if WITH_PROFILE_MODEL_P
12364e98e3e1Schristos   /* Record the fields for profiling.  */
12374e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
12384e98e3e1Schristos     {
12394e98e3e1Schristos       FLD (in_sr) = f_r2;
12404e98e3e1Schristos       FLD (out_dr) = f_r1;
12414e98e3e1Schristos     }
12424e98e3e1Schristos #endif
12434e98e3e1Schristos #undef FLD
12444e98e3e1Schristos     return idesc;
12454e98e3e1Schristos   }
12464e98e3e1Schristos 
12474e98e3e1Schristos  extract_sfmt_ldb:
12484e98e3e1Schristos   {
12494e98e3e1Schristos     const IDESC *idesc = &m32rbf_insn_data[itype];
12504e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
12514e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f
12524e98e3e1Schristos     UINT f_r1;
12534e98e3e1Schristos     UINT f_r2;
12544e98e3e1Schristos 
12554e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
12564e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
12574e98e3e1Schristos 
12584e98e3e1Schristos   /* Record the fields for the semantic handler.  */
12594e98e3e1Schristos   FLD (f_r2) = f_r2;
12604e98e3e1Schristos   FLD (f_r1) = f_r1;
12614e98e3e1Schristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
12624e98e3e1Schristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
1263212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldb", "f_r2 0x%x", 'x', f_r2, "f_r1 0x%x", 'x', f_r1, "sr 0x%x", 'x', f_r2, "dr 0x%x", 'x', f_r1, (char *) 0));
12644e98e3e1Schristos 
12654e98e3e1Schristos #if WITH_PROFILE_MODEL_P
12664e98e3e1Schristos   /* Record the fields for profiling.  */
12674e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
12684e98e3e1Schristos     {
12694e98e3e1Schristos       FLD (in_sr) = f_r2;
12704e98e3e1Schristos       FLD (out_dr) = f_r1;
12714e98e3e1Schristos     }
12724e98e3e1Schristos #endif
12734e98e3e1Schristos #undef FLD
12744e98e3e1Schristos     return idesc;
12754e98e3e1Schristos   }
12764e98e3e1Schristos 
12774e98e3e1Schristos  extract_sfmt_ldb_d:
12784e98e3e1Schristos   {
12794e98e3e1Schristos     const IDESC *idesc = &m32rbf_insn_data[itype];
12804e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
12814e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add3.f
12824e98e3e1Schristos     UINT f_r1;
12834e98e3e1Schristos     UINT f_r2;
12844e98e3e1Schristos     INT f_simm16;
12854e98e3e1Schristos 
12864e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
12874e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
12884e98e3e1Schristos     f_simm16 = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
12894e98e3e1Schristos 
12904e98e3e1Schristos   /* Record the fields for the semantic handler.  */
12914e98e3e1Schristos   FLD (f_simm16) = f_simm16;
12924e98e3e1Schristos   FLD (f_r2) = f_r2;
12934e98e3e1Schristos   FLD (f_r1) = f_r1;
12944e98e3e1Schristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
12954e98e3e1Schristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
1296212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldb_d", "f_simm16 0x%x", 'x', f_simm16, "f_r2 0x%x", 'x', f_r2, "f_r1 0x%x", 'x', f_r1, "sr 0x%x", 'x', f_r2, "dr 0x%x", 'x', f_r1, (char *) 0));
12974e98e3e1Schristos 
12984e98e3e1Schristos #if WITH_PROFILE_MODEL_P
12994e98e3e1Schristos   /* Record the fields for profiling.  */
13004e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
13014e98e3e1Schristos     {
13024e98e3e1Schristos       FLD (in_sr) = f_r2;
13034e98e3e1Schristos       FLD (out_dr) = f_r1;
13044e98e3e1Schristos     }
13054e98e3e1Schristos #endif
13064e98e3e1Schristos #undef FLD
13074e98e3e1Schristos     return idesc;
13084e98e3e1Schristos   }
13094e98e3e1Schristos 
13104e98e3e1Schristos  extract_sfmt_ldh:
13114e98e3e1Schristos   {
13124e98e3e1Schristos     const IDESC *idesc = &m32rbf_insn_data[itype];
13134e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
13144e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f
13154e98e3e1Schristos     UINT f_r1;
13164e98e3e1Schristos     UINT f_r2;
13174e98e3e1Schristos 
13184e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
13194e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
13204e98e3e1Schristos 
13214e98e3e1Schristos   /* Record the fields for the semantic handler.  */
13224e98e3e1Schristos   FLD (f_r2) = f_r2;
13234e98e3e1Schristos   FLD (f_r1) = f_r1;
13244e98e3e1Schristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
13254e98e3e1Schristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
1326212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldh", "f_r2 0x%x", 'x', f_r2, "f_r1 0x%x", 'x', f_r1, "sr 0x%x", 'x', f_r2, "dr 0x%x", 'x', f_r1, (char *) 0));
13274e98e3e1Schristos 
13284e98e3e1Schristos #if WITH_PROFILE_MODEL_P
13294e98e3e1Schristos   /* Record the fields for profiling.  */
13304e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
13314e98e3e1Schristos     {
13324e98e3e1Schristos       FLD (in_sr) = f_r2;
13334e98e3e1Schristos       FLD (out_dr) = f_r1;
13344e98e3e1Schristos     }
13354e98e3e1Schristos #endif
13364e98e3e1Schristos #undef FLD
13374e98e3e1Schristos     return idesc;
13384e98e3e1Schristos   }
13394e98e3e1Schristos 
13404e98e3e1Schristos  extract_sfmt_ldh_d:
13414e98e3e1Schristos   {
13424e98e3e1Schristos     const IDESC *idesc = &m32rbf_insn_data[itype];
13434e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
13444e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add3.f
13454e98e3e1Schristos     UINT f_r1;
13464e98e3e1Schristos     UINT f_r2;
13474e98e3e1Schristos     INT f_simm16;
13484e98e3e1Schristos 
13494e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
13504e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
13514e98e3e1Schristos     f_simm16 = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
13524e98e3e1Schristos 
13534e98e3e1Schristos   /* Record the fields for the semantic handler.  */
13544e98e3e1Schristos   FLD (f_simm16) = f_simm16;
13554e98e3e1Schristos   FLD (f_r2) = f_r2;
13564e98e3e1Schristos   FLD (f_r1) = f_r1;
13574e98e3e1Schristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
13584e98e3e1Schristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
1359212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldh_d", "f_simm16 0x%x", 'x', f_simm16, "f_r2 0x%x", 'x', f_r2, "f_r1 0x%x", 'x', f_r1, "sr 0x%x", 'x', f_r2, "dr 0x%x", 'x', f_r1, (char *) 0));
13604e98e3e1Schristos 
13614e98e3e1Schristos #if WITH_PROFILE_MODEL_P
13624e98e3e1Schristos   /* Record the fields for profiling.  */
13634e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
13644e98e3e1Schristos     {
13654e98e3e1Schristos       FLD (in_sr) = f_r2;
13664e98e3e1Schristos       FLD (out_dr) = f_r1;
13674e98e3e1Schristos     }
13684e98e3e1Schristos #endif
13694e98e3e1Schristos #undef FLD
13704e98e3e1Schristos     return idesc;
13714e98e3e1Schristos   }
13724e98e3e1Schristos 
13734e98e3e1Schristos  extract_sfmt_ld_plus:
13744e98e3e1Schristos   {
13754e98e3e1Schristos     const IDESC *idesc = &m32rbf_insn_data[itype];
13764e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
13774e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f
13784e98e3e1Schristos     UINT f_r1;
13794e98e3e1Schristos     UINT f_r2;
13804e98e3e1Schristos 
13814e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
13824e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
13834e98e3e1Schristos 
13844e98e3e1Schristos   /* Record the fields for the semantic handler.  */
13854e98e3e1Schristos   FLD (f_r2) = f_r2;
13864e98e3e1Schristos   FLD (f_r1) = f_r1;
13874e98e3e1Schristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
13884e98e3e1Schristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
1389212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ld_plus", "f_r2 0x%x", 'x', f_r2, "f_r1 0x%x", 'x', f_r1, "sr 0x%x", 'x', f_r2, "dr 0x%x", 'x', f_r1, (char *) 0));
13904e98e3e1Schristos 
13914e98e3e1Schristos #if WITH_PROFILE_MODEL_P
13924e98e3e1Schristos   /* Record the fields for profiling.  */
13934e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
13944e98e3e1Schristos     {
13954e98e3e1Schristos       FLD (in_sr) = f_r2;
13964e98e3e1Schristos       FLD (out_dr) = f_r1;
13974e98e3e1Schristos       FLD (out_sr) = f_r2;
13984e98e3e1Schristos     }
13994e98e3e1Schristos #endif
14004e98e3e1Schristos #undef FLD
14014e98e3e1Schristos     return idesc;
14024e98e3e1Schristos   }
14034e98e3e1Schristos 
14044e98e3e1Schristos  extract_sfmt_ld24:
14054e98e3e1Schristos   {
14064e98e3e1Schristos     const IDESC *idesc = &m32rbf_insn_data[itype];
14074e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
14084e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld24.f
14094e98e3e1Schristos     UINT f_r1;
14104e98e3e1Schristos     UINT f_uimm24;
14114e98e3e1Schristos 
14124e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
14134e98e3e1Schristos     f_uimm24 = EXTRACT_MSB0_UINT (insn, 32, 8, 24);
14144e98e3e1Schristos 
14154e98e3e1Schristos   /* Record the fields for the semantic handler.  */
14164e98e3e1Schristos   FLD (f_r1) = f_r1;
14174e98e3e1Schristos   FLD (i_uimm24) = f_uimm24;
14184e98e3e1Schristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
1419212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ld24", "f_r1 0x%x", 'x', f_r1, "uimm24 0x%x", 'x', f_uimm24, "dr 0x%x", 'x', f_r1, (char *) 0));
14204e98e3e1Schristos 
14214e98e3e1Schristos #if WITH_PROFILE_MODEL_P
14224e98e3e1Schristos   /* Record the fields for profiling.  */
14234e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
14244e98e3e1Schristos     {
14254e98e3e1Schristos       FLD (out_dr) = f_r1;
14264e98e3e1Schristos     }
14274e98e3e1Schristos #endif
14284e98e3e1Schristos #undef FLD
14294e98e3e1Schristos     return idesc;
14304e98e3e1Schristos   }
14314e98e3e1Schristos 
14324e98e3e1Schristos  extract_sfmt_ldi8:
14334e98e3e1Schristos   {
14344e98e3e1Schristos     const IDESC *idesc = &m32rbf_insn_data[itype];
14354e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
14364e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_addi.f
14374e98e3e1Schristos     UINT f_r1;
14384e98e3e1Schristos     INT f_simm8;
14394e98e3e1Schristos 
14404e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
14414e98e3e1Schristos     f_simm8 = EXTRACT_MSB0_SINT (insn, 16, 8, 8);
14424e98e3e1Schristos 
14434e98e3e1Schristos   /* Record the fields for the semantic handler.  */
14444e98e3e1Schristos   FLD (f_simm8) = f_simm8;
14454e98e3e1Schristos   FLD (f_r1) = f_r1;
14464e98e3e1Schristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
1447212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldi8", "f_simm8 0x%x", 'x', f_simm8, "f_r1 0x%x", 'x', f_r1, "dr 0x%x", 'x', f_r1, (char *) 0));
14484e98e3e1Schristos 
14494e98e3e1Schristos #if WITH_PROFILE_MODEL_P
14504e98e3e1Schristos   /* Record the fields for profiling.  */
14514e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
14524e98e3e1Schristos     {
14534e98e3e1Schristos       FLD (out_dr) = f_r1;
14544e98e3e1Schristos     }
14554e98e3e1Schristos #endif
14564e98e3e1Schristos #undef FLD
14574e98e3e1Schristos     return idesc;
14584e98e3e1Schristos   }
14594e98e3e1Schristos 
14604e98e3e1Schristos  extract_sfmt_ldi16:
14614e98e3e1Schristos   {
14624e98e3e1Schristos     const IDESC *idesc = &m32rbf_insn_data[itype];
14634e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
14644e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add3.f
14654e98e3e1Schristos     UINT f_r1;
14664e98e3e1Schristos     INT f_simm16;
14674e98e3e1Schristos 
14684e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
14694e98e3e1Schristos     f_simm16 = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
14704e98e3e1Schristos 
14714e98e3e1Schristos   /* Record the fields for the semantic handler.  */
14724e98e3e1Schristos   FLD (f_simm16) = f_simm16;
14734e98e3e1Schristos   FLD (f_r1) = f_r1;
14744e98e3e1Schristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
1475212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldi16", "f_simm16 0x%x", 'x', f_simm16, "f_r1 0x%x", 'x', f_r1, "dr 0x%x", 'x', f_r1, (char *) 0));
14764e98e3e1Schristos 
14774e98e3e1Schristos #if WITH_PROFILE_MODEL_P
14784e98e3e1Schristos   /* Record the fields for profiling.  */
14794e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
14804e98e3e1Schristos     {
14814e98e3e1Schristos       FLD (out_dr) = f_r1;
14824e98e3e1Schristos     }
14834e98e3e1Schristos #endif
14844e98e3e1Schristos #undef FLD
14854e98e3e1Schristos     return idesc;
14864e98e3e1Schristos   }
14874e98e3e1Schristos 
14884e98e3e1Schristos  extract_sfmt_lock:
14894e98e3e1Schristos   {
14904e98e3e1Schristos     const IDESC *idesc = &m32rbf_insn_data[itype];
14914e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
14924e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f
14934e98e3e1Schristos     UINT f_r1;
14944e98e3e1Schristos     UINT f_r2;
14954e98e3e1Schristos 
14964e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
14974e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
14984e98e3e1Schristos 
14994e98e3e1Schristos   /* Record the fields for the semantic handler.  */
15004e98e3e1Schristos   FLD (f_r2) = f_r2;
15014e98e3e1Schristos   FLD (f_r1) = f_r1;
15024e98e3e1Schristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
15034e98e3e1Schristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
1504212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_lock", "f_r2 0x%x", 'x', f_r2, "f_r1 0x%x", 'x', f_r1, "sr 0x%x", 'x', f_r2, "dr 0x%x", 'x', f_r1, (char *) 0));
15054e98e3e1Schristos 
15064e98e3e1Schristos #if WITH_PROFILE_MODEL_P
15074e98e3e1Schristos   /* Record the fields for profiling.  */
15084e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
15094e98e3e1Schristos     {
15104e98e3e1Schristos       FLD (in_sr) = f_r2;
15114e98e3e1Schristos       FLD (out_dr) = f_r1;
15124e98e3e1Schristos     }
15134e98e3e1Schristos #endif
15144e98e3e1Schristos #undef FLD
15154e98e3e1Schristos     return idesc;
15164e98e3e1Schristos   }
15174e98e3e1Schristos 
15184e98e3e1Schristos  extract_sfmt_machi:
15194e98e3e1Schristos   {
15204e98e3e1Schristos     const IDESC *idesc = &m32rbf_insn_data[itype];
15214e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
15224e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f
15234e98e3e1Schristos     UINT f_r1;
15244e98e3e1Schristos     UINT f_r2;
15254e98e3e1Schristos 
15264e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
15274e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
15284e98e3e1Schristos 
15294e98e3e1Schristos   /* Record the fields for the semantic handler.  */
15304e98e3e1Schristos   FLD (f_r1) = f_r1;
15314e98e3e1Schristos   FLD (f_r2) = f_r2;
15324e98e3e1Schristos   FLD (i_src1) = & CPU (h_gr)[f_r1];
15334e98e3e1Schristos   FLD (i_src2) = & CPU (h_gr)[f_r2];
1534212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_machi", "f_r1 0x%x", 'x', f_r1, "f_r2 0x%x", 'x', f_r2, "src1 0x%x", 'x', f_r1, "src2 0x%x", 'x', f_r2, (char *) 0));
15354e98e3e1Schristos 
15364e98e3e1Schristos #if WITH_PROFILE_MODEL_P
15374e98e3e1Schristos   /* Record the fields for profiling.  */
15384e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
15394e98e3e1Schristos     {
15404e98e3e1Schristos       FLD (in_src1) = f_r1;
15414e98e3e1Schristos       FLD (in_src2) = f_r2;
15424e98e3e1Schristos     }
15434e98e3e1Schristos #endif
15444e98e3e1Schristos #undef FLD
15454e98e3e1Schristos     return idesc;
15464e98e3e1Schristos   }
15474e98e3e1Schristos 
15484e98e3e1Schristos  extract_sfmt_mulhi:
15494e98e3e1Schristos   {
15504e98e3e1Schristos     const IDESC *idesc = &m32rbf_insn_data[itype];
15514e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
15524e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f
15534e98e3e1Schristos     UINT f_r1;
15544e98e3e1Schristos     UINT f_r2;
15554e98e3e1Schristos 
15564e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
15574e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
15584e98e3e1Schristos 
15594e98e3e1Schristos   /* Record the fields for the semantic handler.  */
15604e98e3e1Schristos   FLD (f_r1) = f_r1;
15614e98e3e1Schristos   FLD (f_r2) = f_r2;
15624e98e3e1Schristos   FLD (i_src1) = & CPU (h_gr)[f_r1];
15634e98e3e1Schristos   FLD (i_src2) = & CPU (h_gr)[f_r2];
1564212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mulhi", "f_r1 0x%x", 'x', f_r1, "f_r2 0x%x", 'x', f_r2, "src1 0x%x", 'x', f_r1, "src2 0x%x", 'x', f_r2, (char *) 0));
15654e98e3e1Schristos 
15664e98e3e1Schristos #if WITH_PROFILE_MODEL_P
15674e98e3e1Schristos   /* Record the fields for profiling.  */
15684e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
15694e98e3e1Schristos     {
15704e98e3e1Schristos       FLD (in_src1) = f_r1;
15714e98e3e1Schristos       FLD (in_src2) = f_r2;
15724e98e3e1Schristos     }
15734e98e3e1Schristos #endif
15744e98e3e1Schristos #undef FLD
15754e98e3e1Schristos     return idesc;
15764e98e3e1Schristos   }
15774e98e3e1Schristos 
15784e98e3e1Schristos  extract_sfmt_mv:
15794e98e3e1Schristos   {
15804e98e3e1Schristos     const IDESC *idesc = &m32rbf_insn_data[itype];
15814e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
15824e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f
15834e98e3e1Schristos     UINT f_r1;
15844e98e3e1Schristos     UINT f_r2;
15854e98e3e1Schristos 
15864e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
15874e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
15884e98e3e1Schristos 
15894e98e3e1Schristos   /* Record the fields for the semantic handler.  */
15904e98e3e1Schristos   FLD (f_r2) = f_r2;
15914e98e3e1Schristos   FLD (f_r1) = f_r1;
15924e98e3e1Schristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
15934e98e3e1Schristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
1594212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mv", "f_r2 0x%x", 'x', f_r2, "f_r1 0x%x", 'x', f_r1, "sr 0x%x", 'x', f_r2, "dr 0x%x", 'x', f_r1, (char *) 0));
15954e98e3e1Schristos 
15964e98e3e1Schristos #if WITH_PROFILE_MODEL_P
15974e98e3e1Schristos   /* Record the fields for profiling.  */
15984e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
15994e98e3e1Schristos     {
16004e98e3e1Schristos       FLD (in_sr) = f_r2;
16014e98e3e1Schristos       FLD (out_dr) = f_r1;
16024e98e3e1Schristos     }
16034e98e3e1Schristos #endif
16044e98e3e1Schristos #undef FLD
16054e98e3e1Schristos     return idesc;
16064e98e3e1Schristos   }
16074e98e3e1Schristos 
16084e98e3e1Schristos  extract_sfmt_mvfachi:
16094e98e3e1Schristos   {
16104e98e3e1Schristos     const IDESC *idesc = &m32rbf_insn_data[itype];
16114e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
16124e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_seth.f
16134e98e3e1Schristos     UINT f_r1;
16144e98e3e1Schristos 
16154e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
16164e98e3e1Schristos 
16174e98e3e1Schristos   /* Record the fields for the semantic handler.  */
16184e98e3e1Schristos   FLD (f_r1) = f_r1;
16194e98e3e1Schristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
1620212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mvfachi", "f_r1 0x%x", 'x', f_r1, "dr 0x%x", 'x', f_r1, (char *) 0));
16214e98e3e1Schristos 
16224e98e3e1Schristos #if WITH_PROFILE_MODEL_P
16234e98e3e1Schristos   /* Record the fields for profiling.  */
16244e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
16254e98e3e1Schristos     {
16264e98e3e1Schristos       FLD (out_dr) = f_r1;
16274e98e3e1Schristos     }
16284e98e3e1Schristos #endif
16294e98e3e1Schristos #undef FLD
16304e98e3e1Schristos     return idesc;
16314e98e3e1Schristos   }
16324e98e3e1Schristos 
16334e98e3e1Schristos  extract_sfmt_mvfc:
16344e98e3e1Schristos   {
16354e98e3e1Schristos     const IDESC *idesc = &m32rbf_insn_data[itype];
16364e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
16374e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f
16384e98e3e1Schristos     UINT f_r1;
16394e98e3e1Schristos     UINT f_r2;
16404e98e3e1Schristos 
16414e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
16424e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
16434e98e3e1Schristos 
16444e98e3e1Schristos   /* Record the fields for the semantic handler.  */
16454e98e3e1Schristos   FLD (f_r2) = f_r2;
16464e98e3e1Schristos   FLD (f_r1) = f_r1;
16474e98e3e1Schristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
1648212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mvfc", "f_r2 0x%x", 'x', f_r2, "f_r1 0x%x", 'x', f_r1, "dr 0x%x", 'x', f_r1, (char *) 0));
16494e98e3e1Schristos 
16504e98e3e1Schristos #if WITH_PROFILE_MODEL_P
16514e98e3e1Schristos   /* Record the fields for profiling.  */
16524e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
16534e98e3e1Schristos     {
16544e98e3e1Schristos       FLD (out_dr) = f_r1;
16554e98e3e1Schristos     }
16564e98e3e1Schristos #endif
16574e98e3e1Schristos #undef FLD
16584e98e3e1Schristos     return idesc;
16594e98e3e1Schristos   }
16604e98e3e1Schristos 
16614e98e3e1Schristos  extract_sfmt_mvtachi:
16624e98e3e1Schristos   {
16634e98e3e1Schristos     const IDESC *idesc = &m32rbf_insn_data[itype];
16644e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
16654e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f
16664e98e3e1Schristos     UINT f_r1;
16674e98e3e1Schristos 
16684e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
16694e98e3e1Schristos 
16704e98e3e1Schristos   /* Record the fields for the semantic handler.  */
16714e98e3e1Schristos   FLD (f_r1) = f_r1;
16724e98e3e1Schristos   FLD (i_src1) = & CPU (h_gr)[f_r1];
1673212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mvtachi", "f_r1 0x%x", 'x', f_r1, "src1 0x%x", 'x', f_r1, (char *) 0));
16744e98e3e1Schristos 
16754e98e3e1Schristos #if WITH_PROFILE_MODEL_P
16764e98e3e1Schristos   /* Record the fields for profiling.  */
16774e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
16784e98e3e1Schristos     {
16794e98e3e1Schristos       FLD (in_src1) = f_r1;
16804e98e3e1Schristos     }
16814e98e3e1Schristos #endif
16824e98e3e1Schristos #undef FLD
16834e98e3e1Schristos     return idesc;
16844e98e3e1Schristos   }
16854e98e3e1Schristos 
16864e98e3e1Schristos  extract_sfmt_mvtc:
16874e98e3e1Schristos   {
16884e98e3e1Schristos     const IDESC *idesc = &m32rbf_insn_data[itype];
16894e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
16904e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f
16914e98e3e1Schristos     UINT f_r1;
16924e98e3e1Schristos     UINT f_r2;
16934e98e3e1Schristos 
16944e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
16954e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
16964e98e3e1Schristos 
16974e98e3e1Schristos   /* Record the fields for the semantic handler.  */
16984e98e3e1Schristos   FLD (f_r2) = f_r2;
16994e98e3e1Schristos   FLD (f_r1) = f_r1;
17004e98e3e1Schristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
1701212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mvtc", "f_r2 0x%x", 'x', f_r2, "f_r1 0x%x", 'x', f_r1, "sr 0x%x", 'x', f_r2, (char *) 0));
17024e98e3e1Schristos 
17034e98e3e1Schristos #if WITH_PROFILE_MODEL_P
17044e98e3e1Schristos   /* Record the fields for profiling.  */
17054e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
17064e98e3e1Schristos     {
17074e98e3e1Schristos       FLD (in_sr) = f_r2;
17084e98e3e1Schristos     }
17094e98e3e1Schristos #endif
17104e98e3e1Schristos #undef FLD
17114e98e3e1Schristos     return idesc;
17124e98e3e1Schristos   }
17134e98e3e1Schristos 
17144e98e3e1Schristos  extract_sfmt_nop:
17154e98e3e1Schristos   {
17164e98e3e1Schristos     const IDESC *idesc = &m32rbf_insn_data[itype];
17174e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_empty.f
17184e98e3e1Schristos 
17194e98e3e1Schristos 
17204e98e3e1Schristos   /* Record the fields for the semantic handler.  */
1721212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_nop", (char *) 0));
17224e98e3e1Schristos 
17234e98e3e1Schristos #undef FLD
17244e98e3e1Schristos     return idesc;
17254e98e3e1Schristos   }
17264e98e3e1Schristos 
17274e98e3e1Schristos  extract_sfmt_rac:
17284e98e3e1Schristos   {
17294e98e3e1Schristos     const IDESC *idesc = &m32rbf_insn_data[itype];
17304e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_empty.f
17314e98e3e1Schristos 
17324e98e3e1Schristos 
17334e98e3e1Schristos   /* Record the fields for the semantic handler.  */
1734212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_rac", (char *) 0));
17354e98e3e1Schristos 
17364e98e3e1Schristos #undef FLD
17374e98e3e1Schristos     return idesc;
17384e98e3e1Schristos   }
17394e98e3e1Schristos 
17404e98e3e1Schristos  extract_sfmt_rte:
17414e98e3e1Schristos   {
17424e98e3e1Schristos     const IDESC *idesc = &m32rbf_insn_data[itype];
17434e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_empty.f
17444e98e3e1Schristos 
17454e98e3e1Schristos 
17464e98e3e1Schristos   /* Record the fields for the semantic handler.  */
1747212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_rte", (char *) 0));
17484e98e3e1Schristos 
17494e98e3e1Schristos #if WITH_PROFILE_MODEL_P
17504e98e3e1Schristos   /* Record the fields for profiling.  */
17514e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
17524e98e3e1Schristos     {
17534e98e3e1Schristos     }
17544e98e3e1Schristos #endif
17554e98e3e1Schristos #undef FLD
17564e98e3e1Schristos     return idesc;
17574e98e3e1Schristos   }
17584e98e3e1Schristos 
17594e98e3e1Schristos  extract_sfmt_seth:
17604e98e3e1Schristos   {
17614e98e3e1Schristos     const IDESC *idesc = &m32rbf_insn_data[itype];
17624e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
17634e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_seth.f
17644e98e3e1Schristos     UINT f_r1;
17654e98e3e1Schristos     UINT f_hi16;
17664e98e3e1Schristos 
17674e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
17684e98e3e1Schristos     f_hi16 = EXTRACT_MSB0_UINT (insn, 32, 16, 16);
17694e98e3e1Schristos 
17704e98e3e1Schristos   /* Record the fields for the semantic handler.  */
17714e98e3e1Schristos   FLD (f_hi16) = f_hi16;
17724e98e3e1Schristos   FLD (f_r1) = f_r1;
17734e98e3e1Schristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
1774212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_seth", "f_hi16 0x%x", 'x', f_hi16, "f_r1 0x%x", 'x', f_r1, "dr 0x%x", 'x', f_r1, (char *) 0));
17754e98e3e1Schristos 
17764e98e3e1Schristos #if WITH_PROFILE_MODEL_P
17774e98e3e1Schristos   /* Record the fields for profiling.  */
17784e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
17794e98e3e1Schristos     {
17804e98e3e1Schristos       FLD (out_dr) = f_r1;
17814e98e3e1Schristos     }
17824e98e3e1Schristos #endif
17834e98e3e1Schristos #undef FLD
17844e98e3e1Schristos     return idesc;
17854e98e3e1Schristos   }
17864e98e3e1Schristos 
17874e98e3e1Schristos  extract_sfmt_sll3:
17884e98e3e1Schristos   {
17894e98e3e1Schristos     const IDESC *idesc = &m32rbf_insn_data[itype];
17904e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
17914e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add3.f
17924e98e3e1Schristos     UINT f_r1;
17934e98e3e1Schristos     UINT f_r2;
17944e98e3e1Schristos     INT f_simm16;
17954e98e3e1Schristos 
17964e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
17974e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
17984e98e3e1Schristos     f_simm16 = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
17994e98e3e1Schristos 
18004e98e3e1Schristos   /* Record the fields for the semantic handler.  */
18014e98e3e1Schristos   FLD (f_simm16) = f_simm16;
18024e98e3e1Schristos   FLD (f_r2) = f_r2;
18034e98e3e1Schristos   FLD (f_r1) = f_r1;
18044e98e3e1Schristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
18054e98e3e1Schristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
1806212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_sll3", "f_simm16 0x%x", 'x', f_simm16, "f_r2 0x%x", 'x', f_r2, "f_r1 0x%x", 'x', f_r1, "sr 0x%x", 'x', f_r2, "dr 0x%x", 'x', f_r1, (char *) 0));
18074e98e3e1Schristos 
18084e98e3e1Schristos #if WITH_PROFILE_MODEL_P
18094e98e3e1Schristos   /* Record the fields for profiling.  */
18104e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
18114e98e3e1Schristos     {
18124e98e3e1Schristos       FLD (in_sr) = f_r2;
18134e98e3e1Schristos       FLD (out_dr) = f_r1;
18144e98e3e1Schristos     }
18154e98e3e1Schristos #endif
18164e98e3e1Schristos #undef FLD
18174e98e3e1Schristos     return idesc;
18184e98e3e1Schristos   }
18194e98e3e1Schristos 
18204e98e3e1Schristos  extract_sfmt_slli:
18214e98e3e1Schristos   {
18224e98e3e1Schristos     const IDESC *idesc = &m32rbf_insn_data[itype];
18234e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
18244e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_slli.f
18254e98e3e1Schristos     UINT f_r1;
18264e98e3e1Schristos     UINT f_uimm5;
18274e98e3e1Schristos 
18284e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
18294e98e3e1Schristos     f_uimm5 = EXTRACT_MSB0_UINT (insn, 16, 11, 5);
18304e98e3e1Schristos 
18314e98e3e1Schristos   /* Record the fields for the semantic handler.  */
18324e98e3e1Schristos   FLD (f_r1) = f_r1;
18334e98e3e1Schristos   FLD (f_uimm5) = f_uimm5;
18344e98e3e1Schristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
1835212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_slli", "f_r1 0x%x", 'x', f_r1, "f_uimm5 0x%x", 'x', f_uimm5, "dr 0x%x", 'x', f_r1, (char *) 0));
18364e98e3e1Schristos 
18374e98e3e1Schristos #if WITH_PROFILE_MODEL_P
18384e98e3e1Schristos   /* Record the fields for profiling.  */
18394e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
18404e98e3e1Schristos     {
18414e98e3e1Schristos       FLD (in_dr) = f_r1;
18424e98e3e1Schristos       FLD (out_dr) = f_r1;
18434e98e3e1Schristos     }
18444e98e3e1Schristos #endif
18454e98e3e1Schristos #undef FLD
18464e98e3e1Schristos     return idesc;
18474e98e3e1Schristos   }
18484e98e3e1Schristos 
18494e98e3e1Schristos  extract_sfmt_st:
18504e98e3e1Schristos   {
18514e98e3e1Schristos     const IDESC *idesc = &m32rbf_insn_data[itype];
18524e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
18534e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f
18544e98e3e1Schristos     UINT f_r1;
18554e98e3e1Schristos     UINT f_r2;
18564e98e3e1Schristos 
18574e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
18584e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
18594e98e3e1Schristos 
18604e98e3e1Schristos   /* Record the fields for the semantic handler.  */
18614e98e3e1Schristos   FLD (f_r1) = f_r1;
18624e98e3e1Schristos   FLD (f_r2) = f_r2;
18634e98e3e1Schristos   FLD (i_src1) = & CPU (h_gr)[f_r1];
18644e98e3e1Schristos   FLD (i_src2) = & CPU (h_gr)[f_r2];
1865212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_st", "f_r1 0x%x", 'x', f_r1, "f_r2 0x%x", 'x', f_r2, "src1 0x%x", 'x', f_r1, "src2 0x%x", 'x', f_r2, (char *) 0));
18664e98e3e1Schristos 
18674e98e3e1Schristos #if WITH_PROFILE_MODEL_P
18684e98e3e1Schristos   /* Record the fields for profiling.  */
18694e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
18704e98e3e1Schristos     {
18714e98e3e1Schristos       FLD (in_src1) = f_r1;
18724e98e3e1Schristos       FLD (in_src2) = f_r2;
18734e98e3e1Schristos     }
18744e98e3e1Schristos #endif
18754e98e3e1Schristos #undef FLD
18764e98e3e1Schristos     return idesc;
18774e98e3e1Schristos   }
18784e98e3e1Schristos 
18794e98e3e1Schristos  extract_sfmt_st_d:
18804e98e3e1Schristos   {
18814e98e3e1Schristos     const IDESC *idesc = &m32rbf_insn_data[itype];
18824e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
18834e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_d.f
18844e98e3e1Schristos     UINT f_r1;
18854e98e3e1Schristos     UINT f_r2;
18864e98e3e1Schristos     INT f_simm16;
18874e98e3e1Schristos 
18884e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
18894e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
18904e98e3e1Schristos     f_simm16 = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
18914e98e3e1Schristos 
18924e98e3e1Schristos   /* Record the fields for the semantic handler.  */
18934e98e3e1Schristos   FLD (f_simm16) = f_simm16;
18944e98e3e1Schristos   FLD (f_r1) = f_r1;
18954e98e3e1Schristos   FLD (f_r2) = f_r2;
18964e98e3e1Schristos   FLD (i_src1) = & CPU (h_gr)[f_r1];
18974e98e3e1Schristos   FLD (i_src2) = & CPU (h_gr)[f_r2];
1898212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_st_d", "f_simm16 0x%x", 'x', f_simm16, "f_r1 0x%x", 'x', f_r1, "f_r2 0x%x", 'x', f_r2, "src1 0x%x", 'x', f_r1, "src2 0x%x", 'x', f_r2, (char *) 0));
18994e98e3e1Schristos 
19004e98e3e1Schristos #if WITH_PROFILE_MODEL_P
19014e98e3e1Schristos   /* Record the fields for profiling.  */
19024e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
19034e98e3e1Schristos     {
19044e98e3e1Schristos       FLD (in_src1) = f_r1;
19054e98e3e1Schristos       FLD (in_src2) = f_r2;
19064e98e3e1Schristos     }
19074e98e3e1Schristos #endif
19084e98e3e1Schristos #undef FLD
19094e98e3e1Schristos     return idesc;
19104e98e3e1Schristos   }
19114e98e3e1Schristos 
19124e98e3e1Schristos  extract_sfmt_stb:
19134e98e3e1Schristos   {
19144e98e3e1Schristos     const IDESC *idesc = &m32rbf_insn_data[itype];
19154e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
19164e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f
19174e98e3e1Schristos     UINT f_r1;
19184e98e3e1Schristos     UINT f_r2;
19194e98e3e1Schristos 
19204e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
19214e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
19224e98e3e1Schristos 
19234e98e3e1Schristos   /* Record the fields for the semantic handler.  */
19244e98e3e1Schristos   FLD (f_r1) = f_r1;
19254e98e3e1Schristos   FLD (f_r2) = f_r2;
19264e98e3e1Schristos   FLD (i_src1) = & CPU (h_gr)[f_r1];
19274e98e3e1Schristos   FLD (i_src2) = & CPU (h_gr)[f_r2];
1928212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_stb", "f_r1 0x%x", 'x', f_r1, "f_r2 0x%x", 'x', f_r2, "src1 0x%x", 'x', f_r1, "src2 0x%x", 'x', f_r2, (char *) 0));
19294e98e3e1Schristos 
19304e98e3e1Schristos #if WITH_PROFILE_MODEL_P
19314e98e3e1Schristos   /* Record the fields for profiling.  */
19324e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
19334e98e3e1Schristos     {
19344e98e3e1Schristos       FLD (in_src1) = f_r1;
19354e98e3e1Schristos       FLD (in_src2) = f_r2;
19364e98e3e1Schristos     }
19374e98e3e1Schristos #endif
19384e98e3e1Schristos #undef FLD
19394e98e3e1Schristos     return idesc;
19404e98e3e1Schristos   }
19414e98e3e1Schristos 
19424e98e3e1Schristos  extract_sfmt_stb_d:
19434e98e3e1Schristos   {
19444e98e3e1Schristos     const IDESC *idesc = &m32rbf_insn_data[itype];
19454e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
19464e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_d.f
19474e98e3e1Schristos     UINT f_r1;
19484e98e3e1Schristos     UINT f_r2;
19494e98e3e1Schristos     INT f_simm16;
19504e98e3e1Schristos 
19514e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
19524e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
19534e98e3e1Schristos     f_simm16 = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
19544e98e3e1Schristos 
19554e98e3e1Schristos   /* Record the fields for the semantic handler.  */
19564e98e3e1Schristos   FLD (f_simm16) = f_simm16;
19574e98e3e1Schristos   FLD (f_r1) = f_r1;
19584e98e3e1Schristos   FLD (f_r2) = f_r2;
19594e98e3e1Schristos   FLD (i_src1) = & CPU (h_gr)[f_r1];
19604e98e3e1Schristos   FLD (i_src2) = & CPU (h_gr)[f_r2];
1961212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_stb_d", "f_simm16 0x%x", 'x', f_simm16, "f_r1 0x%x", 'x', f_r1, "f_r2 0x%x", 'x', f_r2, "src1 0x%x", 'x', f_r1, "src2 0x%x", 'x', f_r2, (char *) 0));
19624e98e3e1Schristos 
19634e98e3e1Schristos #if WITH_PROFILE_MODEL_P
19644e98e3e1Schristos   /* Record the fields for profiling.  */
19654e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
19664e98e3e1Schristos     {
19674e98e3e1Schristos       FLD (in_src1) = f_r1;
19684e98e3e1Schristos       FLD (in_src2) = f_r2;
19694e98e3e1Schristos     }
19704e98e3e1Schristos #endif
19714e98e3e1Schristos #undef FLD
19724e98e3e1Schristos     return idesc;
19734e98e3e1Schristos   }
19744e98e3e1Schristos 
19754e98e3e1Schristos  extract_sfmt_sth:
19764e98e3e1Schristos   {
19774e98e3e1Schristos     const IDESC *idesc = &m32rbf_insn_data[itype];
19784e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
19794e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f
19804e98e3e1Schristos     UINT f_r1;
19814e98e3e1Schristos     UINT f_r2;
19824e98e3e1Schristos 
19834e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
19844e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
19854e98e3e1Schristos 
19864e98e3e1Schristos   /* Record the fields for the semantic handler.  */
19874e98e3e1Schristos   FLD (f_r1) = f_r1;
19884e98e3e1Schristos   FLD (f_r2) = f_r2;
19894e98e3e1Schristos   FLD (i_src1) = & CPU (h_gr)[f_r1];
19904e98e3e1Schristos   FLD (i_src2) = & CPU (h_gr)[f_r2];
1991212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_sth", "f_r1 0x%x", 'x', f_r1, "f_r2 0x%x", 'x', f_r2, "src1 0x%x", 'x', f_r1, "src2 0x%x", 'x', f_r2, (char *) 0));
19924e98e3e1Schristos 
19934e98e3e1Schristos #if WITH_PROFILE_MODEL_P
19944e98e3e1Schristos   /* Record the fields for profiling.  */
19954e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
19964e98e3e1Schristos     {
19974e98e3e1Schristos       FLD (in_src1) = f_r1;
19984e98e3e1Schristos       FLD (in_src2) = f_r2;
19994e98e3e1Schristos     }
20004e98e3e1Schristos #endif
20014e98e3e1Schristos #undef FLD
20024e98e3e1Schristos     return idesc;
20034e98e3e1Schristos   }
20044e98e3e1Schristos 
20054e98e3e1Schristos  extract_sfmt_sth_d:
20064e98e3e1Schristos   {
20074e98e3e1Schristos     const IDESC *idesc = &m32rbf_insn_data[itype];
20084e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
20094e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_d.f
20104e98e3e1Schristos     UINT f_r1;
20114e98e3e1Schristos     UINT f_r2;
20124e98e3e1Schristos     INT f_simm16;
20134e98e3e1Schristos 
20144e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
20154e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
20164e98e3e1Schristos     f_simm16 = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
20174e98e3e1Schristos 
20184e98e3e1Schristos   /* Record the fields for the semantic handler.  */
20194e98e3e1Schristos   FLD (f_simm16) = f_simm16;
20204e98e3e1Schristos   FLD (f_r1) = f_r1;
20214e98e3e1Schristos   FLD (f_r2) = f_r2;
20224e98e3e1Schristos   FLD (i_src1) = & CPU (h_gr)[f_r1];
20234e98e3e1Schristos   FLD (i_src2) = & CPU (h_gr)[f_r2];
2024212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_sth_d", "f_simm16 0x%x", 'x', f_simm16, "f_r1 0x%x", 'x', f_r1, "f_r2 0x%x", 'x', f_r2, "src1 0x%x", 'x', f_r1, "src2 0x%x", 'x', f_r2, (char *) 0));
20254e98e3e1Schristos 
20264e98e3e1Schristos #if WITH_PROFILE_MODEL_P
20274e98e3e1Schristos   /* Record the fields for profiling.  */
20284e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
20294e98e3e1Schristos     {
20304e98e3e1Schristos       FLD (in_src1) = f_r1;
20314e98e3e1Schristos       FLD (in_src2) = f_r2;
20324e98e3e1Schristos     }
20334e98e3e1Schristos #endif
20344e98e3e1Schristos #undef FLD
20354e98e3e1Schristos     return idesc;
20364e98e3e1Schristos   }
20374e98e3e1Schristos 
20384e98e3e1Schristos  extract_sfmt_st_plus:
20394e98e3e1Schristos   {
20404e98e3e1Schristos     const IDESC *idesc = &m32rbf_insn_data[itype];
20414e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
20424e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f
20434e98e3e1Schristos     UINT f_r1;
20444e98e3e1Schristos     UINT f_r2;
20454e98e3e1Schristos 
20464e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
20474e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
20484e98e3e1Schristos 
20494e98e3e1Schristos   /* Record the fields for the semantic handler.  */
20504e98e3e1Schristos   FLD (f_r1) = f_r1;
20514e98e3e1Schristos   FLD (f_r2) = f_r2;
20524e98e3e1Schristos   FLD (i_src1) = & CPU (h_gr)[f_r1];
20534e98e3e1Schristos   FLD (i_src2) = & CPU (h_gr)[f_r2];
2054212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_st_plus", "f_r1 0x%x", 'x', f_r1, "f_r2 0x%x", 'x', f_r2, "src1 0x%x", 'x', f_r1, "src2 0x%x", 'x', f_r2, (char *) 0));
20554e98e3e1Schristos 
20564e98e3e1Schristos #if WITH_PROFILE_MODEL_P
20574e98e3e1Schristos   /* Record the fields for profiling.  */
20584e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
20594e98e3e1Schristos     {
20604e98e3e1Schristos       FLD (in_src1) = f_r1;
20614e98e3e1Schristos       FLD (in_src2) = f_r2;
20624e98e3e1Schristos       FLD (out_src2) = f_r2;
20634e98e3e1Schristos     }
20644e98e3e1Schristos #endif
20654e98e3e1Schristos #undef FLD
20664e98e3e1Schristos     return idesc;
20674e98e3e1Schristos   }
20684e98e3e1Schristos 
20694e98e3e1Schristos  extract_sfmt_trap:
20704e98e3e1Schristos   {
20714e98e3e1Schristos     const IDESC *idesc = &m32rbf_insn_data[itype];
20724e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
20734e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_trap.f
20744e98e3e1Schristos     UINT f_uimm4;
20754e98e3e1Schristos 
20764e98e3e1Schristos     f_uimm4 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
20774e98e3e1Schristos 
20784e98e3e1Schristos   /* Record the fields for the semantic handler.  */
20794e98e3e1Schristos   FLD (f_uimm4) = f_uimm4;
2080212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_trap", "f_uimm4 0x%x", 'x', f_uimm4, (char *) 0));
20814e98e3e1Schristos 
20824e98e3e1Schristos #if WITH_PROFILE_MODEL_P
20834e98e3e1Schristos   /* Record the fields for profiling.  */
20844e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
20854e98e3e1Schristos     {
20864e98e3e1Schristos     }
20874e98e3e1Schristos #endif
20884e98e3e1Schristos #undef FLD
20894e98e3e1Schristos     return idesc;
20904e98e3e1Schristos   }
20914e98e3e1Schristos 
20924e98e3e1Schristos  extract_sfmt_unlock:
20934e98e3e1Schristos   {
20944e98e3e1Schristos     const IDESC *idesc = &m32rbf_insn_data[itype];
20954e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
20964e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f
20974e98e3e1Schristos     UINT f_r1;
20984e98e3e1Schristos     UINT f_r2;
20994e98e3e1Schristos 
21004e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
21014e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
21024e98e3e1Schristos 
21034e98e3e1Schristos   /* Record the fields for the semantic handler.  */
21044e98e3e1Schristos   FLD (f_r1) = f_r1;
21054e98e3e1Schristos   FLD (f_r2) = f_r2;
21064e98e3e1Schristos   FLD (i_src1) = & CPU (h_gr)[f_r1];
21074e98e3e1Schristos   FLD (i_src2) = & CPU (h_gr)[f_r2];
2108212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_unlock", "f_r1 0x%x", 'x', f_r1, "f_r2 0x%x", 'x', f_r2, "src1 0x%x", 'x', f_r1, "src2 0x%x", 'x', f_r2, (char *) 0));
21094e98e3e1Schristos 
21104e98e3e1Schristos #if WITH_PROFILE_MODEL_P
21114e98e3e1Schristos   /* Record the fields for profiling.  */
21124e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
21134e98e3e1Schristos     {
21144e98e3e1Schristos       FLD (in_src1) = f_r1;
21154e98e3e1Schristos       FLD (in_src2) = f_r2;
21164e98e3e1Schristos     }
21174e98e3e1Schristos #endif
21184e98e3e1Schristos #undef FLD
21194e98e3e1Schristos     return idesc;
21204e98e3e1Schristos   }
21214e98e3e1Schristos 
21224e98e3e1Schristos  extract_sfmt_clrpsw:
21234e98e3e1Schristos   {
21244e98e3e1Schristos     const IDESC *idesc = &m32rbf_insn_data[itype];
21254e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
21264e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_clrpsw.f
21274e98e3e1Schristos     UINT f_uimm8;
21284e98e3e1Schristos 
21294e98e3e1Schristos     f_uimm8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
21304e98e3e1Schristos 
21314e98e3e1Schristos   /* Record the fields for the semantic handler.  */
21324e98e3e1Schristos   FLD (f_uimm8) = f_uimm8;
2133212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_clrpsw", "f_uimm8 0x%x", 'x', f_uimm8, (char *) 0));
21344e98e3e1Schristos 
21354e98e3e1Schristos #undef FLD
21364e98e3e1Schristos     return idesc;
21374e98e3e1Schristos   }
21384e98e3e1Schristos 
21394e98e3e1Schristos  extract_sfmt_setpsw:
21404e98e3e1Schristos   {
21414e98e3e1Schristos     const IDESC *idesc = &m32rbf_insn_data[itype];
21424e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
21434e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_clrpsw.f
21444e98e3e1Schristos     UINT f_uimm8;
21454e98e3e1Schristos 
21464e98e3e1Schristos     f_uimm8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
21474e98e3e1Schristos 
21484e98e3e1Schristos   /* Record the fields for the semantic handler.  */
21494e98e3e1Schristos   FLD (f_uimm8) = f_uimm8;
2150212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_setpsw", "f_uimm8 0x%x", 'x', f_uimm8, (char *) 0));
21514e98e3e1Schristos 
21524e98e3e1Schristos #undef FLD
21534e98e3e1Schristos     return idesc;
21544e98e3e1Schristos   }
21554e98e3e1Schristos 
21564e98e3e1Schristos  extract_sfmt_bset:
21574e98e3e1Schristos   {
21584e98e3e1Schristos     const IDESC *idesc = &m32rbf_insn_data[itype];
21594e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
21604e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_bset.f
21614e98e3e1Schristos     UINT f_uimm3;
21624e98e3e1Schristos     UINT f_r2;
21634e98e3e1Schristos     INT f_simm16;
21644e98e3e1Schristos 
21654e98e3e1Schristos     f_uimm3 = EXTRACT_MSB0_UINT (insn, 32, 5, 3);
21664e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
21674e98e3e1Schristos     f_simm16 = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
21684e98e3e1Schristos 
21694e98e3e1Schristos   /* Record the fields for the semantic handler.  */
21704e98e3e1Schristos   FLD (f_simm16) = f_simm16;
21714e98e3e1Schristos   FLD (f_r2) = f_r2;
21724e98e3e1Schristos   FLD (f_uimm3) = f_uimm3;
21734e98e3e1Schristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
2174212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bset", "f_simm16 0x%x", 'x', f_simm16, "f_r2 0x%x", 'x', f_r2, "f_uimm3 0x%x", 'x', f_uimm3, "sr 0x%x", 'x', f_r2, (char *) 0));
21754e98e3e1Schristos 
21764e98e3e1Schristos #if WITH_PROFILE_MODEL_P
21774e98e3e1Schristos   /* Record the fields for profiling.  */
21784e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
21794e98e3e1Schristos     {
21804e98e3e1Schristos       FLD (in_sr) = f_r2;
21814e98e3e1Schristos     }
21824e98e3e1Schristos #endif
21834e98e3e1Schristos #undef FLD
21844e98e3e1Schristos     return idesc;
21854e98e3e1Schristos   }
21864e98e3e1Schristos 
21874e98e3e1Schristos  extract_sfmt_btst:
21884e98e3e1Schristos   {
21894e98e3e1Schristos     const IDESC *idesc = &m32rbf_insn_data[itype];
21904e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
21914e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_bset.f
21924e98e3e1Schristos     UINT f_uimm3;
21934e98e3e1Schristos     UINT f_r2;
21944e98e3e1Schristos 
21954e98e3e1Schristos     f_uimm3 = EXTRACT_MSB0_UINT (insn, 16, 5, 3);
21964e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
21974e98e3e1Schristos 
21984e98e3e1Schristos   /* Record the fields for the semantic handler.  */
21994e98e3e1Schristos   FLD (f_r2) = f_r2;
22004e98e3e1Schristos   FLD (f_uimm3) = f_uimm3;
22014e98e3e1Schristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
2202212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_btst", "f_r2 0x%x", 'x', f_r2, "f_uimm3 0x%x", 'x', f_uimm3, "sr 0x%x", 'x', f_r2, (char *) 0));
22034e98e3e1Schristos 
22044e98e3e1Schristos #if WITH_PROFILE_MODEL_P
22054e98e3e1Schristos   /* Record the fields for profiling.  */
22064e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
22074e98e3e1Schristos     {
22084e98e3e1Schristos       FLD (in_sr) = f_r2;
22094e98e3e1Schristos     }
22104e98e3e1Schristos #endif
22114e98e3e1Schristos #undef FLD
22124e98e3e1Schristos     return idesc;
22134e98e3e1Schristos   }
22144e98e3e1Schristos 
22154e98e3e1Schristos }
2216