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