Home | History | Annotate | Line # | Download | only in m32r
decode2.c revision 1.1.1.1
      1 /* Simulator instruction decoder for m32r2f.
      2 
      3 THIS FILE IS MACHINE GENERATED WITH CGEN.
      4 
      5 Copyright 1996-2010 Free Software Foundation, Inc.
      6 
      7 This file is part of the GNU simulators.
      8 
      9    This file is free software; you can redistribute it and/or modify
     10    it under the terms of the GNU General Public License as published by
     11    the Free Software Foundation; either version 3, or (at your option)
     12    any later version.
     13 
     14    It is distributed in the hope that it will be useful, but WITHOUT
     15    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
     16    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
     17    License for more details.
     18 
     19    You should have received a copy of the GNU General Public License along
     20    with this program; if not, write to the Free Software Foundation, Inc.,
     21    51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
     22 
     23 */
     24 
     25 #define WANT_CPU m32r2f
     26 #define WANT_CPU_M32R2F
     27 
     28 #include "sim-main.h"
     29 #include "sim-assert.h"
     30 
     31 /* Insn can't be executed in parallel.
     32    Or is that "do NOt Pass to Air defense Radar"? :-) */
     33 #define NOPAR (-1)
     34 
     35 /* The instruction descriptor array.
     36    This is computed at runtime.  Space for it is not malloc'd to save a
     37    teensy bit of cpu in the decoder.  Moving it to malloc space is trivial
     38    but won't be done until necessary (we don't currently support the runtime
     39    addition of instructions nor an SMP machine with different cpus).  */
     40 static IDESC m32r2f_insn_data[M32R2F_INSN__MAX];
     41 
     42 /* Commas between elements are contained in the macros.
     43    Some of these are conditionally compiled out.  */
     44 
     45 static const struct insn_sem m32r2f_insn_sem[] =
     46 {
     47   { VIRTUAL_INSN_X_INVALID, M32R2F_INSN_X_INVALID, M32R2F_SFMT_EMPTY, NOPAR, NOPAR  },
     48   { VIRTUAL_INSN_X_AFTER, M32R2F_INSN_X_AFTER, M32R2F_SFMT_EMPTY, NOPAR, NOPAR  },
     49   { VIRTUAL_INSN_X_BEFORE, M32R2F_INSN_X_BEFORE, M32R2F_SFMT_EMPTY, NOPAR, NOPAR  },
     50   { VIRTUAL_INSN_X_CTI_CHAIN, M32R2F_INSN_X_CTI_CHAIN, M32R2F_SFMT_EMPTY, NOPAR, NOPAR  },
     51   { VIRTUAL_INSN_X_CHAIN, M32R2F_INSN_X_CHAIN, M32R2F_SFMT_EMPTY, NOPAR, NOPAR  },
     52   { VIRTUAL_INSN_X_BEGIN, M32R2F_INSN_X_BEGIN, M32R2F_SFMT_EMPTY, NOPAR, NOPAR  },
     53   { M32R_INSN_ADD, M32R2F_INSN_ADD, M32R2F_SFMT_ADD, M32R2F_INSN_PAR_ADD, M32R2F_INSN_WRITE_ADD },
     54   { M32R_INSN_ADD3, M32R2F_INSN_ADD3, M32R2F_SFMT_ADD3, NOPAR, NOPAR  },
     55   { M32R_INSN_AND, M32R2F_INSN_AND, M32R2F_SFMT_ADD, M32R2F_INSN_PAR_AND, M32R2F_INSN_WRITE_AND },
     56   { M32R_INSN_AND3, M32R2F_INSN_AND3, M32R2F_SFMT_AND3, NOPAR, NOPAR  },
     57   { M32R_INSN_OR, M32R2F_INSN_OR, M32R2F_SFMT_ADD, M32R2F_INSN_PAR_OR, M32R2F_INSN_WRITE_OR },
     58   { M32R_INSN_OR3, M32R2F_INSN_OR3, M32R2F_SFMT_OR3, NOPAR, NOPAR  },
     59   { M32R_INSN_XOR, M32R2F_INSN_XOR, M32R2F_SFMT_ADD, M32R2F_INSN_PAR_XOR, M32R2F_INSN_WRITE_XOR },
     60   { M32R_INSN_XOR3, M32R2F_INSN_XOR3, M32R2F_SFMT_AND3, NOPAR, NOPAR  },
     61   { M32R_INSN_ADDI, M32R2F_INSN_ADDI, M32R2F_SFMT_ADDI, M32R2F_INSN_PAR_ADDI, M32R2F_INSN_WRITE_ADDI },
     62   { M32R_INSN_ADDV, M32R2F_INSN_ADDV, M32R2F_SFMT_ADDV, M32R2F_INSN_PAR_ADDV, M32R2F_INSN_WRITE_ADDV },
     63   { M32R_INSN_ADDV3, M32R2F_INSN_ADDV3, M32R2F_SFMT_ADDV3, NOPAR, NOPAR  },
     64   { M32R_INSN_ADDX, M32R2F_INSN_ADDX, M32R2F_SFMT_ADDX, M32R2F_INSN_PAR_ADDX, M32R2F_INSN_WRITE_ADDX },
     65   { M32R_INSN_BC8, M32R2F_INSN_BC8, M32R2F_SFMT_BC8, M32R2F_INSN_PAR_BC8, M32R2F_INSN_WRITE_BC8 },
     66   { M32R_INSN_BC24, M32R2F_INSN_BC24, M32R2F_SFMT_BC24, NOPAR, NOPAR  },
     67   { M32R_INSN_BEQ, M32R2F_INSN_BEQ, M32R2F_SFMT_BEQ, NOPAR, NOPAR  },
     68   { M32R_INSN_BEQZ, M32R2F_INSN_BEQZ, M32R2F_SFMT_BEQZ, NOPAR, NOPAR  },
     69   { M32R_INSN_BGEZ, M32R2F_INSN_BGEZ, M32R2F_SFMT_BEQZ, NOPAR, NOPAR  },
     70   { M32R_INSN_BGTZ, M32R2F_INSN_BGTZ, M32R2F_SFMT_BEQZ, NOPAR, NOPAR  },
     71   { M32R_INSN_BLEZ, M32R2F_INSN_BLEZ, M32R2F_SFMT_BEQZ, NOPAR, NOPAR  },
     72   { M32R_INSN_BLTZ, M32R2F_INSN_BLTZ, M32R2F_SFMT_BEQZ, NOPAR, NOPAR  },
     73   { M32R_INSN_BNEZ, M32R2F_INSN_BNEZ, M32R2F_SFMT_BEQZ, NOPAR, NOPAR  },
     74   { M32R_INSN_BL8, M32R2F_INSN_BL8, M32R2F_SFMT_BL8, M32R2F_INSN_PAR_BL8, M32R2F_INSN_WRITE_BL8 },
     75   { M32R_INSN_BL24, M32R2F_INSN_BL24, M32R2F_SFMT_BL24, NOPAR, NOPAR  },
     76   { M32R_INSN_BCL8, M32R2F_INSN_BCL8, M32R2F_SFMT_BCL8, M32R2F_INSN_PAR_BCL8, M32R2F_INSN_WRITE_BCL8 },
     77   { M32R_INSN_BCL24, M32R2F_INSN_BCL24, M32R2F_SFMT_BCL24, NOPAR, NOPAR  },
     78   { M32R_INSN_BNC8, M32R2F_INSN_BNC8, M32R2F_SFMT_BC8, M32R2F_INSN_PAR_BNC8, M32R2F_INSN_WRITE_BNC8 },
     79   { M32R_INSN_BNC24, M32R2F_INSN_BNC24, M32R2F_SFMT_BC24, NOPAR, NOPAR  },
     80   { M32R_INSN_BNE, M32R2F_INSN_BNE, M32R2F_SFMT_BEQ, NOPAR, NOPAR  },
     81   { M32R_INSN_BRA8, M32R2F_INSN_BRA8, M32R2F_SFMT_BRA8, M32R2F_INSN_PAR_BRA8, M32R2F_INSN_WRITE_BRA8 },
     82   { M32R_INSN_BRA24, M32R2F_INSN_BRA24, M32R2F_SFMT_BRA24, NOPAR, NOPAR  },
     83   { M32R_INSN_BNCL8, M32R2F_INSN_BNCL8, M32R2F_SFMT_BCL8, M32R2F_INSN_PAR_BNCL8, M32R2F_INSN_WRITE_BNCL8 },
     84   { M32R_INSN_BNCL24, M32R2F_INSN_BNCL24, M32R2F_SFMT_BCL24, NOPAR, NOPAR  },
     85   { M32R_INSN_CMP, M32R2F_INSN_CMP, M32R2F_SFMT_CMP, M32R2F_INSN_PAR_CMP, M32R2F_INSN_WRITE_CMP },
     86   { M32R_INSN_CMPI, M32R2F_INSN_CMPI, M32R2F_SFMT_CMPI, NOPAR, NOPAR  },
     87   { M32R_INSN_CMPU, M32R2F_INSN_CMPU, M32R2F_SFMT_CMP, M32R2F_INSN_PAR_CMPU, M32R2F_INSN_WRITE_CMPU },
     88   { M32R_INSN_CMPUI, M32R2F_INSN_CMPUI, M32R2F_SFMT_CMPI, NOPAR, NOPAR  },
     89   { M32R_INSN_CMPEQ, M32R2F_INSN_CMPEQ, M32R2F_SFMT_CMP, M32R2F_INSN_PAR_CMPEQ, M32R2F_INSN_WRITE_CMPEQ },
     90   { M32R_INSN_CMPZ, M32R2F_INSN_CMPZ, M32R2F_SFMT_CMPZ, M32R2F_INSN_PAR_CMPZ, M32R2F_INSN_WRITE_CMPZ },
     91   { M32R_INSN_DIV, M32R2F_INSN_DIV, M32R2F_SFMT_DIV, NOPAR, NOPAR  },
     92   { M32R_INSN_DIVU, M32R2F_INSN_DIVU, M32R2F_SFMT_DIV, NOPAR, NOPAR  },
     93   { M32R_INSN_REM, M32R2F_INSN_REM, M32R2F_SFMT_DIV, NOPAR, NOPAR  },
     94   { M32R_INSN_REMU, M32R2F_INSN_REMU, M32R2F_SFMT_DIV, NOPAR, NOPAR  },
     95   { M32R_INSN_REMH, M32R2F_INSN_REMH, M32R2F_SFMT_DIV, NOPAR, NOPAR  },
     96   { M32R_INSN_REMUH, M32R2F_INSN_REMUH, M32R2F_SFMT_DIV, NOPAR, NOPAR  },
     97   { M32R_INSN_REMB, M32R2F_INSN_REMB, M32R2F_SFMT_DIV, NOPAR, NOPAR  },
     98   { M32R_INSN_REMUB, M32R2F_INSN_REMUB, M32R2F_SFMT_DIV, NOPAR, NOPAR  },
     99   { M32R_INSN_DIVUH, M32R2F_INSN_DIVUH, M32R2F_SFMT_DIV, NOPAR, NOPAR  },
    100   { M32R_INSN_DIVB, M32R2F_INSN_DIVB, M32R2F_SFMT_DIV, NOPAR, NOPAR  },
    101   { M32R_INSN_DIVUB, M32R2F_INSN_DIVUB, M32R2F_SFMT_DIV, NOPAR, NOPAR  },
    102   { M32R_INSN_DIVH, M32R2F_INSN_DIVH, M32R2F_SFMT_DIV, NOPAR, NOPAR  },
    103   { M32R_INSN_JC, M32R2F_INSN_JC, M32R2F_SFMT_JC, M32R2F_INSN_PAR_JC, M32R2F_INSN_WRITE_JC },
    104   { M32R_INSN_JNC, M32R2F_INSN_JNC, M32R2F_SFMT_JC, M32R2F_INSN_PAR_JNC, M32R2F_INSN_WRITE_JNC },
    105   { M32R_INSN_JL, M32R2F_INSN_JL, M32R2F_SFMT_JL, M32R2F_INSN_PAR_JL, M32R2F_INSN_WRITE_JL },
    106   { M32R_INSN_JMP, M32R2F_INSN_JMP, M32R2F_SFMT_JMP, M32R2F_INSN_PAR_JMP, M32R2F_INSN_WRITE_JMP },
    107   { M32R_INSN_LD, M32R2F_INSN_LD, M32R2F_SFMT_LD, M32R2F_INSN_PAR_LD, M32R2F_INSN_WRITE_LD },
    108   { M32R_INSN_LD_D, M32R2F_INSN_LD_D, M32R2F_SFMT_LD_D, NOPAR, NOPAR  },
    109   { M32R_INSN_LDB, M32R2F_INSN_LDB, M32R2F_SFMT_LDB, M32R2F_INSN_PAR_LDB, M32R2F_INSN_WRITE_LDB },
    110   { M32R_INSN_LDB_D, M32R2F_INSN_LDB_D, M32R2F_SFMT_LDB_D, NOPAR, NOPAR  },
    111   { M32R_INSN_LDH, M32R2F_INSN_LDH, M32R2F_SFMT_LDH, M32R2F_INSN_PAR_LDH, M32R2F_INSN_WRITE_LDH },
    112   { M32R_INSN_LDH_D, M32R2F_INSN_LDH_D, M32R2F_SFMT_LDH_D, NOPAR, NOPAR  },
    113   { M32R_INSN_LDUB, M32R2F_INSN_LDUB, M32R2F_SFMT_LDB, M32R2F_INSN_PAR_LDUB, M32R2F_INSN_WRITE_LDUB },
    114   { M32R_INSN_LDUB_D, M32R2F_INSN_LDUB_D, M32R2F_SFMT_LDB_D, NOPAR, NOPAR  },
    115   { M32R_INSN_LDUH, M32R2F_INSN_LDUH, M32R2F_SFMT_LDH, M32R2F_INSN_PAR_LDUH, M32R2F_INSN_WRITE_LDUH },
    116   { M32R_INSN_LDUH_D, M32R2F_INSN_LDUH_D, M32R2F_SFMT_LDH_D, NOPAR, NOPAR  },
    117   { M32R_INSN_LD_PLUS, M32R2F_INSN_LD_PLUS, M32R2F_SFMT_LD_PLUS, M32R2F_INSN_PAR_LD_PLUS, M32R2F_INSN_WRITE_LD_PLUS },
    118   { M32R_INSN_LD24, M32R2F_INSN_LD24, M32R2F_SFMT_LD24, NOPAR, NOPAR  },
    119   { M32R_INSN_LDI8, M32R2F_INSN_LDI8, M32R2F_SFMT_LDI8, M32R2F_INSN_PAR_LDI8, M32R2F_INSN_WRITE_LDI8 },
    120   { M32R_INSN_LDI16, M32R2F_INSN_LDI16, M32R2F_SFMT_LDI16, NOPAR, NOPAR  },
    121   { M32R_INSN_LOCK, M32R2F_INSN_LOCK, M32R2F_SFMT_LOCK, M32R2F_INSN_PAR_LOCK, M32R2F_INSN_WRITE_LOCK },
    122   { M32R_INSN_MACHI_A, M32R2F_INSN_MACHI_A, M32R2F_SFMT_MACHI_A, M32R2F_INSN_PAR_MACHI_A, M32R2F_INSN_WRITE_MACHI_A },
    123   { M32R_INSN_MACLO_A, M32R2F_INSN_MACLO_A, M32R2F_SFMT_MACHI_A, M32R2F_INSN_PAR_MACLO_A, M32R2F_INSN_WRITE_MACLO_A },
    124   { M32R_INSN_MACWHI_A, M32R2F_INSN_MACWHI_A, M32R2F_SFMT_MACHI_A, M32R2F_INSN_PAR_MACWHI_A, M32R2F_INSN_WRITE_MACWHI_A },
    125   { M32R_INSN_MACWLO_A, M32R2F_INSN_MACWLO_A, M32R2F_SFMT_MACHI_A, M32R2F_INSN_PAR_MACWLO_A, M32R2F_INSN_WRITE_MACWLO_A },
    126   { M32R_INSN_MUL, M32R2F_INSN_MUL, M32R2F_SFMT_ADD, M32R2F_INSN_PAR_MUL, M32R2F_INSN_WRITE_MUL },
    127   { M32R_INSN_MULHI_A, M32R2F_INSN_MULHI_A, M32R2F_SFMT_MULHI_A, M32R2F_INSN_PAR_MULHI_A, M32R2F_INSN_WRITE_MULHI_A },
    128   { M32R_INSN_MULLO_A, M32R2F_INSN_MULLO_A, M32R2F_SFMT_MULHI_A, M32R2F_INSN_PAR_MULLO_A, M32R2F_INSN_WRITE_MULLO_A },
    129   { M32R_INSN_MULWHI_A, M32R2F_INSN_MULWHI_A, M32R2F_SFMT_MULHI_A, M32R2F_INSN_PAR_MULWHI_A, M32R2F_INSN_WRITE_MULWHI_A },
    130   { M32R_INSN_MULWLO_A, M32R2F_INSN_MULWLO_A, M32R2F_SFMT_MULHI_A, M32R2F_INSN_PAR_MULWLO_A, M32R2F_INSN_WRITE_MULWLO_A },
    131   { M32R_INSN_MV, M32R2F_INSN_MV, M32R2F_SFMT_MV, M32R2F_INSN_PAR_MV, M32R2F_INSN_WRITE_MV },
    132   { M32R_INSN_MVFACHI_A, M32R2F_INSN_MVFACHI_A, M32R2F_SFMT_MVFACHI_A, M32R2F_INSN_PAR_MVFACHI_A, M32R2F_INSN_WRITE_MVFACHI_A },
    133   { M32R_INSN_MVFACLO_A, M32R2F_INSN_MVFACLO_A, M32R2F_SFMT_MVFACHI_A, M32R2F_INSN_PAR_MVFACLO_A, M32R2F_INSN_WRITE_MVFACLO_A },
    134   { M32R_INSN_MVFACMI_A, M32R2F_INSN_MVFACMI_A, M32R2F_SFMT_MVFACHI_A, M32R2F_INSN_PAR_MVFACMI_A, M32R2F_INSN_WRITE_MVFACMI_A },
    135   { M32R_INSN_MVFC, M32R2F_INSN_MVFC, M32R2F_SFMT_MVFC, M32R2F_INSN_PAR_MVFC, M32R2F_INSN_WRITE_MVFC },
    136   { M32R_INSN_MVTACHI_A, M32R2F_INSN_MVTACHI_A, M32R2F_SFMT_MVTACHI_A, M32R2F_INSN_PAR_MVTACHI_A, M32R2F_INSN_WRITE_MVTACHI_A },
    137   { M32R_INSN_MVTACLO_A, M32R2F_INSN_MVTACLO_A, M32R2F_SFMT_MVTACHI_A, M32R2F_INSN_PAR_MVTACLO_A, M32R2F_INSN_WRITE_MVTACLO_A },
    138   { M32R_INSN_MVTC, M32R2F_INSN_MVTC, M32R2F_SFMT_MVTC, M32R2F_INSN_PAR_MVTC, M32R2F_INSN_WRITE_MVTC },
    139   { M32R_INSN_NEG, M32R2F_INSN_NEG, M32R2F_SFMT_MV, M32R2F_INSN_PAR_NEG, M32R2F_INSN_WRITE_NEG },
    140   { M32R_INSN_NOP, M32R2F_INSN_NOP, M32R2F_SFMT_NOP, M32R2F_INSN_PAR_NOP, M32R2F_INSN_WRITE_NOP },
    141   { M32R_INSN_NOT, M32R2F_INSN_NOT, M32R2F_SFMT_MV, M32R2F_INSN_PAR_NOT, M32R2F_INSN_WRITE_NOT },
    142   { M32R_INSN_RAC_DSI, M32R2F_INSN_RAC_DSI, M32R2F_SFMT_RAC_DSI, M32R2F_INSN_PAR_RAC_DSI, M32R2F_INSN_WRITE_RAC_DSI },
    143   { M32R_INSN_RACH_DSI, M32R2F_INSN_RACH_DSI, M32R2F_SFMT_RAC_DSI, M32R2F_INSN_PAR_RACH_DSI, M32R2F_INSN_WRITE_RACH_DSI },
    144   { M32R_INSN_RTE, M32R2F_INSN_RTE, M32R2F_SFMT_RTE, M32R2F_INSN_PAR_RTE, M32R2F_INSN_WRITE_RTE },
    145   { M32R_INSN_SETH, M32R2F_INSN_SETH, M32R2F_SFMT_SETH, NOPAR, NOPAR  },
    146   { M32R_INSN_SLL, M32R2F_INSN_SLL, M32R2F_SFMT_ADD, M32R2F_INSN_PAR_SLL, M32R2F_INSN_WRITE_SLL },
    147   { M32R_INSN_SLL3, M32R2F_INSN_SLL3, M32R2F_SFMT_SLL3, NOPAR, NOPAR  },
    148   { M32R_INSN_SLLI, M32R2F_INSN_SLLI, M32R2F_SFMT_SLLI, M32R2F_INSN_PAR_SLLI, M32R2F_INSN_WRITE_SLLI },
    149   { M32R_INSN_SRA, M32R2F_INSN_SRA, M32R2F_SFMT_ADD, M32R2F_INSN_PAR_SRA, M32R2F_INSN_WRITE_SRA },
    150   { M32R_INSN_SRA3, M32R2F_INSN_SRA3, M32R2F_SFMT_SLL3, NOPAR, NOPAR  },
    151   { M32R_INSN_SRAI, M32R2F_INSN_SRAI, M32R2F_SFMT_SLLI, M32R2F_INSN_PAR_SRAI, M32R2F_INSN_WRITE_SRAI },
    152   { M32R_INSN_SRL, M32R2F_INSN_SRL, M32R2F_SFMT_ADD, M32R2F_INSN_PAR_SRL, M32R2F_INSN_WRITE_SRL },
    153   { M32R_INSN_SRL3, M32R2F_INSN_SRL3, M32R2F_SFMT_SLL3, NOPAR, NOPAR  },
    154   { M32R_INSN_SRLI, M32R2F_INSN_SRLI, M32R2F_SFMT_SLLI, M32R2F_INSN_PAR_SRLI, M32R2F_INSN_WRITE_SRLI },
    155   { M32R_INSN_ST, M32R2F_INSN_ST, M32R2F_SFMT_ST, M32R2F_INSN_PAR_ST, M32R2F_INSN_WRITE_ST },
    156   { M32R_INSN_ST_D, M32R2F_INSN_ST_D, M32R2F_SFMT_ST_D, NOPAR, NOPAR  },
    157   { M32R_INSN_STB, M32R2F_INSN_STB, M32R2F_SFMT_STB, M32R2F_INSN_PAR_STB, M32R2F_INSN_WRITE_STB },
    158   { M32R_INSN_STB_D, M32R2F_INSN_STB_D, M32R2F_SFMT_STB_D, NOPAR, NOPAR  },
    159   { M32R_INSN_STH, M32R2F_INSN_STH, M32R2F_SFMT_STH, M32R2F_INSN_PAR_STH, M32R2F_INSN_WRITE_STH },
    160   { M32R_INSN_STH_D, M32R2F_INSN_STH_D, M32R2F_SFMT_STH_D, NOPAR, NOPAR  },
    161   { M32R_INSN_ST_PLUS, M32R2F_INSN_ST_PLUS, M32R2F_SFMT_ST_PLUS, M32R2F_INSN_PAR_ST_PLUS, M32R2F_INSN_WRITE_ST_PLUS },
    162   { M32R_INSN_STH_PLUS, M32R2F_INSN_STH_PLUS, M32R2F_SFMT_STH_PLUS, M32R2F_INSN_PAR_STH_PLUS, M32R2F_INSN_WRITE_STH_PLUS },
    163   { M32R_INSN_STB_PLUS, M32R2F_INSN_STB_PLUS, M32R2F_SFMT_STB_PLUS, M32R2F_INSN_PAR_STB_PLUS, M32R2F_INSN_WRITE_STB_PLUS },
    164   { M32R_INSN_ST_MINUS, M32R2F_INSN_ST_MINUS, M32R2F_SFMT_ST_PLUS, M32R2F_INSN_PAR_ST_MINUS, M32R2F_INSN_WRITE_ST_MINUS },
    165   { M32R_INSN_SUB, M32R2F_INSN_SUB, M32R2F_SFMT_ADD, M32R2F_INSN_PAR_SUB, M32R2F_INSN_WRITE_SUB },
    166   { M32R_INSN_SUBV, M32R2F_INSN_SUBV, M32R2F_SFMT_ADDV, M32R2F_INSN_PAR_SUBV, M32R2F_INSN_WRITE_SUBV },
    167   { M32R_INSN_SUBX, M32R2F_INSN_SUBX, M32R2F_SFMT_ADDX, M32R2F_INSN_PAR_SUBX, M32R2F_INSN_WRITE_SUBX },
    168   { M32R_INSN_TRAP, M32R2F_INSN_TRAP, M32R2F_SFMT_TRAP, M32R2F_INSN_PAR_TRAP, M32R2F_INSN_WRITE_TRAP },
    169   { M32R_INSN_UNLOCK, M32R2F_INSN_UNLOCK, M32R2F_SFMT_UNLOCK, M32R2F_INSN_PAR_UNLOCK, M32R2F_INSN_WRITE_UNLOCK },
    170   { M32R_INSN_SATB, M32R2F_INSN_SATB, M32R2F_SFMT_SATB, NOPAR, NOPAR  },
    171   { M32R_INSN_SATH, M32R2F_INSN_SATH, M32R2F_SFMT_SATB, NOPAR, NOPAR  },
    172   { M32R_INSN_SAT, M32R2F_INSN_SAT, M32R2F_SFMT_SAT, NOPAR, NOPAR  },
    173   { M32R_INSN_PCMPBZ, M32R2F_INSN_PCMPBZ, M32R2F_SFMT_CMPZ, M32R2F_INSN_PAR_PCMPBZ, M32R2F_INSN_WRITE_PCMPBZ },
    174   { M32R_INSN_SADD, M32R2F_INSN_SADD, M32R2F_SFMT_SADD, M32R2F_INSN_PAR_SADD, M32R2F_INSN_WRITE_SADD },
    175   { M32R_INSN_MACWU1, M32R2F_INSN_MACWU1, M32R2F_SFMT_MACWU1, M32R2F_INSN_PAR_MACWU1, M32R2F_INSN_WRITE_MACWU1 },
    176   { M32R_INSN_MSBLO, M32R2F_INSN_MSBLO, M32R2F_SFMT_MSBLO, M32R2F_INSN_PAR_MSBLO, M32R2F_INSN_WRITE_MSBLO },
    177   { M32R_INSN_MULWU1, M32R2F_INSN_MULWU1, M32R2F_SFMT_MULWU1, M32R2F_INSN_PAR_MULWU1, M32R2F_INSN_WRITE_MULWU1 },
    178   { M32R_INSN_MACLH1, M32R2F_INSN_MACLH1, M32R2F_SFMT_MACWU1, M32R2F_INSN_PAR_MACLH1, M32R2F_INSN_WRITE_MACLH1 },
    179   { M32R_INSN_SC, M32R2F_INSN_SC, M32R2F_SFMT_SC, M32R2F_INSN_PAR_SC, M32R2F_INSN_WRITE_SC },
    180   { M32R_INSN_SNC, M32R2F_INSN_SNC, M32R2F_SFMT_SC, M32R2F_INSN_PAR_SNC, M32R2F_INSN_WRITE_SNC },
    181   { M32R_INSN_CLRPSW, M32R2F_INSN_CLRPSW, M32R2F_SFMT_CLRPSW, M32R2F_INSN_PAR_CLRPSW, M32R2F_INSN_WRITE_CLRPSW },
    182   { M32R_INSN_SETPSW, M32R2F_INSN_SETPSW, M32R2F_SFMT_SETPSW, M32R2F_INSN_PAR_SETPSW, M32R2F_INSN_WRITE_SETPSW },
    183   { M32R_INSN_BSET, M32R2F_INSN_BSET, M32R2F_SFMT_BSET, NOPAR, NOPAR  },
    184   { M32R_INSN_BCLR, M32R2F_INSN_BCLR, M32R2F_SFMT_BSET, NOPAR, NOPAR  },
    185   { M32R_INSN_BTST, M32R2F_INSN_BTST, M32R2F_SFMT_BTST, M32R2F_INSN_PAR_BTST, M32R2F_INSN_WRITE_BTST },
    186 };
    187 
    188 static const struct insn_sem m32r2f_insn_sem_invalid =
    189 {
    190   VIRTUAL_INSN_X_INVALID, M32R2F_INSN_X_INVALID, M32R2F_SFMT_EMPTY, NOPAR, NOPAR
    191 };
    192 
    193 /* Initialize an IDESC from the compile-time computable parts.  */
    194 
    195 static INLINE void
    196 init_idesc (SIM_CPU *cpu, IDESC *id, const struct insn_sem *t)
    197 {
    198   const CGEN_INSN *insn_table = CGEN_CPU_INSN_TABLE (CPU_CPU_DESC (cpu))->init_entries;
    199 
    200   id->num = t->index;
    201   id->sfmt = t->sfmt;
    202   if ((int) t->type <= 0)
    203     id->idata = & cgen_virtual_insn_table[- (int) t->type];
    204   else
    205     id->idata = & insn_table[t->type];
    206   id->attrs = CGEN_INSN_ATTRS (id->idata);
    207   /* Oh my god, a magic number.  */
    208   id->length = CGEN_INSN_BITSIZE (id->idata) / 8;
    209 
    210 #if WITH_PROFILE_MODEL_P
    211   id->timing = & MODEL_TIMING (CPU_MODEL (cpu)) [t->index];
    212   {
    213     SIM_DESC sd = CPU_STATE (cpu);
    214     SIM_ASSERT (t->index == id->timing->num);
    215   }
    216 #endif
    217 
    218   /* Semantic pointers are initialized elsewhere.  */
    219 }
    220 
    221 /* Initialize the instruction descriptor table.  */
    222 
    223 void
    224 m32r2f_init_idesc_table (SIM_CPU *cpu)
    225 {
    226   IDESC *id,*tabend;
    227   const struct insn_sem *t,*tend;
    228   int tabsize = M32R2F_INSN__MAX;
    229   IDESC *table = m32r2f_insn_data;
    230 
    231   memset (table, 0, tabsize * sizeof (IDESC));
    232 
    233   /* First set all entries to the `invalid insn'.  */
    234   t = & m32r2f_insn_sem_invalid;
    235   for (id = table, tabend = table + tabsize; id < tabend; ++id)
    236     init_idesc (cpu, id, t);
    237 
    238   /* Now fill in the values for the chosen cpu.  */
    239   for (t = m32r2f_insn_sem, tend = t + sizeof (m32r2f_insn_sem) / sizeof (*t);
    240        t != tend; ++t)
    241     {
    242       init_idesc (cpu, & table[t->index], t);
    243       if (t->par_index != NOPAR)
    244 	{
    245 	  init_idesc (cpu, &table[t->par_index], t);
    246 	  table[t->index].par_idesc = &table[t->par_index];
    247 	}
    248       if (t->par_index != NOPAR)
    249 	{
    250 	  init_idesc (cpu, &table[t->write_index], t);
    251 	  table[t->par_index].par_idesc = &table[t->write_index];
    252 	}
    253     }
    254 
    255   /* Link the IDESC table into the cpu.  */
    256   CPU_IDESC (cpu) = table;
    257 }
    258 
    259 /* Given an instruction, return a pointer to its IDESC entry.  */
    260 
    261 const IDESC *
    262 m32r2f_decode (SIM_CPU *current_cpu, IADDR pc,
    263               CGEN_INSN_WORD base_insn, CGEN_INSN_WORD entire_insn,
    264               ARGBUF *abuf)
    265 {
    266   /* Result of decoder.  */
    267   M32R2F_INSN_TYPE itype;
    268 
    269   {
    270     CGEN_INSN_WORD insn = base_insn;
    271 
    272     {
    273       unsigned int val = (((insn >> 8) & (15 << 4)) | ((insn >> 4) & (15 << 0)));
    274       switch (val)
    275       {
    276       case 0 : itype = M32R2F_INSN_SUBV; goto extract_sfmt_addv;
    277       case 1 : itype = M32R2F_INSN_SUBX; goto extract_sfmt_addx;
    278       case 2 : itype = M32R2F_INSN_SUB; goto extract_sfmt_add;
    279       case 3 : itype = M32R2F_INSN_NEG; goto extract_sfmt_mv;
    280       case 4 : itype = M32R2F_INSN_CMP; goto extract_sfmt_cmp;
    281       case 5 : itype = M32R2F_INSN_CMPU; goto extract_sfmt_cmp;
    282       case 6 : itype = M32R2F_INSN_CMPEQ; goto extract_sfmt_cmp;
    283       case 7 :
    284         {
    285           unsigned int val = (((insn >> 8) & (3 << 0)));
    286           switch (val)
    287           {
    288           case 0 :
    289             if ((entire_insn & 0xfff0) == 0x70)
    290               { itype = M32R2F_INSN_CMPZ; goto extract_sfmt_cmpz; }
    291             itype = M32R2F_INSN_X_INVALID; goto extract_sfmt_empty;
    292           case 3 :
    293             if ((entire_insn & 0xfff0) == 0x370)
    294               { itype = M32R2F_INSN_PCMPBZ; goto extract_sfmt_cmpz; }
    295             itype = M32R2F_INSN_X_INVALID; goto extract_sfmt_empty;
    296           default : itype = M32R2F_INSN_X_INVALID; goto extract_sfmt_empty;
    297           }
    298         }
    299       case 8 : itype = M32R2F_INSN_ADDV; goto extract_sfmt_addv;
    300       case 9 : itype = M32R2F_INSN_ADDX; goto extract_sfmt_addx;
    301       case 10 : itype = M32R2F_INSN_ADD; goto extract_sfmt_add;
    302       case 11 : itype = M32R2F_INSN_NOT; goto extract_sfmt_mv;
    303       case 12 : itype = M32R2F_INSN_AND; goto extract_sfmt_add;
    304       case 13 : itype = M32R2F_INSN_XOR; goto extract_sfmt_add;
    305       case 14 : itype = M32R2F_INSN_OR; goto extract_sfmt_add;
    306       case 15 :
    307         if ((entire_insn & 0xf8f0) == 0xf0)
    308           { itype = M32R2F_INSN_BTST; goto extract_sfmt_btst; }
    309         itype = M32R2F_INSN_X_INVALID; goto extract_sfmt_empty;
    310       case 16 : itype = M32R2F_INSN_SRL; goto extract_sfmt_add;
    311       case 18 : itype = M32R2F_INSN_SRA; goto extract_sfmt_add;
    312       case 20 : itype = M32R2F_INSN_SLL; goto extract_sfmt_add;
    313       case 22 : itype = M32R2F_INSN_MUL; goto extract_sfmt_add;
    314       case 24 : itype = M32R2F_INSN_MV; goto extract_sfmt_mv;
    315       case 25 : itype = M32R2F_INSN_MVFC; goto extract_sfmt_mvfc;
    316       case 26 : itype = M32R2F_INSN_MVTC; goto extract_sfmt_mvtc;
    317       case 28 :
    318         {
    319           unsigned int val = (((insn >> 8) & (3 << 0)));
    320           switch (val)
    321           {
    322           case 0 :
    323             if ((entire_insn & 0xfff0) == 0x1cc0)
    324               { itype = M32R2F_INSN_JC; goto extract_sfmt_jc; }
    325             itype = M32R2F_INSN_X_INVALID; goto extract_sfmt_empty;
    326           case 1 :
    327             if ((entire_insn & 0xfff0) == 0x1dc0)
    328               { itype = M32R2F_INSN_JNC; goto extract_sfmt_jc; }
    329             itype = M32R2F_INSN_X_INVALID; goto extract_sfmt_empty;
    330           case 2 :
    331             if ((entire_insn & 0xfff0) == 0x1ec0)
    332               { itype = M32R2F_INSN_JL; goto extract_sfmt_jl; }
    333             itype = M32R2F_INSN_X_INVALID; goto extract_sfmt_empty;
    334           case 3 :
    335             if ((entire_insn & 0xfff0) == 0x1fc0)
    336               { itype = M32R2F_INSN_JMP; goto extract_sfmt_jmp; }
    337             itype = M32R2F_INSN_X_INVALID; goto extract_sfmt_empty;
    338           default : itype = M32R2F_INSN_X_INVALID; goto extract_sfmt_empty;
    339           }
    340         }
    341       case 29 :
    342         if ((entire_insn & 0xffff) == 0x10d6)
    343           { itype = M32R2F_INSN_RTE; goto extract_sfmt_rte; }
    344         itype = M32R2F_INSN_X_INVALID; goto extract_sfmt_empty;
    345       case 31 :
    346         if ((entire_insn & 0xfff0) == 0x10f0)
    347           { itype = M32R2F_INSN_TRAP; goto extract_sfmt_trap; }
    348         itype = M32R2F_INSN_X_INVALID; goto extract_sfmt_empty;
    349       case 32 : itype = M32R2F_INSN_STB; goto extract_sfmt_stb;
    350       case 33 : itype = M32R2F_INSN_STB_PLUS; goto extract_sfmt_stb_plus;
    351       case 34 : itype = M32R2F_INSN_STH; goto extract_sfmt_sth;
    352       case 35 : itype = M32R2F_INSN_STH_PLUS; goto extract_sfmt_sth_plus;
    353       case 36 : itype = M32R2F_INSN_ST; goto extract_sfmt_st;
    354       case 37 : itype = M32R2F_INSN_UNLOCK; goto extract_sfmt_unlock;
    355       case 38 : itype = M32R2F_INSN_ST_PLUS; goto extract_sfmt_st_plus;
    356       case 39 : itype = M32R2F_INSN_ST_MINUS; goto extract_sfmt_st_plus;
    357       case 40 : itype = M32R2F_INSN_LDB; goto extract_sfmt_ldb;
    358       case 41 : itype = M32R2F_INSN_LDUB; goto extract_sfmt_ldb;
    359       case 42 : itype = M32R2F_INSN_LDH; goto extract_sfmt_ldh;
    360       case 43 : itype = M32R2F_INSN_LDUH; goto extract_sfmt_ldh;
    361       case 44 : itype = M32R2F_INSN_LD; goto extract_sfmt_ld;
    362       case 45 : itype = M32R2F_INSN_LOCK; goto extract_sfmt_lock;
    363       case 46 : itype = M32R2F_INSN_LD_PLUS; goto extract_sfmt_ld_plus;
    364       case 48 : /* fall through */
    365       case 56 : itype = M32R2F_INSN_MULHI_A; goto extract_sfmt_mulhi_a;
    366       case 49 : /* fall through */
    367       case 57 : itype = M32R2F_INSN_MULLO_A; goto extract_sfmt_mulhi_a;
    368       case 50 : /* fall through */
    369       case 58 : itype = M32R2F_INSN_MULWHI_A; goto extract_sfmt_mulhi_a;
    370       case 51 : /* fall through */
    371       case 59 : itype = M32R2F_INSN_MULWLO_A; goto extract_sfmt_mulhi_a;
    372       case 52 : /* fall through */
    373       case 60 : itype = M32R2F_INSN_MACHI_A; goto extract_sfmt_machi_a;
    374       case 53 : /* fall through */
    375       case 61 : itype = M32R2F_INSN_MACLO_A; goto extract_sfmt_machi_a;
    376       case 54 : /* fall through */
    377       case 62 : itype = M32R2F_INSN_MACWHI_A; goto extract_sfmt_machi_a;
    378       case 55 : /* fall through */
    379       case 63 : itype = M32R2F_INSN_MACWLO_A; goto extract_sfmt_machi_a;
    380       case 64 : /* fall through */
    381       case 65 : /* fall through */
    382       case 66 : /* fall through */
    383       case 67 : /* fall through */
    384       case 68 : /* fall through */
    385       case 69 : /* fall through */
    386       case 70 : /* fall through */
    387       case 71 : /* fall through */
    388       case 72 : /* fall through */
    389       case 73 : /* fall through */
    390       case 74 : /* fall through */
    391       case 75 : /* fall through */
    392       case 76 : /* fall through */
    393       case 77 : /* fall through */
    394       case 78 : /* fall through */
    395       case 79 : itype = M32R2F_INSN_ADDI; goto extract_sfmt_addi;
    396       case 80 : /* fall through */
    397       case 81 : itype = M32R2F_INSN_SRLI; goto extract_sfmt_slli;
    398       case 82 : /* fall through */
    399       case 83 : itype = M32R2F_INSN_SRAI; goto extract_sfmt_slli;
    400       case 84 : /* fall through */
    401       case 85 : itype = M32R2F_INSN_SLLI; goto extract_sfmt_slli;
    402       case 87 :
    403         {
    404           unsigned int val = (((insn >> 0) & (1 << 0)));
    405           switch (val)
    406           {
    407           case 0 :
    408             if ((entire_insn & 0xf0f3) == 0x5070)
    409               { itype = M32R2F_INSN_MVTACHI_A; goto extract_sfmt_mvtachi_a; }
    410             itype = M32R2F_INSN_X_INVALID; goto extract_sfmt_empty;
    411           case 1 :
    412             if ((entire_insn & 0xf0f3) == 0x5071)
    413               { itype = M32R2F_INSN_MVTACLO_A; goto extract_sfmt_mvtachi_a; }
    414             itype = M32R2F_INSN_X_INVALID; goto extract_sfmt_empty;
    415           default : itype = M32R2F_INSN_X_INVALID; goto extract_sfmt_empty;
    416           }
    417         }
    418       case 88 :
    419         if ((entire_insn & 0xf3f2) == 0x5080)
    420           { itype = M32R2F_INSN_RACH_DSI; goto extract_sfmt_rac_dsi; }
    421         itype = M32R2F_INSN_X_INVALID; goto extract_sfmt_empty;
    422       case 89 :
    423         if ((entire_insn & 0xf3f2) == 0x5090)
    424           { itype = M32R2F_INSN_RAC_DSI; goto extract_sfmt_rac_dsi; }
    425         itype = M32R2F_INSN_X_INVALID; goto extract_sfmt_empty;
    426       case 90 : itype = M32R2F_INSN_MULWU1; goto extract_sfmt_mulwu1;
    427       case 91 : itype = M32R2F_INSN_MACWU1; goto extract_sfmt_macwu1;
    428       case 92 : itype = M32R2F_INSN_MACLH1; goto extract_sfmt_macwu1;
    429       case 93 : itype = M32R2F_INSN_MSBLO; goto extract_sfmt_msblo;
    430       case 94 :
    431         if ((entire_insn & 0xffff) == 0x50e4)
    432           { itype = M32R2F_INSN_SADD; goto extract_sfmt_sadd; }
    433         itype = M32R2F_INSN_X_INVALID; goto extract_sfmt_empty;
    434       case 95 :
    435         {
    436           unsigned int val = (((insn >> 0) & (3 << 0)));
    437           switch (val)
    438           {
    439           case 0 : itype = M32R2F_INSN_MVFACHI_A; goto extract_sfmt_mvfachi_a;
    440           case 1 : itype = M32R2F_INSN_MVFACLO_A; goto extract_sfmt_mvfachi_a;
    441           case 2 : itype = M32R2F_INSN_MVFACMI_A; goto extract_sfmt_mvfachi_a;
    442           default : itype = M32R2F_INSN_X_INVALID; goto extract_sfmt_empty;
    443           }
    444         }
    445       case 96 : /* fall through */
    446       case 97 : /* fall through */
    447       case 98 : /* fall through */
    448       case 99 : /* fall through */
    449       case 100 : /* fall through */
    450       case 101 : /* fall through */
    451       case 102 : /* fall through */
    452       case 103 : /* fall through */
    453       case 104 : /* fall through */
    454       case 105 : /* fall through */
    455       case 106 : /* fall through */
    456       case 107 : /* fall through */
    457       case 108 : /* fall through */
    458       case 109 : /* fall through */
    459       case 110 : /* fall through */
    460       case 111 : itype = M32R2F_INSN_LDI8; goto extract_sfmt_ldi8;
    461       case 112 :
    462         {
    463           unsigned int val = (((insn >> 7) & (15 << 1)) | ((insn >> 0) & (1 << 0)));
    464           switch (val)
    465           {
    466           case 0 :
    467             if ((entire_insn & 0xffff) == 0x7000)
    468               { itype = M32R2F_INSN_NOP; goto extract_sfmt_nop; }
    469             itype = M32R2F_INSN_X_INVALID; goto extract_sfmt_empty;
    470           case 2 : /* fall through */
    471           case 3 : itype = M32R2F_INSN_SETPSW; goto extract_sfmt_setpsw;
    472           case 4 : /* fall through */
    473           case 5 : itype = M32R2F_INSN_CLRPSW; goto extract_sfmt_clrpsw;
    474           case 9 :
    475             if ((entire_insn & 0xffff) == 0x7401)
    476               { itype = M32R2F_INSN_SC; goto extract_sfmt_sc; }
    477             itype = M32R2F_INSN_X_INVALID; goto extract_sfmt_empty;
    478           case 11 :
    479             if ((entire_insn & 0xffff) == 0x7501)
    480               { itype = M32R2F_INSN_SNC; goto extract_sfmt_sc; }
    481             itype = M32R2F_INSN_X_INVALID; goto extract_sfmt_empty;
    482           case 16 : /* fall through */
    483           case 17 : itype = M32R2F_INSN_BCL8; goto extract_sfmt_bcl8;
    484           case 18 : /* fall through */
    485           case 19 : itype = M32R2F_INSN_BNCL8; goto extract_sfmt_bcl8;
    486           case 24 : /* fall through */
    487           case 25 : itype = M32R2F_INSN_BC8; goto extract_sfmt_bc8;
    488           case 26 : /* fall through */
    489           case 27 : itype = M32R2F_INSN_BNC8; goto extract_sfmt_bc8;
    490           case 28 : /* fall through */
    491           case 29 : itype = M32R2F_INSN_BL8; goto extract_sfmt_bl8;
    492           case 30 : /* fall through */
    493           case 31 : itype = M32R2F_INSN_BRA8; goto extract_sfmt_bra8;
    494           default : itype = M32R2F_INSN_X_INVALID; goto extract_sfmt_empty;
    495           }
    496         }
    497       case 113 : /* fall through */
    498       case 114 : /* fall through */
    499       case 115 : /* fall through */
    500       case 116 : /* fall through */
    501       case 117 : /* fall through */
    502       case 118 : /* fall through */
    503       case 119 : /* fall through */
    504       case 120 : /* fall through */
    505       case 121 : /* fall through */
    506       case 122 : /* fall through */
    507       case 123 : /* fall through */
    508       case 124 : /* fall through */
    509       case 125 : /* fall through */
    510       case 126 : /* fall through */
    511       case 127 :
    512         {
    513           unsigned int val = (((insn >> 8) & (15 << 0)));
    514           switch (val)
    515           {
    516           case 1 : itype = M32R2F_INSN_SETPSW; goto extract_sfmt_setpsw;
    517           case 2 : itype = M32R2F_INSN_CLRPSW; goto extract_sfmt_clrpsw;
    518           case 8 : itype = M32R2F_INSN_BCL8; goto extract_sfmt_bcl8;
    519           case 9 : itype = M32R2F_INSN_BNCL8; goto extract_sfmt_bcl8;
    520           case 12 : itype = M32R2F_INSN_BC8; goto extract_sfmt_bc8;
    521           case 13 : itype = M32R2F_INSN_BNC8; goto extract_sfmt_bc8;
    522           case 14 : itype = M32R2F_INSN_BL8; goto extract_sfmt_bl8;
    523           case 15 : itype = M32R2F_INSN_BRA8; goto extract_sfmt_bra8;
    524           default : itype = M32R2F_INSN_X_INVALID; goto extract_sfmt_empty;
    525           }
    526         }
    527       case 132 :
    528         if ((entire_insn & 0xfff00000) == 0x80400000)
    529           { itype = M32R2F_INSN_CMPI; goto extract_sfmt_cmpi; }
    530         itype = M32R2F_INSN_X_INVALID; goto extract_sfmt_empty;
    531       case 133 :
    532         if ((entire_insn & 0xfff00000) == 0x80500000)
    533           { itype = M32R2F_INSN_CMPUI; goto extract_sfmt_cmpi; }
    534         itype = M32R2F_INSN_X_INVALID; goto extract_sfmt_empty;
    535       case 134 :
    536         {
    537           unsigned int val = (((entire_insn >> 8) & (3 << 0)));
    538           switch (val)
    539           {
    540           case 0 :
    541             if ((entire_insn & 0xf0f0ffff) == 0x80600000)
    542               { itype = M32R2F_INSN_SAT; goto extract_sfmt_sat; }
    543             itype = M32R2F_INSN_X_INVALID; goto extract_sfmt_empty;
    544           case 2 :
    545             if ((entire_insn & 0xf0f0ffff) == 0x80600200)
    546               { itype = M32R2F_INSN_SATH; goto extract_sfmt_satb; }
    547             itype = M32R2F_INSN_X_INVALID; goto extract_sfmt_empty;
    548           case 3 :
    549             if ((entire_insn & 0xf0f0ffff) == 0x80600300)
    550               { itype = M32R2F_INSN_SATB; goto extract_sfmt_satb; }
    551             itype = M32R2F_INSN_X_INVALID; goto extract_sfmt_empty;
    552           default : itype = M32R2F_INSN_X_INVALID; goto extract_sfmt_empty;
    553           }
    554         }
    555       case 136 : itype = M32R2F_INSN_ADDV3; goto extract_sfmt_addv3;
    556       case 138 : itype = M32R2F_INSN_ADD3; goto extract_sfmt_add3;
    557       case 140 : itype = M32R2F_INSN_AND3; goto extract_sfmt_and3;
    558       case 141 : itype = M32R2F_INSN_XOR3; goto extract_sfmt_and3;
    559       case 142 : itype = M32R2F_INSN_OR3; goto extract_sfmt_or3;
    560       case 144 :
    561         {
    562           unsigned int val = (((entire_insn >> 3) & (3 << 0)));
    563           switch (val)
    564           {
    565           case 0 :
    566             if ((entire_insn & 0xf0f0ffff) == 0x90000000)
    567               { itype = M32R2F_INSN_DIV; goto extract_sfmt_div; }
    568             itype = M32R2F_INSN_X_INVALID; goto extract_sfmt_empty;
    569           case 2 :
    570             if ((entire_insn & 0xf0f0ffff) == 0x90000010)
    571               { itype = M32R2F_INSN_DIVH; goto extract_sfmt_div; }
    572             itype = M32R2F_INSN_X_INVALID; goto extract_sfmt_empty;
    573           case 3 :
    574             if ((entire_insn & 0xf0f0ffff) == 0x90000018)
    575               { itype = M32R2F_INSN_DIVB; goto extract_sfmt_div; }
    576             itype = M32R2F_INSN_X_INVALID; goto extract_sfmt_empty;
    577           default : itype = M32R2F_INSN_X_INVALID; goto extract_sfmt_empty;
    578           }
    579         }
    580       case 145 :
    581         {
    582           unsigned int val = (((entire_insn >> 3) & (3 << 0)));
    583           switch (val)
    584           {
    585           case 0 :
    586             if ((entire_insn & 0xf0f0ffff) == 0x90100000)
    587               { itype = M32R2F_INSN_DIVU; goto extract_sfmt_div; }
    588             itype = M32R2F_INSN_X_INVALID; goto extract_sfmt_empty;
    589           case 2 :
    590             if ((entire_insn & 0xf0f0ffff) == 0x90100010)
    591               { itype = M32R2F_INSN_DIVUH; goto extract_sfmt_div; }
    592             itype = M32R2F_INSN_X_INVALID; goto extract_sfmt_empty;
    593           case 3 :
    594             if ((entire_insn & 0xf0f0ffff) == 0x90100018)
    595               { itype = M32R2F_INSN_DIVUB; goto extract_sfmt_div; }
    596             itype = M32R2F_INSN_X_INVALID; goto extract_sfmt_empty;
    597           default : itype = M32R2F_INSN_X_INVALID; goto extract_sfmt_empty;
    598           }
    599         }
    600       case 146 :
    601         {
    602           unsigned int val = (((entire_insn >> 3) & (3 << 0)));
    603           switch (val)
    604           {
    605           case 0 :
    606             if ((entire_insn & 0xf0f0ffff) == 0x90200000)
    607               { itype = M32R2F_INSN_REM; goto extract_sfmt_div; }
    608             itype = M32R2F_INSN_X_INVALID; goto extract_sfmt_empty;
    609           case 2 :
    610             if ((entire_insn & 0xf0f0ffff) == 0x90200010)
    611               { itype = M32R2F_INSN_REMH; goto extract_sfmt_div; }
    612             itype = M32R2F_INSN_X_INVALID; goto extract_sfmt_empty;
    613           case 3 :
    614             if ((entire_insn & 0xf0f0ffff) == 0x90200018)
    615               { itype = M32R2F_INSN_REMB; goto extract_sfmt_div; }
    616             itype = M32R2F_INSN_X_INVALID; goto extract_sfmt_empty;
    617           default : itype = M32R2F_INSN_X_INVALID; goto extract_sfmt_empty;
    618           }
    619         }
    620       case 147 :
    621         {
    622           unsigned int val = (((entire_insn >> 3) & (3 << 0)));
    623           switch (val)
    624           {
    625           case 0 :
    626             if ((entire_insn & 0xf0f0ffff) == 0x90300000)
    627               { itype = M32R2F_INSN_REMU; goto extract_sfmt_div; }
    628             itype = M32R2F_INSN_X_INVALID; goto extract_sfmt_empty;
    629           case 2 :
    630             if ((entire_insn & 0xf0f0ffff) == 0x90300010)
    631               { itype = M32R2F_INSN_REMUH; goto extract_sfmt_div; }
    632             itype = M32R2F_INSN_X_INVALID; goto extract_sfmt_empty;
    633           case 3 :
    634             if ((entire_insn & 0xf0f0ffff) == 0x90300018)
    635               { itype = M32R2F_INSN_REMUB; goto extract_sfmt_div; }
    636             itype = M32R2F_INSN_X_INVALID; goto extract_sfmt_empty;
    637           default : itype = M32R2F_INSN_X_INVALID; goto extract_sfmt_empty;
    638           }
    639         }
    640       case 152 : itype = M32R2F_INSN_SRL3; goto extract_sfmt_sll3;
    641       case 154 : itype = M32R2F_INSN_SRA3; goto extract_sfmt_sll3;
    642       case 156 : itype = M32R2F_INSN_SLL3; goto extract_sfmt_sll3;
    643       case 159 :
    644         if ((entire_insn & 0xf0ff0000) == 0x90f00000)
    645           { itype = M32R2F_INSN_LDI16; goto extract_sfmt_ldi16; }
    646         itype = M32R2F_INSN_X_INVALID; goto extract_sfmt_empty;
    647       case 160 : itype = M32R2F_INSN_STB_D; goto extract_sfmt_stb_d;
    648       case 162 : itype = M32R2F_INSN_STH_D; goto extract_sfmt_sth_d;
    649       case 164 : itype = M32R2F_INSN_ST_D; goto extract_sfmt_st_d;
    650       case 166 :
    651         if ((entire_insn & 0xf8f00000) == 0xa0600000)
    652           { itype = M32R2F_INSN_BSET; goto extract_sfmt_bset; }
    653         itype = M32R2F_INSN_X_INVALID; goto extract_sfmt_empty;
    654       case 167 :
    655         if ((entire_insn & 0xf8f00000) == 0xa0700000)
    656           { itype = M32R2F_INSN_BCLR; goto extract_sfmt_bset; }
    657         itype = M32R2F_INSN_X_INVALID; goto extract_sfmt_empty;
    658       case 168 : itype = M32R2F_INSN_LDB_D; goto extract_sfmt_ldb_d;
    659       case 169 : itype = M32R2F_INSN_LDUB_D; goto extract_sfmt_ldb_d;
    660       case 170 : itype = M32R2F_INSN_LDH_D; goto extract_sfmt_ldh_d;
    661       case 171 : itype = M32R2F_INSN_LDUH_D; goto extract_sfmt_ldh_d;
    662       case 172 : itype = M32R2F_INSN_LD_D; goto extract_sfmt_ld_d;
    663       case 176 : itype = M32R2F_INSN_BEQ; goto extract_sfmt_beq;
    664       case 177 : itype = M32R2F_INSN_BNE; goto extract_sfmt_beq;
    665       case 184 :
    666         if ((entire_insn & 0xfff00000) == 0xb0800000)
    667           { itype = M32R2F_INSN_BEQZ; goto extract_sfmt_beqz; }
    668         itype = M32R2F_INSN_X_INVALID; goto extract_sfmt_empty;
    669       case 185 :
    670         if ((entire_insn & 0xfff00000) == 0xb0900000)
    671           { itype = M32R2F_INSN_BNEZ; goto extract_sfmt_beqz; }
    672         itype = M32R2F_INSN_X_INVALID; goto extract_sfmt_empty;
    673       case 186 :
    674         if ((entire_insn & 0xfff00000) == 0xb0a00000)
    675           { itype = M32R2F_INSN_BLTZ; goto extract_sfmt_beqz; }
    676         itype = M32R2F_INSN_X_INVALID; goto extract_sfmt_empty;
    677       case 187 :
    678         if ((entire_insn & 0xfff00000) == 0xb0b00000)
    679           { itype = M32R2F_INSN_BGEZ; goto extract_sfmt_beqz; }
    680         itype = M32R2F_INSN_X_INVALID; goto extract_sfmt_empty;
    681       case 188 :
    682         if ((entire_insn & 0xfff00000) == 0xb0c00000)
    683           { itype = M32R2F_INSN_BLEZ; goto extract_sfmt_beqz; }
    684         itype = M32R2F_INSN_X_INVALID; goto extract_sfmt_empty;
    685       case 189 :
    686         if ((entire_insn & 0xfff00000) == 0xb0d00000)
    687           { itype = M32R2F_INSN_BGTZ; goto extract_sfmt_beqz; }
    688         itype = M32R2F_INSN_X_INVALID; goto extract_sfmt_empty;
    689       case 220 :
    690         if ((entire_insn & 0xf0ff0000) == 0xd0c00000)
    691           { itype = M32R2F_INSN_SETH; goto extract_sfmt_seth; }
    692         itype = M32R2F_INSN_X_INVALID; goto extract_sfmt_empty;
    693       case 224 : /* fall through */
    694       case 225 : /* fall through */
    695       case 226 : /* fall through */
    696       case 227 : /* fall through */
    697       case 228 : /* fall through */
    698       case 229 : /* fall through */
    699       case 230 : /* fall through */
    700       case 231 : /* fall through */
    701       case 232 : /* fall through */
    702       case 233 : /* fall through */
    703       case 234 : /* fall through */
    704       case 235 : /* fall through */
    705       case 236 : /* fall through */
    706       case 237 : /* fall through */
    707       case 238 : /* fall through */
    708       case 239 : itype = M32R2F_INSN_LD24; goto extract_sfmt_ld24;
    709       case 240 : /* fall through */
    710       case 241 : /* fall through */
    711       case 242 : /* fall through */
    712       case 243 : /* fall through */
    713       case 244 : /* fall through */
    714       case 245 : /* fall through */
    715       case 246 : /* fall through */
    716       case 247 : /* fall through */
    717       case 248 : /* fall through */
    718       case 249 : /* fall through */
    719       case 250 : /* fall through */
    720       case 251 : /* fall through */
    721       case 252 : /* fall through */
    722       case 253 : /* fall through */
    723       case 254 : /* fall through */
    724       case 255 :
    725         {
    726           unsigned int val = (((insn >> 8) & (7 << 0)));
    727           switch (val)
    728           {
    729           case 0 :
    730             if ((entire_insn & 0xff000000) == 0xf8000000)
    731               { itype = M32R2F_INSN_BCL24; goto extract_sfmt_bcl24; }
    732             itype = M32R2F_INSN_X_INVALID; goto extract_sfmt_empty;
    733           case 1 :
    734             if ((entire_insn & 0xff000000) == 0xf9000000)
    735               { itype = M32R2F_INSN_BNCL24; goto extract_sfmt_bcl24; }
    736             itype = M32R2F_INSN_X_INVALID; goto extract_sfmt_empty;
    737           case 4 :
    738             if ((entire_insn & 0xff000000) == 0xfc000000)
    739               { itype = M32R2F_INSN_BC24; goto extract_sfmt_bc24; }
    740             itype = M32R2F_INSN_X_INVALID; goto extract_sfmt_empty;
    741           case 5 :
    742             if ((entire_insn & 0xff000000) == 0xfd000000)
    743               { itype = M32R2F_INSN_BNC24; goto extract_sfmt_bc24; }
    744             itype = M32R2F_INSN_X_INVALID; goto extract_sfmt_empty;
    745           case 6 :
    746             if ((entire_insn & 0xff000000) == 0xfe000000)
    747               { itype = M32R2F_INSN_BL24; goto extract_sfmt_bl24; }
    748             itype = M32R2F_INSN_X_INVALID; goto extract_sfmt_empty;
    749           case 7 :
    750             if ((entire_insn & 0xff000000) == 0xff000000)
    751               { itype = M32R2F_INSN_BRA24; goto extract_sfmt_bra24; }
    752             itype = M32R2F_INSN_X_INVALID; goto extract_sfmt_empty;
    753           default : itype = M32R2F_INSN_X_INVALID; goto extract_sfmt_empty;
    754           }
    755         }
    756       default : itype = M32R2F_INSN_X_INVALID; goto extract_sfmt_empty;
    757       }
    758     }
    759   }
    760 
    761   /* The instruction has been decoded, now extract the fields.  */
    762 
    763  extract_sfmt_empty:
    764   {
    765     const IDESC *idesc = &m32r2f_insn_data[itype];
    766 #define FLD(f) abuf->fields.sfmt_empty.f
    767 
    768 
    769   /* Record the fields for the semantic handler.  */
    770   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_empty", (char *) 0));
    771 
    772 #undef FLD
    773     return idesc;
    774   }
    775 
    776  extract_sfmt_add:
    777   {
    778     const IDESC *idesc = &m32r2f_insn_data[itype];
    779     CGEN_INSN_WORD insn = entire_insn;
    780 #define FLD(f) abuf->fields.sfmt_add.f
    781     UINT f_r1;
    782     UINT f_r2;
    783 
    784     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
    785     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
    786 
    787   /* Record the fields for the semantic handler.  */
    788   FLD (f_r1) = f_r1;
    789   FLD (f_r2) = f_r2;
    790   FLD (i_dr) = & CPU (h_gr)[f_r1];
    791   FLD (i_sr) = & CPU (h_gr)[f_r2];
    792   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));
    793 
    794 #if WITH_PROFILE_MODEL_P
    795   /* Record the fields for profiling.  */
    796   if (PROFILE_MODEL_P (current_cpu))
    797     {
    798       FLD (in_dr) = f_r1;
    799       FLD (in_sr) = f_r2;
    800       FLD (out_dr) = f_r1;
    801     }
    802 #endif
    803 #undef FLD
    804     return idesc;
    805   }
    806 
    807  extract_sfmt_add3:
    808   {
    809     const IDESC *idesc = &m32r2f_insn_data[itype];
    810     CGEN_INSN_WORD insn = entire_insn;
    811 #define FLD(f) abuf->fields.sfmt_add3.f
    812     UINT f_r1;
    813     UINT f_r2;
    814     INT f_simm16;
    815 
    816     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
    817     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
    818     f_simm16 = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
    819 
    820   /* Record the fields for the semantic handler.  */
    821   FLD (f_simm16) = f_simm16;
    822   FLD (f_r2) = f_r2;
    823   FLD (f_r1) = f_r1;
    824   FLD (i_sr) = & CPU (h_gr)[f_r2];
    825   FLD (i_dr) = & CPU (h_gr)[f_r1];
    826   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));
    827 
    828 #if WITH_PROFILE_MODEL_P
    829   /* Record the fields for profiling.  */
    830   if (PROFILE_MODEL_P (current_cpu))
    831     {
    832       FLD (in_sr) = f_r2;
    833       FLD (out_dr) = f_r1;
    834     }
    835 #endif
    836 #undef FLD
    837     return idesc;
    838   }
    839 
    840  extract_sfmt_and3:
    841   {
    842     const IDESC *idesc = &m32r2f_insn_data[itype];
    843     CGEN_INSN_WORD insn = entire_insn;
    844 #define FLD(f) abuf->fields.sfmt_and3.f
    845     UINT f_r1;
    846     UINT f_r2;
    847     UINT f_uimm16;
    848 
    849     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
    850     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
    851     f_uimm16 = EXTRACT_MSB0_UINT (insn, 32, 16, 16);
    852 
    853   /* Record the fields for the semantic handler.  */
    854   FLD (f_r2) = f_r2;
    855   FLD (f_uimm16) = f_uimm16;
    856   FLD (f_r1) = f_r1;
    857   FLD (i_sr) = & CPU (h_gr)[f_r2];
    858   FLD (i_dr) = & CPU (h_gr)[f_r1];
    859   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));
    860 
    861 #if WITH_PROFILE_MODEL_P
    862   /* Record the fields for profiling.  */
    863   if (PROFILE_MODEL_P (current_cpu))
    864     {
    865       FLD (in_sr) = f_r2;
    866       FLD (out_dr) = f_r1;
    867     }
    868 #endif
    869 #undef FLD
    870     return idesc;
    871   }
    872 
    873  extract_sfmt_or3:
    874   {
    875     const IDESC *idesc = &m32r2f_insn_data[itype];
    876     CGEN_INSN_WORD insn = entire_insn;
    877 #define FLD(f) abuf->fields.sfmt_and3.f
    878     UINT f_r1;
    879     UINT f_r2;
    880     UINT f_uimm16;
    881 
    882     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
    883     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
    884     f_uimm16 = EXTRACT_MSB0_UINT (insn, 32, 16, 16);
    885 
    886   /* Record the fields for the semantic handler.  */
    887   FLD (f_r2) = f_r2;
    888   FLD (f_uimm16) = f_uimm16;
    889   FLD (f_r1) = f_r1;
    890   FLD (i_sr) = & CPU (h_gr)[f_r2];
    891   FLD (i_dr) = & CPU (h_gr)[f_r1];
    892   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));
    893 
    894 #if WITH_PROFILE_MODEL_P
    895   /* Record the fields for profiling.  */
    896   if (PROFILE_MODEL_P (current_cpu))
    897     {
    898       FLD (in_sr) = f_r2;
    899       FLD (out_dr) = f_r1;
    900     }
    901 #endif
    902 #undef FLD
    903     return idesc;
    904   }
    905 
    906  extract_sfmt_addi:
    907   {
    908     const IDESC *idesc = &m32r2f_insn_data[itype];
    909     CGEN_INSN_WORD insn = entire_insn;
    910 #define FLD(f) abuf->fields.sfmt_addi.f
    911     UINT f_r1;
    912     INT f_simm8;
    913 
    914     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
    915     f_simm8 = EXTRACT_MSB0_SINT (insn, 16, 8, 8);
    916 
    917   /* Record the fields for the semantic handler.  */
    918   FLD (f_r1) = f_r1;
    919   FLD (f_simm8) = f_simm8;
    920   FLD (i_dr) = & CPU (h_gr)[f_r1];
    921   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));
    922 
    923 #if WITH_PROFILE_MODEL_P
    924   /* Record the fields for profiling.  */
    925   if (PROFILE_MODEL_P (current_cpu))
    926     {
    927       FLD (in_dr) = f_r1;
    928       FLD (out_dr) = f_r1;
    929     }
    930 #endif
    931 #undef FLD
    932     return idesc;
    933   }
    934 
    935  extract_sfmt_addv:
    936   {
    937     const IDESC *idesc = &m32r2f_insn_data[itype];
    938     CGEN_INSN_WORD insn = entire_insn;
    939 #define FLD(f) abuf->fields.sfmt_add.f
    940     UINT f_r1;
    941     UINT f_r2;
    942 
    943     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
    944     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
    945 
    946   /* Record the fields for the semantic handler.  */
    947   FLD (f_r1) = f_r1;
    948   FLD (f_r2) = f_r2;
    949   FLD (i_dr) = & CPU (h_gr)[f_r1];
    950   FLD (i_sr) = & CPU (h_gr)[f_r2];
    951   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));
    952 
    953 #if WITH_PROFILE_MODEL_P
    954   /* Record the fields for profiling.  */
    955   if (PROFILE_MODEL_P (current_cpu))
    956     {
    957       FLD (in_dr) = f_r1;
    958       FLD (in_sr) = f_r2;
    959       FLD (out_dr) = f_r1;
    960     }
    961 #endif
    962 #undef FLD
    963     return idesc;
    964   }
    965 
    966  extract_sfmt_addv3:
    967   {
    968     const IDESC *idesc = &m32r2f_insn_data[itype];
    969     CGEN_INSN_WORD insn = entire_insn;
    970 #define FLD(f) abuf->fields.sfmt_add3.f
    971     UINT f_r1;
    972     UINT f_r2;
    973     INT f_simm16;
    974 
    975     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
    976     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
    977     f_simm16 = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
    978 
    979   /* Record the fields for the semantic handler.  */
    980   FLD (f_simm16) = f_simm16;
    981   FLD (f_r2) = f_r2;
    982   FLD (f_r1) = f_r1;
    983   FLD (i_sr) = & CPU (h_gr)[f_r2];
    984   FLD (i_dr) = & CPU (h_gr)[f_r1];
    985   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));
    986 
    987 #if WITH_PROFILE_MODEL_P
    988   /* Record the fields for profiling.  */
    989   if (PROFILE_MODEL_P (current_cpu))
    990     {
    991       FLD (in_sr) = f_r2;
    992       FLD (out_dr) = f_r1;
    993     }
    994 #endif
    995 #undef FLD
    996     return idesc;
    997   }
    998 
    999  extract_sfmt_addx:
   1000   {
   1001     const IDESC *idesc = &m32r2f_insn_data[itype];
   1002     CGEN_INSN_WORD insn = entire_insn;
   1003 #define FLD(f) abuf->fields.sfmt_add.f
   1004     UINT f_r1;
   1005     UINT f_r2;
   1006 
   1007     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
   1008     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
   1009 
   1010   /* Record the fields for the semantic handler.  */
   1011   FLD (f_r1) = f_r1;
   1012   FLD (f_r2) = f_r2;
   1013   FLD (i_dr) = & CPU (h_gr)[f_r1];
   1014   FLD (i_sr) = & CPU (h_gr)[f_r2];
   1015   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));
   1016 
   1017 #if WITH_PROFILE_MODEL_P
   1018   /* Record the fields for profiling.  */
   1019   if (PROFILE_MODEL_P (current_cpu))
   1020     {
   1021       FLD (in_dr) = f_r1;
   1022       FLD (in_sr) = f_r2;
   1023       FLD (out_dr) = f_r1;
   1024     }
   1025 #endif
   1026 #undef FLD
   1027     return idesc;
   1028   }
   1029 
   1030  extract_sfmt_bc8:
   1031   {
   1032     const IDESC *idesc = &m32r2f_insn_data[itype];
   1033     CGEN_INSN_WORD insn = entire_insn;
   1034 #define FLD(f) abuf->fields.sfmt_bl8.f
   1035     SI f_disp8;
   1036 
   1037     f_disp8 = ((((EXTRACT_MSB0_SINT (insn, 16, 8, 8)) << (2))) + (((pc) & (-4))));
   1038 
   1039   /* Record the fields for the semantic handler.  */
   1040   FLD (i_disp8) = f_disp8;
   1041   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bc8", "disp8 0x%x", 'x', f_disp8, (char *) 0));
   1042 
   1043 #if WITH_PROFILE_MODEL_P
   1044   /* Record the fields for profiling.  */
   1045   if (PROFILE_MODEL_P (current_cpu))
   1046     {
   1047     }
   1048 #endif
   1049 #undef FLD
   1050     return idesc;
   1051   }
   1052 
   1053  extract_sfmt_bc24:
   1054   {
   1055     const IDESC *idesc = &m32r2f_insn_data[itype];
   1056     CGEN_INSN_WORD insn = entire_insn;
   1057 #define FLD(f) abuf->fields.sfmt_bl24.f
   1058     SI f_disp24;
   1059 
   1060     f_disp24 = ((((EXTRACT_MSB0_SINT (insn, 32, 8, 24)) << (2))) + (pc));
   1061 
   1062   /* Record the fields for the semantic handler.  */
   1063   FLD (i_disp24) = f_disp24;
   1064   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bc24", "disp24 0x%x", 'x', f_disp24, (char *) 0));
   1065 
   1066 #if WITH_PROFILE_MODEL_P
   1067   /* Record the fields for profiling.  */
   1068   if (PROFILE_MODEL_P (current_cpu))
   1069     {
   1070     }
   1071 #endif
   1072 #undef FLD
   1073     return idesc;
   1074   }
   1075 
   1076  extract_sfmt_beq:
   1077   {
   1078     const IDESC *idesc = &m32r2f_insn_data[itype];
   1079     CGEN_INSN_WORD insn = entire_insn;
   1080 #define FLD(f) abuf->fields.sfmt_beq.f
   1081     UINT f_r1;
   1082     UINT f_r2;
   1083     SI f_disp16;
   1084 
   1085     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
   1086     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
   1087     f_disp16 = ((((EXTRACT_MSB0_SINT (insn, 32, 16, 16)) << (2))) + (pc));
   1088 
   1089   /* Record the fields for the semantic handler.  */
   1090   FLD (f_r1) = f_r1;
   1091   FLD (f_r2) = f_r2;
   1092   FLD (i_disp16) = f_disp16;
   1093   FLD (i_src1) = & CPU (h_gr)[f_r1];
   1094   FLD (i_src2) = & CPU (h_gr)[f_r2];
   1095   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));
   1096 
   1097 #if WITH_PROFILE_MODEL_P
   1098   /* Record the fields for profiling.  */
   1099   if (PROFILE_MODEL_P (current_cpu))
   1100     {
   1101       FLD (in_src1) = f_r1;
   1102       FLD (in_src2) = f_r2;
   1103     }
   1104 #endif
   1105 #undef FLD
   1106     return idesc;
   1107   }
   1108 
   1109  extract_sfmt_beqz:
   1110   {
   1111     const IDESC *idesc = &m32r2f_insn_data[itype];
   1112     CGEN_INSN_WORD insn = entire_insn;
   1113 #define FLD(f) abuf->fields.sfmt_beq.f
   1114     UINT f_r2;
   1115     SI f_disp16;
   1116 
   1117     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
   1118     f_disp16 = ((((EXTRACT_MSB0_SINT (insn, 32, 16, 16)) << (2))) + (pc));
   1119 
   1120   /* Record the fields for the semantic handler.  */
   1121   FLD (f_r2) = f_r2;
   1122   FLD (i_disp16) = f_disp16;
   1123   FLD (i_src2) = & CPU (h_gr)[f_r2];
   1124   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));
   1125 
   1126 #if WITH_PROFILE_MODEL_P
   1127   /* Record the fields for profiling.  */
   1128   if (PROFILE_MODEL_P (current_cpu))
   1129     {
   1130       FLD (in_src2) = f_r2;
   1131     }
   1132 #endif
   1133 #undef FLD
   1134     return idesc;
   1135   }
   1136 
   1137  extract_sfmt_bl8:
   1138   {
   1139     const IDESC *idesc = &m32r2f_insn_data[itype];
   1140     CGEN_INSN_WORD insn = entire_insn;
   1141 #define FLD(f) abuf->fields.sfmt_bl8.f
   1142     SI f_disp8;
   1143 
   1144     f_disp8 = ((((EXTRACT_MSB0_SINT (insn, 16, 8, 8)) << (2))) + (((pc) & (-4))));
   1145 
   1146   /* Record the fields for the semantic handler.  */
   1147   FLD (i_disp8) = f_disp8;
   1148   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bl8", "disp8 0x%x", 'x', f_disp8, (char *) 0));
   1149 
   1150 #if WITH_PROFILE_MODEL_P
   1151   /* Record the fields for profiling.  */
   1152   if (PROFILE_MODEL_P (current_cpu))
   1153     {
   1154       FLD (out_h_gr_SI_14) = 14;
   1155     }
   1156 #endif
   1157 #undef FLD
   1158     return idesc;
   1159   }
   1160 
   1161  extract_sfmt_bl24:
   1162   {
   1163     const IDESC *idesc = &m32r2f_insn_data[itype];
   1164     CGEN_INSN_WORD insn = entire_insn;
   1165 #define FLD(f) abuf->fields.sfmt_bl24.f
   1166     SI f_disp24;
   1167 
   1168     f_disp24 = ((((EXTRACT_MSB0_SINT (insn, 32, 8, 24)) << (2))) + (pc));
   1169 
   1170   /* Record the fields for the semantic handler.  */
   1171   FLD (i_disp24) = f_disp24;
   1172   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bl24", "disp24 0x%x", 'x', f_disp24, (char *) 0));
   1173 
   1174 #if WITH_PROFILE_MODEL_P
   1175   /* Record the fields for profiling.  */
   1176   if (PROFILE_MODEL_P (current_cpu))
   1177     {
   1178       FLD (out_h_gr_SI_14) = 14;
   1179     }
   1180 #endif
   1181 #undef FLD
   1182     return idesc;
   1183   }
   1184 
   1185  extract_sfmt_bcl8:
   1186   {
   1187     const IDESC *idesc = &m32r2f_insn_data[itype];
   1188     CGEN_INSN_WORD insn = entire_insn;
   1189 #define FLD(f) abuf->fields.sfmt_bl8.f
   1190     SI f_disp8;
   1191 
   1192     f_disp8 = ((((EXTRACT_MSB0_SINT (insn, 16, 8, 8)) << (2))) + (((pc) & (-4))));
   1193 
   1194   /* Record the fields for the semantic handler.  */
   1195   FLD (i_disp8) = f_disp8;
   1196   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bcl8", "disp8 0x%x", 'x', f_disp8, (char *) 0));
   1197 
   1198 #if WITH_PROFILE_MODEL_P
   1199   /* Record the fields for profiling.  */
   1200   if (PROFILE_MODEL_P (current_cpu))
   1201     {
   1202       FLD (out_h_gr_SI_14) = 14;
   1203     }
   1204 #endif
   1205 #undef FLD
   1206     return idesc;
   1207   }
   1208 
   1209  extract_sfmt_bcl24:
   1210   {
   1211     const IDESC *idesc = &m32r2f_insn_data[itype];
   1212     CGEN_INSN_WORD insn = entire_insn;
   1213 #define FLD(f) abuf->fields.sfmt_bl24.f
   1214     SI f_disp24;
   1215 
   1216     f_disp24 = ((((EXTRACT_MSB0_SINT (insn, 32, 8, 24)) << (2))) + (pc));
   1217 
   1218   /* Record the fields for the semantic handler.  */
   1219   FLD (i_disp24) = f_disp24;
   1220   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bcl24", "disp24 0x%x", 'x', f_disp24, (char *) 0));
   1221 
   1222 #if WITH_PROFILE_MODEL_P
   1223   /* Record the fields for profiling.  */
   1224   if (PROFILE_MODEL_P (current_cpu))
   1225     {
   1226       FLD (out_h_gr_SI_14) = 14;
   1227     }
   1228 #endif
   1229 #undef FLD
   1230     return idesc;
   1231   }
   1232 
   1233  extract_sfmt_bra8:
   1234   {
   1235     const IDESC *idesc = &m32r2f_insn_data[itype];
   1236     CGEN_INSN_WORD insn = entire_insn;
   1237 #define FLD(f) abuf->fields.sfmt_bl8.f
   1238     SI f_disp8;
   1239 
   1240     f_disp8 = ((((EXTRACT_MSB0_SINT (insn, 16, 8, 8)) << (2))) + (((pc) & (-4))));
   1241 
   1242   /* Record the fields for the semantic handler.  */
   1243   FLD (i_disp8) = f_disp8;
   1244   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bra8", "disp8 0x%x", 'x', f_disp8, (char *) 0));
   1245 
   1246 #if WITH_PROFILE_MODEL_P
   1247   /* Record the fields for profiling.  */
   1248   if (PROFILE_MODEL_P (current_cpu))
   1249     {
   1250     }
   1251 #endif
   1252 #undef FLD
   1253     return idesc;
   1254   }
   1255 
   1256  extract_sfmt_bra24:
   1257   {
   1258     const IDESC *idesc = &m32r2f_insn_data[itype];
   1259     CGEN_INSN_WORD insn = entire_insn;
   1260 #define FLD(f) abuf->fields.sfmt_bl24.f
   1261     SI f_disp24;
   1262 
   1263     f_disp24 = ((((EXTRACT_MSB0_SINT (insn, 32, 8, 24)) << (2))) + (pc));
   1264 
   1265   /* Record the fields for the semantic handler.  */
   1266   FLD (i_disp24) = f_disp24;
   1267   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bra24", "disp24 0x%x", 'x', f_disp24, (char *) 0));
   1268 
   1269 #if WITH_PROFILE_MODEL_P
   1270   /* Record the fields for profiling.  */
   1271   if (PROFILE_MODEL_P (current_cpu))
   1272     {
   1273     }
   1274 #endif
   1275 #undef FLD
   1276     return idesc;
   1277   }
   1278 
   1279  extract_sfmt_cmp:
   1280   {
   1281     const IDESC *idesc = &m32r2f_insn_data[itype];
   1282     CGEN_INSN_WORD insn = entire_insn;
   1283 #define FLD(f) abuf->fields.sfmt_st_plus.f
   1284     UINT f_r1;
   1285     UINT f_r2;
   1286 
   1287     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
   1288     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
   1289 
   1290   /* Record the fields for the semantic handler.  */
   1291   FLD (f_r1) = f_r1;
   1292   FLD (f_r2) = f_r2;
   1293   FLD (i_src1) = & CPU (h_gr)[f_r1];
   1294   FLD (i_src2) = & CPU (h_gr)[f_r2];
   1295   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));
   1296 
   1297 #if WITH_PROFILE_MODEL_P
   1298   /* Record the fields for profiling.  */
   1299   if (PROFILE_MODEL_P (current_cpu))
   1300     {
   1301       FLD (in_src1) = f_r1;
   1302       FLD (in_src2) = f_r2;
   1303     }
   1304 #endif
   1305 #undef FLD
   1306     return idesc;
   1307   }
   1308 
   1309  extract_sfmt_cmpi:
   1310   {
   1311     const IDESC *idesc = &m32r2f_insn_data[itype];
   1312     CGEN_INSN_WORD insn = entire_insn;
   1313 #define FLD(f) abuf->fields.sfmt_st_d.f
   1314     UINT f_r2;
   1315     INT f_simm16;
   1316 
   1317     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
   1318     f_simm16 = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
   1319 
   1320   /* Record the fields for the semantic handler.  */
   1321   FLD (f_simm16) = f_simm16;
   1322   FLD (f_r2) = f_r2;
   1323   FLD (i_src2) = & CPU (h_gr)[f_r2];
   1324   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));
   1325 
   1326 #if WITH_PROFILE_MODEL_P
   1327   /* Record the fields for profiling.  */
   1328   if (PROFILE_MODEL_P (current_cpu))
   1329     {
   1330       FLD (in_src2) = f_r2;
   1331     }
   1332 #endif
   1333 #undef FLD
   1334     return idesc;
   1335   }
   1336 
   1337  extract_sfmt_cmpz:
   1338   {
   1339     const IDESC *idesc = &m32r2f_insn_data[itype];
   1340     CGEN_INSN_WORD insn = entire_insn;
   1341 #define FLD(f) abuf->fields.sfmt_st_plus.f
   1342     UINT f_r2;
   1343 
   1344     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
   1345 
   1346   /* Record the fields for the semantic handler.  */
   1347   FLD (f_r2) = f_r2;
   1348   FLD (i_src2) = & CPU (h_gr)[f_r2];
   1349   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));
   1350 
   1351 #if WITH_PROFILE_MODEL_P
   1352   /* Record the fields for profiling.  */
   1353   if (PROFILE_MODEL_P (current_cpu))
   1354     {
   1355       FLD (in_src2) = f_r2;
   1356     }
   1357 #endif
   1358 #undef FLD
   1359     return idesc;
   1360   }
   1361 
   1362  extract_sfmt_div:
   1363   {
   1364     const IDESC *idesc = &m32r2f_insn_data[itype];
   1365     CGEN_INSN_WORD insn = entire_insn;
   1366 #define FLD(f) abuf->fields.sfmt_add.f
   1367     UINT f_r1;
   1368     UINT f_r2;
   1369 
   1370     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
   1371     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
   1372 
   1373   /* Record the fields for the semantic handler.  */
   1374   FLD (f_r1) = f_r1;
   1375   FLD (f_r2) = f_r2;
   1376   FLD (i_dr) = & CPU (h_gr)[f_r1];
   1377   FLD (i_sr) = & CPU (h_gr)[f_r2];
   1378   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));
   1379 
   1380 #if WITH_PROFILE_MODEL_P
   1381   /* Record the fields for profiling.  */
   1382   if (PROFILE_MODEL_P (current_cpu))
   1383     {
   1384       FLD (in_dr) = f_r1;
   1385       FLD (in_sr) = f_r2;
   1386       FLD (out_dr) = f_r1;
   1387     }
   1388 #endif
   1389 #undef FLD
   1390     return idesc;
   1391   }
   1392 
   1393  extract_sfmt_jc:
   1394   {
   1395     const IDESC *idesc = &m32r2f_insn_data[itype];
   1396     CGEN_INSN_WORD insn = entire_insn;
   1397 #define FLD(f) abuf->fields.sfmt_jl.f
   1398     UINT f_r2;
   1399 
   1400     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
   1401 
   1402   /* Record the fields for the semantic handler.  */
   1403   FLD (f_r2) = f_r2;
   1404   FLD (i_sr) = & CPU (h_gr)[f_r2];
   1405   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));
   1406 
   1407 #if WITH_PROFILE_MODEL_P
   1408   /* Record the fields for profiling.  */
   1409   if (PROFILE_MODEL_P (current_cpu))
   1410     {
   1411       FLD (in_sr) = f_r2;
   1412     }
   1413 #endif
   1414 #undef FLD
   1415     return idesc;
   1416   }
   1417 
   1418  extract_sfmt_jl:
   1419   {
   1420     const IDESC *idesc = &m32r2f_insn_data[itype];
   1421     CGEN_INSN_WORD insn = entire_insn;
   1422 #define FLD(f) abuf->fields.sfmt_jl.f
   1423     UINT f_r2;
   1424 
   1425     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
   1426 
   1427   /* Record the fields for the semantic handler.  */
   1428   FLD (f_r2) = f_r2;
   1429   FLD (i_sr) = & CPU (h_gr)[f_r2];
   1430   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));
   1431 
   1432 #if WITH_PROFILE_MODEL_P
   1433   /* Record the fields for profiling.  */
   1434   if (PROFILE_MODEL_P (current_cpu))
   1435     {
   1436       FLD (in_sr) = f_r2;
   1437       FLD (out_h_gr_SI_14) = 14;
   1438     }
   1439 #endif
   1440 #undef FLD
   1441     return idesc;
   1442   }
   1443 
   1444  extract_sfmt_jmp:
   1445   {
   1446     const IDESC *idesc = &m32r2f_insn_data[itype];
   1447     CGEN_INSN_WORD insn = entire_insn;
   1448 #define FLD(f) abuf->fields.sfmt_jl.f
   1449     UINT f_r2;
   1450 
   1451     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
   1452 
   1453   /* Record the fields for the semantic handler.  */
   1454   FLD (f_r2) = f_r2;
   1455   FLD (i_sr) = & CPU (h_gr)[f_r2];
   1456   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));
   1457 
   1458 #if WITH_PROFILE_MODEL_P
   1459   /* Record the fields for profiling.  */
   1460   if (PROFILE_MODEL_P (current_cpu))
   1461     {
   1462       FLD (in_sr) = f_r2;
   1463     }
   1464 #endif
   1465 #undef FLD
   1466     return idesc;
   1467   }
   1468 
   1469  extract_sfmt_ld:
   1470   {
   1471     const IDESC *idesc = &m32r2f_insn_data[itype];
   1472     CGEN_INSN_WORD insn = entire_insn;
   1473 #define FLD(f) abuf->fields.sfmt_ld_plus.f
   1474     UINT f_r1;
   1475     UINT f_r2;
   1476 
   1477     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
   1478     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
   1479 
   1480   /* Record the fields for the semantic handler.  */
   1481   FLD (f_r2) = f_r2;
   1482   FLD (f_r1) = f_r1;
   1483   FLD (i_sr) = & CPU (h_gr)[f_r2];
   1484   FLD (i_dr) = & CPU (h_gr)[f_r1];
   1485   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));
   1486 
   1487 #if WITH_PROFILE_MODEL_P
   1488   /* Record the fields for profiling.  */
   1489   if (PROFILE_MODEL_P (current_cpu))
   1490     {
   1491       FLD (in_sr) = f_r2;
   1492       FLD (out_dr) = f_r1;
   1493     }
   1494 #endif
   1495 #undef FLD
   1496     return idesc;
   1497   }
   1498 
   1499  extract_sfmt_ld_d:
   1500   {
   1501     const IDESC *idesc = &m32r2f_insn_data[itype];
   1502     CGEN_INSN_WORD insn = entire_insn;
   1503 #define FLD(f) abuf->fields.sfmt_add3.f
   1504     UINT f_r1;
   1505     UINT f_r2;
   1506     INT f_simm16;
   1507 
   1508     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
   1509     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
   1510     f_simm16 = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
   1511 
   1512   /* Record the fields for the semantic handler.  */
   1513   FLD (f_simm16) = f_simm16;
   1514   FLD (f_r2) = f_r2;
   1515   FLD (f_r1) = f_r1;
   1516   FLD (i_sr) = & CPU (h_gr)[f_r2];
   1517   FLD (i_dr) = & CPU (h_gr)[f_r1];
   1518   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));
   1519 
   1520 #if WITH_PROFILE_MODEL_P
   1521   /* Record the fields for profiling.  */
   1522   if (PROFILE_MODEL_P (current_cpu))
   1523     {
   1524       FLD (in_sr) = f_r2;
   1525       FLD (out_dr) = f_r1;
   1526     }
   1527 #endif
   1528 #undef FLD
   1529     return idesc;
   1530   }
   1531 
   1532  extract_sfmt_ldb:
   1533   {
   1534     const IDESC *idesc = &m32r2f_insn_data[itype];
   1535     CGEN_INSN_WORD insn = entire_insn;
   1536 #define FLD(f) abuf->fields.sfmt_ld_plus.f
   1537     UINT f_r1;
   1538     UINT f_r2;
   1539 
   1540     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
   1541     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
   1542 
   1543   /* Record the fields for the semantic handler.  */
   1544   FLD (f_r2) = f_r2;
   1545   FLD (f_r1) = f_r1;
   1546   FLD (i_sr) = & CPU (h_gr)[f_r2];
   1547   FLD (i_dr) = & CPU (h_gr)[f_r1];
   1548   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));
   1549 
   1550 #if WITH_PROFILE_MODEL_P
   1551   /* Record the fields for profiling.  */
   1552   if (PROFILE_MODEL_P (current_cpu))
   1553     {
   1554       FLD (in_sr) = f_r2;
   1555       FLD (out_dr) = f_r1;
   1556     }
   1557 #endif
   1558 #undef FLD
   1559     return idesc;
   1560   }
   1561 
   1562  extract_sfmt_ldb_d:
   1563   {
   1564     const IDESC *idesc = &m32r2f_insn_data[itype];
   1565     CGEN_INSN_WORD insn = entire_insn;
   1566 #define FLD(f) abuf->fields.sfmt_add3.f
   1567     UINT f_r1;
   1568     UINT f_r2;
   1569     INT f_simm16;
   1570 
   1571     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
   1572     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
   1573     f_simm16 = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
   1574 
   1575   /* Record the fields for the semantic handler.  */
   1576   FLD (f_simm16) = f_simm16;
   1577   FLD (f_r2) = f_r2;
   1578   FLD (f_r1) = f_r1;
   1579   FLD (i_sr) = & CPU (h_gr)[f_r2];
   1580   FLD (i_dr) = & CPU (h_gr)[f_r1];
   1581   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));
   1582 
   1583 #if WITH_PROFILE_MODEL_P
   1584   /* Record the fields for profiling.  */
   1585   if (PROFILE_MODEL_P (current_cpu))
   1586     {
   1587       FLD (in_sr) = f_r2;
   1588       FLD (out_dr) = f_r1;
   1589     }
   1590 #endif
   1591 #undef FLD
   1592     return idesc;
   1593   }
   1594 
   1595  extract_sfmt_ldh:
   1596   {
   1597     const IDESC *idesc = &m32r2f_insn_data[itype];
   1598     CGEN_INSN_WORD insn = entire_insn;
   1599 #define FLD(f) abuf->fields.sfmt_ld_plus.f
   1600     UINT f_r1;
   1601     UINT f_r2;
   1602 
   1603     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
   1604     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
   1605 
   1606   /* Record the fields for the semantic handler.  */
   1607   FLD (f_r2) = f_r2;
   1608   FLD (f_r1) = f_r1;
   1609   FLD (i_sr) = & CPU (h_gr)[f_r2];
   1610   FLD (i_dr) = & CPU (h_gr)[f_r1];
   1611   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));
   1612 
   1613 #if WITH_PROFILE_MODEL_P
   1614   /* Record the fields for profiling.  */
   1615   if (PROFILE_MODEL_P (current_cpu))
   1616     {
   1617       FLD (in_sr) = f_r2;
   1618       FLD (out_dr) = f_r1;
   1619     }
   1620 #endif
   1621 #undef FLD
   1622     return idesc;
   1623   }
   1624 
   1625  extract_sfmt_ldh_d:
   1626   {
   1627     const IDESC *idesc = &m32r2f_insn_data[itype];
   1628     CGEN_INSN_WORD insn = entire_insn;
   1629 #define FLD(f) abuf->fields.sfmt_add3.f
   1630     UINT f_r1;
   1631     UINT f_r2;
   1632     INT f_simm16;
   1633 
   1634     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
   1635     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
   1636     f_simm16 = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
   1637 
   1638   /* Record the fields for the semantic handler.  */
   1639   FLD (f_simm16) = f_simm16;
   1640   FLD (f_r2) = f_r2;
   1641   FLD (f_r1) = f_r1;
   1642   FLD (i_sr) = & CPU (h_gr)[f_r2];
   1643   FLD (i_dr) = & CPU (h_gr)[f_r1];
   1644   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));
   1645 
   1646 #if WITH_PROFILE_MODEL_P
   1647   /* Record the fields for profiling.  */
   1648   if (PROFILE_MODEL_P (current_cpu))
   1649     {
   1650       FLD (in_sr) = f_r2;
   1651       FLD (out_dr) = f_r1;
   1652     }
   1653 #endif
   1654 #undef FLD
   1655     return idesc;
   1656   }
   1657 
   1658  extract_sfmt_ld_plus:
   1659   {
   1660     const IDESC *idesc = &m32r2f_insn_data[itype];
   1661     CGEN_INSN_WORD insn = entire_insn;
   1662 #define FLD(f) abuf->fields.sfmt_ld_plus.f
   1663     UINT f_r1;
   1664     UINT f_r2;
   1665 
   1666     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
   1667     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
   1668 
   1669   /* Record the fields for the semantic handler.  */
   1670   FLD (f_r2) = f_r2;
   1671   FLD (f_r1) = f_r1;
   1672   FLD (i_sr) = & CPU (h_gr)[f_r2];
   1673   FLD (i_dr) = & CPU (h_gr)[f_r1];
   1674   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));
   1675 
   1676 #if WITH_PROFILE_MODEL_P
   1677   /* Record the fields for profiling.  */
   1678   if (PROFILE_MODEL_P (current_cpu))
   1679     {
   1680       FLD (in_sr) = f_r2;
   1681       FLD (out_dr) = f_r1;
   1682       FLD (out_sr) = f_r2;
   1683     }
   1684 #endif
   1685 #undef FLD
   1686     return idesc;
   1687   }
   1688 
   1689  extract_sfmt_ld24:
   1690   {
   1691     const IDESC *idesc = &m32r2f_insn_data[itype];
   1692     CGEN_INSN_WORD insn = entire_insn;
   1693 #define FLD(f) abuf->fields.sfmt_ld24.f
   1694     UINT f_r1;
   1695     UINT f_uimm24;
   1696 
   1697     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
   1698     f_uimm24 = EXTRACT_MSB0_UINT (insn, 32, 8, 24);
   1699 
   1700   /* Record the fields for the semantic handler.  */
   1701   FLD (f_r1) = f_r1;
   1702   FLD (i_uimm24) = f_uimm24;
   1703   FLD (i_dr) = & CPU (h_gr)[f_r1];
   1704   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));
   1705 
   1706 #if WITH_PROFILE_MODEL_P
   1707   /* Record the fields for profiling.  */
   1708   if (PROFILE_MODEL_P (current_cpu))
   1709     {
   1710       FLD (out_dr) = f_r1;
   1711     }
   1712 #endif
   1713 #undef FLD
   1714     return idesc;
   1715   }
   1716 
   1717  extract_sfmt_ldi8:
   1718   {
   1719     const IDESC *idesc = &m32r2f_insn_data[itype];
   1720     CGEN_INSN_WORD insn = entire_insn;
   1721 #define FLD(f) abuf->fields.sfmt_addi.f
   1722     UINT f_r1;
   1723     INT f_simm8;
   1724 
   1725     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
   1726     f_simm8 = EXTRACT_MSB0_SINT (insn, 16, 8, 8);
   1727 
   1728   /* Record the fields for the semantic handler.  */
   1729   FLD (f_simm8) = f_simm8;
   1730   FLD (f_r1) = f_r1;
   1731   FLD (i_dr) = & CPU (h_gr)[f_r1];
   1732   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));
   1733 
   1734 #if WITH_PROFILE_MODEL_P
   1735   /* Record the fields for profiling.  */
   1736   if (PROFILE_MODEL_P (current_cpu))
   1737     {
   1738       FLD (out_dr) = f_r1;
   1739     }
   1740 #endif
   1741 #undef FLD
   1742     return idesc;
   1743   }
   1744 
   1745  extract_sfmt_ldi16:
   1746   {
   1747     const IDESC *idesc = &m32r2f_insn_data[itype];
   1748     CGEN_INSN_WORD insn = entire_insn;
   1749 #define FLD(f) abuf->fields.sfmt_add3.f
   1750     UINT f_r1;
   1751     INT f_simm16;
   1752 
   1753     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
   1754     f_simm16 = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
   1755 
   1756   /* Record the fields for the semantic handler.  */
   1757   FLD (f_simm16) = f_simm16;
   1758   FLD (f_r1) = f_r1;
   1759   FLD (i_dr) = & CPU (h_gr)[f_r1];
   1760   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));
   1761 
   1762 #if WITH_PROFILE_MODEL_P
   1763   /* Record the fields for profiling.  */
   1764   if (PROFILE_MODEL_P (current_cpu))
   1765     {
   1766       FLD (out_dr) = f_r1;
   1767     }
   1768 #endif
   1769 #undef FLD
   1770     return idesc;
   1771   }
   1772 
   1773  extract_sfmt_lock:
   1774   {
   1775     const IDESC *idesc = &m32r2f_insn_data[itype];
   1776     CGEN_INSN_WORD insn = entire_insn;
   1777 #define FLD(f) abuf->fields.sfmt_ld_plus.f
   1778     UINT f_r1;
   1779     UINT f_r2;
   1780 
   1781     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
   1782     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
   1783 
   1784   /* Record the fields for the semantic handler.  */
   1785   FLD (f_r2) = f_r2;
   1786   FLD (f_r1) = f_r1;
   1787   FLD (i_sr) = & CPU (h_gr)[f_r2];
   1788   FLD (i_dr) = & CPU (h_gr)[f_r1];
   1789   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));
   1790 
   1791 #if WITH_PROFILE_MODEL_P
   1792   /* Record the fields for profiling.  */
   1793   if (PROFILE_MODEL_P (current_cpu))
   1794     {
   1795       FLD (in_sr) = f_r2;
   1796       FLD (out_dr) = f_r1;
   1797     }
   1798 #endif
   1799 #undef FLD
   1800     return idesc;
   1801   }
   1802 
   1803  extract_sfmt_machi_a:
   1804   {
   1805     const IDESC *idesc = &m32r2f_insn_data[itype];
   1806     CGEN_INSN_WORD insn = entire_insn;
   1807 #define FLD(f) abuf->fields.sfmt_machi_a.f
   1808     UINT f_r1;
   1809     UINT f_acc;
   1810     UINT f_r2;
   1811 
   1812     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
   1813     f_acc = EXTRACT_MSB0_UINT (insn, 16, 8, 1);
   1814     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
   1815 
   1816   /* Record the fields for the semantic handler.  */
   1817   FLD (f_acc) = f_acc;
   1818   FLD (f_r1) = f_r1;
   1819   FLD (f_r2) = f_r2;
   1820   FLD (i_src1) = & CPU (h_gr)[f_r1];
   1821   FLD (i_src2) = & CPU (h_gr)[f_r2];
   1822   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));
   1823 
   1824 #if WITH_PROFILE_MODEL_P
   1825   /* Record the fields for profiling.  */
   1826   if (PROFILE_MODEL_P (current_cpu))
   1827     {
   1828       FLD (in_src1) = f_r1;
   1829       FLD (in_src2) = f_r2;
   1830     }
   1831 #endif
   1832 #undef FLD
   1833     return idesc;
   1834   }
   1835 
   1836  extract_sfmt_mulhi_a:
   1837   {
   1838     const IDESC *idesc = &m32r2f_insn_data[itype];
   1839     CGEN_INSN_WORD insn = entire_insn;
   1840 #define FLD(f) abuf->fields.sfmt_machi_a.f
   1841     UINT f_r1;
   1842     UINT f_acc;
   1843     UINT f_r2;
   1844 
   1845     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
   1846     f_acc = EXTRACT_MSB0_UINT (insn, 16, 8, 1);
   1847     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
   1848 
   1849   /* Record the fields for the semantic handler.  */
   1850   FLD (f_r1) = f_r1;
   1851   FLD (f_r2) = f_r2;
   1852   FLD (f_acc) = f_acc;
   1853   FLD (i_src1) = & CPU (h_gr)[f_r1];
   1854   FLD (i_src2) = & CPU (h_gr)[f_r2];
   1855   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));
   1856 
   1857 #if WITH_PROFILE_MODEL_P
   1858   /* Record the fields for profiling.  */
   1859   if (PROFILE_MODEL_P (current_cpu))
   1860     {
   1861       FLD (in_src1) = f_r1;
   1862       FLD (in_src2) = f_r2;
   1863     }
   1864 #endif
   1865 #undef FLD
   1866     return idesc;
   1867   }
   1868 
   1869  extract_sfmt_mv:
   1870   {
   1871     const IDESC *idesc = &m32r2f_insn_data[itype];
   1872     CGEN_INSN_WORD insn = entire_insn;
   1873 #define FLD(f) abuf->fields.sfmt_ld_plus.f
   1874     UINT f_r1;
   1875     UINT f_r2;
   1876 
   1877     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
   1878     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
   1879 
   1880   /* Record the fields for the semantic handler.  */
   1881   FLD (f_r2) = f_r2;
   1882   FLD (f_r1) = f_r1;
   1883   FLD (i_sr) = & CPU (h_gr)[f_r2];
   1884   FLD (i_dr) = & CPU (h_gr)[f_r1];
   1885   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));
   1886 
   1887 #if WITH_PROFILE_MODEL_P
   1888   /* Record the fields for profiling.  */
   1889   if (PROFILE_MODEL_P (current_cpu))
   1890     {
   1891       FLD (in_sr) = f_r2;
   1892       FLD (out_dr) = f_r1;
   1893     }
   1894 #endif
   1895 #undef FLD
   1896     return idesc;
   1897   }
   1898 
   1899  extract_sfmt_mvfachi_a:
   1900   {
   1901     const IDESC *idesc = &m32r2f_insn_data[itype];
   1902     CGEN_INSN_WORD insn = entire_insn;
   1903 #define FLD(f) abuf->fields.sfmt_mvfachi_a.f
   1904     UINT f_r1;
   1905     UINT f_accs;
   1906 
   1907     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
   1908     f_accs = EXTRACT_MSB0_UINT (insn, 16, 12, 2);
   1909 
   1910   /* Record the fields for the semantic handler.  */
   1911   FLD (f_accs) = f_accs;
   1912   FLD (f_r1) = f_r1;
   1913   FLD (i_dr) = & CPU (h_gr)[f_r1];
   1914   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));
   1915 
   1916 #if WITH_PROFILE_MODEL_P
   1917   /* Record the fields for profiling.  */
   1918   if (PROFILE_MODEL_P (current_cpu))
   1919     {
   1920       FLD (out_dr) = f_r1;
   1921     }
   1922 #endif
   1923 #undef FLD
   1924     return idesc;
   1925   }
   1926 
   1927  extract_sfmt_mvfc:
   1928   {
   1929     const IDESC *idesc = &m32r2f_insn_data[itype];
   1930     CGEN_INSN_WORD insn = entire_insn;
   1931 #define FLD(f) abuf->fields.sfmt_ld_plus.f
   1932     UINT f_r1;
   1933     UINT f_r2;
   1934 
   1935     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
   1936     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
   1937 
   1938   /* Record the fields for the semantic handler.  */
   1939   FLD (f_r2) = f_r2;
   1940   FLD (f_r1) = f_r1;
   1941   FLD (i_dr) = & CPU (h_gr)[f_r1];
   1942   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));
   1943 
   1944 #if WITH_PROFILE_MODEL_P
   1945   /* Record the fields for profiling.  */
   1946   if (PROFILE_MODEL_P (current_cpu))
   1947     {
   1948       FLD (out_dr) = f_r1;
   1949     }
   1950 #endif
   1951 #undef FLD
   1952     return idesc;
   1953   }
   1954 
   1955  extract_sfmt_mvtachi_a:
   1956   {
   1957     const IDESC *idesc = &m32r2f_insn_data[itype];
   1958     CGEN_INSN_WORD insn = entire_insn;
   1959 #define FLD(f) abuf->fields.sfmt_mvtachi_a.f
   1960     UINT f_r1;
   1961     UINT f_accs;
   1962 
   1963     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
   1964     f_accs = EXTRACT_MSB0_UINT (insn, 16, 12, 2);
   1965 
   1966   /* Record the fields for the semantic handler.  */
   1967   FLD (f_accs) = f_accs;
   1968   FLD (f_r1) = f_r1;
   1969   FLD (i_src1) = & CPU (h_gr)[f_r1];
   1970   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));
   1971 
   1972 #if WITH_PROFILE_MODEL_P
   1973   /* Record the fields for profiling.  */
   1974   if (PROFILE_MODEL_P (current_cpu))
   1975     {
   1976       FLD (in_src1) = f_r1;
   1977     }
   1978 #endif
   1979 #undef FLD
   1980     return idesc;
   1981   }
   1982 
   1983  extract_sfmt_mvtc:
   1984   {
   1985     const IDESC *idesc = &m32r2f_insn_data[itype];
   1986     CGEN_INSN_WORD insn = entire_insn;
   1987 #define FLD(f) abuf->fields.sfmt_ld_plus.f
   1988     UINT f_r1;
   1989     UINT f_r2;
   1990 
   1991     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
   1992     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
   1993 
   1994   /* Record the fields for the semantic handler.  */
   1995   FLD (f_r2) = f_r2;
   1996   FLD (f_r1) = f_r1;
   1997   FLD (i_sr) = & CPU (h_gr)[f_r2];
   1998   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));
   1999 
   2000 #if WITH_PROFILE_MODEL_P
   2001   /* Record the fields for profiling.  */
   2002   if (PROFILE_MODEL_P (current_cpu))
   2003     {
   2004       FLD (in_sr) = f_r2;
   2005     }
   2006 #endif
   2007 #undef FLD
   2008     return idesc;
   2009   }
   2010 
   2011  extract_sfmt_nop:
   2012   {
   2013     const IDESC *idesc = &m32r2f_insn_data[itype];
   2014 #define FLD(f) abuf->fields.sfmt_empty.f
   2015 
   2016 
   2017   /* Record the fields for the semantic handler.  */
   2018   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_nop", (char *) 0));
   2019 
   2020 #undef FLD
   2021     return idesc;
   2022   }
   2023 
   2024  extract_sfmt_rac_dsi:
   2025   {
   2026     const IDESC *idesc = &m32r2f_insn_data[itype];
   2027     CGEN_INSN_WORD insn = entire_insn;
   2028 #define FLD(f) abuf->fields.sfmt_rac_dsi.f
   2029     UINT f_accd;
   2030     UINT f_accs;
   2031     SI f_imm1;
   2032 
   2033     f_accd = EXTRACT_MSB0_UINT (insn, 16, 4, 2);
   2034     f_accs = EXTRACT_MSB0_UINT (insn, 16, 12, 2);
   2035     f_imm1 = ((EXTRACT_MSB0_UINT (insn, 16, 15, 1)) + (1));
   2036 
   2037   /* Record the fields for the semantic handler.  */
   2038   FLD (f_accs) = f_accs;
   2039   FLD (f_imm1) = f_imm1;
   2040   FLD (f_accd) = f_accd;
   2041   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));
   2042 
   2043 #undef FLD
   2044     return idesc;
   2045   }
   2046 
   2047  extract_sfmt_rte:
   2048   {
   2049     const IDESC *idesc = &m32r2f_insn_data[itype];
   2050 #define FLD(f) abuf->fields.sfmt_empty.f
   2051 
   2052 
   2053   /* Record the fields for the semantic handler.  */
   2054   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_rte", (char *) 0));
   2055 
   2056 #if WITH_PROFILE_MODEL_P
   2057   /* Record the fields for profiling.  */
   2058   if (PROFILE_MODEL_P (current_cpu))
   2059     {
   2060     }
   2061 #endif
   2062 #undef FLD
   2063     return idesc;
   2064   }
   2065 
   2066  extract_sfmt_seth:
   2067   {
   2068     const IDESC *idesc = &m32r2f_insn_data[itype];
   2069     CGEN_INSN_WORD insn = entire_insn;
   2070 #define FLD(f) abuf->fields.sfmt_seth.f
   2071     UINT f_r1;
   2072     UINT f_hi16;
   2073 
   2074     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
   2075     f_hi16 = EXTRACT_MSB0_UINT (insn, 32, 16, 16);
   2076 
   2077   /* Record the fields for the semantic handler.  */
   2078   FLD (f_hi16) = f_hi16;
   2079   FLD (f_r1) = f_r1;
   2080   FLD (i_dr) = & CPU (h_gr)[f_r1];
   2081   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));
   2082 
   2083 #if WITH_PROFILE_MODEL_P
   2084   /* Record the fields for profiling.  */
   2085   if (PROFILE_MODEL_P (current_cpu))
   2086     {
   2087       FLD (out_dr) = f_r1;
   2088     }
   2089 #endif
   2090 #undef FLD
   2091     return idesc;
   2092   }
   2093 
   2094  extract_sfmt_sll3:
   2095   {
   2096     const IDESC *idesc = &m32r2f_insn_data[itype];
   2097     CGEN_INSN_WORD insn = entire_insn;
   2098 #define FLD(f) abuf->fields.sfmt_add3.f
   2099     UINT f_r1;
   2100     UINT f_r2;
   2101     INT f_simm16;
   2102 
   2103     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
   2104     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
   2105     f_simm16 = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
   2106 
   2107   /* Record the fields for the semantic handler.  */
   2108   FLD (f_simm16) = f_simm16;
   2109   FLD (f_r2) = f_r2;
   2110   FLD (f_r1) = f_r1;
   2111   FLD (i_sr) = & CPU (h_gr)[f_r2];
   2112   FLD (i_dr) = & CPU (h_gr)[f_r1];
   2113   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));
   2114 
   2115 #if WITH_PROFILE_MODEL_P
   2116   /* Record the fields for profiling.  */
   2117   if (PROFILE_MODEL_P (current_cpu))
   2118     {
   2119       FLD (in_sr) = f_r2;
   2120       FLD (out_dr) = f_r1;
   2121     }
   2122 #endif
   2123 #undef FLD
   2124     return idesc;
   2125   }
   2126 
   2127  extract_sfmt_slli:
   2128   {
   2129     const IDESC *idesc = &m32r2f_insn_data[itype];
   2130     CGEN_INSN_WORD insn = entire_insn;
   2131 #define FLD(f) abuf->fields.sfmt_slli.f
   2132     UINT f_r1;
   2133     UINT f_uimm5;
   2134 
   2135     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
   2136     f_uimm5 = EXTRACT_MSB0_UINT (insn, 16, 11, 5);
   2137 
   2138   /* Record the fields for the semantic handler.  */
   2139   FLD (f_r1) = f_r1;
   2140   FLD (f_uimm5) = f_uimm5;
   2141   FLD (i_dr) = & CPU (h_gr)[f_r1];
   2142   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));
   2143 
   2144 #if WITH_PROFILE_MODEL_P
   2145   /* Record the fields for profiling.  */
   2146   if (PROFILE_MODEL_P (current_cpu))
   2147     {
   2148       FLD (in_dr) = f_r1;
   2149       FLD (out_dr) = f_r1;
   2150     }
   2151 #endif
   2152 #undef FLD
   2153     return idesc;
   2154   }
   2155 
   2156  extract_sfmt_st:
   2157   {
   2158     const IDESC *idesc = &m32r2f_insn_data[itype];
   2159     CGEN_INSN_WORD insn = entire_insn;
   2160 #define FLD(f) abuf->fields.sfmt_st_plus.f
   2161     UINT f_r1;
   2162     UINT f_r2;
   2163 
   2164     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
   2165     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
   2166 
   2167   /* Record the fields for the semantic handler.  */
   2168   FLD (f_r1) = f_r1;
   2169   FLD (f_r2) = f_r2;
   2170   FLD (i_src1) = & CPU (h_gr)[f_r1];
   2171   FLD (i_src2) = & CPU (h_gr)[f_r2];
   2172   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));
   2173 
   2174 #if WITH_PROFILE_MODEL_P
   2175   /* Record the fields for profiling.  */
   2176   if (PROFILE_MODEL_P (current_cpu))
   2177     {
   2178       FLD (in_src1) = f_r1;
   2179       FLD (in_src2) = f_r2;
   2180     }
   2181 #endif
   2182 #undef FLD
   2183     return idesc;
   2184   }
   2185 
   2186  extract_sfmt_st_d:
   2187   {
   2188     const IDESC *idesc = &m32r2f_insn_data[itype];
   2189     CGEN_INSN_WORD insn = entire_insn;
   2190 #define FLD(f) abuf->fields.sfmt_st_d.f
   2191     UINT f_r1;
   2192     UINT f_r2;
   2193     INT f_simm16;
   2194 
   2195     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
   2196     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
   2197     f_simm16 = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
   2198 
   2199   /* Record the fields for the semantic handler.  */
   2200   FLD (f_simm16) = f_simm16;
   2201   FLD (f_r1) = f_r1;
   2202   FLD (f_r2) = f_r2;
   2203   FLD (i_src1) = & CPU (h_gr)[f_r1];
   2204   FLD (i_src2) = & CPU (h_gr)[f_r2];
   2205   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));
   2206 
   2207 #if WITH_PROFILE_MODEL_P
   2208   /* Record the fields for profiling.  */
   2209   if (PROFILE_MODEL_P (current_cpu))
   2210     {
   2211       FLD (in_src1) = f_r1;
   2212       FLD (in_src2) = f_r2;
   2213     }
   2214 #endif
   2215 #undef FLD
   2216     return idesc;
   2217   }
   2218 
   2219  extract_sfmt_stb:
   2220   {
   2221     const IDESC *idesc = &m32r2f_insn_data[itype];
   2222     CGEN_INSN_WORD insn = entire_insn;
   2223 #define FLD(f) abuf->fields.sfmt_st_plus.f
   2224     UINT f_r1;
   2225     UINT f_r2;
   2226 
   2227     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
   2228     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
   2229 
   2230   /* Record the fields for the semantic handler.  */
   2231   FLD (f_r1) = f_r1;
   2232   FLD (f_r2) = f_r2;
   2233   FLD (i_src1) = & CPU (h_gr)[f_r1];
   2234   FLD (i_src2) = & CPU (h_gr)[f_r2];
   2235   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));
   2236 
   2237 #if WITH_PROFILE_MODEL_P
   2238   /* Record the fields for profiling.  */
   2239   if (PROFILE_MODEL_P (current_cpu))
   2240     {
   2241       FLD (in_src1) = f_r1;
   2242       FLD (in_src2) = f_r2;
   2243     }
   2244 #endif
   2245 #undef FLD
   2246     return idesc;
   2247   }
   2248 
   2249  extract_sfmt_stb_d:
   2250   {
   2251     const IDESC *idesc = &m32r2f_insn_data[itype];
   2252     CGEN_INSN_WORD insn = entire_insn;
   2253 #define FLD(f) abuf->fields.sfmt_st_d.f
   2254     UINT f_r1;
   2255     UINT f_r2;
   2256     INT f_simm16;
   2257 
   2258     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
   2259     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
   2260     f_simm16 = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
   2261 
   2262   /* Record the fields for the semantic handler.  */
   2263   FLD (f_simm16) = f_simm16;
   2264   FLD (f_r1) = f_r1;
   2265   FLD (f_r2) = f_r2;
   2266   FLD (i_src1) = & CPU (h_gr)[f_r1];
   2267   FLD (i_src2) = & CPU (h_gr)[f_r2];
   2268   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));
   2269 
   2270 #if WITH_PROFILE_MODEL_P
   2271   /* Record the fields for profiling.  */
   2272   if (PROFILE_MODEL_P (current_cpu))
   2273     {
   2274       FLD (in_src1) = f_r1;
   2275       FLD (in_src2) = f_r2;
   2276     }
   2277 #endif
   2278 #undef FLD
   2279     return idesc;
   2280   }
   2281 
   2282  extract_sfmt_sth:
   2283   {
   2284     const IDESC *idesc = &m32r2f_insn_data[itype];
   2285     CGEN_INSN_WORD insn = entire_insn;
   2286 #define FLD(f) abuf->fields.sfmt_st_plus.f
   2287     UINT f_r1;
   2288     UINT f_r2;
   2289 
   2290     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
   2291     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
   2292 
   2293   /* Record the fields for the semantic handler.  */
   2294   FLD (f_r1) = f_r1;
   2295   FLD (f_r2) = f_r2;
   2296   FLD (i_src1) = & CPU (h_gr)[f_r1];
   2297   FLD (i_src2) = & CPU (h_gr)[f_r2];
   2298   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));
   2299 
   2300 #if WITH_PROFILE_MODEL_P
   2301   /* Record the fields for profiling.  */
   2302   if (PROFILE_MODEL_P (current_cpu))
   2303     {
   2304       FLD (in_src1) = f_r1;
   2305       FLD (in_src2) = f_r2;
   2306     }
   2307 #endif
   2308 #undef FLD
   2309     return idesc;
   2310   }
   2311 
   2312  extract_sfmt_sth_d:
   2313   {
   2314     const IDESC *idesc = &m32r2f_insn_data[itype];
   2315     CGEN_INSN_WORD insn = entire_insn;
   2316 #define FLD(f) abuf->fields.sfmt_st_d.f
   2317     UINT f_r1;
   2318     UINT f_r2;
   2319     INT f_simm16;
   2320 
   2321     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
   2322     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
   2323     f_simm16 = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
   2324 
   2325   /* Record the fields for the semantic handler.  */
   2326   FLD (f_simm16) = f_simm16;
   2327   FLD (f_r1) = f_r1;
   2328   FLD (f_r2) = f_r2;
   2329   FLD (i_src1) = & CPU (h_gr)[f_r1];
   2330   FLD (i_src2) = & CPU (h_gr)[f_r2];
   2331   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));
   2332 
   2333 #if WITH_PROFILE_MODEL_P
   2334   /* Record the fields for profiling.  */
   2335   if (PROFILE_MODEL_P (current_cpu))
   2336     {
   2337       FLD (in_src1) = f_r1;
   2338       FLD (in_src2) = f_r2;
   2339     }
   2340 #endif
   2341 #undef FLD
   2342     return idesc;
   2343   }
   2344 
   2345  extract_sfmt_st_plus:
   2346   {
   2347     const IDESC *idesc = &m32r2f_insn_data[itype];
   2348     CGEN_INSN_WORD insn = entire_insn;
   2349 #define FLD(f) abuf->fields.sfmt_st_plus.f
   2350     UINT f_r1;
   2351     UINT f_r2;
   2352 
   2353     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
   2354     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
   2355 
   2356   /* Record the fields for the semantic handler.  */
   2357   FLD (f_r1) = f_r1;
   2358   FLD (f_r2) = f_r2;
   2359   FLD (i_src1) = & CPU (h_gr)[f_r1];
   2360   FLD (i_src2) = & CPU (h_gr)[f_r2];
   2361   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));
   2362 
   2363 #if WITH_PROFILE_MODEL_P
   2364   /* Record the fields for profiling.  */
   2365   if (PROFILE_MODEL_P (current_cpu))
   2366     {
   2367       FLD (in_src1) = f_r1;
   2368       FLD (in_src2) = f_r2;
   2369       FLD (out_src2) = f_r2;
   2370     }
   2371 #endif
   2372 #undef FLD
   2373     return idesc;
   2374   }
   2375 
   2376  extract_sfmt_sth_plus:
   2377   {
   2378     const IDESC *idesc = &m32r2f_insn_data[itype];
   2379     CGEN_INSN_WORD insn = entire_insn;
   2380 #define FLD(f) abuf->fields.sfmt_st_plus.f
   2381     UINT f_r1;
   2382     UINT f_r2;
   2383 
   2384     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
   2385     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
   2386 
   2387   /* Record the fields for the semantic handler.  */
   2388   FLD (f_r1) = f_r1;
   2389   FLD (f_r2) = f_r2;
   2390   FLD (i_src1) = & CPU (h_gr)[f_r1];
   2391   FLD (i_src2) = & CPU (h_gr)[f_r2];
   2392   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));
   2393 
   2394 #if WITH_PROFILE_MODEL_P
   2395   /* Record the fields for profiling.  */
   2396   if (PROFILE_MODEL_P (current_cpu))
   2397     {
   2398       FLD (in_src1) = f_r1;
   2399       FLD (in_src2) = f_r2;
   2400       FLD (out_src2) = f_r2;
   2401     }
   2402 #endif
   2403 #undef FLD
   2404     return idesc;
   2405   }
   2406 
   2407  extract_sfmt_stb_plus:
   2408   {
   2409     const IDESC *idesc = &m32r2f_insn_data[itype];
   2410     CGEN_INSN_WORD insn = entire_insn;
   2411 #define FLD(f) abuf->fields.sfmt_st_plus.f
   2412     UINT f_r1;
   2413     UINT f_r2;
   2414 
   2415     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
   2416     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
   2417 
   2418   /* Record the fields for the semantic handler.  */
   2419   FLD (f_r1) = f_r1;
   2420   FLD (f_r2) = f_r2;
   2421   FLD (i_src1) = & CPU (h_gr)[f_r1];
   2422   FLD (i_src2) = & CPU (h_gr)[f_r2];
   2423   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));
   2424 
   2425 #if WITH_PROFILE_MODEL_P
   2426   /* Record the fields for profiling.  */
   2427   if (PROFILE_MODEL_P (current_cpu))
   2428     {
   2429       FLD (in_src1) = f_r1;
   2430       FLD (in_src2) = f_r2;
   2431       FLD (out_src2) = f_r2;
   2432     }
   2433 #endif
   2434 #undef FLD
   2435     return idesc;
   2436   }
   2437 
   2438  extract_sfmt_trap:
   2439   {
   2440     const IDESC *idesc = &m32r2f_insn_data[itype];
   2441     CGEN_INSN_WORD insn = entire_insn;
   2442 #define FLD(f) abuf->fields.sfmt_trap.f
   2443     UINT f_uimm4;
   2444 
   2445     f_uimm4 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
   2446 
   2447   /* Record the fields for the semantic handler.  */
   2448   FLD (f_uimm4) = f_uimm4;
   2449   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_trap", "f_uimm4 0x%x", 'x', f_uimm4, (char *) 0));
   2450 
   2451 #if WITH_PROFILE_MODEL_P
   2452   /* Record the fields for profiling.  */
   2453   if (PROFILE_MODEL_P (current_cpu))
   2454     {
   2455     }
   2456 #endif
   2457 #undef FLD
   2458     return idesc;
   2459   }
   2460 
   2461  extract_sfmt_unlock:
   2462   {
   2463     const IDESC *idesc = &m32r2f_insn_data[itype];
   2464     CGEN_INSN_WORD insn = entire_insn;
   2465 #define FLD(f) abuf->fields.sfmt_st_plus.f
   2466     UINT f_r1;
   2467     UINT f_r2;
   2468 
   2469     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
   2470     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
   2471 
   2472   /* Record the fields for the semantic handler.  */
   2473   FLD (f_r1) = f_r1;
   2474   FLD (f_r2) = f_r2;
   2475   FLD (i_src1) = & CPU (h_gr)[f_r1];
   2476   FLD (i_src2) = & CPU (h_gr)[f_r2];
   2477   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));
   2478 
   2479 #if WITH_PROFILE_MODEL_P
   2480   /* Record the fields for profiling.  */
   2481   if (PROFILE_MODEL_P (current_cpu))
   2482     {
   2483       FLD (in_src1) = f_r1;
   2484       FLD (in_src2) = f_r2;
   2485     }
   2486 #endif
   2487 #undef FLD
   2488     return idesc;
   2489   }
   2490 
   2491  extract_sfmt_satb:
   2492   {
   2493     const IDESC *idesc = &m32r2f_insn_data[itype];
   2494     CGEN_INSN_WORD insn = entire_insn;
   2495 #define FLD(f) abuf->fields.sfmt_ld_plus.f
   2496     UINT f_r1;
   2497     UINT f_r2;
   2498 
   2499     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
   2500     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
   2501 
   2502   /* Record the fields for the semantic handler.  */
   2503   FLD (f_r2) = f_r2;
   2504   FLD (f_r1) = f_r1;
   2505   FLD (i_sr) = & CPU (h_gr)[f_r2];
   2506   FLD (i_dr) = & CPU (h_gr)[f_r1];
   2507   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));
   2508 
   2509 #if WITH_PROFILE_MODEL_P
   2510   /* Record the fields for profiling.  */
   2511   if (PROFILE_MODEL_P (current_cpu))
   2512     {
   2513       FLD (in_sr) = f_r2;
   2514       FLD (out_dr) = f_r1;
   2515     }
   2516 #endif
   2517 #undef FLD
   2518     return idesc;
   2519   }
   2520 
   2521  extract_sfmt_sat:
   2522   {
   2523     const IDESC *idesc = &m32r2f_insn_data[itype];
   2524     CGEN_INSN_WORD insn = entire_insn;
   2525 #define FLD(f) abuf->fields.sfmt_ld_plus.f
   2526     UINT f_r1;
   2527     UINT f_r2;
   2528 
   2529     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
   2530     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
   2531 
   2532   /* Record the fields for the semantic handler.  */
   2533   FLD (f_r2) = f_r2;
   2534   FLD (f_r1) = f_r1;
   2535   FLD (i_sr) = & CPU (h_gr)[f_r2];
   2536   FLD (i_dr) = & CPU (h_gr)[f_r1];
   2537   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));
   2538 
   2539 #if WITH_PROFILE_MODEL_P
   2540   /* Record the fields for profiling.  */
   2541   if (PROFILE_MODEL_P (current_cpu))
   2542     {
   2543       FLD (in_sr) = f_r2;
   2544       FLD (out_dr) = f_r1;
   2545     }
   2546 #endif
   2547 #undef FLD
   2548     return idesc;
   2549   }
   2550 
   2551  extract_sfmt_sadd:
   2552   {
   2553     const IDESC *idesc = &m32r2f_insn_data[itype];
   2554 #define FLD(f) abuf->fields.sfmt_empty.f
   2555 
   2556 
   2557   /* Record the fields for the semantic handler.  */
   2558   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_sadd", (char *) 0));
   2559 
   2560 #undef FLD
   2561     return idesc;
   2562   }
   2563 
   2564  extract_sfmt_macwu1:
   2565   {
   2566     const IDESC *idesc = &m32r2f_insn_data[itype];
   2567     CGEN_INSN_WORD insn = entire_insn;
   2568 #define FLD(f) abuf->fields.sfmt_st_plus.f
   2569     UINT f_r1;
   2570     UINT f_r2;
   2571 
   2572     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
   2573     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
   2574 
   2575   /* Record the fields for the semantic handler.  */
   2576   FLD (f_r1) = f_r1;
   2577   FLD (f_r2) = f_r2;
   2578   FLD (i_src1) = & CPU (h_gr)[f_r1];
   2579   FLD (i_src2) = & CPU (h_gr)[f_r2];
   2580   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));
   2581 
   2582 #if WITH_PROFILE_MODEL_P
   2583   /* Record the fields for profiling.  */
   2584   if (PROFILE_MODEL_P (current_cpu))
   2585     {
   2586       FLD (in_src1) = f_r1;
   2587       FLD (in_src2) = f_r2;
   2588     }
   2589 #endif
   2590 #undef FLD
   2591     return idesc;
   2592   }
   2593 
   2594  extract_sfmt_msblo:
   2595   {
   2596     const IDESC *idesc = &m32r2f_insn_data[itype];
   2597     CGEN_INSN_WORD insn = entire_insn;
   2598 #define FLD(f) abuf->fields.sfmt_st_plus.f
   2599     UINT f_r1;
   2600     UINT f_r2;
   2601 
   2602     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
   2603     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
   2604 
   2605   /* Record the fields for the semantic handler.  */
   2606   FLD (f_r1) = f_r1;
   2607   FLD (f_r2) = f_r2;
   2608   FLD (i_src1) = & CPU (h_gr)[f_r1];
   2609   FLD (i_src2) = & CPU (h_gr)[f_r2];
   2610   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));
   2611 
   2612 #if WITH_PROFILE_MODEL_P
   2613   /* Record the fields for profiling.  */
   2614   if (PROFILE_MODEL_P (current_cpu))
   2615     {
   2616       FLD (in_src1) = f_r1;
   2617       FLD (in_src2) = f_r2;
   2618     }
   2619 #endif
   2620 #undef FLD
   2621     return idesc;
   2622   }
   2623 
   2624  extract_sfmt_mulwu1:
   2625   {
   2626     const IDESC *idesc = &m32r2f_insn_data[itype];
   2627     CGEN_INSN_WORD insn = entire_insn;
   2628 #define FLD(f) abuf->fields.sfmt_st_plus.f
   2629     UINT f_r1;
   2630     UINT f_r2;
   2631 
   2632     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
   2633     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
   2634 
   2635   /* Record the fields for the semantic handler.  */
   2636   FLD (f_r1) = f_r1;
   2637   FLD (f_r2) = f_r2;
   2638   FLD (i_src1) = & CPU (h_gr)[f_r1];
   2639   FLD (i_src2) = & CPU (h_gr)[f_r2];
   2640   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));
   2641 
   2642 #if WITH_PROFILE_MODEL_P
   2643   /* Record the fields for profiling.  */
   2644   if (PROFILE_MODEL_P (current_cpu))
   2645     {
   2646       FLD (in_src1) = f_r1;
   2647       FLD (in_src2) = f_r2;
   2648     }
   2649 #endif
   2650 #undef FLD
   2651     return idesc;
   2652   }
   2653 
   2654  extract_sfmt_sc:
   2655   {
   2656     const IDESC *idesc = &m32r2f_insn_data[itype];
   2657 #define FLD(f) abuf->fields.sfmt_empty.f
   2658 
   2659 
   2660   /* Record the fields for the semantic handler.  */
   2661   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_sc", (char *) 0));
   2662 
   2663 #undef FLD
   2664     return idesc;
   2665   }
   2666 
   2667  extract_sfmt_clrpsw:
   2668   {
   2669     const IDESC *idesc = &m32r2f_insn_data[itype];
   2670     CGEN_INSN_WORD insn = entire_insn;
   2671 #define FLD(f) abuf->fields.sfmt_clrpsw.f
   2672     UINT f_uimm8;
   2673 
   2674     f_uimm8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
   2675 
   2676   /* Record the fields for the semantic handler.  */
   2677   FLD (f_uimm8) = f_uimm8;
   2678   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_clrpsw", "f_uimm8 0x%x", 'x', f_uimm8, (char *) 0));
   2679 
   2680 #undef FLD
   2681     return idesc;
   2682   }
   2683 
   2684  extract_sfmt_setpsw:
   2685   {
   2686     const IDESC *idesc = &m32r2f_insn_data[itype];
   2687     CGEN_INSN_WORD insn = entire_insn;
   2688 #define FLD(f) abuf->fields.sfmt_clrpsw.f
   2689     UINT f_uimm8;
   2690 
   2691     f_uimm8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
   2692 
   2693   /* Record the fields for the semantic handler.  */
   2694   FLD (f_uimm8) = f_uimm8;
   2695   TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_setpsw", "f_uimm8 0x%x", 'x', f_uimm8, (char *) 0));
   2696 
   2697 #undef FLD
   2698     return idesc;
   2699   }
   2700 
   2701  extract_sfmt_bset:
   2702   {
   2703     const IDESC *idesc = &m32r2f_insn_data[itype];
   2704     CGEN_INSN_WORD insn = entire_insn;
   2705 #define FLD(f) abuf->fields.sfmt_bset.f
   2706     UINT f_uimm3;
   2707     UINT f_r2;
   2708     INT f_simm16;
   2709 
   2710     f_uimm3 = EXTRACT_MSB0_UINT (insn, 32, 5, 3);
   2711     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
   2712     f_simm16 = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
   2713 
   2714   /* Record the fields for the semantic handler.  */
   2715   FLD (f_simm16) = f_simm16;
   2716   FLD (f_r2) = f_r2;
   2717   FLD (f_uimm3) = f_uimm3;
   2718   FLD (i_sr) = & CPU (h_gr)[f_r2];
   2719   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));
   2720 
   2721 #if WITH_PROFILE_MODEL_P
   2722   /* Record the fields for profiling.  */
   2723   if (PROFILE_MODEL_P (current_cpu))
   2724     {
   2725       FLD (in_sr) = f_r2;
   2726     }
   2727 #endif
   2728 #undef FLD
   2729     return idesc;
   2730   }
   2731 
   2732  extract_sfmt_btst:
   2733   {
   2734     const IDESC *idesc = &m32r2f_insn_data[itype];
   2735     CGEN_INSN_WORD insn = entire_insn;
   2736 #define FLD(f) abuf->fields.sfmt_bset.f
   2737     UINT f_uimm3;
   2738     UINT f_r2;
   2739 
   2740     f_uimm3 = EXTRACT_MSB0_UINT (insn, 16, 5, 3);
   2741     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
   2742 
   2743   /* Record the fields for the semantic handler.  */
   2744   FLD (f_r2) = f_r2;
   2745   FLD (f_uimm3) = f_uimm3;
   2746   FLD (i_sr) = & CPU (h_gr)[f_r2];
   2747   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));
   2748 
   2749 #if WITH_PROFILE_MODEL_P
   2750   /* Record the fields for profiling.  */
   2751   if (PROFILE_MODEL_P (current_cpu))
   2752     {
   2753       FLD (in_sr) = f_r2;
   2754     }
   2755 #endif
   2756 #undef FLD
   2757     return idesc;
   2758   }
   2759 
   2760 }
   2761