xref: /netbsd-src/external/gpl3/gdb/dist/sim/m32r/decodex.c (revision 05fa08567a80471fd0eb3843a238392874f2577c)
14e98e3e1Schristos /* Simulator instruction decoder for m32rxf.
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 m32rxf
264e98e3e1Schristos #define WANT_CPU_M32RXF
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 /* Insn can't be executed in parallel.
344e98e3e1Schristos    Or is that "do NOt Pass to Air defense Radar"? :-) */
354e98e3e1Schristos #define NOPAR (-1)
364e98e3e1Schristos 
374e98e3e1Schristos /* The instruction descriptor array.
384e98e3e1Schristos    This is computed at runtime.  Space for it is not malloc'd to save a
394e98e3e1Schristos    teensy bit of cpu in the decoder.  Moving it to malloc space is trivial
404e98e3e1Schristos    but won't be done until necessary (we don't currently support the runtime
414e98e3e1Schristos    addition of instructions nor an SMP machine with different cpus).  */
424e98e3e1Schristos static IDESC m32rxf_insn_data[M32RXF_INSN__MAX];
434e98e3e1Schristos 
444e98e3e1Schristos /* Commas between elements are contained in the macros.
454e98e3e1Schristos    Some of these are conditionally compiled out.  */
464e98e3e1Schristos 
474e98e3e1Schristos static const struct insn_sem m32rxf_insn_sem[] =
484e98e3e1Schristos {
494e98e3e1Schristos   { VIRTUAL_INSN_X_INVALID, M32RXF_INSN_X_INVALID, M32RXF_SFMT_EMPTY, NOPAR, NOPAR  },
504e98e3e1Schristos   { VIRTUAL_INSN_X_AFTER, M32RXF_INSN_X_AFTER, M32RXF_SFMT_EMPTY, NOPAR, NOPAR  },
514e98e3e1Schristos   { VIRTUAL_INSN_X_BEFORE, M32RXF_INSN_X_BEFORE, M32RXF_SFMT_EMPTY, NOPAR, NOPAR  },
524e98e3e1Schristos   { VIRTUAL_INSN_X_CTI_CHAIN, M32RXF_INSN_X_CTI_CHAIN, M32RXF_SFMT_EMPTY, NOPAR, NOPAR  },
534e98e3e1Schristos   { VIRTUAL_INSN_X_CHAIN, M32RXF_INSN_X_CHAIN, M32RXF_SFMT_EMPTY, NOPAR, NOPAR  },
544e98e3e1Schristos   { VIRTUAL_INSN_X_BEGIN, M32RXF_INSN_X_BEGIN, M32RXF_SFMT_EMPTY, NOPAR, NOPAR  },
554e98e3e1Schristos   { M32R_INSN_ADD, M32RXF_INSN_ADD, M32RXF_SFMT_ADD, M32RXF_INSN_PAR_ADD, M32RXF_INSN_WRITE_ADD },
564e98e3e1Schristos   { M32R_INSN_ADD3, M32RXF_INSN_ADD3, M32RXF_SFMT_ADD3, NOPAR, NOPAR  },
574e98e3e1Schristos   { M32R_INSN_AND, M32RXF_INSN_AND, M32RXF_SFMT_ADD, M32RXF_INSN_PAR_AND, M32RXF_INSN_WRITE_AND },
584e98e3e1Schristos   { M32R_INSN_AND3, M32RXF_INSN_AND3, M32RXF_SFMT_AND3, NOPAR, NOPAR  },
594e98e3e1Schristos   { M32R_INSN_OR, M32RXF_INSN_OR, M32RXF_SFMT_ADD, M32RXF_INSN_PAR_OR, M32RXF_INSN_WRITE_OR },
604e98e3e1Schristos   { M32R_INSN_OR3, M32RXF_INSN_OR3, M32RXF_SFMT_OR3, NOPAR, NOPAR  },
614e98e3e1Schristos   { M32R_INSN_XOR, M32RXF_INSN_XOR, M32RXF_SFMT_ADD, M32RXF_INSN_PAR_XOR, M32RXF_INSN_WRITE_XOR },
624e98e3e1Schristos   { M32R_INSN_XOR3, M32RXF_INSN_XOR3, M32RXF_SFMT_AND3, NOPAR, NOPAR  },
634e98e3e1Schristos   { M32R_INSN_ADDI, M32RXF_INSN_ADDI, M32RXF_SFMT_ADDI, M32RXF_INSN_PAR_ADDI, M32RXF_INSN_WRITE_ADDI },
644e98e3e1Schristos   { M32R_INSN_ADDV, M32RXF_INSN_ADDV, M32RXF_SFMT_ADDV, M32RXF_INSN_PAR_ADDV, M32RXF_INSN_WRITE_ADDV },
654e98e3e1Schristos   { M32R_INSN_ADDV3, M32RXF_INSN_ADDV3, M32RXF_SFMT_ADDV3, NOPAR, NOPAR  },
664e98e3e1Schristos   { M32R_INSN_ADDX, M32RXF_INSN_ADDX, M32RXF_SFMT_ADDX, M32RXF_INSN_PAR_ADDX, M32RXF_INSN_WRITE_ADDX },
674e98e3e1Schristos   { M32R_INSN_BC8, M32RXF_INSN_BC8, M32RXF_SFMT_BC8, M32RXF_INSN_PAR_BC8, M32RXF_INSN_WRITE_BC8 },
684e98e3e1Schristos   { M32R_INSN_BC24, M32RXF_INSN_BC24, M32RXF_SFMT_BC24, NOPAR, NOPAR  },
694e98e3e1Schristos   { M32R_INSN_BEQ, M32RXF_INSN_BEQ, M32RXF_SFMT_BEQ, NOPAR, NOPAR  },
704e98e3e1Schristos   { M32R_INSN_BEQZ, M32RXF_INSN_BEQZ, M32RXF_SFMT_BEQZ, NOPAR, NOPAR  },
714e98e3e1Schristos   { M32R_INSN_BGEZ, M32RXF_INSN_BGEZ, M32RXF_SFMT_BEQZ, NOPAR, NOPAR  },
724e98e3e1Schristos   { M32R_INSN_BGTZ, M32RXF_INSN_BGTZ, M32RXF_SFMT_BEQZ, NOPAR, NOPAR  },
734e98e3e1Schristos   { M32R_INSN_BLEZ, M32RXF_INSN_BLEZ, M32RXF_SFMT_BEQZ, NOPAR, NOPAR  },
744e98e3e1Schristos   { M32R_INSN_BLTZ, M32RXF_INSN_BLTZ, M32RXF_SFMT_BEQZ, NOPAR, NOPAR  },
754e98e3e1Schristos   { M32R_INSN_BNEZ, M32RXF_INSN_BNEZ, M32RXF_SFMT_BEQZ, NOPAR, NOPAR  },
764e98e3e1Schristos   { M32R_INSN_BL8, M32RXF_INSN_BL8, M32RXF_SFMT_BL8, M32RXF_INSN_PAR_BL8, M32RXF_INSN_WRITE_BL8 },
774e98e3e1Schristos   { M32R_INSN_BL24, M32RXF_INSN_BL24, M32RXF_SFMT_BL24, NOPAR, NOPAR  },
784e98e3e1Schristos   { M32R_INSN_BCL8, M32RXF_INSN_BCL8, M32RXF_SFMT_BCL8, M32RXF_INSN_PAR_BCL8, M32RXF_INSN_WRITE_BCL8 },
794e98e3e1Schristos   { M32R_INSN_BCL24, M32RXF_INSN_BCL24, M32RXF_SFMT_BCL24, NOPAR, NOPAR  },
804e98e3e1Schristos   { M32R_INSN_BNC8, M32RXF_INSN_BNC8, M32RXF_SFMT_BC8, M32RXF_INSN_PAR_BNC8, M32RXF_INSN_WRITE_BNC8 },
814e98e3e1Schristos   { M32R_INSN_BNC24, M32RXF_INSN_BNC24, M32RXF_SFMT_BC24, NOPAR, NOPAR  },
824e98e3e1Schristos   { M32R_INSN_BNE, M32RXF_INSN_BNE, M32RXF_SFMT_BEQ, NOPAR, NOPAR  },
834e98e3e1Schristos   { M32R_INSN_BRA8, M32RXF_INSN_BRA8, M32RXF_SFMT_BRA8, M32RXF_INSN_PAR_BRA8, M32RXF_INSN_WRITE_BRA8 },
844e98e3e1Schristos   { M32R_INSN_BRA24, M32RXF_INSN_BRA24, M32RXF_SFMT_BRA24, NOPAR, NOPAR  },
854e98e3e1Schristos   { M32R_INSN_BNCL8, M32RXF_INSN_BNCL8, M32RXF_SFMT_BCL8, M32RXF_INSN_PAR_BNCL8, M32RXF_INSN_WRITE_BNCL8 },
864e98e3e1Schristos   { M32R_INSN_BNCL24, M32RXF_INSN_BNCL24, M32RXF_SFMT_BCL24, NOPAR, NOPAR  },
874e98e3e1Schristos   { M32R_INSN_CMP, M32RXF_INSN_CMP, M32RXF_SFMT_CMP, M32RXF_INSN_PAR_CMP, M32RXF_INSN_WRITE_CMP },
884e98e3e1Schristos   { M32R_INSN_CMPI, M32RXF_INSN_CMPI, M32RXF_SFMT_CMPI, NOPAR, NOPAR  },
894e98e3e1Schristos   { M32R_INSN_CMPU, M32RXF_INSN_CMPU, M32RXF_SFMT_CMP, M32RXF_INSN_PAR_CMPU, M32RXF_INSN_WRITE_CMPU },
904e98e3e1Schristos   { M32R_INSN_CMPUI, M32RXF_INSN_CMPUI, M32RXF_SFMT_CMPI, NOPAR, NOPAR  },
914e98e3e1Schristos   { M32R_INSN_CMPEQ, M32RXF_INSN_CMPEQ, M32RXF_SFMT_CMP, M32RXF_INSN_PAR_CMPEQ, M32RXF_INSN_WRITE_CMPEQ },
924e98e3e1Schristos   { M32R_INSN_CMPZ, M32RXF_INSN_CMPZ, M32RXF_SFMT_CMPZ, M32RXF_INSN_PAR_CMPZ, M32RXF_INSN_WRITE_CMPZ },
934e98e3e1Schristos   { M32R_INSN_DIV, M32RXF_INSN_DIV, M32RXF_SFMT_DIV, NOPAR, NOPAR  },
944e98e3e1Schristos   { M32R_INSN_DIVU, M32RXF_INSN_DIVU, M32RXF_SFMT_DIV, NOPAR, NOPAR  },
954e98e3e1Schristos   { M32R_INSN_REM, M32RXF_INSN_REM, M32RXF_SFMT_DIV, NOPAR, NOPAR  },
964e98e3e1Schristos   { M32R_INSN_REMU, M32RXF_INSN_REMU, M32RXF_SFMT_DIV, NOPAR, NOPAR  },
974e98e3e1Schristos   { M32R_INSN_DIVH, M32RXF_INSN_DIVH, M32RXF_SFMT_DIV, NOPAR, NOPAR  },
984e98e3e1Schristos   { M32R_INSN_JC, M32RXF_INSN_JC, M32RXF_SFMT_JC, M32RXF_INSN_PAR_JC, M32RXF_INSN_WRITE_JC },
994e98e3e1Schristos   { M32R_INSN_JNC, M32RXF_INSN_JNC, M32RXF_SFMT_JC, M32RXF_INSN_PAR_JNC, M32RXF_INSN_WRITE_JNC },
1004e98e3e1Schristos   { M32R_INSN_JL, M32RXF_INSN_JL, M32RXF_SFMT_JL, M32RXF_INSN_PAR_JL, M32RXF_INSN_WRITE_JL },
1014e98e3e1Schristos   { M32R_INSN_JMP, M32RXF_INSN_JMP, M32RXF_SFMT_JMP, M32RXF_INSN_PAR_JMP, M32RXF_INSN_WRITE_JMP },
1024e98e3e1Schristos   { M32R_INSN_LD, M32RXF_INSN_LD, M32RXF_SFMT_LD, M32RXF_INSN_PAR_LD, M32RXF_INSN_WRITE_LD },
1034e98e3e1Schristos   { M32R_INSN_LD_D, M32RXF_INSN_LD_D, M32RXF_SFMT_LD_D, NOPAR, NOPAR  },
1044e98e3e1Schristos   { M32R_INSN_LDB, M32RXF_INSN_LDB, M32RXF_SFMT_LDB, M32RXF_INSN_PAR_LDB, M32RXF_INSN_WRITE_LDB },
1054e98e3e1Schristos   { M32R_INSN_LDB_D, M32RXF_INSN_LDB_D, M32RXF_SFMT_LDB_D, NOPAR, NOPAR  },
1064e98e3e1Schristos   { M32R_INSN_LDH, M32RXF_INSN_LDH, M32RXF_SFMT_LDH, M32RXF_INSN_PAR_LDH, M32RXF_INSN_WRITE_LDH },
1074e98e3e1Schristos   { M32R_INSN_LDH_D, M32RXF_INSN_LDH_D, M32RXF_SFMT_LDH_D, NOPAR, NOPAR  },
1084e98e3e1Schristos   { M32R_INSN_LDUB, M32RXF_INSN_LDUB, M32RXF_SFMT_LDB, M32RXF_INSN_PAR_LDUB, M32RXF_INSN_WRITE_LDUB },
1094e98e3e1Schristos   { M32R_INSN_LDUB_D, M32RXF_INSN_LDUB_D, M32RXF_SFMT_LDB_D, NOPAR, NOPAR  },
1104e98e3e1Schristos   { M32R_INSN_LDUH, M32RXF_INSN_LDUH, M32RXF_SFMT_LDH, M32RXF_INSN_PAR_LDUH, M32RXF_INSN_WRITE_LDUH },
1114e98e3e1Schristos   { M32R_INSN_LDUH_D, M32RXF_INSN_LDUH_D, M32RXF_SFMT_LDH_D, NOPAR, NOPAR  },
1124e98e3e1Schristos   { M32R_INSN_LD_PLUS, M32RXF_INSN_LD_PLUS, M32RXF_SFMT_LD_PLUS, M32RXF_INSN_PAR_LD_PLUS, M32RXF_INSN_WRITE_LD_PLUS },
1134e98e3e1Schristos   { M32R_INSN_LD24, M32RXF_INSN_LD24, M32RXF_SFMT_LD24, NOPAR, NOPAR  },
1144e98e3e1Schristos   { M32R_INSN_LDI8, M32RXF_INSN_LDI8, M32RXF_SFMT_LDI8, M32RXF_INSN_PAR_LDI8, M32RXF_INSN_WRITE_LDI8 },
1154e98e3e1Schristos   { M32R_INSN_LDI16, M32RXF_INSN_LDI16, M32RXF_SFMT_LDI16, NOPAR, NOPAR  },
1164e98e3e1Schristos   { M32R_INSN_LOCK, M32RXF_INSN_LOCK, M32RXF_SFMT_LOCK, M32RXF_INSN_PAR_LOCK, M32RXF_INSN_WRITE_LOCK },
1174e98e3e1Schristos   { M32R_INSN_MACHI_A, M32RXF_INSN_MACHI_A, M32RXF_SFMT_MACHI_A, M32RXF_INSN_PAR_MACHI_A, M32RXF_INSN_WRITE_MACHI_A },
1184e98e3e1Schristos   { M32R_INSN_MACLO_A, M32RXF_INSN_MACLO_A, M32RXF_SFMT_MACHI_A, M32RXF_INSN_PAR_MACLO_A, M32RXF_INSN_WRITE_MACLO_A },
1194e98e3e1Schristos   { M32R_INSN_MACWHI_A, M32RXF_INSN_MACWHI_A, M32RXF_SFMT_MACHI_A, M32RXF_INSN_PAR_MACWHI_A, M32RXF_INSN_WRITE_MACWHI_A },
1204e98e3e1Schristos   { M32R_INSN_MACWLO_A, M32RXF_INSN_MACWLO_A, M32RXF_SFMT_MACHI_A, M32RXF_INSN_PAR_MACWLO_A, M32RXF_INSN_WRITE_MACWLO_A },
1214e98e3e1Schristos   { M32R_INSN_MUL, M32RXF_INSN_MUL, M32RXF_SFMT_ADD, M32RXF_INSN_PAR_MUL, M32RXF_INSN_WRITE_MUL },
1224e98e3e1Schristos   { M32R_INSN_MULHI_A, M32RXF_INSN_MULHI_A, M32RXF_SFMT_MULHI_A, M32RXF_INSN_PAR_MULHI_A, M32RXF_INSN_WRITE_MULHI_A },
1234e98e3e1Schristos   { M32R_INSN_MULLO_A, M32RXF_INSN_MULLO_A, M32RXF_SFMT_MULHI_A, M32RXF_INSN_PAR_MULLO_A, M32RXF_INSN_WRITE_MULLO_A },
1244e98e3e1Schristos   { M32R_INSN_MULWHI_A, M32RXF_INSN_MULWHI_A, M32RXF_SFMT_MULHI_A, M32RXF_INSN_PAR_MULWHI_A, M32RXF_INSN_WRITE_MULWHI_A },
1254e98e3e1Schristos   { M32R_INSN_MULWLO_A, M32RXF_INSN_MULWLO_A, M32RXF_SFMT_MULHI_A, M32RXF_INSN_PAR_MULWLO_A, M32RXF_INSN_WRITE_MULWLO_A },
1264e98e3e1Schristos   { M32R_INSN_MV, M32RXF_INSN_MV, M32RXF_SFMT_MV, M32RXF_INSN_PAR_MV, M32RXF_INSN_WRITE_MV },
1274e98e3e1Schristos   { M32R_INSN_MVFACHI_A, M32RXF_INSN_MVFACHI_A, M32RXF_SFMT_MVFACHI_A, M32RXF_INSN_PAR_MVFACHI_A, M32RXF_INSN_WRITE_MVFACHI_A },
1284e98e3e1Schristos   { M32R_INSN_MVFACLO_A, M32RXF_INSN_MVFACLO_A, M32RXF_SFMT_MVFACHI_A, M32RXF_INSN_PAR_MVFACLO_A, M32RXF_INSN_WRITE_MVFACLO_A },
1294e98e3e1Schristos   { M32R_INSN_MVFACMI_A, M32RXF_INSN_MVFACMI_A, M32RXF_SFMT_MVFACHI_A, M32RXF_INSN_PAR_MVFACMI_A, M32RXF_INSN_WRITE_MVFACMI_A },
1304e98e3e1Schristos   { M32R_INSN_MVFC, M32RXF_INSN_MVFC, M32RXF_SFMT_MVFC, M32RXF_INSN_PAR_MVFC, M32RXF_INSN_WRITE_MVFC },
1314e98e3e1Schristos   { M32R_INSN_MVTACHI_A, M32RXF_INSN_MVTACHI_A, M32RXF_SFMT_MVTACHI_A, M32RXF_INSN_PAR_MVTACHI_A, M32RXF_INSN_WRITE_MVTACHI_A },
1324e98e3e1Schristos   { M32R_INSN_MVTACLO_A, M32RXF_INSN_MVTACLO_A, M32RXF_SFMT_MVTACHI_A, M32RXF_INSN_PAR_MVTACLO_A, M32RXF_INSN_WRITE_MVTACLO_A },
1334e98e3e1Schristos   { M32R_INSN_MVTC, M32RXF_INSN_MVTC, M32RXF_SFMT_MVTC, M32RXF_INSN_PAR_MVTC, M32RXF_INSN_WRITE_MVTC },
1344e98e3e1Schristos   { M32R_INSN_NEG, M32RXF_INSN_NEG, M32RXF_SFMT_MV, M32RXF_INSN_PAR_NEG, M32RXF_INSN_WRITE_NEG },
1354e98e3e1Schristos   { M32R_INSN_NOP, M32RXF_INSN_NOP, M32RXF_SFMT_NOP, M32RXF_INSN_PAR_NOP, M32RXF_INSN_WRITE_NOP },
1364e98e3e1Schristos   { M32R_INSN_NOT, M32RXF_INSN_NOT, M32RXF_SFMT_MV, M32RXF_INSN_PAR_NOT, M32RXF_INSN_WRITE_NOT },
1374e98e3e1Schristos   { M32R_INSN_RAC_DSI, M32RXF_INSN_RAC_DSI, M32RXF_SFMT_RAC_DSI, M32RXF_INSN_PAR_RAC_DSI, M32RXF_INSN_WRITE_RAC_DSI },
1384e98e3e1Schristos   { M32R_INSN_RACH_DSI, M32RXF_INSN_RACH_DSI, M32RXF_SFMT_RAC_DSI, M32RXF_INSN_PAR_RACH_DSI, M32RXF_INSN_WRITE_RACH_DSI },
1394e98e3e1Schristos   { M32R_INSN_RTE, M32RXF_INSN_RTE, M32RXF_SFMT_RTE, M32RXF_INSN_PAR_RTE, M32RXF_INSN_WRITE_RTE },
1404e98e3e1Schristos   { M32R_INSN_SETH, M32RXF_INSN_SETH, M32RXF_SFMT_SETH, NOPAR, NOPAR  },
1414e98e3e1Schristos   { M32R_INSN_SLL, M32RXF_INSN_SLL, M32RXF_SFMT_ADD, M32RXF_INSN_PAR_SLL, M32RXF_INSN_WRITE_SLL },
1424e98e3e1Schristos   { M32R_INSN_SLL3, M32RXF_INSN_SLL3, M32RXF_SFMT_SLL3, NOPAR, NOPAR  },
1434e98e3e1Schristos   { M32R_INSN_SLLI, M32RXF_INSN_SLLI, M32RXF_SFMT_SLLI, M32RXF_INSN_PAR_SLLI, M32RXF_INSN_WRITE_SLLI },
1444e98e3e1Schristos   { M32R_INSN_SRA, M32RXF_INSN_SRA, M32RXF_SFMT_ADD, M32RXF_INSN_PAR_SRA, M32RXF_INSN_WRITE_SRA },
1454e98e3e1Schristos   { M32R_INSN_SRA3, M32RXF_INSN_SRA3, M32RXF_SFMT_SLL3, NOPAR, NOPAR  },
1464e98e3e1Schristos   { M32R_INSN_SRAI, M32RXF_INSN_SRAI, M32RXF_SFMT_SLLI, M32RXF_INSN_PAR_SRAI, M32RXF_INSN_WRITE_SRAI },
1474e98e3e1Schristos   { M32R_INSN_SRL, M32RXF_INSN_SRL, M32RXF_SFMT_ADD, M32RXF_INSN_PAR_SRL, M32RXF_INSN_WRITE_SRL },
1484e98e3e1Schristos   { M32R_INSN_SRL3, M32RXF_INSN_SRL3, M32RXF_SFMT_SLL3, NOPAR, NOPAR  },
1494e98e3e1Schristos   { M32R_INSN_SRLI, M32RXF_INSN_SRLI, M32RXF_SFMT_SLLI, M32RXF_INSN_PAR_SRLI, M32RXF_INSN_WRITE_SRLI },
1504e98e3e1Schristos   { M32R_INSN_ST, M32RXF_INSN_ST, M32RXF_SFMT_ST, M32RXF_INSN_PAR_ST, M32RXF_INSN_WRITE_ST },
1514e98e3e1Schristos   { M32R_INSN_ST_D, M32RXF_INSN_ST_D, M32RXF_SFMT_ST_D, NOPAR, NOPAR  },
1524e98e3e1Schristos   { M32R_INSN_STB, M32RXF_INSN_STB, M32RXF_SFMT_STB, M32RXF_INSN_PAR_STB, M32RXF_INSN_WRITE_STB },
1534e98e3e1Schristos   { M32R_INSN_STB_D, M32RXF_INSN_STB_D, M32RXF_SFMT_STB_D, NOPAR, NOPAR  },
1544e98e3e1Schristos   { M32R_INSN_STH, M32RXF_INSN_STH, M32RXF_SFMT_STH, M32RXF_INSN_PAR_STH, M32RXF_INSN_WRITE_STH },
1554e98e3e1Schristos   { M32R_INSN_STH_D, M32RXF_INSN_STH_D, M32RXF_SFMT_STH_D, NOPAR, NOPAR  },
1564e98e3e1Schristos   { M32R_INSN_ST_PLUS, M32RXF_INSN_ST_PLUS, M32RXF_SFMT_ST_PLUS, M32RXF_INSN_PAR_ST_PLUS, M32RXF_INSN_WRITE_ST_PLUS },
1574e98e3e1Schristos   { M32R_INSN_STH_PLUS, M32RXF_INSN_STH_PLUS, M32RXF_SFMT_STH_PLUS, M32RXF_INSN_PAR_STH_PLUS, M32RXF_INSN_WRITE_STH_PLUS },
1584e98e3e1Schristos   { M32R_INSN_STB_PLUS, M32RXF_INSN_STB_PLUS, M32RXF_SFMT_STB_PLUS, M32RXF_INSN_PAR_STB_PLUS, M32RXF_INSN_WRITE_STB_PLUS },
1594e98e3e1Schristos   { M32R_INSN_ST_MINUS, M32RXF_INSN_ST_MINUS, M32RXF_SFMT_ST_PLUS, M32RXF_INSN_PAR_ST_MINUS, M32RXF_INSN_WRITE_ST_MINUS },
1604e98e3e1Schristos   { M32R_INSN_SUB, M32RXF_INSN_SUB, M32RXF_SFMT_ADD, M32RXF_INSN_PAR_SUB, M32RXF_INSN_WRITE_SUB },
1614e98e3e1Schristos   { M32R_INSN_SUBV, M32RXF_INSN_SUBV, M32RXF_SFMT_ADDV, M32RXF_INSN_PAR_SUBV, M32RXF_INSN_WRITE_SUBV },
1624e98e3e1Schristos   { M32R_INSN_SUBX, M32RXF_INSN_SUBX, M32RXF_SFMT_ADDX, M32RXF_INSN_PAR_SUBX, M32RXF_INSN_WRITE_SUBX },
1634e98e3e1Schristos   { M32R_INSN_TRAP, M32RXF_INSN_TRAP, M32RXF_SFMT_TRAP, M32RXF_INSN_PAR_TRAP, M32RXF_INSN_WRITE_TRAP },
1644e98e3e1Schristos   { M32R_INSN_UNLOCK, M32RXF_INSN_UNLOCK, M32RXF_SFMT_UNLOCK, M32RXF_INSN_PAR_UNLOCK, M32RXF_INSN_WRITE_UNLOCK },
1654e98e3e1Schristos   { M32R_INSN_SATB, M32RXF_INSN_SATB, M32RXF_SFMT_SATB, NOPAR, NOPAR  },
1664e98e3e1Schristos   { M32R_INSN_SATH, M32RXF_INSN_SATH, M32RXF_SFMT_SATB, NOPAR, NOPAR  },
1674e98e3e1Schristos   { M32R_INSN_SAT, M32RXF_INSN_SAT, M32RXF_SFMT_SAT, NOPAR, NOPAR  },
1684e98e3e1Schristos   { M32R_INSN_PCMPBZ, M32RXF_INSN_PCMPBZ, M32RXF_SFMT_CMPZ, M32RXF_INSN_PAR_PCMPBZ, M32RXF_INSN_WRITE_PCMPBZ },
1694e98e3e1Schristos   { M32R_INSN_SADD, M32RXF_INSN_SADD, M32RXF_SFMT_SADD, M32RXF_INSN_PAR_SADD, M32RXF_INSN_WRITE_SADD },
1704e98e3e1Schristos   { M32R_INSN_MACWU1, M32RXF_INSN_MACWU1, M32RXF_SFMT_MACWU1, M32RXF_INSN_PAR_MACWU1, M32RXF_INSN_WRITE_MACWU1 },
1714e98e3e1Schristos   { M32R_INSN_MSBLO, M32RXF_INSN_MSBLO, M32RXF_SFMT_MSBLO, M32RXF_INSN_PAR_MSBLO, M32RXF_INSN_WRITE_MSBLO },
1724e98e3e1Schristos   { M32R_INSN_MULWU1, M32RXF_INSN_MULWU1, M32RXF_SFMT_MULWU1, M32RXF_INSN_PAR_MULWU1, M32RXF_INSN_WRITE_MULWU1 },
1734e98e3e1Schristos   { M32R_INSN_MACLH1, M32RXF_INSN_MACLH1, M32RXF_SFMT_MACWU1, M32RXF_INSN_PAR_MACLH1, M32RXF_INSN_WRITE_MACLH1 },
1744e98e3e1Schristos   { M32R_INSN_SC, M32RXF_INSN_SC, M32RXF_SFMT_SC, M32RXF_INSN_PAR_SC, M32RXF_INSN_WRITE_SC },
1754e98e3e1Schristos   { M32R_INSN_SNC, M32RXF_INSN_SNC, M32RXF_SFMT_SC, M32RXF_INSN_PAR_SNC, M32RXF_INSN_WRITE_SNC },
1764e98e3e1Schristos   { M32R_INSN_CLRPSW, M32RXF_INSN_CLRPSW, M32RXF_SFMT_CLRPSW, M32RXF_INSN_PAR_CLRPSW, M32RXF_INSN_WRITE_CLRPSW },
1774e98e3e1Schristos   { M32R_INSN_SETPSW, M32RXF_INSN_SETPSW, M32RXF_SFMT_SETPSW, M32RXF_INSN_PAR_SETPSW, M32RXF_INSN_WRITE_SETPSW },
1784e98e3e1Schristos   { M32R_INSN_BSET, M32RXF_INSN_BSET, M32RXF_SFMT_BSET, NOPAR, NOPAR  },
1794e98e3e1Schristos   { M32R_INSN_BCLR, M32RXF_INSN_BCLR, M32RXF_SFMT_BSET, NOPAR, NOPAR  },
1804e98e3e1Schristos   { M32R_INSN_BTST, M32RXF_INSN_BTST, M32RXF_SFMT_BTST, M32RXF_INSN_PAR_BTST, M32RXF_INSN_WRITE_BTST },
1814e98e3e1Schristos };
1824e98e3e1Schristos 
1834e98e3e1Schristos static const struct insn_sem m32rxf_insn_sem_invalid =
1844e98e3e1Schristos {
1854e98e3e1Schristos   VIRTUAL_INSN_X_INVALID, M32RXF_INSN_X_INVALID, M32RXF_SFMT_EMPTY, NOPAR, NOPAR
1864e98e3e1Schristos };
1874e98e3e1Schristos 
1884e98e3e1Schristos /* Initialize an IDESC from the compile-time computable parts.  */
1894e98e3e1Schristos 
1904e98e3e1Schristos static INLINE void
1914e98e3e1Schristos init_idesc (SIM_CPU *cpu, IDESC *id, const struct insn_sem *t)
1924e98e3e1Schristos {
1934e98e3e1Schristos   const CGEN_INSN *insn_table = CGEN_CPU_INSN_TABLE (CPU_CPU_DESC (cpu))->init_entries;
1944e98e3e1Schristos 
1954e98e3e1Schristos   id->num = t->index;
1964e98e3e1Schristos   id->sfmt = t->sfmt;
1974e98e3e1Schristos   if ((int) t->type <= 0)
1984e98e3e1Schristos     id->idata = & cgen_virtual_insn_table[- (int) t->type];
1994e98e3e1Schristos   else
2004e98e3e1Schristos     id->idata = & insn_table[t->type];
2014e98e3e1Schristos   id->attrs = CGEN_INSN_ATTRS (id->idata);
2024e98e3e1Schristos   /* Oh my god, a magic number.  */
2034e98e3e1Schristos   id->length = CGEN_INSN_BITSIZE (id->idata) / 8;
2044e98e3e1Schristos 
2054e98e3e1Schristos #if WITH_PROFILE_MODEL_P
2064e98e3e1Schristos   id->timing = & MODEL_TIMING (CPU_MODEL (cpu)) [t->index];
2074e98e3e1Schristos   {
2084e98e3e1Schristos     SIM_DESC sd = CPU_STATE (cpu);
2094e98e3e1Schristos     SIM_ASSERT (t->index == id->timing->num);
2104e98e3e1Schristos   }
2114e98e3e1Schristos #endif
2124e98e3e1Schristos 
2134e98e3e1Schristos   /* Semantic pointers are initialized elsewhere.  */
2144e98e3e1Schristos }
2154e98e3e1Schristos 
2164e98e3e1Schristos /* Initialize the instruction descriptor table.  */
2174e98e3e1Schristos 
2184e98e3e1Schristos void
2194e98e3e1Schristos m32rxf_init_idesc_table (SIM_CPU *cpu)
2204e98e3e1Schristos {
2214e98e3e1Schristos   IDESC *id,*tabend;
2224e98e3e1Schristos   const struct insn_sem *t,*tend;
2234e98e3e1Schristos   int tabsize = M32RXF_INSN__MAX;
2244e98e3e1Schristos   IDESC *table = m32rxf_insn_data;
2254e98e3e1Schristos 
2264e98e3e1Schristos   memset (table, 0, tabsize * sizeof (IDESC));
2274e98e3e1Schristos 
2284e98e3e1Schristos   /* First set all entries to the `invalid insn'.  */
2294e98e3e1Schristos   t = & m32rxf_insn_sem_invalid;
2304e98e3e1Schristos   for (id = table, tabend = table + tabsize; id < tabend; ++id)
2314e98e3e1Schristos     init_idesc (cpu, id, t);
2324e98e3e1Schristos 
2334e98e3e1Schristos   /* Now fill in the values for the chosen cpu.  */
234796c32c9Schristos   for (t = m32rxf_insn_sem, tend = t + ARRAY_SIZE (m32rxf_insn_sem);
2354e98e3e1Schristos        t != tend; ++t)
2364e98e3e1Schristos     {
2374e98e3e1Schristos       init_idesc (cpu, & table[t->index], t);
2384e98e3e1Schristos       if (t->par_index != NOPAR)
2394e98e3e1Schristos 	{
2404e98e3e1Schristos 	  init_idesc (cpu, &table[t->par_index], t);
2414e98e3e1Schristos 	  table[t->index].par_idesc = &table[t->par_index];
2424e98e3e1Schristos 	}
2434e98e3e1Schristos       if (t->par_index != NOPAR)
2444e98e3e1Schristos 	{
2454e98e3e1Schristos 	  init_idesc (cpu, &table[t->write_index], t);
2464e98e3e1Schristos 	  table[t->par_index].par_idesc = &table[t->write_index];
2474e98e3e1Schristos 	}
2484e98e3e1Schristos     }
2494e98e3e1Schristos 
2504e98e3e1Schristos   /* Link the IDESC table into the cpu.  */
2514e98e3e1Schristos   CPU_IDESC (cpu) = table;
2524e98e3e1Schristos }
2534e98e3e1Schristos 
2544e98e3e1Schristos /* Given an instruction, return a pointer to its IDESC entry.  */
2554e98e3e1Schristos 
2564e98e3e1Schristos const IDESC *
2574e98e3e1Schristos m32rxf_decode (SIM_CPU *current_cpu, IADDR pc,
2584e98e3e1Schristos               CGEN_INSN_WORD base_insn, CGEN_INSN_WORD entire_insn,
2594e98e3e1Schristos               ARGBUF *abuf)
2604e98e3e1Schristos {
2614e98e3e1Schristos   /* Result of decoder.  */
2624e98e3e1Schristos   M32RXF_INSN_TYPE itype;
2634e98e3e1Schristos 
2644e98e3e1Schristos   {
2654e98e3e1Schristos     CGEN_INSN_WORD insn = base_insn;
2664e98e3e1Schristos 
2674e98e3e1Schristos     {
268*05fa0856Schristos       unsigned int val0 = (((insn >> 8) & (15 << 4)) | ((insn >> 4) & (15 << 0)));
269*05fa0856Schristos       switch (val0)
2704e98e3e1Schristos       {
2714e98e3e1Schristos       case 0: itype = M32RXF_INSN_SUBV; goto extract_sfmt_addv;
2724e98e3e1Schristos       case 1: itype = M32RXF_INSN_SUBX; goto extract_sfmt_addx;
2734e98e3e1Schristos       case 2: itype = M32RXF_INSN_SUB; goto extract_sfmt_add;
2744e98e3e1Schristos       case 3: itype = M32RXF_INSN_NEG; goto extract_sfmt_mv;
2754e98e3e1Schristos       case 4: itype = M32RXF_INSN_CMP; goto extract_sfmt_cmp;
2764e98e3e1Schristos       case 5: itype = M32RXF_INSN_CMPU; goto extract_sfmt_cmp;
2774e98e3e1Schristos       case 6: itype = M32RXF_INSN_CMPEQ; goto extract_sfmt_cmp;
2784e98e3e1Schristos       case 7:
2794e98e3e1Schristos         {
280*05fa0856Schristos           unsigned int val1 = (((insn >> 8) & (3 << 0)));
281*05fa0856Schristos           switch (val1)
2824e98e3e1Schristos           {
2834e98e3e1Schristos           case 0:
2844e98e3e1Schristos             if ((entire_insn & 0xfff0) == 0x70)
2854e98e3e1Schristos               { itype = M32RXF_INSN_CMPZ; goto extract_sfmt_cmpz; }
2864e98e3e1Schristos             itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
2874e98e3e1Schristos           case 3:
2884e98e3e1Schristos             if ((entire_insn & 0xfff0) == 0x370)
2894e98e3e1Schristos               { itype = M32RXF_INSN_PCMPBZ; goto extract_sfmt_cmpz; }
2904e98e3e1Schristos             itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
2914e98e3e1Schristos           default: itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
2924e98e3e1Schristos           }
2934e98e3e1Schristos         }
2944e98e3e1Schristos       case 8: itype = M32RXF_INSN_ADDV; goto extract_sfmt_addv;
2954e98e3e1Schristos       case 9: itype = M32RXF_INSN_ADDX; goto extract_sfmt_addx;
2964e98e3e1Schristos       case 10: itype = M32RXF_INSN_ADD; goto extract_sfmt_add;
2974e98e3e1Schristos       case 11: itype = M32RXF_INSN_NOT; goto extract_sfmt_mv;
2984e98e3e1Schristos       case 12: itype = M32RXF_INSN_AND; goto extract_sfmt_add;
2994e98e3e1Schristos       case 13: itype = M32RXF_INSN_XOR; goto extract_sfmt_add;
3004e98e3e1Schristos       case 14: itype = M32RXF_INSN_OR; goto extract_sfmt_add;
3014e98e3e1Schristos       case 15:
3024e98e3e1Schristos         if ((entire_insn & 0xf8f0) == 0xf0)
3034e98e3e1Schristos           { itype = M32RXF_INSN_BTST; goto extract_sfmt_btst; }
3044e98e3e1Schristos         itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
3054e98e3e1Schristos       case 16: itype = M32RXF_INSN_SRL; goto extract_sfmt_add;
3064e98e3e1Schristos       case 18: itype = M32RXF_INSN_SRA; goto extract_sfmt_add;
3074e98e3e1Schristos       case 20: itype = M32RXF_INSN_SLL; goto extract_sfmt_add;
3084e98e3e1Schristos       case 22: itype = M32RXF_INSN_MUL; goto extract_sfmt_add;
3094e98e3e1Schristos       case 24: itype = M32RXF_INSN_MV; goto extract_sfmt_mv;
3104e98e3e1Schristos       case 25: itype = M32RXF_INSN_MVFC; goto extract_sfmt_mvfc;
3114e98e3e1Schristos       case 26: itype = M32RXF_INSN_MVTC; goto extract_sfmt_mvtc;
3124e98e3e1Schristos       case 28:
3134e98e3e1Schristos         {
314*05fa0856Schristos           unsigned int val1 = (((insn >> 8) & (3 << 0)));
315*05fa0856Schristos           switch (val1)
3164e98e3e1Schristos           {
3174e98e3e1Schristos           case 0:
3184e98e3e1Schristos             if ((entire_insn & 0xfff0) == 0x1cc0)
3194e98e3e1Schristos               { itype = M32RXF_INSN_JC; goto extract_sfmt_jc; }
3204e98e3e1Schristos             itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
3214e98e3e1Schristos           case 1:
3224e98e3e1Schristos             if ((entire_insn & 0xfff0) == 0x1dc0)
3234e98e3e1Schristos               { itype = M32RXF_INSN_JNC; goto extract_sfmt_jc; }
3244e98e3e1Schristos             itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
3254e98e3e1Schristos           case 2:
3264e98e3e1Schristos             if ((entire_insn & 0xfff0) == 0x1ec0)
3274e98e3e1Schristos               { itype = M32RXF_INSN_JL; goto extract_sfmt_jl; }
3284e98e3e1Schristos             itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
3294e98e3e1Schristos           case 3:
3304e98e3e1Schristos             if ((entire_insn & 0xfff0) == 0x1fc0)
3314e98e3e1Schristos               { itype = M32RXF_INSN_JMP; goto extract_sfmt_jmp; }
3324e98e3e1Schristos             itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
3334e98e3e1Schristos           default: itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
3344e98e3e1Schristos           }
3354e98e3e1Schristos         }
3364e98e3e1Schristos       case 29:
3374e98e3e1Schristos         if ((entire_insn & 0xffff) == 0x10d6)
3384e98e3e1Schristos           { itype = M32RXF_INSN_RTE; goto extract_sfmt_rte; }
3394e98e3e1Schristos         itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
3404e98e3e1Schristos       case 31:
3414e98e3e1Schristos         if ((entire_insn & 0xfff0) == 0x10f0)
3424e98e3e1Schristos           { itype = M32RXF_INSN_TRAP; goto extract_sfmt_trap; }
3434e98e3e1Schristos         itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
3444e98e3e1Schristos       case 32: itype = M32RXF_INSN_STB; goto extract_sfmt_stb;
3454e98e3e1Schristos       case 33: itype = M32RXF_INSN_STB_PLUS; goto extract_sfmt_stb_plus;
3464e98e3e1Schristos       case 34: itype = M32RXF_INSN_STH; goto extract_sfmt_sth;
3474e98e3e1Schristos       case 35: itype = M32RXF_INSN_STH_PLUS; goto extract_sfmt_sth_plus;
3484e98e3e1Schristos       case 36: itype = M32RXF_INSN_ST; goto extract_sfmt_st;
3494e98e3e1Schristos       case 37: itype = M32RXF_INSN_UNLOCK; goto extract_sfmt_unlock;
3504e98e3e1Schristos       case 38: itype = M32RXF_INSN_ST_PLUS; goto extract_sfmt_st_plus;
3514e98e3e1Schristos       case 39: itype = M32RXF_INSN_ST_MINUS; goto extract_sfmt_st_plus;
3524e98e3e1Schristos       case 40: itype = M32RXF_INSN_LDB; goto extract_sfmt_ldb;
3534e98e3e1Schristos       case 41: itype = M32RXF_INSN_LDUB; goto extract_sfmt_ldb;
3544e98e3e1Schristos       case 42: itype = M32RXF_INSN_LDH; goto extract_sfmt_ldh;
3554e98e3e1Schristos       case 43: itype = M32RXF_INSN_LDUH; goto extract_sfmt_ldh;
3564e98e3e1Schristos       case 44: itype = M32RXF_INSN_LD; goto extract_sfmt_ld;
3574e98e3e1Schristos       case 45: itype = M32RXF_INSN_LOCK; goto extract_sfmt_lock;
3584e98e3e1Schristos       case 46: itype = M32RXF_INSN_LD_PLUS; goto extract_sfmt_ld_plus;
359*05fa0856Schristos       case 48:
3604e98e3e1Schristos       case 56: itype = M32RXF_INSN_MULHI_A; goto extract_sfmt_mulhi_a;
361*05fa0856Schristos       case 49:
3624e98e3e1Schristos       case 57: itype = M32RXF_INSN_MULLO_A; goto extract_sfmt_mulhi_a;
363*05fa0856Schristos       case 50:
3644e98e3e1Schristos       case 58: itype = M32RXF_INSN_MULWHI_A; goto extract_sfmt_mulhi_a;
365*05fa0856Schristos       case 51:
3664e98e3e1Schristos       case 59: itype = M32RXF_INSN_MULWLO_A; goto extract_sfmt_mulhi_a;
367*05fa0856Schristos       case 52:
3684e98e3e1Schristos       case 60: itype = M32RXF_INSN_MACHI_A; goto extract_sfmt_machi_a;
369*05fa0856Schristos       case 53:
3704e98e3e1Schristos       case 61: itype = M32RXF_INSN_MACLO_A; goto extract_sfmt_machi_a;
371*05fa0856Schristos       case 54:
3724e98e3e1Schristos       case 62: itype = M32RXF_INSN_MACWHI_A; goto extract_sfmt_machi_a;
373*05fa0856Schristos       case 55:
3744e98e3e1Schristos       case 63: itype = M32RXF_INSN_MACWLO_A; goto extract_sfmt_machi_a;
375*05fa0856Schristos       case 64:
376*05fa0856Schristos       case 65:
377*05fa0856Schristos       case 66:
378*05fa0856Schristos       case 67:
379*05fa0856Schristos       case 68:
380*05fa0856Schristos       case 69:
381*05fa0856Schristos       case 70:
382*05fa0856Schristos       case 71:
383*05fa0856Schristos       case 72:
384*05fa0856Schristos       case 73:
385*05fa0856Schristos       case 74:
386*05fa0856Schristos       case 75:
387*05fa0856Schristos       case 76:
388*05fa0856Schristos       case 77:
389*05fa0856Schristos       case 78:
3904e98e3e1Schristos       case 79: itype = M32RXF_INSN_ADDI; goto extract_sfmt_addi;
391*05fa0856Schristos       case 80:
3924e98e3e1Schristos       case 81: itype = M32RXF_INSN_SRLI; goto extract_sfmt_slli;
393*05fa0856Schristos       case 82:
3944e98e3e1Schristos       case 83: itype = M32RXF_INSN_SRAI; goto extract_sfmt_slli;
395*05fa0856Schristos       case 84:
3964e98e3e1Schristos       case 85: itype = M32RXF_INSN_SLLI; goto extract_sfmt_slli;
3974e98e3e1Schristos       case 87:
3984e98e3e1Schristos         {
399*05fa0856Schristos           unsigned int val1 = (((insn >> 0) & (1 << 0)));
400*05fa0856Schristos           switch (val1)
4014e98e3e1Schristos           {
4024e98e3e1Schristos           case 0:
4034e98e3e1Schristos             if ((entire_insn & 0xf0f3) == 0x5070)
4044e98e3e1Schristos               { itype = M32RXF_INSN_MVTACHI_A; goto extract_sfmt_mvtachi_a; }
4054e98e3e1Schristos             itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
4064e98e3e1Schristos           case 1:
4074e98e3e1Schristos             if ((entire_insn & 0xf0f3) == 0x5071)
4084e98e3e1Schristos               { itype = M32RXF_INSN_MVTACLO_A; goto extract_sfmt_mvtachi_a; }
4094e98e3e1Schristos             itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
4104e98e3e1Schristos           default: itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
4114e98e3e1Schristos           }
4124e98e3e1Schristos         }
4134e98e3e1Schristos       case 88:
4144e98e3e1Schristos         if ((entire_insn & 0xf3f2) == 0x5080)
4154e98e3e1Schristos           { itype = M32RXF_INSN_RACH_DSI; goto extract_sfmt_rac_dsi; }
4164e98e3e1Schristos         itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
4174e98e3e1Schristos       case 89:
4184e98e3e1Schristos         if ((entire_insn & 0xf3f2) == 0x5090)
4194e98e3e1Schristos           { itype = M32RXF_INSN_RAC_DSI; goto extract_sfmt_rac_dsi; }
4204e98e3e1Schristos         itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
4214e98e3e1Schristos       case 90: itype = M32RXF_INSN_MULWU1; goto extract_sfmt_mulwu1;
4224e98e3e1Schristos       case 91: itype = M32RXF_INSN_MACWU1; goto extract_sfmt_macwu1;
4234e98e3e1Schristos       case 92: itype = M32RXF_INSN_MACLH1; goto extract_sfmt_macwu1;
4244e98e3e1Schristos       case 93: itype = M32RXF_INSN_MSBLO; goto extract_sfmt_msblo;
4254e98e3e1Schristos       case 94:
4264e98e3e1Schristos         if ((entire_insn & 0xffff) == 0x50e4)
4274e98e3e1Schristos           { itype = M32RXF_INSN_SADD; goto extract_sfmt_sadd; }
4284e98e3e1Schristos         itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
4294e98e3e1Schristos       case 95:
4304e98e3e1Schristos         {
431*05fa0856Schristos           unsigned int val1 = (((insn >> 0) & (3 << 0)));
432*05fa0856Schristos           switch (val1)
4334e98e3e1Schristos           {
4344e98e3e1Schristos           case 0: itype = M32RXF_INSN_MVFACHI_A; goto extract_sfmt_mvfachi_a;
4354e98e3e1Schristos           case 1: itype = M32RXF_INSN_MVFACLO_A; goto extract_sfmt_mvfachi_a;
4364e98e3e1Schristos           case 2: itype = M32RXF_INSN_MVFACMI_A; goto extract_sfmt_mvfachi_a;
4374e98e3e1Schristos           default: itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
4384e98e3e1Schristos           }
4394e98e3e1Schristos         }
440*05fa0856Schristos       case 96:
441*05fa0856Schristos       case 97:
442*05fa0856Schristos       case 98:
443*05fa0856Schristos       case 99:
444*05fa0856Schristos       case 100:
445*05fa0856Schristos       case 101:
446*05fa0856Schristos       case 102:
447*05fa0856Schristos       case 103:
448*05fa0856Schristos       case 104:
449*05fa0856Schristos       case 105:
450*05fa0856Schristos       case 106:
451*05fa0856Schristos       case 107:
452*05fa0856Schristos       case 108:
453*05fa0856Schristos       case 109:
454*05fa0856Schristos       case 110:
4554e98e3e1Schristos       case 111: itype = M32RXF_INSN_LDI8; goto extract_sfmt_ldi8;
4564e98e3e1Schristos       case 112:
4574e98e3e1Schristos         {
458*05fa0856Schristos           unsigned int val1 = (((insn >> 7) & (15 << 1)) | ((insn >> 0) & (1 << 0)));
459*05fa0856Schristos           switch (val1)
4604e98e3e1Schristos           {
4614e98e3e1Schristos           case 0:
4624e98e3e1Schristos             if ((entire_insn & 0xffff) == 0x7000)
4634e98e3e1Schristos               { itype = M32RXF_INSN_NOP; goto extract_sfmt_nop; }
4644e98e3e1Schristos             itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
465*05fa0856Schristos           case 2:
4664e98e3e1Schristos           case 3: itype = M32RXF_INSN_SETPSW; goto extract_sfmt_setpsw;
467*05fa0856Schristos           case 4:
4684e98e3e1Schristos           case 5: itype = M32RXF_INSN_CLRPSW; goto extract_sfmt_clrpsw;
4694e98e3e1Schristos           case 9:
4704e98e3e1Schristos             if ((entire_insn & 0xffff) == 0x7401)
4714e98e3e1Schristos               { itype = M32RXF_INSN_SC; goto extract_sfmt_sc; }
4724e98e3e1Schristos             itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
4734e98e3e1Schristos           case 11:
4744e98e3e1Schristos             if ((entire_insn & 0xffff) == 0x7501)
4754e98e3e1Schristos               { itype = M32RXF_INSN_SNC; goto extract_sfmt_sc; }
4764e98e3e1Schristos             itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
477*05fa0856Schristos           case 16:
4784e98e3e1Schristos           case 17: itype = M32RXF_INSN_BCL8; goto extract_sfmt_bcl8;
479*05fa0856Schristos           case 18:
4804e98e3e1Schristos           case 19: itype = M32RXF_INSN_BNCL8; goto extract_sfmt_bcl8;
481*05fa0856Schristos           case 24:
4824e98e3e1Schristos           case 25: itype = M32RXF_INSN_BC8; goto extract_sfmt_bc8;
483*05fa0856Schristos           case 26:
4844e98e3e1Schristos           case 27: itype = M32RXF_INSN_BNC8; goto extract_sfmt_bc8;
485*05fa0856Schristos           case 28:
4864e98e3e1Schristos           case 29: itype = M32RXF_INSN_BL8; goto extract_sfmt_bl8;
487*05fa0856Schristos           case 30:
4884e98e3e1Schristos           case 31: itype = M32RXF_INSN_BRA8; goto extract_sfmt_bra8;
4894e98e3e1Schristos           default: itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
4904e98e3e1Schristos           }
4914e98e3e1Schristos         }
492*05fa0856Schristos       case 113:
493*05fa0856Schristos       case 114:
494*05fa0856Schristos       case 115:
495*05fa0856Schristos       case 116:
496*05fa0856Schristos       case 117:
497*05fa0856Schristos       case 118:
498*05fa0856Schristos       case 119:
499*05fa0856Schristos       case 120:
500*05fa0856Schristos       case 121:
501*05fa0856Schristos       case 122:
502*05fa0856Schristos       case 123:
503*05fa0856Schristos       case 124:
504*05fa0856Schristos       case 125:
505*05fa0856Schristos       case 126:
5064e98e3e1Schristos       case 127:
5074e98e3e1Schristos         {
508*05fa0856Schristos           unsigned int val1 = (((insn >> 8) & (15 << 0)));
509*05fa0856Schristos           switch (val1)
5104e98e3e1Schristos           {
5114e98e3e1Schristos           case 1: itype = M32RXF_INSN_SETPSW; goto extract_sfmt_setpsw;
5124e98e3e1Schristos           case 2: itype = M32RXF_INSN_CLRPSW; goto extract_sfmt_clrpsw;
5134e98e3e1Schristos           case 8: itype = M32RXF_INSN_BCL8; goto extract_sfmt_bcl8;
5144e98e3e1Schristos           case 9: itype = M32RXF_INSN_BNCL8; goto extract_sfmt_bcl8;
5154e98e3e1Schristos           case 12: itype = M32RXF_INSN_BC8; goto extract_sfmt_bc8;
5164e98e3e1Schristos           case 13: itype = M32RXF_INSN_BNC8; goto extract_sfmt_bc8;
5174e98e3e1Schristos           case 14: itype = M32RXF_INSN_BL8; goto extract_sfmt_bl8;
5184e98e3e1Schristos           case 15: itype = M32RXF_INSN_BRA8; goto extract_sfmt_bra8;
5194e98e3e1Schristos           default: itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
5204e98e3e1Schristos           }
5214e98e3e1Schristos         }
5224e98e3e1Schristos       case 132:
5234e98e3e1Schristos         if ((entire_insn & 0xfff00000) == 0x80400000)
5244e98e3e1Schristos           { itype = M32RXF_INSN_CMPI; goto extract_sfmt_cmpi; }
5254e98e3e1Schristos         itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
5264e98e3e1Schristos       case 133:
5274e98e3e1Schristos         if ((entire_insn & 0xfff00000) == 0x80500000)
5284e98e3e1Schristos           { itype = M32RXF_INSN_CMPUI; goto extract_sfmt_cmpi; }
5294e98e3e1Schristos         itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
5304e98e3e1Schristos       case 134:
5314e98e3e1Schristos         {
532*05fa0856Schristos           unsigned int val1 = (((entire_insn >> 8) & (3 << 0)));
533*05fa0856Schristos           switch (val1)
5344e98e3e1Schristos           {
5354e98e3e1Schristos           case 0:
5364e98e3e1Schristos             if ((entire_insn & 0xf0f0ffff) == 0x80600000)
5374e98e3e1Schristos               { itype = M32RXF_INSN_SAT; goto extract_sfmt_sat; }
5384e98e3e1Schristos             itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
5394e98e3e1Schristos           case 2:
5404e98e3e1Schristos             if ((entire_insn & 0xf0f0ffff) == 0x80600200)
5414e98e3e1Schristos               { itype = M32RXF_INSN_SATH; goto extract_sfmt_satb; }
5424e98e3e1Schristos             itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
5434e98e3e1Schristos           case 3:
5444e98e3e1Schristos             if ((entire_insn & 0xf0f0ffff) == 0x80600300)
5454e98e3e1Schristos               { itype = M32RXF_INSN_SATB; goto extract_sfmt_satb; }
5464e98e3e1Schristos             itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
5474e98e3e1Schristos           default: itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
5484e98e3e1Schristos           }
5494e98e3e1Schristos         }
5504e98e3e1Schristos       case 136: itype = M32RXF_INSN_ADDV3; goto extract_sfmt_addv3;
5514e98e3e1Schristos       case 138: itype = M32RXF_INSN_ADD3; goto extract_sfmt_add3;
5524e98e3e1Schristos       case 140: itype = M32RXF_INSN_AND3; goto extract_sfmt_and3;
5534e98e3e1Schristos       case 141: itype = M32RXF_INSN_XOR3; goto extract_sfmt_and3;
5544e98e3e1Schristos       case 142: itype = M32RXF_INSN_OR3; goto extract_sfmt_or3;
5554e98e3e1Schristos       case 144:
5564e98e3e1Schristos         {
557*05fa0856Schristos           unsigned int val1 = (((entire_insn >> 4) & (1 << 0)));
558*05fa0856Schristos           switch (val1)
5594e98e3e1Schristos           {
5604e98e3e1Schristos           case 0:
5614e98e3e1Schristos             if ((entire_insn & 0xf0f0ffff) == 0x90000000)
5624e98e3e1Schristos               { itype = M32RXF_INSN_DIV; goto extract_sfmt_div; }
5634e98e3e1Schristos             itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
5644e98e3e1Schristos           case 1:
5654e98e3e1Schristos             if ((entire_insn & 0xf0f0ffff) == 0x90000010)
5664e98e3e1Schristos               { itype = M32RXF_INSN_DIVH; goto extract_sfmt_div; }
5674e98e3e1Schristos             itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
5684e98e3e1Schristos           default: itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
5694e98e3e1Schristos           }
5704e98e3e1Schristos         }
5714e98e3e1Schristos       case 145:
5724e98e3e1Schristos         if ((entire_insn & 0xf0f0ffff) == 0x90100000)
5734e98e3e1Schristos           { itype = M32RXF_INSN_DIVU; goto extract_sfmt_div; }
5744e98e3e1Schristos         itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
5754e98e3e1Schristos       case 146:
5764e98e3e1Schristos         if ((entire_insn & 0xf0f0ffff) == 0x90200000)
5774e98e3e1Schristos           { itype = M32RXF_INSN_REM; goto extract_sfmt_div; }
5784e98e3e1Schristos         itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
5794e98e3e1Schristos       case 147:
5804e98e3e1Schristos         if ((entire_insn & 0xf0f0ffff) == 0x90300000)
5814e98e3e1Schristos           { itype = M32RXF_INSN_REMU; goto extract_sfmt_div; }
5824e98e3e1Schristos         itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
5834e98e3e1Schristos       case 152: itype = M32RXF_INSN_SRL3; goto extract_sfmt_sll3;
5844e98e3e1Schristos       case 154: itype = M32RXF_INSN_SRA3; goto extract_sfmt_sll3;
5854e98e3e1Schristos       case 156: itype = M32RXF_INSN_SLL3; goto extract_sfmt_sll3;
5864e98e3e1Schristos       case 159:
5874e98e3e1Schristos         if ((entire_insn & 0xf0ff0000) == 0x90f00000)
5884e98e3e1Schristos           { itype = M32RXF_INSN_LDI16; goto extract_sfmt_ldi16; }
5894e98e3e1Schristos         itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
5904e98e3e1Schristos       case 160: itype = M32RXF_INSN_STB_D; goto extract_sfmt_stb_d;
5914e98e3e1Schristos       case 162: itype = M32RXF_INSN_STH_D; goto extract_sfmt_sth_d;
5924e98e3e1Schristos       case 164: itype = M32RXF_INSN_ST_D; goto extract_sfmt_st_d;
5934e98e3e1Schristos       case 166:
5944e98e3e1Schristos         if ((entire_insn & 0xf8f00000) == 0xa0600000)
5954e98e3e1Schristos           { itype = M32RXF_INSN_BSET; goto extract_sfmt_bset; }
5964e98e3e1Schristos         itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
5974e98e3e1Schristos       case 167:
5984e98e3e1Schristos         if ((entire_insn & 0xf8f00000) == 0xa0700000)
5994e98e3e1Schristos           { itype = M32RXF_INSN_BCLR; goto extract_sfmt_bset; }
6004e98e3e1Schristos         itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
6014e98e3e1Schristos       case 168: itype = M32RXF_INSN_LDB_D; goto extract_sfmt_ldb_d;
6024e98e3e1Schristos       case 169: itype = M32RXF_INSN_LDUB_D; goto extract_sfmt_ldb_d;
6034e98e3e1Schristos       case 170: itype = M32RXF_INSN_LDH_D; goto extract_sfmt_ldh_d;
6044e98e3e1Schristos       case 171: itype = M32RXF_INSN_LDUH_D; goto extract_sfmt_ldh_d;
6054e98e3e1Schristos       case 172: itype = M32RXF_INSN_LD_D; goto extract_sfmt_ld_d;
6064e98e3e1Schristos       case 176: itype = M32RXF_INSN_BEQ; goto extract_sfmt_beq;
6074e98e3e1Schristos       case 177: itype = M32RXF_INSN_BNE; goto extract_sfmt_beq;
6084e98e3e1Schristos       case 184:
6094e98e3e1Schristos         if ((entire_insn & 0xfff00000) == 0xb0800000)
6104e98e3e1Schristos           { itype = M32RXF_INSN_BEQZ; goto extract_sfmt_beqz; }
6114e98e3e1Schristos         itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
6124e98e3e1Schristos       case 185:
6134e98e3e1Schristos         if ((entire_insn & 0xfff00000) == 0xb0900000)
6144e98e3e1Schristos           { itype = M32RXF_INSN_BNEZ; goto extract_sfmt_beqz; }
6154e98e3e1Schristos         itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
6164e98e3e1Schristos       case 186:
6174e98e3e1Schristos         if ((entire_insn & 0xfff00000) == 0xb0a00000)
6184e98e3e1Schristos           { itype = M32RXF_INSN_BLTZ; goto extract_sfmt_beqz; }
6194e98e3e1Schristos         itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
6204e98e3e1Schristos       case 187:
6214e98e3e1Schristos         if ((entire_insn & 0xfff00000) == 0xb0b00000)
6224e98e3e1Schristos           { itype = M32RXF_INSN_BGEZ; goto extract_sfmt_beqz; }
6234e98e3e1Schristos         itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
6244e98e3e1Schristos       case 188:
6254e98e3e1Schristos         if ((entire_insn & 0xfff00000) == 0xb0c00000)
6264e98e3e1Schristos           { itype = M32RXF_INSN_BLEZ; goto extract_sfmt_beqz; }
6274e98e3e1Schristos         itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
6284e98e3e1Schristos       case 189:
6294e98e3e1Schristos         if ((entire_insn & 0xfff00000) == 0xb0d00000)
6304e98e3e1Schristos           { itype = M32RXF_INSN_BGTZ; goto extract_sfmt_beqz; }
6314e98e3e1Schristos         itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
6324e98e3e1Schristos       case 220:
6334e98e3e1Schristos         if ((entire_insn & 0xf0ff0000) == 0xd0c00000)
6344e98e3e1Schristos           { itype = M32RXF_INSN_SETH; goto extract_sfmt_seth; }
6354e98e3e1Schristos         itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
636*05fa0856Schristos       case 224:
637*05fa0856Schristos       case 225:
638*05fa0856Schristos       case 226:
639*05fa0856Schristos       case 227:
640*05fa0856Schristos       case 228:
641*05fa0856Schristos       case 229:
642*05fa0856Schristos       case 230:
643*05fa0856Schristos       case 231:
644*05fa0856Schristos       case 232:
645*05fa0856Schristos       case 233:
646*05fa0856Schristos       case 234:
647*05fa0856Schristos       case 235:
648*05fa0856Schristos       case 236:
649*05fa0856Schristos       case 237:
650*05fa0856Schristos       case 238:
6514e98e3e1Schristos       case 239: itype = M32RXF_INSN_LD24; goto extract_sfmt_ld24;
652*05fa0856Schristos       case 240:
653*05fa0856Schristos       case 241:
654*05fa0856Schristos       case 242:
655*05fa0856Schristos       case 243:
656*05fa0856Schristos       case 244:
657*05fa0856Schristos       case 245:
658*05fa0856Schristos       case 246:
659*05fa0856Schristos       case 247:
660*05fa0856Schristos       case 248:
661*05fa0856Schristos       case 249:
662*05fa0856Schristos       case 250:
663*05fa0856Schristos       case 251:
664*05fa0856Schristos       case 252:
665*05fa0856Schristos       case 253:
666*05fa0856Schristos       case 254:
6674e98e3e1Schristos       case 255:
6684e98e3e1Schristos         {
669*05fa0856Schristos           unsigned int val1 = (((insn >> 8) & (7 << 0)));
670*05fa0856Schristos           switch (val1)
6714e98e3e1Schristos           {
6724e98e3e1Schristos           case 0:
6734e98e3e1Schristos             if ((entire_insn & 0xff000000) == 0xf8000000)
6744e98e3e1Schristos               { itype = M32RXF_INSN_BCL24; goto extract_sfmt_bcl24; }
6754e98e3e1Schristos             itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
6764e98e3e1Schristos           case 1:
6774e98e3e1Schristos             if ((entire_insn & 0xff000000) == 0xf9000000)
6784e98e3e1Schristos               { itype = M32RXF_INSN_BNCL24; goto extract_sfmt_bcl24; }
6794e98e3e1Schristos             itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
6804e98e3e1Schristos           case 4:
6814e98e3e1Schristos             if ((entire_insn & 0xff000000) == 0xfc000000)
6824e98e3e1Schristos               { itype = M32RXF_INSN_BC24; goto extract_sfmt_bc24; }
6834e98e3e1Schristos             itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
6844e98e3e1Schristos           case 5:
6854e98e3e1Schristos             if ((entire_insn & 0xff000000) == 0xfd000000)
6864e98e3e1Schristos               { itype = M32RXF_INSN_BNC24; goto extract_sfmt_bc24; }
6874e98e3e1Schristos             itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
6884e98e3e1Schristos           case 6:
6894e98e3e1Schristos             if ((entire_insn & 0xff000000) == 0xfe000000)
6904e98e3e1Schristos               { itype = M32RXF_INSN_BL24; goto extract_sfmt_bl24; }
6914e98e3e1Schristos             itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
6924e98e3e1Schristos           case 7:
6934e98e3e1Schristos             if ((entire_insn & 0xff000000) == 0xff000000)
6944e98e3e1Schristos               { itype = M32RXF_INSN_BRA24; goto extract_sfmt_bra24; }
6954e98e3e1Schristos             itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
6964e98e3e1Schristos           default: itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
6974e98e3e1Schristos           }
6984e98e3e1Schristos         }
6994e98e3e1Schristos       default: itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
7004e98e3e1Schristos       }
7014e98e3e1Schristos     }
7024e98e3e1Schristos   }
7034e98e3e1Schristos 
7044e98e3e1Schristos   /* The instruction has been decoded, now extract the fields.  */
7054e98e3e1Schristos 
7064e98e3e1Schristos  extract_sfmt_empty:
7074e98e3e1Schristos   {
7084e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
7094e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_empty.f
7104e98e3e1Schristos 
7114e98e3e1Schristos 
7124e98e3e1Schristos   /* Record the fields for the semantic handler.  */
713212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_empty", (char *) 0));
7144e98e3e1Schristos 
7154e98e3e1Schristos #undef FLD
7164e98e3e1Schristos     return idesc;
7174e98e3e1Schristos   }
7184e98e3e1Schristos 
7194e98e3e1Schristos  extract_sfmt_add:
7204e98e3e1Schristos   {
7214e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
7224e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
7234e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f
7244e98e3e1Schristos     UINT f_r1;
7254e98e3e1Schristos     UINT f_r2;
7264e98e3e1Schristos 
7274e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
7284e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
7294e98e3e1Schristos 
7304e98e3e1Schristos   /* Record the fields for the semantic handler.  */
7314e98e3e1Schristos   FLD (f_r1) = f_r1;
7324e98e3e1Schristos   FLD (f_r2) = f_r2;
7334e98e3e1Schristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
7344e98e3e1Schristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
735212397c6Schristos   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));
7364e98e3e1Schristos 
7374e98e3e1Schristos #if WITH_PROFILE_MODEL_P
7384e98e3e1Schristos   /* Record the fields for profiling.  */
7394e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
7404e98e3e1Schristos     {
7414e98e3e1Schristos       FLD (in_dr) = f_r1;
7424e98e3e1Schristos       FLD (in_sr) = f_r2;
7434e98e3e1Schristos       FLD (out_dr) = f_r1;
7444e98e3e1Schristos     }
7454e98e3e1Schristos #endif
7464e98e3e1Schristos #undef FLD
7474e98e3e1Schristos     return idesc;
7484e98e3e1Schristos   }
7494e98e3e1Schristos 
7504e98e3e1Schristos  extract_sfmt_add3:
7514e98e3e1Schristos   {
7524e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
7534e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
7544e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add3.f
7554e98e3e1Schristos     UINT f_r1;
7564e98e3e1Schristos     UINT f_r2;
7574e98e3e1Schristos     INT f_simm16;
7584e98e3e1Schristos 
7594e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
7604e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
7614e98e3e1Schristos     f_simm16 = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
7624e98e3e1Schristos 
7634e98e3e1Schristos   /* Record the fields for the semantic handler.  */
7644e98e3e1Schristos   FLD (f_simm16) = f_simm16;
7654e98e3e1Schristos   FLD (f_r2) = f_r2;
7664e98e3e1Schristos   FLD (f_r1) = f_r1;
7674e98e3e1Schristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
7684e98e3e1Schristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
769212397c6Schristos   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));
7704e98e3e1Schristos 
7714e98e3e1Schristos #if WITH_PROFILE_MODEL_P
7724e98e3e1Schristos   /* Record the fields for profiling.  */
7734e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
7744e98e3e1Schristos     {
7754e98e3e1Schristos       FLD (in_sr) = f_r2;
7764e98e3e1Schristos       FLD (out_dr) = f_r1;
7774e98e3e1Schristos     }
7784e98e3e1Schristos #endif
7794e98e3e1Schristos #undef FLD
7804e98e3e1Schristos     return idesc;
7814e98e3e1Schristos   }
7824e98e3e1Schristos 
7834e98e3e1Schristos  extract_sfmt_and3:
7844e98e3e1Schristos   {
7854e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
7864e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
7874e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_and3.f
7884e98e3e1Schristos     UINT f_r1;
7894e98e3e1Schristos     UINT f_r2;
7904e98e3e1Schristos     UINT f_uimm16;
7914e98e3e1Schristos 
7924e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
7934e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
7944e98e3e1Schristos     f_uimm16 = EXTRACT_MSB0_UINT (insn, 32, 16, 16);
7954e98e3e1Schristos 
7964e98e3e1Schristos   /* Record the fields for the semantic handler.  */
7974e98e3e1Schristos   FLD (f_r2) = f_r2;
7984e98e3e1Schristos   FLD (f_uimm16) = f_uimm16;
7994e98e3e1Schristos   FLD (f_r1) = f_r1;
8004e98e3e1Schristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
8014e98e3e1Schristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
802212397c6Schristos   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));
8034e98e3e1Schristos 
8044e98e3e1Schristos #if WITH_PROFILE_MODEL_P
8054e98e3e1Schristos   /* Record the fields for profiling.  */
8064e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
8074e98e3e1Schristos     {
8084e98e3e1Schristos       FLD (in_sr) = f_r2;
8094e98e3e1Schristos       FLD (out_dr) = f_r1;
8104e98e3e1Schristos     }
8114e98e3e1Schristos #endif
8124e98e3e1Schristos #undef FLD
8134e98e3e1Schristos     return idesc;
8144e98e3e1Schristos   }
8154e98e3e1Schristos 
8164e98e3e1Schristos  extract_sfmt_or3:
8174e98e3e1Schristos   {
8184e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
8194e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
8204e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_and3.f
8214e98e3e1Schristos     UINT f_r1;
8224e98e3e1Schristos     UINT f_r2;
8234e98e3e1Schristos     UINT f_uimm16;
8244e98e3e1Schristos 
8254e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
8264e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
8274e98e3e1Schristos     f_uimm16 = EXTRACT_MSB0_UINT (insn, 32, 16, 16);
8284e98e3e1Schristos 
8294e98e3e1Schristos   /* Record the fields for the semantic handler.  */
8304e98e3e1Schristos   FLD (f_r2) = f_r2;
8314e98e3e1Schristos   FLD (f_uimm16) = f_uimm16;
8324e98e3e1Schristos   FLD (f_r1) = f_r1;
8334e98e3e1Schristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
8344e98e3e1Schristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
835212397c6Schristos   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));
8364e98e3e1Schristos 
8374e98e3e1Schristos #if WITH_PROFILE_MODEL_P
8384e98e3e1Schristos   /* Record the fields for profiling.  */
8394e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
8404e98e3e1Schristos     {
8414e98e3e1Schristos       FLD (in_sr) = f_r2;
8424e98e3e1Schristos       FLD (out_dr) = f_r1;
8434e98e3e1Schristos     }
8444e98e3e1Schristos #endif
8454e98e3e1Schristos #undef FLD
8464e98e3e1Schristos     return idesc;
8474e98e3e1Schristos   }
8484e98e3e1Schristos 
8494e98e3e1Schristos  extract_sfmt_addi:
8504e98e3e1Schristos   {
8514e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
8524e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
8534e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_addi.f
8544e98e3e1Schristos     UINT f_r1;
8554e98e3e1Schristos     INT f_simm8;
8564e98e3e1Schristos 
8574e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
8584e98e3e1Schristos     f_simm8 = EXTRACT_MSB0_SINT (insn, 16, 8, 8);
8594e98e3e1Schristos 
8604e98e3e1Schristos   /* Record the fields for the semantic handler.  */
8614e98e3e1Schristos   FLD (f_r1) = f_r1;
8624e98e3e1Schristos   FLD (f_simm8) = f_simm8;
8634e98e3e1Schristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
864212397c6Schristos   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));
8654e98e3e1Schristos 
8664e98e3e1Schristos #if WITH_PROFILE_MODEL_P
8674e98e3e1Schristos   /* Record the fields for profiling.  */
8684e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
8694e98e3e1Schristos     {
8704e98e3e1Schristos       FLD (in_dr) = f_r1;
8714e98e3e1Schristos       FLD (out_dr) = f_r1;
8724e98e3e1Schristos     }
8734e98e3e1Schristos #endif
8744e98e3e1Schristos #undef FLD
8754e98e3e1Schristos     return idesc;
8764e98e3e1Schristos   }
8774e98e3e1Schristos 
8784e98e3e1Schristos  extract_sfmt_addv:
8794e98e3e1Schristos   {
8804e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
8814e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
8824e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f
8834e98e3e1Schristos     UINT f_r1;
8844e98e3e1Schristos     UINT f_r2;
8854e98e3e1Schristos 
8864e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
8874e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
8884e98e3e1Schristos 
8894e98e3e1Schristos   /* Record the fields for the semantic handler.  */
8904e98e3e1Schristos   FLD (f_r1) = f_r1;
8914e98e3e1Schristos   FLD (f_r2) = f_r2;
8924e98e3e1Schristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
8934e98e3e1Schristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
894212397c6Schristos   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));
8954e98e3e1Schristos 
8964e98e3e1Schristos #if WITH_PROFILE_MODEL_P
8974e98e3e1Schristos   /* Record the fields for profiling.  */
8984e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
8994e98e3e1Schristos     {
9004e98e3e1Schristos       FLD (in_dr) = f_r1;
9014e98e3e1Schristos       FLD (in_sr) = f_r2;
9024e98e3e1Schristos       FLD (out_dr) = f_r1;
9034e98e3e1Schristos     }
9044e98e3e1Schristos #endif
9054e98e3e1Schristos #undef FLD
9064e98e3e1Schristos     return idesc;
9074e98e3e1Schristos   }
9084e98e3e1Schristos 
9094e98e3e1Schristos  extract_sfmt_addv3:
9104e98e3e1Schristos   {
9114e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
9124e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
9134e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add3.f
9144e98e3e1Schristos     UINT f_r1;
9154e98e3e1Schristos     UINT f_r2;
9164e98e3e1Schristos     INT f_simm16;
9174e98e3e1Schristos 
9184e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
9194e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
9204e98e3e1Schristos     f_simm16 = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
9214e98e3e1Schristos 
9224e98e3e1Schristos   /* Record the fields for the semantic handler.  */
9234e98e3e1Schristos   FLD (f_simm16) = f_simm16;
9244e98e3e1Schristos   FLD (f_r2) = f_r2;
9254e98e3e1Schristos   FLD (f_r1) = f_r1;
9264e98e3e1Schristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
9274e98e3e1Schristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
928212397c6Schristos   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));
9294e98e3e1Schristos 
9304e98e3e1Schristos #if WITH_PROFILE_MODEL_P
9314e98e3e1Schristos   /* Record the fields for profiling.  */
9324e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
9334e98e3e1Schristos     {
9344e98e3e1Schristos       FLD (in_sr) = f_r2;
9354e98e3e1Schristos       FLD (out_dr) = f_r1;
9364e98e3e1Schristos     }
9374e98e3e1Schristos #endif
9384e98e3e1Schristos #undef FLD
9394e98e3e1Schristos     return idesc;
9404e98e3e1Schristos   }
9414e98e3e1Schristos 
9424e98e3e1Schristos  extract_sfmt_addx:
9434e98e3e1Schristos   {
9444e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
9454e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
9464e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f
9474e98e3e1Schristos     UINT f_r1;
9484e98e3e1Schristos     UINT f_r2;
9494e98e3e1Schristos 
9504e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
9514e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
9524e98e3e1Schristos 
9534e98e3e1Schristos   /* Record the fields for the semantic handler.  */
9544e98e3e1Schristos   FLD (f_r1) = f_r1;
9554e98e3e1Schristos   FLD (f_r2) = f_r2;
9564e98e3e1Schristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
9574e98e3e1Schristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
958212397c6Schristos   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));
9594e98e3e1Schristos 
9604e98e3e1Schristos #if WITH_PROFILE_MODEL_P
9614e98e3e1Schristos   /* Record the fields for profiling.  */
9624e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
9634e98e3e1Schristos     {
9644e98e3e1Schristos       FLD (in_dr) = f_r1;
9654e98e3e1Schristos       FLD (in_sr) = f_r2;
9664e98e3e1Schristos       FLD (out_dr) = f_r1;
9674e98e3e1Schristos     }
9684e98e3e1Schristos #endif
9694e98e3e1Schristos #undef FLD
9704e98e3e1Schristos     return idesc;
9714e98e3e1Schristos   }
9724e98e3e1Schristos 
9734e98e3e1Schristos  extract_sfmt_bc8:
9744e98e3e1Schristos   {
9754e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
9764e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
9774e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_bl8.f
9784e98e3e1Schristos     SI f_disp8;
9794e98e3e1Schristos 
980*05fa0856Schristos     f_disp8 = ((((EXTRACT_MSB0_SINT (insn, 16, 8, 8)) * (4))) + (((pc) & (-4))));
9814e98e3e1Schristos 
9824e98e3e1Schristos   /* Record the fields for the semantic handler.  */
9834e98e3e1Schristos   FLD (i_disp8) = f_disp8;
984212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bc8", "disp8 0x%x", 'x', f_disp8, (char *) 0));
9854e98e3e1Schristos 
9864e98e3e1Schristos #if WITH_PROFILE_MODEL_P
9874e98e3e1Schristos   /* Record the fields for profiling.  */
9884e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
9894e98e3e1Schristos     {
9904e98e3e1Schristos     }
9914e98e3e1Schristos #endif
9924e98e3e1Schristos #undef FLD
9934e98e3e1Schristos     return idesc;
9944e98e3e1Schristos   }
9954e98e3e1Schristos 
9964e98e3e1Schristos  extract_sfmt_bc24:
9974e98e3e1Schristos   {
9984e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
9994e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
10004e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_bl24.f
10014e98e3e1Schristos     SI f_disp24;
10024e98e3e1Schristos 
1003*05fa0856Schristos     f_disp24 = ((((EXTRACT_MSB0_SINT (insn, 32, 8, 24)) * (4))) + (pc));
10044e98e3e1Schristos 
10054e98e3e1Schristos   /* Record the fields for the semantic handler.  */
10064e98e3e1Schristos   FLD (i_disp24) = f_disp24;
1007212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bc24", "disp24 0x%x", 'x', f_disp24, (char *) 0));
10084e98e3e1Schristos 
10094e98e3e1Schristos #if WITH_PROFILE_MODEL_P
10104e98e3e1Schristos   /* Record the fields for profiling.  */
10114e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
10124e98e3e1Schristos     {
10134e98e3e1Schristos     }
10144e98e3e1Schristos #endif
10154e98e3e1Schristos #undef FLD
10164e98e3e1Schristos     return idesc;
10174e98e3e1Schristos   }
10184e98e3e1Schristos 
10194e98e3e1Schristos  extract_sfmt_beq:
10204e98e3e1Schristos   {
10214e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
10224e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
10234e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_beq.f
10244e98e3e1Schristos     UINT f_r1;
10254e98e3e1Schristos     UINT f_r2;
10264e98e3e1Schristos     SI f_disp16;
10274e98e3e1Schristos 
10284e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
10294e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
1030*05fa0856Schristos     f_disp16 = ((((EXTRACT_MSB0_SINT (insn, 32, 16, 16)) * (4))) + (pc));
10314e98e3e1Schristos 
10324e98e3e1Schristos   /* Record the fields for the semantic handler.  */
10334e98e3e1Schristos   FLD (f_r1) = f_r1;
10344e98e3e1Schristos   FLD (f_r2) = f_r2;
10354e98e3e1Schristos   FLD (i_disp16) = f_disp16;
10364e98e3e1Schristos   FLD (i_src1) = & CPU (h_gr)[f_r1];
10374e98e3e1Schristos   FLD (i_src2) = & CPU (h_gr)[f_r2];
1038212397c6Schristos   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));
10394e98e3e1Schristos 
10404e98e3e1Schristos #if WITH_PROFILE_MODEL_P
10414e98e3e1Schristos   /* Record the fields for profiling.  */
10424e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
10434e98e3e1Schristos     {
10444e98e3e1Schristos       FLD (in_src1) = f_r1;
10454e98e3e1Schristos       FLD (in_src2) = f_r2;
10464e98e3e1Schristos     }
10474e98e3e1Schristos #endif
10484e98e3e1Schristos #undef FLD
10494e98e3e1Schristos     return idesc;
10504e98e3e1Schristos   }
10514e98e3e1Schristos 
10524e98e3e1Schristos  extract_sfmt_beqz:
10534e98e3e1Schristos   {
10544e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
10554e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
10564e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_beq.f
10574e98e3e1Schristos     UINT f_r2;
10584e98e3e1Schristos     SI f_disp16;
10594e98e3e1Schristos 
10604e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
1061*05fa0856Schristos     f_disp16 = ((((EXTRACT_MSB0_SINT (insn, 32, 16, 16)) * (4))) + (pc));
10624e98e3e1Schristos 
10634e98e3e1Schristos   /* Record the fields for the semantic handler.  */
10644e98e3e1Schristos   FLD (f_r2) = f_r2;
10654e98e3e1Schristos   FLD (i_disp16) = f_disp16;
10664e98e3e1Schristos   FLD (i_src2) = & CPU (h_gr)[f_r2];
1067212397c6Schristos   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));
10684e98e3e1Schristos 
10694e98e3e1Schristos #if WITH_PROFILE_MODEL_P
10704e98e3e1Schristos   /* Record the fields for profiling.  */
10714e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
10724e98e3e1Schristos     {
10734e98e3e1Schristos       FLD (in_src2) = f_r2;
10744e98e3e1Schristos     }
10754e98e3e1Schristos #endif
10764e98e3e1Schristos #undef FLD
10774e98e3e1Schristos     return idesc;
10784e98e3e1Schristos   }
10794e98e3e1Schristos 
10804e98e3e1Schristos  extract_sfmt_bl8:
10814e98e3e1Schristos   {
10824e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
10834e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
10844e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_bl8.f
10854e98e3e1Schristos     SI f_disp8;
10864e98e3e1Schristos 
1087*05fa0856Schristos     f_disp8 = ((((EXTRACT_MSB0_SINT (insn, 16, 8, 8)) * (4))) + (((pc) & (-4))));
10884e98e3e1Schristos 
10894e98e3e1Schristos   /* Record the fields for the semantic handler.  */
10904e98e3e1Schristos   FLD (i_disp8) = f_disp8;
1091212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bl8", "disp8 0x%x", 'x', f_disp8, (char *) 0));
10924e98e3e1Schristos 
10934e98e3e1Schristos #if WITH_PROFILE_MODEL_P
10944e98e3e1Schristos   /* Record the fields for profiling.  */
10954e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
10964e98e3e1Schristos     {
10974e98e3e1Schristos       FLD (out_h_gr_SI_14) = 14;
10984e98e3e1Schristos     }
10994e98e3e1Schristos #endif
11004e98e3e1Schristos #undef FLD
11014e98e3e1Schristos     return idesc;
11024e98e3e1Schristos   }
11034e98e3e1Schristos 
11044e98e3e1Schristos  extract_sfmt_bl24:
11054e98e3e1Schristos   {
11064e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
11074e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
11084e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_bl24.f
11094e98e3e1Schristos     SI f_disp24;
11104e98e3e1Schristos 
1111*05fa0856Schristos     f_disp24 = ((((EXTRACT_MSB0_SINT (insn, 32, 8, 24)) * (4))) + (pc));
11124e98e3e1Schristos 
11134e98e3e1Schristos   /* Record the fields for the semantic handler.  */
11144e98e3e1Schristos   FLD (i_disp24) = f_disp24;
1115212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bl24", "disp24 0x%x", 'x', f_disp24, (char *) 0));
11164e98e3e1Schristos 
11174e98e3e1Schristos #if WITH_PROFILE_MODEL_P
11184e98e3e1Schristos   /* Record the fields for profiling.  */
11194e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
11204e98e3e1Schristos     {
11214e98e3e1Schristos       FLD (out_h_gr_SI_14) = 14;
11224e98e3e1Schristos     }
11234e98e3e1Schristos #endif
11244e98e3e1Schristos #undef FLD
11254e98e3e1Schristos     return idesc;
11264e98e3e1Schristos   }
11274e98e3e1Schristos 
11284e98e3e1Schristos  extract_sfmt_bcl8:
11294e98e3e1Schristos   {
11304e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
11314e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
11324e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_bl8.f
11334e98e3e1Schristos     SI f_disp8;
11344e98e3e1Schristos 
1135*05fa0856Schristos     f_disp8 = ((((EXTRACT_MSB0_SINT (insn, 16, 8, 8)) * (4))) + (((pc) & (-4))));
11364e98e3e1Schristos 
11374e98e3e1Schristos   /* Record the fields for the semantic handler.  */
11384e98e3e1Schristos   FLD (i_disp8) = f_disp8;
1139212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bcl8", "disp8 0x%x", 'x', f_disp8, (char *) 0));
11404e98e3e1Schristos 
11414e98e3e1Schristos #if WITH_PROFILE_MODEL_P
11424e98e3e1Schristos   /* Record the fields for profiling.  */
11434e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
11444e98e3e1Schristos     {
11454e98e3e1Schristos       FLD (out_h_gr_SI_14) = 14;
11464e98e3e1Schristos     }
11474e98e3e1Schristos #endif
11484e98e3e1Schristos #undef FLD
11494e98e3e1Schristos     return idesc;
11504e98e3e1Schristos   }
11514e98e3e1Schristos 
11524e98e3e1Schristos  extract_sfmt_bcl24:
11534e98e3e1Schristos   {
11544e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
11554e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
11564e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_bl24.f
11574e98e3e1Schristos     SI f_disp24;
11584e98e3e1Schristos 
1159*05fa0856Schristos     f_disp24 = ((((EXTRACT_MSB0_SINT (insn, 32, 8, 24)) * (4))) + (pc));
11604e98e3e1Schristos 
11614e98e3e1Schristos   /* Record the fields for the semantic handler.  */
11624e98e3e1Schristos   FLD (i_disp24) = f_disp24;
1163212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bcl24", "disp24 0x%x", 'x', f_disp24, (char *) 0));
11644e98e3e1Schristos 
11654e98e3e1Schristos #if WITH_PROFILE_MODEL_P
11664e98e3e1Schristos   /* Record the fields for profiling.  */
11674e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
11684e98e3e1Schristos     {
11694e98e3e1Schristos       FLD (out_h_gr_SI_14) = 14;
11704e98e3e1Schristos     }
11714e98e3e1Schristos #endif
11724e98e3e1Schristos #undef FLD
11734e98e3e1Schristos     return idesc;
11744e98e3e1Schristos   }
11754e98e3e1Schristos 
11764e98e3e1Schristos  extract_sfmt_bra8:
11774e98e3e1Schristos   {
11784e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
11794e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
11804e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_bl8.f
11814e98e3e1Schristos     SI f_disp8;
11824e98e3e1Schristos 
1183*05fa0856Schristos     f_disp8 = ((((EXTRACT_MSB0_SINT (insn, 16, 8, 8)) * (4))) + (((pc) & (-4))));
11844e98e3e1Schristos 
11854e98e3e1Schristos   /* Record the fields for the semantic handler.  */
11864e98e3e1Schristos   FLD (i_disp8) = f_disp8;
1187212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bra8", "disp8 0x%x", 'x', f_disp8, (char *) 0));
11884e98e3e1Schristos 
11894e98e3e1Schristos #if WITH_PROFILE_MODEL_P
11904e98e3e1Schristos   /* Record the fields for profiling.  */
11914e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
11924e98e3e1Schristos     {
11934e98e3e1Schristos     }
11944e98e3e1Schristos #endif
11954e98e3e1Schristos #undef FLD
11964e98e3e1Schristos     return idesc;
11974e98e3e1Schristos   }
11984e98e3e1Schristos 
11994e98e3e1Schristos  extract_sfmt_bra24:
12004e98e3e1Schristos   {
12014e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
12024e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
12034e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_bl24.f
12044e98e3e1Schristos     SI f_disp24;
12054e98e3e1Schristos 
1206*05fa0856Schristos     f_disp24 = ((((EXTRACT_MSB0_SINT (insn, 32, 8, 24)) * (4))) + (pc));
12074e98e3e1Schristos 
12084e98e3e1Schristos   /* Record the fields for the semantic handler.  */
12094e98e3e1Schristos   FLD (i_disp24) = f_disp24;
1210212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bra24", "disp24 0x%x", 'x', f_disp24, (char *) 0));
12114e98e3e1Schristos 
12124e98e3e1Schristos #if WITH_PROFILE_MODEL_P
12134e98e3e1Schristos   /* Record the fields for profiling.  */
12144e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
12154e98e3e1Schristos     {
12164e98e3e1Schristos     }
12174e98e3e1Schristos #endif
12184e98e3e1Schristos #undef FLD
12194e98e3e1Schristos     return idesc;
12204e98e3e1Schristos   }
12214e98e3e1Schristos 
12224e98e3e1Schristos  extract_sfmt_cmp:
12234e98e3e1Schristos   {
12244e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
12254e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
12264e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f
12274e98e3e1Schristos     UINT f_r1;
12284e98e3e1Schristos     UINT f_r2;
12294e98e3e1Schristos 
12304e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
12314e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
12324e98e3e1Schristos 
12334e98e3e1Schristos   /* Record the fields for the semantic handler.  */
12344e98e3e1Schristos   FLD (f_r1) = f_r1;
12354e98e3e1Schristos   FLD (f_r2) = f_r2;
12364e98e3e1Schristos   FLD (i_src1) = & CPU (h_gr)[f_r1];
12374e98e3e1Schristos   FLD (i_src2) = & CPU (h_gr)[f_r2];
1238212397c6Schristos   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));
12394e98e3e1Schristos 
12404e98e3e1Schristos #if WITH_PROFILE_MODEL_P
12414e98e3e1Schristos   /* Record the fields for profiling.  */
12424e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
12434e98e3e1Schristos     {
12444e98e3e1Schristos       FLD (in_src1) = f_r1;
12454e98e3e1Schristos       FLD (in_src2) = f_r2;
12464e98e3e1Schristos     }
12474e98e3e1Schristos #endif
12484e98e3e1Schristos #undef FLD
12494e98e3e1Schristos     return idesc;
12504e98e3e1Schristos   }
12514e98e3e1Schristos 
12524e98e3e1Schristos  extract_sfmt_cmpi:
12534e98e3e1Schristos   {
12544e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
12554e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
12564e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_d.f
12574e98e3e1Schristos     UINT f_r2;
12584e98e3e1Schristos     INT f_simm16;
12594e98e3e1Schristos 
12604e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
12614e98e3e1Schristos     f_simm16 = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
12624e98e3e1Schristos 
12634e98e3e1Schristos   /* Record the fields for the semantic handler.  */
12644e98e3e1Schristos   FLD (f_simm16) = f_simm16;
12654e98e3e1Schristos   FLD (f_r2) = f_r2;
12664e98e3e1Schristos   FLD (i_src2) = & CPU (h_gr)[f_r2];
1267212397c6Schristos   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));
12684e98e3e1Schristos 
12694e98e3e1Schristos #if WITH_PROFILE_MODEL_P
12704e98e3e1Schristos   /* Record the fields for profiling.  */
12714e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
12724e98e3e1Schristos     {
12734e98e3e1Schristos       FLD (in_src2) = f_r2;
12744e98e3e1Schristos     }
12754e98e3e1Schristos #endif
12764e98e3e1Schristos #undef FLD
12774e98e3e1Schristos     return idesc;
12784e98e3e1Schristos   }
12794e98e3e1Schristos 
12804e98e3e1Schristos  extract_sfmt_cmpz:
12814e98e3e1Schristos   {
12824e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
12834e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
12844e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f
12854e98e3e1Schristos     UINT f_r2;
12864e98e3e1Schristos 
12874e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
12884e98e3e1Schristos 
12894e98e3e1Schristos   /* Record the fields for the semantic handler.  */
12904e98e3e1Schristos   FLD (f_r2) = f_r2;
12914e98e3e1Schristos   FLD (i_src2) = & CPU (h_gr)[f_r2];
1292212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_cmpz", "f_r2 0x%x", 'x', f_r2, "src2 0x%x", 'x', f_r2, (char *) 0));
12934e98e3e1Schristos 
12944e98e3e1Schristos #if WITH_PROFILE_MODEL_P
12954e98e3e1Schristos   /* Record the fields for profiling.  */
12964e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
12974e98e3e1Schristos     {
12984e98e3e1Schristos       FLD (in_src2) = f_r2;
12994e98e3e1Schristos     }
13004e98e3e1Schristos #endif
13014e98e3e1Schristos #undef FLD
13024e98e3e1Schristos     return idesc;
13034e98e3e1Schristos   }
13044e98e3e1Schristos 
13054e98e3e1Schristos  extract_sfmt_div:
13064e98e3e1Schristos   {
13074e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
13084e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
13094e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add.f
13104e98e3e1Schristos     UINT f_r1;
13114e98e3e1Schristos     UINT f_r2;
13124e98e3e1Schristos 
13134e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
13144e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
13154e98e3e1Schristos 
13164e98e3e1Schristos   /* Record the fields for the semantic handler.  */
13174e98e3e1Schristos   FLD (f_r1) = f_r1;
13184e98e3e1Schristos   FLD (f_r2) = f_r2;
13194e98e3e1Schristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
13204e98e3e1Schristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
1321212397c6Schristos   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));
13224e98e3e1Schristos 
13234e98e3e1Schristos #if WITH_PROFILE_MODEL_P
13244e98e3e1Schristos   /* Record the fields for profiling.  */
13254e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
13264e98e3e1Schristos     {
13274e98e3e1Schristos       FLD (in_dr) = f_r1;
13284e98e3e1Schristos       FLD (in_sr) = f_r2;
13294e98e3e1Schristos       FLD (out_dr) = f_r1;
13304e98e3e1Schristos     }
13314e98e3e1Schristos #endif
13324e98e3e1Schristos #undef FLD
13334e98e3e1Schristos     return idesc;
13344e98e3e1Schristos   }
13354e98e3e1Schristos 
13364e98e3e1Schristos  extract_sfmt_jc:
13374e98e3e1Schristos   {
13384e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
13394e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
13404e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_jl.f
13414e98e3e1Schristos     UINT f_r2;
13424e98e3e1Schristos 
13434e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
13444e98e3e1Schristos 
13454e98e3e1Schristos   /* Record the fields for the semantic handler.  */
13464e98e3e1Schristos   FLD (f_r2) = f_r2;
13474e98e3e1Schristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
1348212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_jc", "f_r2 0x%x", 'x', f_r2, "sr 0x%x", 'x', f_r2, (char *) 0));
13494e98e3e1Schristos 
13504e98e3e1Schristos #if WITH_PROFILE_MODEL_P
13514e98e3e1Schristos   /* Record the fields for profiling.  */
13524e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
13534e98e3e1Schristos     {
13544e98e3e1Schristos       FLD (in_sr) = f_r2;
13554e98e3e1Schristos     }
13564e98e3e1Schristos #endif
13574e98e3e1Schristos #undef FLD
13584e98e3e1Schristos     return idesc;
13594e98e3e1Schristos   }
13604e98e3e1Schristos 
13614e98e3e1Schristos  extract_sfmt_jl:
13624e98e3e1Schristos   {
13634e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
13644e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
13654e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_jl.f
13664e98e3e1Schristos     UINT f_r2;
13674e98e3e1Schristos 
13684e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
13694e98e3e1Schristos 
13704e98e3e1Schristos   /* Record the fields for the semantic handler.  */
13714e98e3e1Schristos   FLD (f_r2) = f_r2;
13724e98e3e1Schristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
1373212397c6Schristos   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));
13744e98e3e1Schristos 
13754e98e3e1Schristos #if WITH_PROFILE_MODEL_P
13764e98e3e1Schristos   /* Record the fields for profiling.  */
13774e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
13784e98e3e1Schristos     {
13794e98e3e1Schristos       FLD (in_sr) = f_r2;
13804e98e3e1Schristos       FLD (out_h_gr_SI_14) = 14;
13814e98e3e1Schristos     }
13824e98e3e1Schristos #endif
13834e98e3e1Schristos #undef FLD
13844e98e3e1Schristos     return idesc;
13854e98e3e1Schristos   }
13864e98e3e1Schristos 
13874e98e3e1Schristos  extract_sfmt_jmp:
13884e98e3e1Schristos   {
13894e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
13904e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
13914e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_jl.f
13924e98e3e1Schristos     UINT f_r2;
13934e98e3e1Schristos 
13944e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
13954e98e3e1Schristos 
13964e98e3e1Schristos   /* Record the fields for the semantic handler.  */
13974e98e3e1Schristos   FLD (f_r2) = f_r2;
13984e98e3e1Schristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
1399212397c6Schristos   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));
14004e98e3e1Schristos 
14014e98e3e1Schristos #if WITH_PROFILE_MODEL_P
14024e98e3e1Schristos   /* Record the fields for profiling.  */
14034e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
14044e98e3e1Schristos     {
14054e98e3e1Schristos       FLD (in_sr) = f_r2;
14064e98e3e1Schristos     }
14074e98e3e1Schristos #endif
14084e98e3e1Schristos #undef FLD
14094e98e3e1Schristos     return idesc;
14104e98e3e1Schristos   }
14114e98e3e1Schristos 
14124e98e3e1Schristos  extract_sfmt_ld:
14134e98e3e1Schristos   {
14144e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
14154e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
14164e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f
14174e98e3e1Schristos     UINT f_r1;
14184e98e3e1Schristos     UINT f_r2;
14194e98e3e1Schristos 
14204e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
14214e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
14224e98e3e1Schristos 
14234e98e3e1Schristos   /* Record the fields for the semantic handler.  */
14244e98e3e1Schristos   FLD (f_r2) = f_r2;
14254e98e3e1Schristos   FLD (f_r1) = f_r1;
14264e98e3e1Schristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
14274e98e3e1Schristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
1428212397c6Schristos   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));
14294e98e3e1Schristos 
14304e98e3e1Schristos #if WITH_PROFILE_MODEL_P
14314e98e3e1Schristos   /* Record the fields for profiling.  */
14324e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
14334e98e3e1Schristos     {
14344e98e3e1Schristos       FLD (in_sr) = f_r2;
14354e98e3e1Schristos       FLD (out_dr) = f_r1;
14364e98e3e1Schristos     }
14374e98e3e1Schristos #endif
14384e98e3e1Schristos #undef FLD
14394e98e3e1Schristos     return idesc;
14404e98e3e1Schristos   }
14414e98e3e1Schristos 
14424e98e3e1Schristos  extract_sfmt_ld_d:
14434e98e3e1Schristos   {
14444e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
14454e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
14464e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add3.f
14474e98e3e1Schristos     UINT f_r1;
14484e98e3e1Schristos     UINT f_r2;
14494e98e3e1Schristos     INT f_simm16;
14504e98e3e1Schristos 
14514e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
14524e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
14534e98e3e1Schristos     f_simm16 = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
14544e98e3e1Schristos 
14554e98e3e1Schristos   /* Record the fields for the semantic handler.  */
14564e98e3e1Schristos   FLD (f_simm16) = f_simm16;
14574e98e3e1Schristos   FLD (f_r2) = f_r2;
14584e98e3e1Schristos   FLD (f_r1) = f_r1;
14594e98e3e1Schristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
14604e98e3e1Schristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
1461212397c6Schristos   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));
14624e98e3e1Schristos 
14634e98e3e1Schristos #if WITH_PROFILE_MODEL_P
14644e98e3e1Schristos   /* Record the fields for profiling.  */
14654e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
14664e98e3e1Schristos     {
14674e98e3e1Schristos       FLD (in_sr) = f_r2;
14684e98e3e1Schristos       FLD (out_dr) = f_r1;
14694e98e3e1Schristos     }
14704e98e3e1Schristos #endif
14714e98e3e1Schristos #undef FLD
14724e98e3e1Schristos     return idesc;
14734e98e3e1Schristos   }
14744e98e3e1Schristos 
14754e98e3e1Schristos  extract_sfmt_ldb:
14764e98e3e1Schristos   {
14774e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
14784e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
14794e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f
14804e98e3e1Schristos     UINT f_r1;
14814e98e3e1Schristos     UINT f_r2;
14824e98e3e1Schristos 
14834e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
14844e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
14854e98e3e1Schristos 
14864e98e3e1Schristos   /* Record the fields for the semantic handler.  */
14874e98e3e1Schristos   FLD (f_r2) = f_r2;
14884e98e3e1Schristos   FLD (f_r1) = f_r1;
14894e98e3e1Schristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
14904e98e3e1Schristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
1491212397c6Schristos   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));
14924e98e3e1Schristos 
14934e98e3e1Schristos #if WITH_PROFILE_MODEL_P
14944e98e3e1Schristos   /* Record the fields for profiling.  */
14954e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
14964e98e3e1Schristos     {
14974e98e3e1Schristos       FLD (in_sr) = f_r2;
14984e98e3e1Schristos       FLD (out_dr) = f_r1;
14994e98e3e1Schristos     }
15004e98e3e1Schristos #endif
15014e98e3e1Schristos #undef FLD
15024e98e3e1Schristos     return idesc;
15034e98e3e1Schristos   }
15044e98e3e1Schristos 
15054e98e3e1Schristos  extract_sfmt_ldb_d:
15064e98e3e1Schristos   {
15074e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
15084e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
15094e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add3.f
15104e98e3e1Schristos     UINT f_r1;
15114e98e3e1Schristos     UINT f_r2;
15124e98e3e1Schristos     INT f_simm16;
15134e98e3e1Schristos 
15144e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
15154e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
15164e98e3e1Schristos     f_simm16 = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
15174e98e3e1Schristos 
15184e98e3e1Schristos   /* Record the fields for the semantic handler.  */
15194e98e3e1Schristos   FLD (f_simm16) = f_simm16;
15204e98e3e1Schristos   FLD (f_r2) = f_r2;
15214e98e3e1Schristos   FLD (f_r1) = f_r1;
15224e98e3e1Schristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
15234e98e3e1Schristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
1524212397c6Schristos   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));
15254e98e3e1Schristos 
15264e98e3e1Schristos #if WITH_PROFILE_MODEL_P
15274e98e3e1Schristos   /* Record the fields for profiling.  */
15284e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
15294e98e3e1Schristos     {
15304e98e3e1Schristos       FLD (in_sr) = f_r2;
15314e98e3e1Schristos       FLD (out_dr) = f_r1;
15324e98e3e1Schristos     }
15334e98e3e1Schristos #endif
15344e98e3e1Schristos #undef FLD
15354e98e3e1Schristos     return idesc;
15364e98e3e1Schristos   }
15374e98e3e1Schristos 
15384e98e3e1Schristos  extract_sfmt_ldh:
15394e98e3e1Schristos   {
15404e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
15414e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
15424e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f
15434e98e3e1Schristos     UINT f_r1;
15444e98e3e1Schristos     UINT f_r2;
15454e98e3e1Schristos 
15464e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
15474e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
15484e98e3e1Schristos 
15494e98e3e1Schristos   /* Record the fields for the semantic handler.  */
15504e98e3e1Schristos   FLD (f_r2) = f_r2;
15514e98e3e1Schristos   FLD (f_r1) = f_r1;
15524e98e3e1Schristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
15534e98e3e1Schristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
1554212397c6Schristos   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));
15554e98e3e1Schristos 
15564e98e3e1Schristos #if WITH_PROFILE_MODEL_P
15574e98e3e1Schristos   /* Record the fields for profiling.  */
15584e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
15594e98e3e1Schristos     {
15604e98e3e1Schristos       FLD (in_sr) = f_r2;
15614e98e3e1Schristos       FLD (out_dr) = f_r1;
15624e98e3e1Schristos     }
15634e98e3e1Schristos #endif
15644e98e3e1Schristos #undef FLD
15654e98e3e1Schristos     return idesc;
15664e98e3e1Schristos   }
15674e98e3e1Schristos 
15684e98e3e1Schristos  extract_sfmt_ldh_d:
15694e98e3e1Schristos   {
15704e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
15714e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
15724e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add3.f
15734e98e3e1Schristos     UINT f_r1;
15744e98e3e1Schristos     UINT f_r2;
15754e98e3e1Schristos     INT f_simm16;
15764e98e3e1Schristos 
15774e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
15784e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
15794e98e3e1Schristos     f_simm16 = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
15804e98e3e1Schristos 
15814e98e3e1Schristos   /* Record the fields for the semantic handler.  */
15824e98e3e1Schristos   FLD (f_simm16) = f_simm16;
15834e98e3e1Schristos   FLD (f_r2) = f_r2;
15844e98e3e1Schristos   FLD (f_r1) = f_r1;
15854e98e3e1Schristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
15864e98e3e1Schristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
1587212397c6Schristos   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));
15884e98e3e1Schristos 
15894e98e3e1Schristos #if WITH_PROFILE_MODEL_P
15904e98e3e1Schristos   /* Record the fields for profiling.  */
15914e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
15924e98e3e1Schristos     {
15934e98e3e1Schristos       FLD (in_sr) = f_r2;
15944e98e3e1Schristos       FLD (out_dr) = f_r1;
15954e98e3e1Schristos     }
15964e98e3e1Schristos #endif
15974e98e3e1Schristos #undef FLD
15984e98e3e1Schristos     return idesc;
15994e98e3e1Schristos   }
16004e98e3e1Schristos 
16014e98e3e1Schristos  extract_sfmt_ld_plus:
16024e98e3e1Schristos   {
16034e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
16044e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
16054e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f
16064e98e3e1Schristos     UINT f_r1;
16074e98e3e1Schristos     UINT f_r2;
16084e98e3e1Schristos 
16094e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
16104e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
16114e98e3e1Schristos 
16124e98e3e1Schristos   /* Record the fields for the semantic handler.  */
16134e98e3e1Schristos   FLD (f_r2) = f_r2;
16144e98e3e1Schristos   FLD (f_r1) = f_r1;
16154e98e3e1Schristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
16164e98e3e1Schristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
1617212397c6Schristos   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));
16184e98e3e1Schristos 
16194e98e3e1Schristos #if WITH_PROFILE_MODEL_P
16204e98e3e1Schristos   /* Record the fields for profiling.  */
16214e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
16224e98e3e1Schristos     {
16234e98e3e1Schristos       FLD (in_sr) = f_r2;
16244e98e3e1Schristos       FLD (out_dr) = f_r1;
16254e98e3e1Schristos       FLD (out_sr) = f_r2;
16264e98e3e1Schristos     }
16274e98e3e1Schristos #endif
16284e98e3e1Schristos #undef FLD
16294e98e3e1Schristos     return idesc;
16304e98e3e1Schristos   }
16314e98e3e1Schristos 
16324e98e3e1Schristos  extract_sfmt_ld24:
16334e98e3e1Schristos   {
16344e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
16354e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
16364e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld24.f
16374e98e3e1Schristos     UINT f_r1;
16384e98e3e1Schristos     UINT f_uimm24;
16394e98e3e1Schristos 
16404e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
16414e98e3e1Schristos     f_uimm24 = EXTRACT_MSB0_UINT (insn, 32, 8, 24);
16424e98e3e1Schristos 
16434e98e3e1Schristos   /* Record the fields for the semantic handler.  */
16444e98e3e1Schristos   FLD (f_r1) = f_r1;
16454e98e3e1Schristos   FLD (i_uimm24) = f_uimm24;
16464e98e3e1Schristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
1647212397c6Schristos   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));
16484e98e3e1Schristos 
16494e98e3e1Schristos #if WITH_PROFILE_MODEL_P
16504e98e3e1Schristos   /* Record the fields for profiling.  */
16514e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
16524e98e3e1Schristos     {
16534e98e3e1Schristos       FLD (out_dr) = f_r1;
16544e98e3e1Schristos     }
16554e98e3e1Schristos #endif
16564e98e3e1Schristos #undef FLD
16574e98e3e1Schristos     return idesc;
16584e98e3e1Schristos   }
16594e98e3e1Schristos 
16604e98e3e1Schristos  extract_sfmt_ldi8:
16614e98e3e1Schristos   {
16624e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
16634e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
16644e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_addi.f
16654e98e3e1Schristos     UINT f_r1;
16664e98e3e1Schristos     INT f_simm8;
16674e98e3e1Schristos 
16684e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
16694e98e3e1Schristos     f_simm8 = EXTRACT_MSB0_SINT (insn, 16, 8, 8);
16704e98e3e1Schristos 
16714e98e3e1Schristos   /* Record the fields for the semantic handler.  */
16724e98e3e1Schristos   FLD (f_simm8) = f_simm8;
16734e98e3e1Schristos   FLD (f_r1) = f_r1;
16744e98e3e1Schristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
1675212397c6Schristos   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));
16764e98e3e1Schristos 
16774e98e3e1Schristos #if WITH_PROFILE_MODEL_P
16784e98e3e1Schristos   /* Record the fields for profiling.  */
16794e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
16804e98e3e1Schristos     {
16814e98e3e1Schristos       FLD (out_dr) = f_r1;
16824e98e3e1Schristos     }
16834e98e3e1Schristos #endif
16844e98e3e1Schristos #undef FLD
16854e98e3e1Schristos     return idesc;
16864e98e3e1Schristos   }
16874e98e3e1Schristos 
16884e98e3e1Schristos  extract_sfmt_ldi16:
16894e98e3e1Schristos   {
16904e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
16914e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
16924e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add3.f
16934e98e3e1Schristos     UINT f_r1;
16944e98e3e1Schristos     INT f_simm16;
16954e98e3e1Schristos 
16964e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
16974e98e3e1Schristos     f_simm16 = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
16984e98e3e1Schristos 
16994e98e3e1Schristos   /* Record the fields for the semantic handler.  */
17004e98e3e1Schristos   FLD (f_simm16) = f_simm16;
17014e98e3e1Schristos   FLD (f_r1) = f_r1;
17024e98e3e1Schristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
1703212397c6Schristos   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));
17044e98e3e1Schristos 
17054e98e3e1Schristos #if WITH_PROFILE_MODEL_P
17064e98e3e1Schristos   /* Record the fields for profiling.  */
17074e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
17084e98e3e1Schristos     {
17094e98e3e1Schristos       FLD (out_dr) = f_r1;
17104e98e3e1Schristos     }
17114e98e3e1Schristos #endif
17124e98e3e1Schristos #undef FLD
17134e98e3e1Schristos     return idesc;
17144e98e3e1Schristos   }
17154e98e3e1Schristos 
17164e98e3e1Schristos  extract_sfmt_lock:
17174e98e3e1Schristos   {
17184e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
17194e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
17204e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f
17214e98e3e1Schristos     UINT f_r1;
17224e98e3e1Schristos     UINT f_r2;
17234e98e3e1Schristos 
17244e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
17254e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
17264e98e3e1Schristos 
17274e98e3e1Schristos   /* Record the fields for the semantic handler.  */
17284e98e3e1Schristos   FLD (f_r2) = f_r2;
17294e98e3e1Schristos   FLD (f_r1) = f_r1;
17304e98e3e1Schristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
17314e98e3e1Schristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
1732212397c6Schristos   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));
17334e98e3e1Schristos 
17344e98e3e1Schristos #if WITH_PROFILE_MODEL_P
17354e98e3e1Schristos   /* Record the fields for profiling.  */
17364e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
17374e98e3e1Schristos     {
17384e98e3e1Schristos       FLD (in_sr) = f_r2;
17394e98e3e1Schristos       FLD (out_dr) = f_r1;
17404e98e3e1Schristos     }
17414e98e3e1Schristos #endif
17424e98e3e1Schristos #undef FLD
17434e98e3e1Schristos     return idesc;
17444e98e3e1Schristos   }
17454e98e3e1Schristos 
17464e98e3e1Schristos  extract_sfmt_machi_a:
17474e98e3e1Schristos   {
17484e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
17494e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
17504e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_machi_a.f
17514e98e3e1Schristos     UINT f_r1;
17524e98e3e1Schristos     UINT f_acc;
17534e98e3e1Schristos     UINT f_r2;
17544e98e3e1Schristos 
17554e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
17564e98e3e1Schristos     f_acc = EXTRACT_MSB0_UINT (insn, 16, 8, 1);
17574e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
17584e98e3e1Schristos 
17594e98e3e1Schristos   /* Record the fields for the semantic handler.  */
17604e98e3e1Schristos   FLD (f_acc) = f_acc;
17614e98e3e1Schristos   FLD (f_r1) = f_r1;
17624e98e3e1Schristos   FLD (f_r2) = f_r2;
17634e98e3e1Schristos   FLD (i_src1) = & CPU (h_gr)[f_r1];
17644e98e3e1Schristos   FLD (i_src2) = & CPU (h_gr)[f_r2];
1765212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_machi_a", "f_acc 0x%x", 'x', f_acc, "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));
17664e98e3e1Schristos 
17674e98e3e1Schristos #if WITH_PROFILE_MODEL_P
17684e98e3e1Schristos   /* Record the fields for profiling.  */
17694e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
17704e98e3e1Schristos     {
17714e98e3e1Schristos       FLD (in_src1) = f_r1;
17724e98e3e1Schristos       FLD (in_src2) = f_r2;
17734e98e3e1Schristos     }
17744e98e3e1Schristos #endif
17754e98e3e1Schristos #undef FLD
17764e98e3e1Schristos     return idesc;
17774e98e3e1Schristos   }
17784e98e3e1Schristos 
17794e98e3e1Schristos  extract_sfmt_mulhi_a:
17804e98e3e1Schristos   {
17814e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
17824e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
17834e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_machi_a.f
17844e98e3e1Schristos     UINT f_r1;
17854e98e3e1Schristos     UINT f_acc;
17864e98e3e1Schristos     UINT f_r2;
17874e98e3e1Schristos 
17884e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
17894e98e3e1Schristos     f_acc = EXTRACT_MSB0_UINT (insn, 16, 8, 1);
17904e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
17914e98e3e1Schristos 
17924e98e3e1Schristos   /* Record the fields for the semantic handler.  */
17934e98e3e1Schristos   FLD (f_r1) = f_r1;
17944e98e3e1Schristos   FLD (f_r2) = f_r2;
17954e98e3e1Schristos   FLD (f_acc) = f_acc;
17964e98e3e1Schristos   FLD (i_src1) = & CPU (h_gr)[f_r1];
17974e98e3e1Schristos   FLD (i_src2) = & CPU (h_gr)[f_r2];
1798212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mulhi_a", "f_r1 0x%x", 'x', f_r1, "f_r2 0x%x", 'x', f_r2, "f_acc 0x%x", 'x', f_acc, "src1 0x%x", 'x', f_r1, "src2 0x%x", 'x', f_r2, (char *) 0));
17994e98e3e1Schristos 
18004e98e3e1Schristos #if WITH_PROFILE_MODEL_P
18014e98e3e1Schristos   /* Record the fields for profiling.  */
18024e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
18034e98e3e1Schristos     {
18044e98e3e1Schristos       FLD (in_src1) = f_r1;
18054e98e3e1Schristos       FLD (in_src2) = f_r2;
18064e98e3e1Schristos     }
18074e98e3e1Schristos #endif
18084e98e3e1Schristos #undef FLD
18094e98e3e1Schristos     return idesc;
18104e98e3e1Schristos   }
18114e98e3e1Schristos 
18124e98e3e1Schristos  extract_sfmt_mv:
18134e98e3e1Schristos   {
18144e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
18154e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
18164e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f
18174e98e3e1Schristos     UINT f_r1;
18184e98e3e1Schristos     UINT f_r2;
18194e98e3e1Schristos 
18204e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
18214e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
18224e98e3e1Schristos 
18234e98e3e1Schristos   /* Record the fields for the semantic handler.  */
18244e98e3e1Schristos   FLD (f_r2) = f_r2;
18254e98e3e1Schristos   FLD (f_r1) = f_r1;
18264e98e3e1Schristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
18274e98e3e1Schristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
1828212397c6Schristos   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));
18294e98e3e1Schristos 
18304e98e3e1Schristos #if WITH_PROFILE_MODEL_P
18314e98e3e1Schristos   /* Record the fields for profiling.  */
18324e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
18334e98e3e1Schristos     {
18344e98e3e1Schristos       FLD (in_sr) = f_r2;
18354e98e3e1Schristos       FLD (out_dr) = f_r1;
18364e98e3e1Schristos     }
18374e98e3e1Schristos #endif
18384e98e3e1Schristos #undef FLD
18394e98e3e1Schristos     return idesc;
18404e98e3e1Schristos   }
18414e98e3e1Schristos 
18424e98e3e1Schristos  extract_sfmt_mvfachi_a:
18434e98e3e1Schristos   {
18444e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
18454e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
18464e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_mvfachi_a.f
18474e98e3e1Schristos     UINT f_r1;
18484e98e3e1Schristos     UINT f_accs;
18494e98e3e1Schristos 
18504e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
18514e98e3e1Schristos     f_accs = EXTRACT_MSB0_UINT (insn, 16, 12, 2);
18524e98e3e1Schristos 
18534e98e3e1Schristos   /* Record the fields for the semantic handler.  */
18544e98e3e1Schristos   FLD (f_accs) = f_accs;
18554e98e3e1Schristos   FLD (f_r1) = f_r1;
18564e98e3e1Schristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
1857212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mvfachi_a", "f_accs 0x%x", 'x', f_accs, "f_r1 0x%x", 'x', f_r1, "dr 0x%x", 'x', f_r1, (char *) 0));
18584e98e3e1Schristos 
18594e98e3e1Schristos #if WITH_PROFILE_MODEL_P
18604e98e3e1Schristos   /* Record the fields for profiling.  */
18614e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
18624e98e3e1Schristos     {
18634e98e3e1Schristos       FLD (out_dr) = f_r1;
18644e98e3e1Schristos     }
18654e98e3e1Schristos #endif
18664e98e3e1Schristos #undef FLD
18674e98e3e1Schristos     return idesc;
18684e98e3e1Schristos   }
18694e98e3e1Schristos 
18704e98e3e1Schristos  extract_sfmt_mvfc:
18714e98e3e1Schristos   {
18724e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
18734e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
18744e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f
18754e98e3e1Schristos     UINT f_r1;
18764e98e3e1Schristos     UINT f_r2;
18774e98e3e1Schristos 
18784e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
18794e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
18804e98e3e1Schristos 
18814e98e3e1Schristos   /* Record the fields for the semantic handler.  */
18824e98e3e1Schristos   FLD (f_r2) = f_r2;
18834e98e3e1Schristos   FLD (f_r1) = f_r1;
18844e98e3e1Schristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
1885212397c6Schristos   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));
18864e98e3e1Schristos 
18874e98e3e1Schristos #if WITH_PROFILE_MODEL_P
18884e98e3e1Schristos   /* Record the fields for profiling.  */
18894e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
18904e98e3e1Schristos     {
18914e98e3e1Schristos       FLD (out_dr) = f_r1;
18924e98e3e1Schristos     }
18934e98e3e1Schristos #endif
18944e98e3e1Schristos #undef FLD
18954e98e3e1Schristos     return idesc;
18964e98e3e1Schristos   }
18974e98e3e1Schristos 
18984e98e3e1Schristos  extract_sfmt_mvtachi_a:
18994e98e3e1Schristos   {
19004e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
19014e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
19024e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_mvtachi_a.f
19034e98e3e1Schristos     UINT f_r1;
19044e98e3e1Schristos     UINT f_accs;
19054e98e3e1Schristos 
19064e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
19074e98e3e1Schristos     f_accs = EXTRACT_MSB0_UINT (insn, 16, 12, 2);
19084e98e3e1Schristos 
19094e98e3e1Schristos   /* Record the fields for the semantic handler.  */
19104e98e3e1Schristos   FLD (f_accs) = f_accs;
19114e98e3e1Schristos   FLD (f_r1) = f_r1;
19124e98e3e1Schristos   FLD (i_src1) = & CPU (h_gr)[f_r1];
1913212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mvtachi_a", "f_accs 0x%x", 'x', f_accs, "f_r1 0x%x", 'x', f_r1, "src1 0x%x", 'x', f_r1, (char *) 0));
19144e98e3e1Schristos 
19154e98e3e1Schristos #if WITH_PROFILE_MODEL_P
19164e98e3e1Schristos   /* Record the fields for profiling.  */
19174e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
19184e98e3e1Schristos     {
19194e98e3e1Schristos       FLD (in_src1) = f_r1;
19204e98e3e1Schristos     }
19214e98e3e1Schristos #endif
19224e98e3e1Schristos #undef FLD
19234e98e3e1Schristos     return idesc;
19244e98e3e1Schristos   }
19254e98e3e1Schristos 
19264e98e3e1Schristos  extract_sfmt_mvtc:
19274e98e3e1Schristos   {
19284e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
19294e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
19304e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f
19314e98e3e1Schristos     UINT f_r1;
19324e98e3e1Schristos     UINT f_r2;
19334e98e3e1Schristos 
19344e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
19354e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
19364e98e3e1Schristos 
19374e98e3e1Schristos   /* Record the fields for the semantic handler.  */
19384e98e3e1Schristos   FLD (f_r2) = f_r2;
19394e98e3e1Schristos   FLD (f_r1) = f_r1;
19404e98e3e1Schristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
1941212397c6Schristos   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));
19424e98e3e1Schristos 
19434e98e3e1Schristos #if WITH_PROFILE_MODEL_P
19444e98e3e1Schristos   /* Record the fields for profiling.  */
19454e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
19464e98e3e1Schristos     {
19474e98e3e1Schristos       FLD (in_sr) = f_r2;
19484e98e3e1Schristos     }
19494e98e3e1Schristos #endif
19504e98e3e1Schristos #undef FLD
19514e98e3e1Schristos     return idesc;
19524e98e3e1Schristos   }
19534e98e3e1Schristos 
19544e98e3e1Schristos  extract_sfmt_nop:
19554e98e3e1Schristos   {
19564e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
19574e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_empty.f
19584e98e3e1Schristos 
19594e98e3e1Schristos 
19604e98e3e1Schristos   /* Record the fields for the semantic handler.  */
1961212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_nop", (char *) 0));
19624e98e3e1Schristos 
19634e98e3e1Schristos #undef FLD
19644e98e3e1Schristos     return idesc;
19654e98e3e1Schristos   }
19664e98e3e1Schristos 
19674e98e3e1Schristos  extract_sfmt_rac_dsi:
19684e98e3e1Schristos   {
19694e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
19704e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
19714e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_rac_dsi.f
19724e98e3e1Schristos     UINT f_accd;
19734e98e3e1Schristos     UINT f_accs;
19744e98e3e1Schristos     SI f_imm1;
19754e98e3e1Schristos 
19764e98e3e1Schristos     f_accd = EXTRACT_MSB0_UINT (insn, 16, 4, 2);
19774e98e3e1Schristos     f_accs = EXTRACT_MSB0_UINT (insn, 16, 12, 2);
19784e98e3e1Schristos     f_imm1 = ((EXTRACT_MSB0_UINT (insn, 16, 15, 1)) + (1));
19794e98e3e1Schristos 
19804e98e3e1Schristos   /* Record the fields for the semantic handler.  */
19814e98e3e1Schristos   FLD (f_accs) = f_accs;
19824e98e3e1Schristos   FLD (f_imm1) = f_imm1;
19834e98e3e1Schristos   FLD (f_accd) = f_accd;
1984212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_rac_dsi", "f_accs 0x%x", 'x', f_accs, "f_imm1 0x%x", 'x', f_imm1, "f_accd 0x%x", 'x', f_accd, (char *) 0));
19854e98e3e1Schristos 
19864e98e3e1Schristos #undef FLD
19874e98e3e1Schristos     return idesc;
19884e98e3e1Schristos   }
19894e98e3e1Schristos 
19904e98e3e1Schristos  extract_sfmt_rte:
19914e98e3e1Schristos   {
19924e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
19934e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_empty.f
19944e98e3e1Schristos 
19954e98e3e1Schristos 
19964e98e3e1Schristos   /* Record the fields for the semantic handler.  */
1997212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_rte", (char *) 0));
19984e98e3e1Schristos 
19994e98e3e1Schristos #if WITH_PROFILE_MODEL_P
20004e98e3e1Schristos   /* Record the fields for profiling.  */
20014e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
20024e98e3e1Schristos     {
20034e98e3e1Schristos     }
20044e98e3e1Schristos #endif
20054e98e3e1Schristos #undef FLD
20064e98e3e1Schristos     return idesc;
20074e98e3e1Schristos   }
20084e98e3e1Schristos 
20094e98e3e1Schristos  extract_sfmt_seth:
20104e98e3e1Schristos   {
20114e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
20124e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
20134e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_seth.f
20144e98e3e1Schristos     UINT f_r1;
20154e98e3e1Schristos     UINT f_hi16;
20164e98e3e1Schristos 
20174e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
20184e98e3e1Schristos     f_hi16 = EXTRACT_MSB0_UINT (insn, 32, 16, 16);
20194e98e3e1Schristos 
20204e98e3e1Schristos   /* Record the fields for the semantic handler.  */
20214e98e3e1Schristos   FLD (f_hi16) = f_hi16;
20224e98e3e1Schristos   FLD (f_r1) = f_r1;
20234e98e3e1Schristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
2024212397c6Schristos   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));
20254e98e3e1Schristos 
20264e98e3e1Schristos #if WITH_PROFILE_MODEL_P
20274e98e3e1Schristos   /* Record the fields for profiling.  */
20284e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
20294e98e3e1Schristos     {
20304e98e3e1Schristos       FLD (out_dr) = f_r1;
20314e98e3e1Schristos     }
20324e98e3e1Schristos #endif
20334e98e3e1Schristos #undef FLD
20344e98e3e1Schristos     return idesc;
20354e98e3e1Schristos   }
20364e98e3e1Schristos 
20374e98e3e1Schristos  extract_sfmt_sll3:
20384e98e3e1Schristos   {
20394e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
20404e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
20414e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_add3.f
20424e98e3e1Schristos     UINT f_r1;
20434e98e3e1Schristos     UINT f_r2;
20444e98e3e1Schristos     INT f_simm16;
20454e98e3e1Schristos 
20464e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
20474e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
20484e98e3e1Schristos     f_simm16 = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
20494e98e3e1Schristos 
20504e98e3e1Schristos   /* Record the fields for the semantic handler.  */
20514e98e3e1Schristos   FLD (f_simm16) = f_simm16;
20524e98e3e1Schristos   FLD (f_r2) = f_r2;
20534e98e3e1Schristos   FLD (f_r1) = f_r1;
20544e98e3e1Schristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
20554e98e3e1Schristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
2056212397c6Schristos   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));
20574e98e3e1Schristos 
20584e98e3e1Schristos #if WITH_PROFILE_MODEL_P
20594e98e3e1Schristos   /* Record the fields for profiling.  */
20604e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
20614e98e3e1Schristos     {
20624e98e3e1Schristos       FLD (in_sr) = f_r2;
20634e98e3e1Schristos       FLD (out_dr) = f_r1;
20644e98e3e1Schristos     }
20654e98e3e1Schristos #endif
20664e98e3e1Schristos #undef FLD
20674e98e3e1Schristos     return idesc;
20684e98e3e1Schristos   }
20694e98e3e1Schristos 
20704e98e3e1Schristos  extract_sfmt_slli:
20714e98e3e1Schristos   {
20724e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
20734e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
20744e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_slli.f
20754e98e3e1Schristos     UINT f_r1;
20764e98e3e1Schristos     UINT f_uimm5;
20774e98e3e1Schristos 
20784e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
20794e98e3e1Schristos     f_uimm5 = EXTRACT_MSB0_UINT (insn, 16, 11, 5);
20804e98e3e1Schristos 
20814e98e3e1Schristos   /* Record the fields for the semantic handler.  */
20824e98e3e1Schristos   FLD (f_r1) = f_r1;
20834e98e3e1Schristos   FLD (f_uimm5) = f_uimm5;
20844e98e3e1Schristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
2085212397c6Schristos   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));
20864e98e3e1Schristos 
20874e98e3e1Schristos #if WITH_PROFILE_MODEL_P
20884e98e3e1Schristos   /* Record the fields for profiling.  */
20894e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
20904e98e3e1Schristos     {
20914e98e3e1Schristos       FLD (in_dr) = f_r1;
20924e98e3e1Schristos       FLD (out_dr) = f_r1;
20934e98e3e1Schristos     }
20944e98e3e1Schristos #endif
20954e98e3e1Schristos #undef FLD
20964e98e3e1Schristos     return idesc;
20974e98e3e1Schristos   }
20984e98e3e1Schristos 
20994e98e3e1Schristos  extract_sfmt_st:
21004e98e3e1Schristos   {
21014e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
21024e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
21034e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f
21044e98e3e1Schristos     UINT f_r1;
21054e98e3e1Schristos     UINT f_r2;
21064e98e3e1Schristos 
21074e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
21084e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
21094e98e3e1Schristos 
21104e98e3e1Schristos   /* Record the fields for the semantic handler.  */
21114e98e3e1Schristos   FLD (f_r1) = f_r1;
21124e98e3e1Schristos   FLD (f_r2) = f_r2;
21134e98e3e1Schristos   FLD (i_src1) = & CPU (h_gr)[f_r1];
21144e98e3e1Schristos   FLD (i_src2) = & CPU (h_gr)[f_r2];
2115212397c6Schristos   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));
21164e98e3e1Schristos 
21174e98e3e1Schristos #if WITH_PROFILE_MODEL_P
21184e98e3e1Schristos   /* Record the fields for profiling.  */
21194e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
21204e98e3e1Schristos     {
21214e98e3e1Schristos       FLD (in_src1) = f_r1;
21224e98e3e1Schristos       FLD (in_src2) = f_r2;
21234e98e3e1Schristos     }
21244e98e3e1Schristos #endif
21254e98e3e1Schristos #undef FLD
21264e98e3e1Schristos     return idesc;
21274e98e3e1Schristos   }
21284e98e3e1Schristos 
21294e98e3e1Schristos  extract_sfmt_st_d:
21304e98e3e1Schristos   {
21314e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
21324e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
21334e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_d.f
21344e98e3e1Schristos     UINT f_r1;
21354e98e3e1Schristos     UINT f_r2;
21364e98e3e1Schristos     INT f_simm16;
21374e98e3e1Schristos 
21384e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
21394e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
21404e98e3e1Schristos     f_simm16 = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
21414e98e3e1Schristos 
21424e98e3e1Schristos   /* Record the fields for the semantic handler.  */
21434e98e3e1Schristos   FLD (f_simm16) = f_simm16;
21444e98e3e1Schristos   FLD (f_r1) = f_r1;
21454e98e3e1Schristos   FLD (f_r2) = f_r2;
21464e98e3e1Schristos   FLD (i_src1) = & CPU (h_gr)[f_r1];
21474e98e3e1Schristos   FLD (i_src2) = & CPU (h_gr)[f_r2];
2148212397c6Schristos   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));
21494e98e3e1Schristos 
21504e98e3e1Schristos #if WITH_PROFILE_MODEL_P
21514e98e3e1Schristos   /* Record the fields for profiling.  */
21524e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
21534e98e3e1Schristos     {
21544e98e3e1Schristos       FLD (in_src1) = f_r1;
21554e98e3e1Schristos       FLD (in_src2) = f_r2;
21564e98e3e1Schristos     }
21574e98e3e1Schristos #endif
21584e98e3e1Schristos #undef FLD
21594e98e3e1Schristos     return idesc;
21604e98e3e1Schristos   }
21614e98e3e1Schristos 
21624e98e3e1Schristos  extract_sfmt_stb:
21634e98e3e1Schristos   {
21644e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
21654e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
21664e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f
21674e98e3e1Schristos     UINT f_r1;
21684e98e3e1Schristos     UINT f_r2;
21694e98e3e1Schristos 
21704e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
21714e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
21724e98e3e1Schristos 
21734e98e3e1Schristos   /* Record the fields for the semantic handler.  */
21744e98e3e1Schristos   FLD (f_r1) = f_r1;
21754e98e3e1Schristos   FLD (f_r2) = f_r2;
21764e98e3e1Schristos   FLD (i_src1) = & CPU (h_gr)[f_r1];
21774e98e3e1Schristos   FLD (i_src2) = & CPU (h_gr)[f_r2];
2178212397c6Schristos   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));
21794e98e3e1Schristos 
21804e98e3e1Schristos #if WITH_PROFILE_MODEL_P
21814e98e3e1Schristos   /* Record the fields for profiling.  */
21824e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
21834e98e3e1Schristos     {
21844e98e3e1Schristos       FLD (in_src1) = f_r1;
21854e98e3e1Schristos       FLD (in_src2) = f_r2;
21864e98e3e1Schristos     }
21874e98e3e1Schristos #endif
21884e98e3e1Schristos #undef FLD
21894e98e3e1Schristos     return idesc;
21904e98e3e1Schristos   }
21914e98e3e1Schristos 
21924e98e3e1Schristos  extract_sfmt_stb_d:
21934e98e3e1Schristos   {
21944e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
21954e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
21964e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_d.f
21974e98e3e1Schristos     UINT f_r1;
21984e98e3e1Schristos     UINT f_r2;
21994e98e3e1Schristos     INT f_simm16;
22004e98e3e1Schristos 
22014e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
22024e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
22034e98e3e1Schristos     f_simm16 = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
22044e98e3e1Schristos 
22054e98e3e1Schristos   /* Record the fields for the semantic handler.  */
22064e98e3e1Schristos   FLD (f_simm16) = f_simm16;
22074e98e3e1Schristos   FLD (f_r1) = f_r1;
22084e98e3e1Schristos   FLD (f_r2) = f_r2;
22094e98e3e1Schristos   FLD (i_src1) = & CPU (h_gr)[f_r1];
22104e98e3e1Schristos   FLD (i_src2) = & CPU (h_gr)[f_r2];
2211212397c6Schristos   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));
22124e98e3e1Schristos 
22134e98e3e1Schristos #if WITH_PROFILE_MODEL_P
22144e98e3e1Schristos   /* Record the fields for profiling.  */
22154e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
22164e98e3e1Schristos     {
22174e98e3e1Schristos       FLD (in_src1) = f_r1;
22184e98e3e1Schristos       FLD (in_src2) = f_r2;
22194e98e3e1Schristos     }
22204e98e3e1Schristos #endif
22214e98e3e1Schristos #undef FLD
22224e98e3e1Schristos     return idesc;
22234e98e3e1Schristos   }
22244e98e3e1Schristos 
22254e98e3e1Schristos  extract_sfmt_sth:
22264e98e3e1Schristos   {
22274e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
22284e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
22294e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f
22304e98e3e1Schristos     UINT f_r1;
22314e98e3e1Schristos     UINT f_r2;
22324e98e3e1Schristos 
22334e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
22344e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
22354e98e3e1Schristos 
22364e98e3e1Schristos   /* Record the fields for the semantic handler.  */
22374e98e3e1Schristos   FLD (f_r1) = f_r1;
22384e98e3e1Schristos   FLD (f_r2) = f_r2;
22394e98e3e1Schristos   FLD (i_src1) = & CPU (h_gr)[f_r1];
22404e98e3e1Schristos   FLD (i_src2) = & CPU (h_gr)[f_r2];
2241212397c6Schristos   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));
22424e98e3e1Schristos 
22434e98e3e1Schristos #if WITH_PROFILE_MODEL_P
22444e98e3e1Schristos   /* Record the fields for profiling.  */
22454e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
22464e98e3e1Schristos     {
22474e98e3e1Schristos       FLD (in_src1) = f_r1;
22484e98e3e1Schristos       FLD (in_src2) = f_r2;
22494e98e3e1Schristos     }
22504e98e3e1Schristos #endif
22514e98e3e1Schristos #undef FLD
22524e98e3e1Schristos     return idesc;
22534e98e3e1Schristos   }
22544e98e3e1Schristos 
22554e98e3e1Schristos  extract_sfmt_sth_d:
22564e98e3e1Schristos   {
22574e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
22584e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
22594e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_d.f
22604e98e3e1Schristos     UINT f_r1;
22614e98e3e1Schristos     UINT f_r2;
22624e98e3e1Schristos     INT f_simm16;
22634e98e3e1Schristos 
22644e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
22654e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
22664e98e3e1Schristos     f_simm16 = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
22674e98e3e1Schristos 
22684e98e3e1Schristos   /* Record the fields for the semantic handler.  */
22694e98e3e1Schristos   FLD (f_simm16) = f_simm16;
22704e98e3e1Schristos   FLD (f_r1) = f_r1;
22714e98e3e1Schristos   FLD (f_r2) = f_r2;
22724e98e3e1Schristos   FLD (i_src1) = & CPU (h_gr)[f_r1];
22734e98e3e1Schristos   FLD (i_src2) = & CPU (h_gr)[f_r2];
2274212397c6Schristos   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));
22754e98e3e1Schristos 
22764e98e3e1Schristos #if WITH_PROFILE_MODEL_P
22774e98e3e1Schristos   /* Record the fields for profiling.  */
22784e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
22794e98e3e1Schristos     {
22804e98e3e1Schristos       FLD (in_src1) = f_r1;
22814e98e3e1Schristos       FLD (in_src2) = f_r2;
22824e98e3e1Schristos     }
22834e98e3e1Schristos #endif
22844e98e3e1Schristos #undef FLD
22854e98e3e1Schristos     return idesc;
22864e98e3e1Schristos   }
22874e98e3e1Schristos 
22884e98e3e1Schristos  extract_sfmt_st_plus:
22894e98e3e1Schristos   {
22904e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
22914e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
22924e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f
22934e98e3e1Schristos     UINT f_r1;
22944e98e3e1Schristos     UINT f_r2;
22954e98e3e1Schristos 
22964e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
22974e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
22984e98e3e1Schristos 
22994e98e3e1Schristos   /* Record the fields for the semantic handler.  */
23004e98e3e1Schristos   FLD (f_r1) = f_r1;
23014e98e3e1Schristos   FLD (f_r2) = f_r2;
23024e98e3e1Schristos   FLD (i_src1) = & CPU (h_gr)[f_r1];
23034e98e3e1Schristos   FLD (i_src2) = & CPU (h_gr)[f_r2];
2304212397c6Schristos   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));
23054e98e3e1Schristos 
23064e98e3e1Schristos #if WITH_PROFILE_MODEL_P
23074e98e3e1Schristos   /* Record the fields for profiling.  */
23084e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
23094e98e3e1Schristos     {
23104e98e3e1Schristos       FLD (in_src1) = f_r1;
23114e98e3e1Schristos       FLD (in_src2) = f_r2;
23124e98e3e1Schristos       FLD (out_src2) = f_r2;
23134e98e3e1Schristos     }
23144e98e3e1Schristos #endif
23154e98e3e1Schristos #undef FLD
23164e98e3e1Schristos     return idesc;
23174e98e3e1Schristos   }
23184e98e3e1Schristos 
23194e98e3e1Schristos  extract_sfmt_sth_plus:
23204e98e3e1Schristos   {
23214e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
23224e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
23234e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f
23244e98e3e1Schristos     UINT f_r1;
23254e98e3e1Schristos     UINT f_r2;
23264e98e3e1Schristos 
23274e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
23284e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
23294e98e3e1Schristos 
23304e98e3e1Schristos   /* Record the fields for the semantic handler.  */
23314e98e3e1Schristos   FLD (f_r1) = f_r1;
23324e98e3e1Schristos   FLD (f_r2) = f_r2;
23334e98e3e1Schristos   FLD (i_src1) = & CPU (h_gr)[f_r1];
23344e98e3e1Schristos   FLD (i_src2) = & CPU (h_gr)[f_r2];
2335212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_sth_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));
23364e98e3e1Schristos 
23374e98e3e1Schristos #if WITH_PROFILE_MODEL_P
23384e98e3e1Schristos   /* Record the fields for profiling.  */
23394e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
23404e98e3e1Schristos     {
23414e98e3e1Schristos       FLD (in_src1) = f_r1;
23424e98e3e1Schristos       FLD (in_src2) = f_r2;
23434e98e3e1Schristos       FLD (out_src2) = f_r2;
23444e98e3e1Schristos     }
23454e98e3e1Schristos #endif
23464e98e3e1Schristos #undef FLD
23474e98e3e1Schristos     return idesc;
23484e98e3e1Schristos   }
23494e98e3e1Schristos 
23504e98e3e1Schristos  extract_sfmt_stb_plus:
23514e98e3e1Schristos   {
23524e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
23534e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
23544e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f
23554e98e3e1Schristos     UINT f_r1;
23564e98e3e1Schristos     UINT f_r2;
23574e98e3e1Schristos 
23584e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
23594e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
23604e98e3e1Schristos 
23614e98e3e1Schristos   /* Record the fields for the semantic handler.  */
23624e98e3e1Schristos   FLD (f_r1) = f_r1;
23634e98e3e1Schristos   FLD (f_r2) = f_r2;
23644e98e3e1Schristos   FLD (i_src1) = & CPU (h_gr)[f_r1];
23654e98e3e1Schristos   FLD (i_src2) = & CPU (h_gr)[f_r2];
2366212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_stb_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));
23674e98e3e1Schristos 
23684e98e3e1Schristos #if WITH_PROFILE_MODEL_P
23694e98e3e1Schristos   /* Record the fields for profiling.  */
23704e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
23714e98e3e1Schristos     {
23724e98e3e1Schristos       FLD (in_src1) = f_r1;
23734e98e3e1Schristos       FLD (in_src2) = f_r2;
23744e98e3e1Schristos       FLD (out_src2) = f_r2;
23754e98e3e1Schristos     }
23764e98e3e1Schristos #endif
23774e98e3e1Schristos #undef FLD
23784e98e3e1Schristos     return idesc;
23794e98e3e1Schristos   }
23804e98e3e1Schristos 
23814e98e3e1Schristos  extract_sfmt_trap:
23824e98e3e1Schristos   {
23834e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
23844e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
23854e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_trap.f
23864e98e3e1Schristos     UINT f_uimm4;
23874e98e3e1Schristos 
23884e98e3e1Schristos     f_uimm4 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
23894e98e3e1Schristos 
23904e98e3e1Schristos   /* Record the fields for the semantic handler.  */
23914e98e3e1Schristos   FLD (f_uimm4) = f_uimm4;
2392212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_trap", "f_uimm4 0x%x", 'x', f_uimm4, (char *) 0));
23934e98e3e1Schristos 
23944e98e3e1Schristos #if WITH_PROFILE_MODEL_P
23954e98e3e1Schristos   /* Record the fields for profiling.  */
23964e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
23974e98e3e1Schristos     {
23984e98e3e1Schristos     }
23994e98e3e1Schristos #endif
24004e98e3e1Schristos #undef FLD
24014e98e3e1Schristos     return idesc;
24024e98e3e1Schristos   }
24034e98e3e1Schristos 
24044e98e3e1Schristos  extract_sfmt_unlock:
24054e98e3e1Schristos   {
24064e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
24074e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
24084e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f
24094e98e3e1Schristos     UINT f_r1;
24104e98e3e1Schristos     UINT f_r2;
24114e98e3e1Schristos 
24124e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
24134e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
24144e98e3e1Schristos 
24154e98e3e1Schristos   /* Record the fields for the semantic handler.  */
24164e98e3e1Schristos   FLD (f_r1) = f_r1;
24174e98e3e1Schristos   FLD (f_r2) = f_r2;
24184e98e3e1Schristos   FLD (i_src1) = & CPU (h_gr)[f_r1];
24194e98e3e1Schristos   FLD (i_src2) = & CPU (h_gr)[f_r2];
2420212397c6Schristos   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));
24214e98e3e1Schristos 
24224e98e3e1Schristos #if WITH_PROFILE_MODEL_P
24234e98e3e1Schristos   /* Record the fields for profiling.  */
24244e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
24254e98e3e1Schristos     {
24264e98e3e1Schristos       FLD (in_src1) = f_r1;
24274e98e3e1Schristos       FLD (in_src2) = f_r2;
24284e98e3e1Schristos     }
24294e98e3e1Schristos #endif
24304e98e3e1Schristos #undef FLD
24314e98e3e1Schristos     return idesc;
24324e98e3e1Schristos   }
24334e98e3e1Schristos 
24344e98e3e1Schristos  extract_sfmt_satb:
24354e98e3e1Schristos   {
24364e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
24374e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
24384e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f
24394e98e3e1Schristos     UINT f_r1;
24404e98e3e1Schristos     UINT f_r2;
24414e98e3e1Schristos 
24424e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
24434e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
24444e98e3e1Schristos 
24454e98e3e1Schristos   /* Record the fields for the semantic handler.  */
24464e98e3e1Schristos   FLD (f_r2) = f_r2;
24474e98e3e1Schristos   FLD (f_r1) = f_r1;
24484e98e3e1Schristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
24494e98e3e1Schristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
2450212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_satb", "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));
24514e98e3e1Schristos 
24524e98e3e1Schristos #if WITH_PROFILE_MODEL_P
24534e98e3e1Schristos   /* Record the fields for profiling.  */
24544e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
24554e98e3e1Schristos     {
24564e98e3e1Schristos       FLD (in_sr) = f_r2;
24574e98e3e1Schristos       FLD (out_dr) = f_r1;
24584e98e3e1Schristos     }
24594e98e3e1Schristos #endif
24604e98e3e1Schristos #undef FLD
24614e98e3e1Schristos     return idesc;
24624e98e3e1Schristos   }
24634e98e3e1Schristos 
24644e98e3e1Schristos  extract_sfmt_sat:
24654e98e3e1Schristos   {
24664e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
24674e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
24684e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_ld_plus.f
24694e98e3e1Schristos     UINT f_r1;
24704e98e3e1Schristos     UINT f_r2;
24714e98e3e1Schristos 
24724e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
24734e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
24744e98e3e1Schristos 
24754e98e3e1Schristos   /* Record the fields for the semantic handler.  */
24764e98e3e1Schristos   FLD (f_r2) = f_r2;
24774e98e3e1Schristos   FLD (f_r1) = f_r1;
24784e98e3e1Schristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
24794e98e3e1Schristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
2480212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_sat", "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));
24814e98e3e1Schristos 
24824e98e3e1Schristos #if WITH_PROFILE_MODEL_P
24834e98e3e1Schristos   /* Record the fields for profiling.  */
24844e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
24854e98e3e1Schristos     {
24864e98e3e1Schristos       FLD (in_sr) = f_r2;
24874e98e3e1Schristos       FLD (out_dr) = f_r1;
24884e98e3e1Schristos     }
24894e98e3e1Schristos #endif
24904e98e3e1Schristos #undef FLD
24914e98e3e1Schristos     return idesc;
24924e98e3e1Schristos   }
24934e98e3e1Schristos 
24944e98e3e1Schristos  extract_sfmt_sadd:
24954e98e3e1Schristos   {
24964e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
24974e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_empty.f
24984e98e3e1Schristos 
24994e98e3e1Schristos 
25004e98e3e1Schristos   /* Record the fields for the semantic handler.  */
2501212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_sadd", (char *) 0));
25024e98e3e1Schristos 
25034e98e3e1Schristos #undef FLD
25044e98e3e1Schristos     return idesc;
25054e98e3e1Schristos   }
25064e98e3e1Schristos 
25074e98e3e1Schristos  extract_sfmt_macwu1:
25084e98e3e1Schristos   {
25094e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
25104e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
25114e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f
25124e98e3e1Schristos     UINT f_r1;
25134e98e3e1Schristos     UINT f_r2;
25144e98e3e1Schristos 
25154e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
25164e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
25174e98e3e1Schristos 
25184e98e3e1Schristos   /* Record the fields for the semantic handler.  */
25194e98e3e1Schristos   FLD (f_r1) = f_r1;
25204e98e3e1Schristos   FLD (f_r2) = f_r2;
25214e98e3e1Schristos   FLD (i_src1) = & CPU (h_gr)[f_r1];
25224e98e3e1Schristos   FLD (i_src2) = & CPU (h_gr)[f_r2];
2523212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_macwu1", "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));
25244e98e3e1Schristos 
25254e98e3e1Schristos #if WITH_PROFILE_MODEL_P
25264e98e3e1Schristos   /* Record the fields for profiling.  */
25274e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
25284e98e3e1Schristos     {
25294e98e3e1Schristos       FLD (in_src1) = f_r1;
25304e98e3e1Schristos       FLD (in_src2) = f_r2;
25314e98e3e1Schristos     }
25324e98e3e1Schristos #endif
25334e98e3e1Schristos #undef FLD
25344e98e3e1Schristos     return idesc;
25354e98e3e1Schristos   }
25364e98e3e1Schristos 
25374e98e3e1Schristos  extract_sfmt_msblo:
25384e98e3e1Schristos   {
25394e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
25404e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
25414e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f
25424e98e3e1Schristos     UINT f_r1;
25434e98e3e1Schristos     UINT f_r2;
25444e98e3e1Schristos 
25454e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
25464e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
25474e98e3e1Schristos 
25484e98e3e1Schristos   /* Record the fields for the semantic handler.  */
25494e98e3e1Schristos   FLD (f_r1) = f_r1;
25504e98e3e1Schristos   FLD (f_r2) = f_r2;
25514e98e3e1Schristos   FLD (i_src1) = & CPU (h_gr)[f_r1];
25524e98e3e1Schristos   FLD (i_src2) = & CPU (h_gr)[f_r2];
2553212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_msblo", "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));
25544e98e3e1Schristos 
25554e98e3e1Schristos #if WITH_PROFILE_MODEL_P
25564e98e3e1Schristos   /* Record the fields for profiling.  */
25574e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
25584e98e3e1Schristos     {
25594e98e3e1Schristos       FLD (in_src1) = f_r1;
25604e98e3e1Schristos       FLD (in_src2) = f_r2;
25614e98e3e1Schristos     }
25624e98e3e1Schristos #endif
25634e98e3e1Schristos #undef FLD
25644e98e3e1Schristos     return idesc;
25654e98e3e1Schristos   }
25664e98e3e1Schristos 
25674e98e3e1Schristos  extract_sfmt_mulwu1:
25684e98e3e1Schristos   {
25694e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
25704e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
25714e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_st_plus.f
25724e98e3e1Schristos     UINT f_r1;
25734e98e3e1Schristos     UINT f_r2;
25744e98e3e1Schristos 
25754e98e3e1Schristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
25764e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
25774e98e3e1Schristos 
25784e98e3e1Schristos   /* Record the fields for the semantic handler.  */
25794e98e3e1Schristos   FLD (f_r1) = f_r1;
25804e98e3e1Schristos   FLD (f_r2) = f_r2;
25814e98e3e1Schristos   FLD (i_src1) = & CPU (h_gr)[f_r1];
25824e98e3e1Schristos   FLD (i_src2) = & CPU (h_gr)[f_r2];
2583212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mulwu1", "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));
25844e98e3e1Schristos 
25854e98e3e1Schristos #if WITH_PROFILE_MODEL_P
25864e98e3e1Schristos   /* Record the fields for profiling.  */
25874e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
25884e98e3e1Schristos     {
25894e98e3e1Schristos       FLD (in_src1) = f_r1;
25904e98e3e1Schristos       FLD (in_src2) = f_r2;
25914e98e3e1Schristos     }
25924e98e3e1Schristos #endif
25934e98e3e1Schristos #undef FLD
25944e98e3e1Schristos     return idesc;
25954e98e3e1Schristos   }
25964e98e3e1Schristos 
25974e98e3e1Schristos  extract_sfmt_sc:
25984e98e3e1Schristos   {
25994e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
26004e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_empty.f
26014e98e3e1Schristos 
26024e98e3e1Schristos 
26034e98e3e1Schristos   /* Record the fields for the semantic handler.  */
2604212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_sc", (char *) 0));
26054e98e3e1Schristos 
26064e98e3e1Schristos #undef FLD
26074e98e3e1Schristos     return idesc;
26084e98e3e1Schristos   }
26094e98e3e1Schristos 
26104e98e3e1Schristos  extract_sfmt_clrpsw:
26114e98e3e1Schristos   {
26124e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
26134e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
26144e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_clrpsw.f
26154e98e3e1Schristos     UINT f_uimm8;
26164e98e3e1Schristos 
26174e98e3e1Schristos     f_uimm8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
26184e98e3e1Schristos 
26194e98e3e1Schristos   /* Record the fields for the semantic handler.  */
26204e98e3e1Schristos   FLD (f_uimm8) = f_uimm8;
2621212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_clrpsw", "f_uimm8 0x%x", 'x', f_uimm8, (char *) 0));
26224e98e3e1Schristos 
26234e98e3e1Schristos #undef FLD
26244e98e3e1Schristos     return idesc;
26254e98e3e1Schristos   }
26264e98e3e1Schristos 
26274e98e3e1Schristos  extract_sfmt_setpsw:
26284e98e3e1Schristos   {
26294e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
26304e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
26314e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_clrpsw.f
26324e98e3e1Schristos     UINT f_uimm8;
26334e98e3e1Schristos 
26344e98e3e1Schristos     f_uimm8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
26354e98e3e1Schristos 
26364e98e3e1Schristos   /* Record the fields for the semantic handler.  */
26374e98e3e1Schristos   FLD (f_uimm8) = f_uimm8;
2638212397c6Schristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_setpsw", "f_uimm8 0x%x", 'x', f_uimm8, (char *) 0));
26394e98e3e1Schristos 
26404e98e3e1Schristos #undef FLD
26414e98e3e1Schristos     return idesc;
26424e98e3e1Schristos   }
26434e98e3e1Schristos 
26444e98e3e1Schristos  extract_sfmt_bset:
26454e98e3e1Schristos   {
26464e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
26474e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
26484e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_bset.f
26494e98e3e1Schristos     UINT f_uimm3;
26504e98e3e1Schristos     UINT f_r2;
26514e98e3e1Schristos     INT f_simm16;
26524e98e3e1Schristos 
26534e98e3e1Schristos     f_uimm3 = EXTRACT_MSB0_UINT (insn, 32, 5, 3);
26544e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
26554e98e3e1Schristos     f_simm16 = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
26564e98e3e1Schristos 
26574e98e3e1Schristos   /* Record the fields for the semantic handler.  */
26584e98e3e1Schristos   FLD (f_simm16) = f_simm16;
26594e98e3e1Schristos   FLD (f_r2) = f_r2;
26604e98e3e1Schristos   FLD (f_uimm3) = f_uimm3;
26614e98e3e1Schristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
2662212397c6Schristos   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));
26634e98e3e1Schristos 
26644e98e3e1Schristos #if WITH_PROFILE_MODEL_P
26654e98e3e1Schristos   /* Record the fields for profiling.  */
26664e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
26674e98e3e1Schristos     {
26684e98e3e1Schristos       FLD (in_sr) = f_r2;
26694e98e3e1Schristos     }
26704e98e3e1Schristos #endif
26714e98e3e1Schristos #undef FLD
26724e98e3e1Schristos     return idesc;
26734e98e3e1Schristos   }
26744e98e3e1Schristos 
26754e98e3e1Schristos  extract_sfmt_btst:
26764e98e3e1Schristos   {
26774e98e3e1Schristos     const IDESC *idesc = &m32rxf_insn_data[itype];
26784e98e3e1Schristos     CGEN_INSN_WORD insn = entire_insn;
26794e98e3e1Schristos #define FLD(f) abuf->fields.sfmt_bset.f
26804e98e3e1Schristos     UINT f_uimm3;
26814e98e3e1Schristos     UINT f_r2;
26824e98e3e1Schristos 
26834e98e3e1Schristos     f_uimm3 = EXTRACT_MSB0_UINT (insn, 16, 5, 3);
26844e98e3e1Schristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
26854e98e3e1Schristos 
26864e98e3e1Schristos   /* Record the fields for the semantic handler.  */
26874e98e3e1Schristos   FLD (f_r2) = f_r2;
26884e98e3e1Schristos   FLD (f_uimm3) = f_uimm3;
26894e98e3e1Schristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
2690212397c6Schristos   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));
26914e98e3e1Schristos 
26924e98e3e1Schristos #if WITH_PROFILE_MODEL_P
26934e98e3e1Schristos   /* Record the fields for profiling.  */
26944e98e3e1Schristos   if (PROFILE_MODEL_P (current_cpu))
26954e98e3e1Schristos     {
26964e98e3e1Schristos       FLD (in_sr) = f_r2;
26974e98e3e1Schristos     }
26984e98e3e1Schristos #endif
26994e98e3e1Schristos #undef FLD
27004e98e3e1Schristos     return idesc;
27014e98e3e1Schristos   }
27024e98e3e1Schristos 
27034e98e3e1Schristos }
2704