xref: /netbsd-src/external/gpl3/gdb.old/dist/sim/m32r/decodex.c (revision 8b657b0747480f8989760d71343d6dd33f8d4cf9)
1a5a4af3bSchristos /* Simulator instruction decoder for m32rxf.
2a5a4af3bSchristos 
3a5a4af3bSchristos THIS FILE IS MACHINE GENERATED WITH CGEN.
4a5a4af3bSchristos 
5*8b657b07Schristos Copyright 1996-2023 Free Software Foundation, Inc.
6a5a4af3bSchristos 
7a5a4af3bSchristos This file is part of the GNU simulators.
8a5a4af3bSchristos 
9a5a4af3bSchristos    This file is free software; you can redistribute it and/or modify
10a5a4af3bSchristos    it under the terms of the GNU General Public License as published by
11a5a4af3bSchristos    the Free Software Foundation; either version 3, or (at your option)
12a5a4af3bSchristos    any later version.
13a5a4af3bSchristos 
14a5a4af3bSchristos    It is distributed in the hope that it will be useful, but WITHOUT
15a5a4af3bSchristos    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
16a5a4af3bSchristos    or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public
17a5a4af3bSchristos    License for more details.
18a5a4af3bSchristos 
19a5a4af3bSchristos    You should have received a copy of the GNU General Public License along
20a5a4af3bSchristos    with this program; if not, see <http://www.gnu.org/licenses/>.
21a5a4af3bSchristos 
22a5a4af3bSchristos */
23a5a4af3bSchristos 
24a5a4af3bSchristos #define WANT_CPU m32rxf
25a5a4af3bSchristos #define WANT_CPU_M32RXF
26a5a4af3bSchristos 
27a5a4af3bSchristos #include "sim-main.h"
28a5a4af3bSchristos #include "sim-assert.h"
29a5a4af3bSchristos 
30a5a4af3bSchristos /* Insn can't be executed in parallel.
31a5a4af3bSchristos    Or is that "do NOt Pass to Air defense Radar"? :-) */
32a5a4af3bSchristos #define NOPAR (-1)
33a5a4af3bSchristos 
34a5a4af3bSchristos /* The instruction descriptor array.
35a5a4af3bSchristos    This is computed at runtime.  Space for it is not malloc'd to save a
36a5a4af3bSchristos    teensy bit of cpu in the decoder.  Moving it to malloc space is trivial
37a5a4af3bSchristos    but won't be done until necessary (we don't currently support the runtime
38a5a4af3bSchristos    addition of instructions nor an SMP machine with different cpus).  */
39a5a4af3bSchristos static IDESC m32rxf_insn_data[M32RXF_INSN__MAX];
40a5a4af3bSchristos 
41a5a4af3bSchristos /* Commas between elements are contained in the macros.
42a5a4af3bSchristos    Some of these are conditionally compiled out.  */
43a5a4af3bSchristos 
44a5a4af3bSchristos static const struct insn_sem m32rxf_insn_sem[] =
45a5a4af3bSchristos {
46a5a4af3bSchristos   { VIRTUAL_INSN_X_INVALID, M32RXF_INSN_X_INVALID, M32RXF_SFMT_EMPTY, NOPAR, NOPAR  },
47a5a4af3bSchristos   { VIRTUAL_INSN_X_AFTER, M32RXF_INSN_X_AFTER, M32RXF_SFMT_EMPTY, NOPAR, NOPAR  },
48a5a4af3bSchristos   { VIRTUAL_INSN_X_BEFORE, M32RXF_INSN_X_BEFORE, M32RXF_SFMT_EMPTY, NOPAR, NOPAR  },
49a5a4af3bSchristos   { VIRTUAL_INSN_X_CTI_CHAIN, M32RXF_INSN_X_CTI_CHAIN, M32RXF_SFMT_EMPTY, NOPAR, NOPAR  },
50a5a4af3bSchristos   { VIRTUAL_INSN_X_CHAIN, M32RXF_INSN_X_CHAIN, M32RXF_SFMT_EMPTY, NOPAR, NOPAR  },
51a5a4af3bSchristos   { VIRTUAL_INSN_X_BEGIN, M32RXF_INSN_X_BEGIN, M32RXF_SFMT_EMPTY, NOPAR, NOPAR  },
52a5a4af3bSchristos   { M32R_INSN_ADD, M32RXF_INSN_ADD, M32RXF_SFMT_ADD, M32RXF_INSN_PAR_ADD, M32RXF_INSN_WRITE_ADD },
53a5a4af3bSchristos   { M32R_INSN_ADD3, M32RXF_INSN_ADD3, M32RXF_SFMT_ADD3, NOPAR, NOPAR  },
54a5a4af3bSchristos   { M32R_INSN_AND, M32RXF_INSN_AND, M32RXF_SFMT_ADD, M32RXF_INSN_PAR_AND, M32RXF_INSN_WRITE_AND },
55a5a4af3bSchristos   { M32R_INSN_AND3, M32RXF_INSN_AND3, M32RXF_SFMT_AND3, NOPAR, NOPAR  },
56a5a4af3bSchristos   { M32R_INSN_OR, M32RXF_INSN_OR, M32RXF_SFMT_ADD, M32RXF_INSN_PAR_OR, M32RXF_INSN_WRITE_OR },
57a5a4af3bSchristos   { M32R_INSN_OR3, M32RXF_INSN_OR3, M32RXF_SFMT_OR3, NOPAR, NOPAR  },
58a5a4af3bSchristos   { M32R_INSN_XOR, M32RXF_INSN_XOR, M32RXF_SFMT_ADD, M32RXF_INSN_PAR_XOR, M32RXF_INSN_WRITE_XOR },
59a5a4af3bSchristos   { M32R_INSN_XOR3, M32RXF_INSN_XOR3, M32RXF_SFMT_AND3, NOPAR, NOPAR  },
60a5a4af3bSchristos   { M32R_INSN_ADDI, M32RXF_INSN_ADDI, M32RXF_SFMT_ADDI, M32RXF_INSN_PAR_ADDI, M32RXF_INSN_WRITE_ADDI },
61a5a4af3bSchristos   { M32R_INSN_ADDV, M32RXF_INSN_ADDV, M32RXF_SFMT_ADDV, M32RXF_INSN_PAR_ADDV, M32RXF_INSN_WRITE_ADDV },
62a5a4af3bSchristos   { M32R_INSN_ADDV3, M32RXF_INSN_ADDV3, M32RXF_SFMT_ADDV3, NOPAR, NOPAR  },
63a5a4af3bSchristos   { M32R_INSN_ADDX, M32RXF_INSN_ADDX, M32RXF_SFMT_ADDX, M32RXF_INSN_PAR_ADDX, M32RXF_INSN_WRITE_ADDX },
64a5a4af3bSchristos   { M32R_INSN_BC8, M32RXF_INSN_BC8, M32RXF_SFMT_BC8, M32RXF_INSN_PAR_BC8, M32RXF_INSN_WRITE_BC8 },
65a5a4af3bSchristos   { M32R_INSN_BC24, M32RXF_INSN_BC24, M32RXF_SFMT_BC24, NOPAR, NOPAR  },
66a5a4af3bSchristos   { M32R_INSN_BEQ, M32RXF_INSN_BEQ, M32RXF_SFMT_BEQ, NOPAR, NOPAR  },
67a5a4af3bSchristos   { M32R_INSN_BEQZ, M32RXF_INSN_BEQZ, M32RXF_SFMT_BEQZ, NOPAR, NOPAR  },
68a5a4af3bSchristos   { M32R_INSN_BGEZ, M32RXF_INSN_BGEZ, M32RXF_SFMT_BEQZ, NOPAR, NOPAR  },
69a5a4af3bSchristos   { M32R_INSN_BGTZ, M32RXF_INSN_BGTZ, M32RXF_SFMT_BEQZ, NOPAR, NOPAR  },
70a5a4af3bSchristos   { M32R_INSN_BLEZ, M32RXF_INSN_BLEZ, M32RXF_SFMT_BEQZ, NOPAR, NOPAR  },
71a5a4af3bSchristos   { M32R_INSN_BLTZ, M32RXF_INSN_BLTZ, M32RXF_SFMT_BEQZ, NOPAR, NOPAR  },
72a5a4af3bSchristos   { M32R_INSN_BNEZ, M32RXF_INSN_BNEZ, M32RXF_SFMT_BEQZ, NOPAR, NOPAR  },
73a5a4af3bSchristos   { M32R_INSN_BL8, M32RXF_INSN_BL8, M32RXF_SFMT_BL8, M32RXF_INSN_PAR_BL8, M32RXF_INSN_WRITE_BL8 },
74a5a4af3bSchristos   { M32R_INSN_BL24, M32RXF_INSN_BL24, M32RXF_SFMT_BL24, NOPAR, NOPAR  },
75a5a4af3bSchristos   { M32R_INSN_BCL8, M32RXF_INSN_BCL8, M32RXF_SFMT_BCL8, M32RXF_INSN_PAR_BCL8, M32RXF_INSN_WRITE_BCL8 },
76a5a4af3bSchristos   { M32R_INSN_BCL24, M32RXF_INSN_BCL24, M32RXF_SFMT_BCL24, NOPAR, NOPAR  },
77a5a4af3bSchristos   { M32R_INSN_BNC8, M32RXF_INSN_BNC8, M32RXF_SFMT_BC8, M32RXF_INSN_PAR_BNC8, M32RXF_INSN_WRITE_BNC8 },
78a5a4af3bSchristos   { M32R_INSN_BNC24, M32RXF_INSN_BNC24, M32RXF_SFMT_BC24, NOPAR, NOPAR  },
79a5a4af3bSchristos   { M32R_INSN_BNE, M32RXF_INSN_BNE, M32RXF_SFMT_BEQ, NOPAR, NOPAR  },
80a5a4af3bSchristos   { M32R_INSN_BRA8, M32RXF_INSN_BRA8, M32RXF_SFMT_BRA8, M32RXF_INSN_PAR_BRA8, M32RXF_INSN_WRITE_BRA8 },
81a5a4af3bSchristos   { M32R_INSN_BRA24, M32RXF_INSN_BRA24, M32RXF_SFMT_BRA24, NOPAR, NOPAR  },
82a5a4af3bSchristos   { M32R_INSN_BNCL8, M32RXF_INSN_BNCL8, M32RXF_SFMT_BCL8, M32RXF_INSN_PAR_BNCL8, M32RXF_INSN_WRITE_BNCL8 },
83a5a4af3bSchristos   { M32R_INSN_BNCL24, M32RXF_INSN_BNCL24, M32RXF_SFMT_BCL24, NOPAR, NOPAR  },
84a5a4af3bSchristos   { M32R_INSN_CMP, M32RXF_INSN_CMP, M32RXF_SFMT_CMP, M32RXF_INSN_PAR_CMP, M32RXF_INSN_WRITE_CMP },
85a5a4af3bSchristos   { M32R_INSN_CMPI, M32RXF_INSN_CMPI, M32RXF_SFMT_CMPI, NOPAR, NOPAR  },
86a5a4af3bSchristos   { M32R_INSN_CMPU, M32RXF_INSN_CMPU, M32RXF_SFMT_CMP, M32RXF_INSN_PAR_CMPU, M32RXF_INSN_WRITE_CMPU },
87a5a4af3bSchristos   { M32R_INSN_CMPUI, M32RXF_INSN_CMPUI, M32RXF_SFMT_CMPI, NOPAR, NOPAR  },
88a5a4af3bSchristos   { M32R_INSN_CMPEQ, M32RXF_INSN_CMPEQ, M32RXF_SFMT_CMP, M32RXF_INSN_PAR_CMPEQ, M32RXF_INSN_WRITE_CMPEQ },
89a5a4af3bSchristos   { M32R_INSN_CMPZ, M32RXF_INSN_CMPZ, M32RXF_SFMT_CMPZ, M32RXF_INSN_PAR_CMPZ, M32RXF_INSN_WRITE_CMPZ },
90a5a4af3bSchristos   { M32R_INSN_DIV, M32RXF_INSN_DIV, M32RXF_SFMT_DIV, NOPAR, NOPAR  },
91a5a4af3bSchristos   { M32R_INSN_DIVU, M32RXF_INSN_DIVU, M32RXF_SFMT_DIV, NOPAR, NOPAR  },
92a5a4af3bSchristos   { M32R_INSN_REM, M32RXF_INSN_REM, M32RXF_SFMT_DIV, NOPAR, NOPAR  },
93a5a4af3bSchristos   { M32R_INSN_REMU, M32RXF_INSN_REMU, M32RXF_SFMT_DIV, NOPAR, NOPAR  },
94a5a4af3bSchristos   { M32R_INSN_DIVH, M32RXF_INSN_DIVH, M32RXF_SFMT_DIV, NOPAR, NOPAR  },
95a5a4af3bSchristos   { M32R_INSN_JC, M32RXF_INSN_JC, M32RXF_SFMT_JC, M32RXF_INSN_PAR_JC, M32RXF_INSN_WRITE_JC },
96a5a4af3bSchristos   { M32R_INSN_JNC, M32RXF_INSN_JNC, M32RXF_SFMT_JC, M32RXF_INSN_PAR_JNC, M32RXF_INSN_WRITE_JNC },
97a5a4af3bSchristos   { M32R_INSN_JL, M32RXF_INSN_JL, M32RXF_SFMT_JL, M32RXF_INSN_PAR_JL, M32RXF_INSN_WRITE_JL },
98a5a4af3bSchristos   { M32R_INSN_JMP, M32RXF_INSN_JMP, M32RXF_SFMT_JMP, M32RXF_INSN_PAR_JMP, M32RXF_INSN_WRITE_JMP },
99a5a4af3bSchristos   { M32R_INSN_LD, M32RXF_INSN_LD, M32RXF_SFMT_LD, M32RXF_INSN_PAR_LD, M32RXF_INSN_WRITE_LD },
100a5a4af3bSchristos   { M32R_INSN_LD_D, M32RXF_INSN_LD_D, M32RXF_SFMT_LD_D, NOPAR, NOPAR  },
101a5a4af3bSchristos   { M32R_INSN_LDB, M32RXF_INSN_LDB, M32RXF_SFMT_LDB, M32RXF_INSN_PAR_LDB, M32RXF_INSN_WRITE_LDB },
102a5a4af3bSchristos   { M32R_INSN_LDB_D, M32RXF_INSN_LDB_D, M32RXF_SFMT_LDB_D, NOPAR, NOPAR  },
103a5a4af3bSchristos   { M32R_INSN_LDH, M32RXF_INSN_LDH, M32RXF_SFMT_LDH, M32RXF_INSN_PAR_LDH, M32RXF_INSN_WRITE_LDH },
104a5a4af3bSchristos   { M32R_INSN_LDH_D, M32RXF_INSN_LDH_D, M32RXF_SFMT_LDH_D, NOPAR, NOPAR  },
105a5a4af3bSchristos   { M32R_INSN_LDUB, M32RXF_INSN_LDUB, M32RXF_SFMT_LDB, M32RXF_INSN_PAR_LDUB, M32RXF_INSN_WRITE_LDUB },
106a5a4af3bSchristos   { M32R_INSN_LDUB_D, M32RXF_INSN_LDUB_D, M32RXF_SFMT_LDB_D, NOPAR, NOPAR  },
107a5a4af3bSchristos   { M32R_INSN_LDUH, M32RXF_INSN_LDUH, M32RXF_SFMT_LDH, M32RXF_INSN_PAR_LDUH, M32RXF_INSN_WRITE_LDUH },
108a5a4af3bSchristos   { M32R_INSN_LDUH_D, M32RXF_INSN_LDUH_D, M32RXF_SFMT_LDH_D, NOPAR, NOPAR  },
109a5a4af3bSchristos   { M32R_INSN_LD_PLUS, M32RXF_INSN_LD_PLUS, M32RXF_SFMT_LD_PLUS, M32RXF_INSN_PAR_LD_PLUS, M32RXF_INSN_WRITE_LD_PLUS },
110a5a4af3bSchristos   { M32R_INSN_LD24, M32RXF_INSN_LD24, M32RXF_SFMT_LD24, NOPAR, NOPAR  },
111a5a4af3bSchristos   { M32R_INSN_LDI8, M32RXF_INSN_LDI8, M32RXF_SFMT_LDI8, M32RXF_INSN_PAR_LDI8, M32RXF_INSN_WRITE_LDI8 },
112a5a4af3bSchristos   { M32R_INSN_LDI16, M32RXF_INSN_LDI16, M32RXF_SFMT_LDI16, NOPAR, NOPAR  },
113a5a4af3bSchristos   { M32R_INSN_LOCK, M32RXF_INSN_LOCK, M32RXF_SFMT_LOCK, M32RXF_INSN_PAR_LOCK, M32RXF_INSN_WRITE_LOCK },
114a5a4af3bSchristos   { M32R_INSN_MACHI_A, M32RXF_INSN_MACHI_A, M32RXF_SFMT_MACHI_A, M32RXF_INSN_PAR_MACHI_A, M32RXF_INSN_WRITE_MACHI_A },
115a5a4af3bSchristos   { M32R_INSN_MACLO_A, M32RXF_INSN_MACLO_A, M32RXF_SFMT_MACHI_A, M32RXF_INSN_PAR_MACLO_A, M32RXF_INSN_WRITE_MACLO_A },
116a5a4af3bSchristos   { M32R_INSN_MACWHI_A, M32RXF_INSN_MACWHI_A, M32RXF_SFMT_MACHI_A, M32RXF_INSN_PAR_MACWHI_A, M32RXF_INSN_WRITE_MACWHI_A },
117a5a4af3bSchristos   { M32R_INSN_MACWLO_A, M32RXF_INSN_MACWLO_A, M32RXF_SFMT_MACHI_A, M32RXF_INSN_PAR_MACWLO_A, M32RXF_INSN_WRITE_MACWLO_A },
118a5a4af3bSchristos   { M32R_INSN_MUL, M32RXF_INSN_MUL, M32RXF_SFMT_ADD, M32RXF_INSN_PAR_MUL, M32RXF_INSN_WRITE_MUL },
119a5a4af3bSchristos   { M32R_INSN_MULHI_A, M32RXF_INSN_MULHI_A, M32RXF_SFMT_MULHI_A, M32RXF_INSN_PAR_MULHI_A, M32RXF_INSN_WRITE_MULHI_A },
120a5a4af3bSchristos   { M32R_INSN_MULLO_A, M32RXF_INSN_MULLO_A, M32RXF_SFMT_MULHI_A, M32RXF_INSN_PAR_MULLO_A, M32RXF_INSN_WRITE_MULLO_A },
121a5a4af3bSchristos   { M32R_INSN_MULWHI_A, M32RXF_INSN_MULWHI_A, M32RXF_SFMT_MULHI_A, M32RXF_INSN_PAR_MULWHI_A, M32RXF_INSN_WRITE_MULWHI_A },
122a5a4af3bSchristos   { M32R_INSN_MULWLO_A, M32RXF_INSN_MULWLO_A, M32RXF_SFMT_MULHI_A, M32RXF_INSN_PAR_MULWLO_A, M32RXF_INSN_WRITE_MULWLO_A },
123a5a4af3bSchristos   { M32R_INSN_MV, M32RXF_INSN_MV, M32RXF_SFMT_MV, M32RXF_INSN_PAR_MV, M32RXF_INSN_WRITE_MV },
124a5a4af3bSchristos   { M32R_INSN_MVFACHI_A, M32RXF_INSN_MVFACHI_A, M32RXF_SFMT_MVFACHI_A, M32RXF_INSN_PAR_MVFACHI_A, M32RXF_INSN_WRITE_MVFACHI_A },
125a5a4af3bSchristos   { M32R_INSN_MVFACLO_A, M32RXF_INSN_MVFACLO_A, M32RXF_SFMT_MVFACHI_A, M32RXF_INSN_PAR_MVFACLO_A, M32RXF_INSN_WRITE_MVFACLO_A },
126a5a4af3bSchristos   { M32R_INSN_MVFACMI_A, M32RXF_INSN_MVFACMI_A, M32RXF_SFMT_MVFACHI_A, M32RXF_INSN_PAR_MVFACMI_A, M32RXF_INSN_WRITE_MVFACMI_A },
127a5a4af3bSchristos   { M32R_INSN_MVFC, M32RXF_INSN_MVFC, M32RXF_SFMT_MVFC, M32RXF_INSN_PAR_MVFC, M32RXF_INSN_WRITE_MVFC },
128a5a4af3bSchristos   { M32R_INSN_MVTACHI_A, M32RXF_INSN_MVTACHI_A, M32RXF_SFMT_MVTACHI_A, M32RXF_INSN_PAR_MVTACHI_A, M32RXF_INSN_WRITE_MVTACHI_A },
129a5a4af3bSchristos   { M32R_INSN_MVTACLO_A, M32RXF_INSN_MVTACLO_A, M32RXF_SFMT_MVTACHI_A, M32RXF_INSN_PAR_MVTACLO_A, M32RXF_INSN_WRITE_MVTACLO_A },
130a5a4af3bSchristos   { M32R_INSN_MVTC, M32RXF_INSN_MVTC, M32RXF_SFMT_MVTC, M32RXF_INSN_PAR_MVTC, M32RXF_INSN_WRITE_MVTC },
131a5a4af3bSchristos   { M32R_INSN_NEG, M32RXF_INSN_NEG, M32RXF_SFMT_MV, M32RXF_INSN_PAR_NEG, M32RXF_INSN_WRITE_NEG },
132a5a4af3bSchristos   { M32R_INSN_NOP, M32RXF_INSN_NOP, M32RXF_SFMT_NOP, M32RXF_INSN_PAR_NOP, M32RXF_INSN_WRITE_NOP },
133a5a4af3bSchristos   { M32R_INSN_NOT, M32RXF_INSN_NOT, M32RXF_SFMT_MV, M32RXF_INSN_PAR_NOT, M32RXF_INSN_WRITE_NOT },
134a5a4af3bSchristos   { M32R_INSN_RAC_DSI, M32RXF_INSN_RAC_DSI, M32RXF_SFMT_RAC_DSI, M32RXF_INSN_PAR_RAC_DSI, M32RXF_INSN_WRITE_RAC_DSI },
135a5a4af3bSchristos   { M32R_INSN_RACH_DSI, M32RXF_INSN_RACH_DSI, M32RXF_SFMT_RAC_DSI, M32RXF_INSN_PAR_RACH_DSI, M32RXF_INSN_WRITE_RACH_DSI },
136a5a4af3bSchristos   { M32R_INSN_RTE, M32RXF_INSN_RTE, M32RXF_SFMT_RTE, M32RXF_INSN_PAR_RTE, M32RXF_INSN_WRITE_RTE },
137a5a4af3bSchristos   { M32R_INSN_SETH, M32RXF_INSN_SETH, M32RXF_SFMT_SETH, NOPAR, NOPAR  },
138a5a4af3bSchristos   { M32R_INSN_SLL, M32RXF_INSN_SLL, M32RXF_SFMT_ADD, M32RXF_INSN_PAR_SLL, M32RXF_INSN_WRITE_SLL },
139a5a4af3bSchristos   { M32R_INSN_SLL3, M32RXF_INSN_SLL3, M32RXF_SFMT_SLL3, NOPAR, NOPAR  },
140a5a4af3bSchristos   { M32R_INSN_SLLI, M32RXF_INSN_SLLI, M32RXF_SFMT_SLLI, M32RXF_INSN_PAR_SLLI, M32RXF_INSN_WRITE_SLLI },
141a5a4af3bSchristos   { M32R_INSN_SRA, M32RXF_INSN_SRA, M32RXF_SFMT_ADD, M32RXF_INSN_PAR_SRA, M32RXF_INSN_WRITE_SRA },
142a5a4af3bSchristos   { M32R_INSN_SRA3, M32RXF_INSN_SRA3, M32RXF_SFMT_SLL3, NOPAR, NOPAR  },
143a5a4af3bSchristos   { M32R_INSN_SRAI, M32RXF_INSN_SRAI, M32RXF_SFMT_SLLI, M32RXF_INSN_PAR_SRAI, M32RXF_INSN_WRITE_SRAI },
144a5a4af3bSchristos   { M32R_INSN_SRL, M32RXF_INSN_SRL, M32RXF_SFMT_ADD, M32RXF_INSN_PAR_SRL, M32RXF_INSN_WRITE_SRL },
145a5a4af3bSchristos   { M32R_INSN_SRL3, M32RXF_INSN_SRL3, M32RXF_SFMT_SLL3, NOPAR, NOPAR  },
146a5a4af3bSchristos   { M32R_INSN_SRLI, M32RXF_INSN_SRLI, M32RXF_SFMT_SLLI, M32RXF_INSN_PAR_SRLI, M32RXF_INSN_WRITE_SRLI },
147a5a4af3bSchristos   { M32R_INSN_ST, M32RXF_INSN_ST, M32RXF_SFMT_ST, M32RXF_INSN_PAR_ST, M32RXF_INSN_WRITE_ST },
148a5a4af3bSchristos   { M32R_INSN_ST_D, M32RXF_INSN_ST_D, M32RXF_SFMT_ST_D, NOPAR, NOPAR  },
149a5a4af3bSchristos   { M32R_INSN_STB, M32RXF_INSN_STB, M32RXF_SFMT_STB, M32RXF_INSN_PAR_STB, M32RXF_INSN_WRITE_STB },
150a5a4af3bSchristos   { M32R_INSN_STB_D, M32RXF_INSN_STB_D, M32RXF_SFMT_STB_D, NOPAR, NOPAR  },
151a5a4af3bSchristos   { M32R_INSN_STH, M32RXF_INSN_STH, M32RXF_SFMT_STH, M32RXF_INSN_PAR_STH, M32RXF_INSN_WRITE_STH },
152a5a4af3bSchristos   { M32R_INSN_STH_D, M32RXF_INSN_STH_D, M32RXF_SFMT_STH_D, NOPAR, NOPAR  },
153a5a4af3bSchristos   { M32R_INSN_ST_PLUS, M32RXF_INSN_ST_PLUS, M32RXF_SFMT_ST_PLUS, M32RXF_INSN_PAR_ST_PLUS, M32RXF_INSN_WRITE_ST_PLUS },
154a5a4af3bSchristos   { M32R_INSN_STH_PLUS, M32RXF_INSN_STH_PLUS, M32RXF_SFMT_STH_PLUS, M32RXF_INSN_PAR_STH_PLUS, M32RXF_INSN_WRITE_STH_PLUS },
155a5a4af3bSchristos   { M32R_INSN_STB_PLUS, M32RXF_INSN_STB_PLUS, M32RXF_SFMT_STB_PLUS, M32RXF_INSN_PAR_STB_PLUS, M32RXF_INSN_WRITE_STB_PLUS },
156a5a4af3bSchristos   { M32R_INSN_ST_MINUS, M32RXF_INSN_ST_MINUS, M32RXF_SFMT_ST_PLUS, M32RXF_INSN_PAR_ST_MINUS, M32RXF_INSN_WRITE_ST_MINUS },
157a5a4af3bSchristos   { M32R_INSN_SUB, M32RXF_INSN_SUB, M32RXF_SFMT_ADD, M32RXF_INSN_PAR_SUB, M32RXF_INSN_WRITE_SUB },
158a5a4af3bSchristos   { M32R_INSN_SUBV, M32RXF_INSN_SUBV, M32RXF_SFMT_ADDV, M32RXF_INSN_PAR_SUBV, M32RXF_INSN_WRITE_SUBV },
159a5a4af3bSchristos   { M32R_INSN_SUBX, M32RXF_INSN_SUBX, M32RXF_SFMT_ADDX, M32RXF_INSN_PAR_SUBX, M32RXF_INSN_WRITE_SUBX },
160a5a4af3bSchristos   { M32R_INSN_TRAP, M32RXF_INSN_TRAP, M32RXF_SFMT_TRAP, M32RXF_INSN_PAR_TRAP, M32RXF_INSN_WRITE_TRAP },
161a5a4af3bSchristos   { M32R_INSN_UNLOCK, M32RXF_INSN_UNLOCK, M32RXF_SFMT_UNLOCK, M32RXF_INSN_PAR_UNLOCK, M32RXF_INSN_WRITE_UNLOCK },
162a5a4af3bSchristos   { M32R_INSN_SATB, M32RXF_INSN_SATB, M32RXF_SFMT_SATB, NOPAR, NOPAR  },
163a5a4af3bSchristos   { M32R_INSN_SATH, M32RXF_INSN_SATH, M32RXF_SFMT_SATB, NOPAR, NOPAR  },
164a5a4af3bSchristos   { M32R_INSN_SAT, M32RXF_INSN_SAT, M32RXF_SFMT_SAT, NOPAR, NOPAR  },
165a5a4af3bSchristos   { M32R_INSN_PCMPBZ, M32RXF_INSN_PCMPBZ, M32RXF_SFMT_CMPZ, M32RXF_INSN_PAR_PCMPBZ, M32RXF_INSN_WRITE_PCMPBZ },
166a5a4af3bSchristos   { M32R_INSN_SADD, M32RXF_INSN_SADD, M32RXF_SFMT_SADD, M32RXF_INSN_PAR_SADD, M32RXF_INSN_WRITE_SADD },
167a5a4af3bSchristos   { M32R_INSN_MACWU1, M32RXF_INSN_MACWU1, M32RXF_SFMT_MACWU1, M32RXF_INSN_PAR_MACWU1, M32RXF_INSN_WRITE_MACWU1 },
168a5a4af3bSchristos   { M32R_INSN_MSBLO, M32RXF_INSN_MSBLO, M32RXF_SFMT_MSBLO, M32RXF_INSN_PAR_MSBLO, M32RXF_INSN_WRITE_MSBLO },
169a5a4af3bSchristos   { M32R_INSN_MULWU1, M32RXF_INSN_MULWU1, M32RXF_SFMT_MULWU1, M32RXF_INSN_PAR_MULWU1, M32RXF_INSN_WRITE_MULWU1 },
170a5a4af3bSchristos   { M32R_INSN_MACLH1, M32RXF_INSN_MACLH1, M32RXF_SFMT_MACWU1, M32RXF_INSN_PAR_MACLH1, M32RXF_INSN_WRITE_MACLH1 },
171a5a4af3bSchristos   { M32R_INSN_SC, M32RXF_INSN_SC, M32RXF_SFMT_SC, M32RXF_INSN_PAR_SC, M32RXF_INSN_WRITE_SC },
172a5a4af3bSchristos   { M32R_INSN_SNC, M32RXF_INSN_SNC, M32RXF_SFMT_SC, M32RXF_INSN_PAR_SNC, M32RXF_INSN_WRITE_SNC },
173a5a4af3bSchristos   { M32R_INSN_CLRPSW, M32RXF_INSN_CLRPSW, M32RXF_SFMT_CLRPSW, M32RXF_INSN_PAR_CLRPSW, M32RXF_INSN_WRITE_CLRPSW },
174a5a4af3bSchristos   { M32R_INSN_SETPSW, M32RXF_INSN_SETPSW, M32RXF_SFMT_SETPSW, M32RXF_INSN_PAR_SETPSW, M32RXF_INSN_WRITE_SETPSW },
175a5a4af3bSchristos   { M32R_INSN_BSET, M32RXF_INSN_BSET, M32RXF_SFMT_BSET, NOPAR, NOPAR  },
176a5a4af3bSchristos   { M32R_INSN_BCLR, M32RXF_INSN_BCLR, M32RXF_SFMT_BSET, NOPAR, NOPAR  },
177a5a4af3bSchristos   { M32R_INSN_BTST, M32RXF_INSN_BTST, M32RXF_SFMT_BTST, M32RXF_INSN_PAR_BTST, M32RXF_INSN_WRITE_BTST },
178a5a4af3bSchristos };
179a5a4af3bSchristos 
180a5a4af3bSchristos static const struct insn_sem m32rxf_insn_sem_invalid =
181a5a4af3bSchristos {
182a5a4af3bSchristos   VIRTUAL_INSN_X_INVALID, M32RXF_INSN_X_INVALID, M32RXF_SFMT_EMPTY, NOPAR, NOPAR
183a5a4af3bSchristos };
184a5a4af3bSchristos 
185a5a4af3bSchristos /* Initialize an IDESC from the compile-time computable parts.  */
186a5a4af3bSchristos 
187a5a4af3bSchristos static INLINE void
188a5a4af3bSchristos init_idesc (SIM_CPU *cpu, IDESC *id, const struct insn_sem *t)
189a5a4af3bSchristos {
190a5a4af3bSchristos   const CGEN_INSN *insn_table = CGEN_CPU_INSN_TABLE (CPU_CPU_DESC (cpu))->init_entries;
191a5a4af3bSchristos 
192a5a4af3bSchristos   id->num = t->index;
193a5a4af3bSchristos   id->sfmt = t->sfmt;
194a5a4af3bSchristos   if ((int) t->type <= 0)
195a5a4af3bSchristos     id->idata = & cgen_virtual_insn_table[- (int) t->type];
196a5a4af3bSchristos   else
197a5a4af3bSchristos     id->idata = & insn_table[t->type];
198a5a4af3bSchristos   id->attrs = CGEN_INSN_ATTRS (id->idata);
199a5a4af3bSchristos   /* Oh my god, a magic number.  */
200a5a4af3bSchristos   id->length = CGEN_INSN_BITSIZE (id->idata) / 8;
201a5a4af3bSchristos 
202a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
203a5a4af3bSchristos   id->timing = & MODEL_TIMING (CPU_MODEL (cpu)) [t->index];
204a5a4af3bSchristos   {
205a5a4af3bSchristos     SIM_DESC sd = CPU_STATE (cpu);
206a5a4af3bSchristos     SIM_ASSERT (t->index == id->timing->num);
207a5a4af3bSchristos   }
208a5a4af3bSchristos #endif
209a5a4af3bSchristos 
210a5a4af3bSchristos   /* Semantic pointers are initialized elsewhere.  */
211a5a4af3bSchristos }
212a5a4af3bSchristos 
213a5a4af3bSchristos /* Initialize the instruction descriptor table.  */
214a5a4af3bSchristos 
215a5a4af3bSchristos void
216a5a4af3bSchristos m32rxf_init_idesc_table (SIM_CPU *cpu)
217a5a4af3bSchristos {
218a5a4af3bSchristos   IDESC *id,*tabend;
219a5a4af3bSchristos   const struct insn_sem *t,*tend;
220a5a4af3bSchristos   int tabsize = M32RXF_INSN__MAX;
221a5a4af3bSchristos   IDESC *table = m32rxf_insn_data;
222a5a4af3bSchristos 
223a5a4af3bSchristos   memset (table, 0, tabsize * sizeof (IDESC));
224a5a4af3bSchristos 
225a5a4af3bSchristos   /* First set all entries to the `invalid insn'.  */
226a5a4af3bSchristos   t = & m32rxf_insn_sem_invalid;
227a5a4af3bSchristos   for (id = table, tabend = table + tabsize; id < tabend; ++id)
228a5a4af3bSchristos     init_idesc (cpu, id, t);
229a5a4af3bSchristos 
230a5a4af3bSchristos   /* Now fill in the values for the chosen cpu.  */
23199e23f81Schristos   for (t = m32rxf_insn_sem, tend = t + ARRAY_SIZE (m32rxf_insn_sem);
232a5a4af3bSchristos        t != tend; ++t)
233a5a4af3bSchristos     {
234a5a4af3bSchristos       init_idesc (cpu, & table[t->index], t);
235a5a4af3bSchristos       if (t->par_index != NOPAR)
236a5a4af3bSchristos 	{
237a5a4af3bSchristos 	  init_idesc (cpu, &table[t->par_index], t);
238a5a4af3bSchristos 	  table[t->index].par_idesc = &table[t->par_index];
239a5a4af3bSchristos 	}
240a5a4af3bSchristos       if (t->par_index != NOPAR)
241a5a4af3bSchristos 	{
242a5a4af3bSchristos 	  init_idesc (cpu, &table[t->write_index], t);
243a5a4af3bSchristos 	  table[t->par_index].par_idesc = &table[t->write_index];
244a5a4af3bSchristos 	}
245a5a4af3bSchristos     }
246a5a4af3bSchristos 
247a5a4af3bSchristos   /* Link the IDESC table into the cpu.  */
248a5a4af3bSchristos   CPU_IDESC (cpu) = table;
249a5a4af3bSchristos }
250a5a4af3bSchristos 
251a5a4af3bSchristos /* Given an instruction, return a pointer to its IDESC entry.  */
252a5a4af3bSchristos 
253a5a4af3bSchristos const IDESC *
254a5a4af3bSchristos m32rxf_decode (SIM_CPU *current_cpu, IADDR pc,
255a5a4af3bSchristos               CGEN_INSN_WORD base_insn, CGEN_INSN_WORD entire_insn,
256a5a4af3bSchristos               ARGBUF *abuf)
257a5a4af3bSchristos {
258a5a4af3bSchristos   /* Result of decoder.  */
259a5a4af3bSchristos   M32RXF_INSN_TYPE itype;
260a5a4af3bSchristos 
261a5a4af3bSchristos   {
262a5a4af3bSchristos     CGEN_INSN_WORD insn = base_insn;
263a5a4af3bSchristos 
264a5a4af3bSchristos     {
265a5a4af3bSchristos       unsigned int val = (((insn >> 8) & (15 << 4)) | ((insn >> 4) & (15 << 0)));
266a5a4af3bSchristos       switch (val)
267a5a4af3bSchristos       {
268a5a4af3bSchristos       case 0 : itype = M32RXF_INSN_SUBV; goto extract_sfmt_addv;
269a5a4af3bSchristos       case 1 : itype = M32RXF_INSN_SUBX; goto extract_sfmt_addx;
270a5a4af3bSchristos       case 2 : itype = M32RXF_INSN_SUB; goto extract_sfmt_add;
271a5a4af3bSchristos       case 3 : itype = M32RXF_INSN_NEG; goto extract_sfmt_mv;
272a5a4af3bSchristos       case 4 : itype = M32RXF_INSN_CMP; goto extract_sfmt_cmp;
273a5a4af3bSchristos       case 5 : itype = M32RXF_INSN_CMPU; goto extract_sfmt_cmp;
274a5a4af3bSchristos       case 6 : itype = M32RXF_INSN_CMPEQ; goto extract_sfmt_cmp;
275a5a4af3bSchristos       case 7 :
276a5a4af3bSchristos         {
277a5a4af3bSchristos           unsigned int val = (((insn >> 8) & (3 << 0)));
278a5a4af3bSchristos           switch (val)
279a5a4af3bSchristos           {
280a5a4af3bSchristos           case 0 :
281a5a4af3bSchristos             if ((entire_insn & 0xfff0) == 0x70)
282a5a4af3bSchristos               { itype = M32RXF_INSN_CMPZ; goto extract_sfmt_cmpz; }
283a5a4af3bSchristos             itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
284a5a4af3bSchristos           case 3 :
285a5a4af3bSchristos             if ((entire_insn & 0xfff0) == 0x370)
286a5a4af3bSchristos               { itype = M32RXF_INSN_PCMPBZ; goto extract_sfmt_cmpz; }
287a5a4af3bSchristos             itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
288a5a4af3bSchristos           default : itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
289a5a4af3bSchristos           }
290a5a4af3bSchristos         }
291a5a4af3bSchristos       case 8 : itype = M32RXF_INSN_ADDV; goto extract_sfmt_addv;
292a5a4af3bSchristos       case 9 : itype = M32RXF_INSN_ADDX; goto extract_sfmt_addx;
293a5a4af3bSchristos       case 10 : itype = M32RXF_INSN_ADD; goto extract_sfmt_add;
294a5a4af3bSchristos       case 11 : itype = M32RXF_INSN_NOT; goto extract_sfmt_mv;
295a5a4af3bSchristos       case 12 : itype = M32RXF_INSN_AND; goto extract_sfmt_add;
296a5a4af3bSchristos       case 13 : itype = M32RXF_INSN_XOR; goto extract_sfmt_add;
297a5a4af3bSchristos       case 14 : itype = M32RXF_INSN_OR; goto extract_sfmt_add;
298a5a4af3bSchristos       case 15 :
299a5a4af3bSchristos         if ((entire_insn & 0xf8f0) == 0xf0)
300a5a4af3bSchristos           { itype = M32RXF_INSN_BTST; goto extract_sfmt_btst; }
301a5a4af3bSchristos         itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
302a5a4af3bSchristos       case 16 : itype = M32RXF_INSN_SRL; goto extract_sfmt_add;
303a5a4af3bSchristos       case 18 : itype = M32RXF_INSN_SRA; goto extract_sfmt_add;
304a5a4af3bSchristos       case 20 : itype = M32RXF_INSN_SLL; goto extract_sfmt_add;
305a5a4af3bSchristos       case 22 : itype = M32RXF_INSN_MUL; goto extract_sfmt_add;
306a5a4af3bSchristos       case 24 : itype = M32RXF_INSN_MV; goto extract_sfmt_mv;
307a5a4af3bSchristos       case 25 : itype = M32RXF_INSN_MVFC; goto extract_sfmt_mvfc;
308a5a4af3bSchristos       case 26 : itype = M32RXF_INSN_MVTC; goto extract_sfmt_mvtc;
309a5a4af3bSchristos       case 28 :
310a5a4af3bSchristos         {
311a5a4af3bSchristos           unsigned int val = (((insn >> 8) & (3 << 0)));
312a5a4af3bSchristos           switch (val)
313a5a4af3bSchristos           {
314a5a4af3bSchristos           case 0 :
315a5a4af3bSchristos             if ((entire_insn & 0xfff0) == 0x1cc0)
316a5a4af3bSchristos               { itype = M32RXF_INSN_JC; goto extract_sfmt_jc; }
317a5a4af3bSchristos             itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
318a5a4af3bSchristos           case 1 :
319a5a4af3bSchristos             if ((entire_insn & 0xfff0) == 0x1dc0)
320a5a4af3bSchristos               { itype = M32RXF_INSN_JNC; goto extract_sfmt_jc; }
321a5a4af3bSchristos             itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
322a5a4af3bSchristos           case 2 :
323a5a4af3bSchristos             if ((entire_insn & 0xfff0) == 0x1ec0)
324a5a4af3bSchristos               { itype = M32RXF_INSN_JL; goto extract_sfmt_jl; }
325a5a4af3bSchristos             itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
326a5a4af3bSchristos           case 3 :
327a5a4af3bSchristos             if ((entire_insn & 0xfff0) == 0x1fc0)
328a5a4af3bSchristos               { itype = M32RXF_INSN_JMP; goto extract_sfmt_jmp; }
329a5a4af3bSchristos             itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
330a5a4af3bSchristos           default : itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
331a5a4af3bSchristos           }
332a5a4af3bSchristos         }
333a5a4af3bSchristos       case 29 :
334a5a4af3bSchristos         if ((entire_insn & 0xffff) == 0x10d6)
335a5a4af3bSchristos           { itype = M32RXF_INSN_RTE; goto extract_sfmt_rte; }
336a5a4af3bSchristos         itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
337a5a4af3bSchristos       case 31 :
338a5a4af3bSchristos         if ((entire_insn & 0xfff0) == 0x10f0)
339a5a4af3bSchristos           { itype = M32RXF_INSN_TRAP; goto extract_sfmt_trap; }
340a5a4af3bSchristos         itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
341a5a4af3bSchristos       case 32 : itype = M32RXF_INSN_STB; goto extract_sfmt_stb;
342a5a4af3bSchristos       case 33 : itype = M32RXF_INSN_STB_PLUS; goto extract_sfmt_stb_plus;
343a5a4af3bSchristos       case 34 : itype = M32RXF_INSN_STH; goto extract_sfmt_sth;
344a5a4af3bSchristos       case 35 : itype = M32RXF_INSN_STH_PLUS; goto extract_sfmt_sth_plus;
345a5a4af3bSchristos       case 36 : itype = M32RXF_INSN_ST; goto extract_sfmt_st;
346a5a4af3bSchristos       case 37 : itype = M32RXF_INSN_UNLOCK; goto extract_sfmt_unlock;
347a5a4af3bSchristos       case 38 : itype = M32RXF_INSN_ST_PLUS; goto extract_sfmt_st_plus;
348a5a4af3bSchristos       case 39 : itype = M32RXF_INSN_ST_MINUS; goto extract_sfmt_st_plus;
349a5a4af3bSchristos       case 40 : itype = M32RXF_INSN_LDB; goto extract_sfmt_ldb;
350a5a4af3bSchristos       case 41 : itype = M32RXF_INSN_LDUB; goto extract_sfmt_ldb;
351a5a4af3bSchristos       case 42 : itype = M32RXF_INSN_LDH; goto extract_sfmt_ldh;
352a5a4af3bSchristos       case 43 : itype = M32RXF_INSN_LDUH; goto extract_sfmt_ldh;
353a5a4af3bSchristos       case 44 : itype = M32RXF_INSN_LD; goto extract_sfmt_ld;
354a5a4af3bSchristos       case 45 : itype = M32RXF_INSN_LOCK; goto extract_sfmt_lock;
355a5a4af3bSchristos       case 46 : itype = M32RXF_INSN_LD_PLUS; goto extract_sfmt_ld_plus;
356a5a4af3bSchristos       case 48 : /* fall through */
357a5a4af3bSchristos       case 56 : itype = M32RXF_INSN_MULHI_A; goto extract_sfmt_mulhi_a;
358a5a4af3bSchristos       case 49 : /* fall through */
359a5a4af3bSchristos       case 57 : itype = M32RXF_INSN_MULLO_A; goto extract_sfmt_mulhi_a;
360a5a4af3bSchristos       case 50 : /* fall through */
361a5a4af3bSchristos       case 58 : itype = M32RXF_INSN_MULWHI_A; goto extract_sfmt_mulhi_a;
362a5a4af3bSchristos       case 51 : /* fall through */
363a5a4af3bSchristos       case 59 : itype = M32RXF_INSN_MULWLO_A; goto extract_sfmt_mulhi_a;
364a5a4af3bSchristos       case 52 : /* fall through */
365a5a4af3bSchristos       case 60 : itype = M32RXF_INSN_MACHI_A; goto extract_sfmt_machi_a;
366a5a4af3bSchristos       case 53 : /* fall through */
367a5a4af3bSchristos       case 61 : itype = M32RXF_INSN_MACLO_A; goto extract_sfmt_machi_a;
368a5a4af3bSchristos       case 54 : /* fall through */
369a5a4af3bSchristos       case 62 : itype = M32RXF_INSN_MACWHI_A; goto extract_sfmt_machi_a;
370a5a4af3bSchristos       case 55 : /* fall through */
371a5a4af3bSchristos       case 63 : itype = M32RXF_INSN_MACWLO_A; goto extract_sfmt_machi_a;
372a5a4af3bSchristos       case 64 : /* fall through */
373a5a4af3bSchristos       case 65 : /* fall through */
374a5a4af3bSchristos       case 66 : /* fall through */
375a5a4af3bSchristos       case 67 : /* fall through */
376a5a4af3bSchristos       case 68 : /* fall through */
377a5a4af3bSchristos       case 69 : /* fall through */
378a5a4af3bSchristos       case 70 : /* fall through */
379a5a4af3bSchristos       case 71 : /* fall through */
380a5a4af3bSchristos       case 72 : /* fall through */
381a5a4af3bSchristos       case 73 : /* fall through */
382a5a4af3bSchristos       case 74 : /* fall through */
383a5a4af3bSchristos       case 75 : /* fall through */
384a5a4af3bSchristos       case 76 : /* fall through */
385a5a4af3bSchristos       case 77 : /* fall through */
386a5a4af3bSchristos       case 78 : /* fall through */
387a5a4af3bSchristos       case 79 : itype = M32RXF_INSN_ADDI; goto extract_sfmt_addi;
388a5a4af3bSchristos       case 80 : /* fall through */
389a5a4af3bSchristos       case 81 : itype = M32RXF_INSN_SRLI; goto extract_sfmt_slli;
390a5a4af3bSchristos       case 82 : /* fall through */
391a5a4af3bSchristos       case 83 : itype = M32RXF_INSN_SRAI; goto extract_sfmt_slli;
392a5a4af3bSchristos       case 84 : /* fall through */
393a5a4af3bSchristos       case 85 : itype = M32RXF_INSN_SLLI; goto extract_sfmt_slli;
394a5a4af3bSchristos       case 87 :
395a5a4af3bSchristos         {
396a5a4af3bSchristos           unsigned int val = (((insn >> 0) & (1 << 0)));
397a5a4af3bSchristos           switch (val)
398a5a4af3bSchristos           {
399a5a4af3bSchristos           case 0 :
400a5a4af3bSchristos             if ((entire_insn & 0xf0f3) == 0x5070)
401a5a4af3bSchristos               { itype = M32RXF_INSN_MVTACHI_A; goto extract_sfmt_mvtachi_a; }
402a5a4af3bSchristos             itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
403a5a4af3bSchristos           case 1 :
404a5a4af3bSchristos             if ((entire_insn & 0xf0f3) == 0x5071)
405a5a4af3bSchristos               { itype = M32RXF_INSN_MVTACLO_A; goto extract_sfmt_mvtachi_a; }
406a5a4af3bSchristos             itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
407a5a4af3bSchristos           default : itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
408a5a4af3bSchristos           }
409a5a4af3bSchristos         }
410a5a4af3bSchristos       case 88 :
411a5a4af3bSchristos         if ((entire_insn & 0xf3f2) == 0x5080)
412a5a4af3bSchristos           { itype = M32RXF_INSN_RACH_DSI; goto extract_sfmt_rac_dsi; }
413a5a4af3bSchristos         itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
414a5a4af3bSchristos       case 89 :
415a5a4af3bSchristos         if ((entire_insn & 0xf3f2) == 0x5090)
416a5a4af3bSchristos           { itype = M32RXF_INSN_RAC_DSI; goto extract_sfmt_rac_dsi; }
417a5a4af3bSchristos         itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
418a5a4af3bSchristos       case 90 : itype = M32RXF_INSN_MULWU1; goto extract_sfmt_mulwu1;
419a5a4af3bSchristos       case 91 : itype = M32RXF_INSN_MACWU1; goto extract_sfmt_macwu1;
420a5a4af3bSchristos       case 92 : itype = M32RXF_INSN_MACLH1; goto extract_sfmt_macwu1;
421a5a4af3bSchristos       case 93 : itype = M32RXF_INSN_MSBLO; goto extract_sfmt_msblo;
422a5a4af3bSchristos       case 94 :
423a5a4af3bSchristos         if ((entire_insn & 0xffff) == 0x50e4)
424a5a4af3bSchristos           { itype = M32RXF_INSN_SADD; goto extract_sfmt_sadd; }
425a5a4af3bSchristos         itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
426a5a4af3bSchristos       case 95 :
427a5a4af3bSchristos         {
428a5a4af3bSchristos           unsigned int val = (((insn >> 0) & (3 << 0)));
429a5a4af3bSchristos           switch (val)
430a5a4af3bSchristos           {
431a5a4af3bSchristos           case 0 : itype = M32RXF_INSN_MVFACHI_A; goto extract_sfmt_mvfachi_a;
432a5a4af3bSchristos           case 1 : itype = M32RXF_INSN_MVFACLO_A; goto extract_sfmt_mvfachi_a;
433a5a4af3bSchristos           case 2 : itype = M32RXF_INSN_MVFACMI_A; goto extract_sfmt_mvfachi_a;
434a5a4af3bSchristos           default : itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
435a5a4af3bSchristos           }
436a5a4af3bSchristos         }
437a5a4af3bSchristos       case 96 : /* fall through */
438a5a4af3bSchristos       case 97 : /* fall through */
439a5a4af3bSchristos       case 98 : /* fall through */
440a5a4af3bSchristos       case 99 : /* fall through */
441a5a4af3bSchristos       case 100 : /* fall through */
442a5a4af3bSchristos       case 101 : /* fall through */
443a5a4af3bSchristos       case 102 : /* fall through */
444a5a4af3bSchristos       case 103 : /* fall through */
445a5a4af3bSchristos       case 104 : /* fall through */
446a5a4af3bSchristos       case 105 : /* fall through */
447a5a4af3bSchristos       case 106 : /* fall through */
448a5a4af3bSchristos       case 107 : /* fall through */
449a5a4af3bSchristos       case 108 : /* fall through */
450a5a4af3bSchristos       case 109 : /* fall through */
451a5a4af3bSchristos       case 110 : /* fall through */
452a5a4af3bSchristos       case 111 : itype = M32RXF_INSN_LDI8; goto extract_sfmt_ldi8;
453a5a4af3bSchristos       case 112 :
454a5a4af3bSchristos         {
455a5a4af3bSchristos           unsigned int val = (((insn >> 7) & (15 << 1)) | ((insn >> 0) & (1 << 0)));
456a5a4af3bSchristos           switch (val)
457a5a4af3bSchristos           {
458a5a4af3bSchristos           case 0 :
459a5a4af3bSchristos             if ((entire_insn & 0xffff) == 0x7000)
460a5a4af3bSchristos               { itype = M32RXF_INSN_NOP; goto extract_sfmt_nop; }
461a5a4af3bSchristos             itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
462a5a4af3bSchristos           case 2 : /* fall through */
463a5a4af3bSchristos           case 3 : itype = M32RXF_INSN_SETPSW; goto extract_sfmt_setpsw;
464a5a4af3bSchristos           case 4 : /* fall through */
465a5a4af3bSchristos           case 5 : itype = M32RXF_INSN_CLRPSW; goto extract_sfmt_clrpsw;
466a5a4af3bSchristos           case 9 :
467a5a4af3bSchristos             if ((entire_insn & 0xffff) == 0x7401)
468a5a4af3bSchristos               { itype = M32RXF_INSN_SC; goto extract_sfmt_sc; }
469a5a4af3bSchristos             itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
470a5a4af3bSchristos           case 11 :
471a5a4af3bSchristos             if ((entire_insn & 0xffff) == 0x7501)
472a5a4af3bSchristos               { itype = M32RXF_INSN_SNC; goto extract_sfmt_sc; }
473a5a4af3bSchristos             itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
474a5a4af3bSchristos           case 16 : /* fall through */
475a5a4af3bSchristos           case 17 : itype = M32RXF_INSN_BCL8; goto extract_sfmt_bcl8;
476a5a4af3bSchristos           case 18 : /* fall through */
477a5a4af3bSchristos           case 19 : itype = M32RXF_INSN_BNCL8; goto extract_sfmt_bcl8;
478a5a4af3bSchristos           case 24 : /* fall through */
479a5a4af3bSchristos           case 25 : itype = M32RXF_INSN_BC8; goto extract_sfmt_bc8;
480a5a4af3bSchristos           case 26 : /* fall through */
481a5a4af3bSchristos           case 27 : itype = M32RXF_INSN_BNC8; goto extract_sfmt_bc8;
482a5a4af3bSchristos           case 28 : /* fall through */
483a5a4af3bSchristos           case 29 : itype = M32RXF_INSN_BL8; goto extract_sfmt_bl8;
484a5a4af3bSchristos           case 30 : /* fall through */
485a5a4af3bSchristos           case 31 : itype = M32RXF_INSN_BRA8; goto extract_sfmt_bra8;
486a5a4af3bSchristos           default : itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
487a5a4af3bSchristos           }
488a5a4af3bSchristos         }
489a5a4af3bSchristos       case 113 : /* fall through */
490a5a4af3bSchristos       case 114 : /* fall through */
491a5a4af3bSchristos       case 115 : /* fall through */
492a5a4af3bSchristos       case 116 : /* fall through */
493a5a4af3bSchristos       case 117 : /* fall through */
494a5a4af3bSchristos       case 118 : /* fall through */
495a5a4af3bSchristos       case 119 : /* fall through */
496a5a4af3bSchristos       case 120 : /* fall through */
497a5a4af3bSchristos       case 121 : /* fall through */
498a5a4af3bSchristos       case 122 : /* fall through */
499a5a4af3bSchristos       case 123 : /* fall through */
500a5a4af3bSchristos       case 124 : /* fall through */
501a5a4af3bSchristos       case 125 : /* fall through */
502a5a4af3bSchristos       case 126 : /* fall through */
503a5a4af3bSchristos       case 127 :
504a5a4af3bSchristos         {
505a5a4af3bSchristos           unsigned int val = (((insn >> 8) & (15 << 0)));
506a5a4af3bSchristos           switch (val)
507a5a4af3bSchristos           {
508a5a4af3bSchristos           case 1 : itype = M32RXF_INSN_SETPSW; goto extract_sfmt_setpsw;
509a5a4af3bSchristos           case 2 : itype = M32RXF_INSN_CLRPSW; goto extract_sfmt_clrpsw;
510a5a4af3bSchristos           case 8 : itype = M32RXF_INSN_BCL8; goto extract_sfmt_bcl8;
511a5a4af3bSchristos           case 9 : itype = M32RXF_INSN_BNCL8; goto extract_sfmt_bcl8;
512a5a4af3bSchristos           case 12 : itype = M32RXF_INSN_BC8; goto extract_sfmt_bc8;
513a5a4af3bSchristos           case 13 : itype = M32RXF_INSN_BNC8; goto extract_sfmt_bc8;
514a5a4af3bSchristos           case 14 : itype = M32RXF_INSN_BL8; goto extract_sfmt_bl8;
515a5a4af3bSchristos           case 15 : itype = M32RXF_INSN_BRA8; goto extract_sfmt_bra8;
516a5a4af3bSchristos           default : itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
517a5a4af3bSchristos           }
518a5a4af3bSchristos         }
519a5a4af3bSchristos       case 132 :
520a5a4af3bSchristos         if ((entire_insn & 0xfff00000) == 0x80400000)
521a5a4af3bSchristos           { itype = M32RXF_INSN_CMPI; goto extract_sfmt_cmpi; }
522a5a4af3bSchristos         itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
523a5a4af3bSchristos       case 133 :
524a5a4af3bSchristos         if ((entire_insn & 0xfff00000) == 0x80500000)
525a5a4af3bSchristos           { itype = M32RXF_INSN_CMPUI; goto extract_sfmt_cmpi; }
526a5a4af3bSchristos         itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
527a5a4af3bSchristos       case 134 :
528a5a4af3bSchristos         {
529a5a4af3bSchristos           unsigned int val = (((entire_insn >> 8) & (3 << 0)));
530a5a4af3bSchristos           switch (val)
531a5a4af3bSchristos           {
532a5a4af3bSchristos           case 0 :
533a5a4af3bSchristos             if ((entire_insn & 0xf0f0ffff) == 0x80600000)
534a5a4af3bSchristos               { itype = M32RXF_INSN_SAT; goto extract_sfmt_sat; }
535a5a4af3bSchristos             itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
536a5a4af3bSchristos           case 2 :
537a5a4af3bSchristos             if ((entire_insn & 0xf0f0ffff) == 0x80600200)
538a5a4af3bSchristos               { itype = M32RXF_INSN_SATH; goto extract_sfmt_satb; }
539a5a4af3bSchristos             itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
540a5a4af3bSchristos           case 3 :
541a5a4af3bSchristos             if ((entire_insn & 0xf0f0ffff) == 0x80600300)
542a5a4af3bSchristos               { itype = M32RXF_INSN_SATB; goto extract_sfmt_satb; }
543a5a4af3bSchristos             itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
544a5a4af3bSchristos           default : itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
545a5a4af3bSchristos           }
546a5a4af3bSchristos         }
547a5a4af3bSchristos       case 136 : itype = M32RXF_INSN_ADDV3; goto extract_sfmt_addv3;
548a5a4af3bSchristos       case 138 : itype = M32RXF_INSN_ADD3; goto extract_sfmt_add3;
549a5a4af3bSchristos       case 140 : itype = M32RXF_INSN_AND3; goto extract_sfmt_and3;
550a5a4af3bSchristos       case 141 : itype = M32RXF_INSN_XOR3; goto extract_sfmt_and3;
551a5a4af3bSchristos       case 142 : itype = M32RXF_INSN_OR3; goto extract_sfmt_or3;
552a5a4af3bSchristos       case 144 :
553a5a4af3bSchristos         {
554a5a4af3bSchristos           unsigned int val = (((entire_insn >> 4) & (1 << 0)));
555a5a4af3bSchristos           switch (val)
556a5a4af3bSchristos           {
557a5a4af3bSchristos           case 0 :
558a5a4af3bSchristos             if ((entire_insn & 0xf0f0ffff) == 0x90000000)
559a5a4af3bSchristos               { itype = M32RXF_INSN_DIV; goto extract_sfmt_div; }
560a5a4af3bSchristos             itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
561a5a4af3bSchristos           case 1 :
562a5a4af3bSchristos             if ((entire_insn & 0xf0f0ffff) == 0x90000010)
563a5a4af3bSchristos               { itype = M32RXF_INSN_DIVH; goto extract_sfmt_div; }
564a5a4af3bSchristos             itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
565a5a4af3bSchristos           default : itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
566a5a4af3bSchristos           }
567a5a4af3bSchristos         }
568a5a4af3bSchristos       case 145 :
569a5a4af3bSchristos         if ((entire_insn & 0xf0f0ffff) == 0x90100000)
570a5a4af3bSchristos           { itype = M32RXF_INSN_DIVU; goto extract_sfmt_div; }
571a5a4af3bSchristos         itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
572a5a4af3bSchristos       case 146 :
573a5a4af3bSchristos         if ((entire_insn & 0xf0f0ffff) == 0x90200000)
574a5a4af3bSchristos           { itype = M32RXF_INSN_REM; goto extract_sfmt_div; }
575a5a4af3bSchristos         itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
576a5a4af3bSchristos       case 147 :
577a5a4af3bSchristos         if ((entire_insn & 0xf0f0ffff) == 0x90300000)
578a5a4af3bSchristos           { itype = M32RXF_INSN_REMU; goto extract_sfmt_div; }
579a5a4af3bSchristos         itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
580a5a4af3bSchristos       case 152 : itype = M32RXF_INSN_SRL3; goto extract_sfmt_sll3;
581a5a4af3bSchristos       case 154 : itype = M32RXF_INSN_SRA3; goto extract_sfmt_sll3;
582a5a4af3bSchristos       case 156 : itype = M32RXF_INSN_SLL3; goto extract_sfmt_sll3;
583a5a4af3bSchristos       case 159 :
584a5a4af3bSchristos         if ((entire_insn & 0xf0ff0000) == 0x90f00000)
585a5a4af3bSchristos           { itype = M32RXF_INSN_LDI16; goto extract_sfmt_ldi16; }
586a5a4af3bSchristos         itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
587a5a4af3bSchristos       case 160 : itype = M32RXF_INSN_STB_D; goto extract_sfmt_stb_d;
588a5a4af3bSchristos       case 162 : itype = M32RXF_INSN_STH_D; goto extract_sfmt_sth_d;
589a5a4af3bSchristos       case 164 : itype = M32RXF_INSN_ST_D; goto extract_sfmt_st_d;
590a5a4af3bSchristos       case 166 :
591a5a4af3bSchristos         if ((entire_insn & 0xf8f00000) == 0xa0600000)
592a5a4af3bSchristos           { itype = M32RXF_INSN_BSET; goto extract_sfmt_bset; }
593a5a4af3bSchristos         itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
594a5a4af3bSchristos       case 167 :
595a5a4af3bSchristos         if ((entire_insn & 0xf8f00000) == 0xa0700000)
596a5a4af3bSchristos           { itype = M32RXF_INSN_BCLR; goto extract_sfmt_bset; }
597a5a4af3bSchristos         itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
598a5a4af3bSchristos       case 168 : itype = M32RXF_INSN_LDB_D; goto extract_sfmt_ldb_d;
599a5a4af3bSchristos       case 169 : itype = M32RXF_INSN_LDUB_D; goto extract_sfmt_ldb_d;
600a5a4af3bSchristos       case 170 : itype = M32RXF_INSN_LDH_D; goto extract_sfmt_ldh_d;
601a5a4af3bSchristos       case 171 : itype = M32RXF_INSN_LDUH_D; goto extract_sfmt_ldh_d;
602a5a4af3bSchristos       case 172 : itype = M32RXF_INSN_LD_D; goto extract_sfmt_ld_d;
603a5a4af3bSchristos       case 176 : itype = M32RXF_INSN_BEQ; goto extract_sfmt_beq;
604a5a4af3bSchristos       case 177 : itype = M32RXF_INSN_BNE; goto extract_sfmt_beq;
605a5a4af3bSchristos       case 184 :
606a5a4af3bSchristos         if ((entire_insn & 0xfff00000) == 0xb0800000)
607a5a4af3bSchristos           { itype = M32RXF_INSN_BEQZ; goto extract_sfmt_beqz; }
608a5a4af3bSchristos         itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
609a5a4af3bSchristos       case 185 :
610a5a4af3bSchristos         if ((entire_insn & 0xfff00000) == 0xb0900000)
611a5a4af3bSchristos           { itype = M32RXF_INSN_BNEZ; goto extract_sfmt_beqz; }
612a5a4af3bSchristos         itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
613a5a4af3bSchristos       case 186 :
614a5a4af3bSchristos         if ((entire_insn & 0xfff00000) == 0xb0a00000)
615a5a4af3bSchristos           { itype = M32RXF_INSN_BLTZ; goto extract_sfmt_beqz; }
616a5a4af3bSchristos         itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
617a5a4af3bSchristos       case 187 :
618a5a4af3bSchristos         if ((entire_insn & 0xfff00000) == 0xb0b00000)
619a5a4af3bSchristos           { itype = M32RXF_INSN_BGEZ; goto extract_sfmt_beqz; }
620a5a4af3bSchristos         itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
621a5a4af3bSchristos       case 188 :
622a5a4af3bSchristos         if ((entire_insn & 0xfff00000) == 0xb0c00000)
623a5a4af3bSchristos           { itype = M32RXF_INSN_BLEZ; goto extract_sfmt_beqz; }
624a5a4af3bSchristos         itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
625a5a4af3bSchristos       case 189 :
626a5a4af3bSchristos         if ((entire_insn & 0xfff00000) == 0xb0d00000)
627a5a4af3bSchristos           { itype = M32RXF_INSN_BGTZ; goto extract_sfmt_beqz; }
628a5a4af3bSchristos         itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
629a5a4af3bSchristos       case 220 :
630a5a4af3bSchristos         if ((entire_insn & 0xf0ff0000) == 0xd0c00000)
631a5a4af3bSchristos           { itype = M32RXF_INSN_SETH; goto extract_sfmt_seth; }
632a5a4af3bSchristos         itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
633a5a4af3bSchristos       case 224 : /* fall through */
634a5a4af3bSchristos       case 225 : /* fall through */
635a5a4af3bSchristos       case 226 : /* fall through */
636a5a4af3bSchristos       case 227 : /* fall through */
637a5a4af3bSchristos       case 228 : /* fall through */
638a5a4af3bSchristos       case 229 : /* fall through */
639a5a4af3bSchristos       case 230 : /* fall through */
640a5a4af3bSchristos       case 231 : /* fall through */
641a5a4af3bSchristos       case 232 : /* fall through */
642a5a4af3bSchristos       case 233 : /* fall through */
643a5a4af3bSchristos       case 234 : /* fall through */
644a5a4af3bSchristos       case 235 : /* fall through */
645a5a4af3bSchristos       case 236 : /* fall through */
646a5a4af3bSchristos       case 237 : /* fall through */
647a5a4af3bSchristos       case 238 : /* fall through */
648a5a4af3bSchristos       case 239 : itype = M32RXF_INSN_LD24; goto extract_sfmt_ld24;
649a5a4af3bSchristos       case 240 : /* fall through */
650a5a4af3bSchristos       case 241 : /* fall through */
651a5a4af3bSchristos       case 242 : /* fall through */
652a5a4af3bSchristos       case 243 : /* fall through */
653a5a4af3bSchristos       case 244 : /* fall through */
654a5a4af3bSchristos       case 245 : /* fall through */
655a5a4af3bSchristos       case 246 : /* fall through */
656a5a4af3bSchristos       case 247 : /* fall through */
657a5a4af3bSchristos       case 248 : /* fall through */
658a5a4af3bSchristos       case 249 : /* fall through */
659a5a4af3bSchristos       case 250 : /* fall through */
660a5a4af3bSchristos       case 251 : /* fall through */
661a5a4af3bSchristos       case 252 : /* fall through */
662a5a4af3bSchristos       case 253 : /* fall through */
663a5a4af3bSchristos       case 254 : /* fall through */
664a5a4af3bSchristos       case 255 :
665a5a4af3bSchristos         {
666a5a4af3bSchristos           unsigned int val = (((insn >> 8) & (7 << 0)));
667a5a4af3bSchristos           switch (val)
668a5a4af3bSchristos           {
669a5a4af3bSchristos           case 0 :
670a5a4af3bSchristos             if ((entire_insn & 0xff000000) == 0xf8000000)
671a5a4af3bSchristos               { itype = M32RXF_INSN_BCL24; goto extract_sfmt_bcl24; }
672a5a4af3bSchristos             itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
673a5a4af3bSchristos           case 1 :
674a5a4af3bSchristos             if ((entire_insn & 0xff000000) == 0xf9000000)
675a5a4af3bSchristos               { itype = M32RXF_INSN_BNCL24; goto extract_sfmt_bcl24; }
676a5a4af3bSchristos             itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
677a5a4af3bSchristos           case 4 :
678a5a4af3bSchristos             if ((entire_insn & 0xff000000) == 0xfc000000)
679a5a4af3bSchristos               { itype = M32RXF_INSN_BC24; goto extract_sfmt_bc24; }
680a5a4af3bSchristos             itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
681a5a4af3bSchristos           case 5 :
682a5a4af3bSchristos             if ((entire_insn & 0xff000000) == 0xfd000000)
683a5a4af3bSchristos               { itype = M32RXF_INSN_BNC24; goto extract_sfmt_bc24; }
684a5a4af3bSchristos             itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
685a5a4af3bSchristos           case 6 :
686a5a4af3bSchristos             if ((entire_insn & 0xff000000) == 0xfe000000)
687a5a4af3bSchristos               { itype = M32RXF_INSN_BL24; goto extract_sfmt_bl24; }
688a5a4af3bSchristos             itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
689a5a4af3bSchristos           case 7 :
690a5a4af3bSchristos             if ((entire_insn & 0xff000000) == 0xff000000)
691a5a4af3bSchristos               { itype = M32RXF_INSN_BRA24; goto extract_sfmt_bra24; }
692a5a4af3bSchristos             itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
693a5a4af3bSchristos           default : itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
694a5a4af3bSchristos           }
695a5a4af3bSchristos         }
696a5a4af3bSchristos       default : itype = M32RXF_INSN_X_INVALID; goto extract_sfmt_empty;
697a5a4af3bSchristos       }
698a5a4af3bSchristos     }
699a5a4af3bSchristos   }
700a5a4af3bSchristos 
701a5a4af3bSchristos   /* The instruction has been decoded, now extract the fields.  */
702a5a4af3bSchristos 
703a5a4af3bSchristos  extract_sfmt_empty:
704a5a4af3bSchristos   {
705a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
706a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_empty.f
707a5a4af3bSchristos 
708a5a4af3bSchristos 
709a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
710a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_empty", (char *) 0));
711a5a4af3bSchristos 
712a5a4af3bSchristos #undef FLD
713a5a4af3bSchristos     return idesc;
714a5a4af3bSchristos   }
715a5a4af3bSchristos 
716a5a4af3bSchristos  extract_sfmt_add:
717a5a4af3bSchristos   {
718a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
719a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
720a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_add.f
721a5a4af3bSchristos     UINT f_r1;
722a5a4af3bSchristos     UINT f_r2;
723a5a4af3bSchristos 
724a5a4af3bSchristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
725a5a4af3bSchristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
726a5a4af3bSchristos 
727a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
728a5a4af3bSchristos   FLD (f_r1) = f_r1;
729a5a4af3bSchristos   FLD (f_r2) = f_r2;
730a5a4af3bSchristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
731a5a4af3bSchristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
732a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_add", "f_r1 0x%x", 'x', f_r1, "f_r2 0x%x", 'x', f_r2, "dr 0x%x", 'x', f_r1, "sr 0x%x", 'x', f_r2, (char *) 0));
733a5a4af3bSchristos 
734a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
735a5a4af3bSchristos   /* Record the fields for profiling.  */
736a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
737a5a4af3bSchristos     {
738a5a4af3bSchristos       FLD (in_dr) = f_r1;
739a5a4af3bSchristos       FLD (in_sr) = f_r2;
740a5a4af3bSchristos       FLD (out_dr) = f_r1;
741a5a4af3bSchristos     }
742a5a4af3bSchristos #endif
743a5a4af3bSchristos #undef FLD
744a5a4af3bSchristos     return idesc;
745a5a4af3bSchristos   }
746a5a4af3bSchristos 
747a5a4af3bSchristos  extract_sfmt_add3:
748a5a4af3bSchristos   {
749a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
750a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
751a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_add3.f
752a5a4af3bSchristos     UINT f_r1;
753a5a4af3bSchristos     UINT f_r2;
754a5a4af3bSchristos     INT f_simm16;
755a5a4af3bSchristos 
756a5a4af3bSchristos     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
757a5a4af3bSchristos     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
758a5a4af3bSchristos     f_simm16 = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
759a5a4af3bSchristos 
760a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
761a5a4af3bSchristos   FLD (f_simm16) = f_simm16;
762a5a4af3bSchristos   FLD (f_r2) = f_r2;
763a5a4af3bSchristos   FLD (f_r1) = f_r1;
764a5a4af3bSchristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
765a5a4af3bSchristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
766a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_add3", "f_simm16 0x%x", 'x', f_simm16, "f_r2 0x%x", 'x', f_r2, "f_r1 0x%x", 'x', f_r1, "sr 0x%x", 'x', f_r2, "dr 0x%x", 'x', f_r1, (char *) 0));
767a5a4af3bSchristos 
768a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
769a5a4af3bSchristos   /* Record the fields for profiling.  */
770a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
771a5a4af3bSchristos     {
772a5a4af3bSchristos       FLD (in_sr) = f_r2;
773a5a4af3bSchristos       FLD (out_dr) = f_r1;
774a5a4af3bSchristos     }
775a5a4af3bSchristos #endif
776a5a4af3bSchristos #undef FLD
777a5a4af3bSchristos     return idesc;
778a5a4af3bSchristos   }
779a5a4af3bSchristos 
780a5a4af3bSchristos  extract_sfmt_and3:
781a5a4af3bSchristos   {
782a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
783a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
784a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_and3.f
785a5a4af3bSchristos     UINT f_r1;
786a5a4af3bSchristos     UINT f_r2;
787a5a4af3bSchristos     UINT f_uimm16;
788a5a4af3bSchristos 
789a5a4af3bSchristos     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
790a5a4af3bSchristos     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
791a5a4af3bSchristos     f_uimm16 = EXTRACT_MSB0_UINT (insn, 32, 16, 16);
792a5a4af3bSchristos 
793a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
794a5a4af3bSchristos   FLD (f_r2) = f_r2;
795a5a4af3bSchristos   FLD (f_uimm16) = f_uimm16;
796a5a4af3bSchristos   FLD (f_r1) = f_r1;
797a5a4af3bSchristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
798a5a4af3bSchristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
799a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_and3", "f_r2 0x%x", 'x', f_r2, "f_uimm16 0x%x", 'x', f_uimm16, "f_r1 0x%x", 'x', f_r1, "sr 0x%x", 'x', f_r2, "dr 0x%x", 'x', f_r1, (char *) 0));
800a5a4af3bSchristos 
801a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
802a5a4af3bSchristos   /* Record the fields for profiling.  */
803a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
804a5a4af3bSchristos     {
805a5a4af3bSchristos       FLD (in_sr) = f_r2;
806a5a4af3bSchristos       FLD (out_dr) = f_r1;
807a5a4af3bSchristos     }
808a5a4af3bSchristos #endif
809a5a4af3bSchristos #undef FLD
810a5a4af3bSchristos     return idesc;
811a5a4af3bSchristos   }
812a5a4af3bSchristos 
813a5a4af3bSchristos  extract_sfmt_or3:
814a5a4af3bSchristos   {
815a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
816a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
817a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_and3.f
818a5a4af3bSchristos     UINT f_r1;
819a5a4af3bSchristos     UINT f_r2;
820a5a4af3bSchristos     UINT f_uimm16;
821a5a4af3bSchristos 
822a5a4af3bSchristos     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
823a5a4af3bSchristos     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
824a5a4af3bSchristos     f_uimm16 = EXTRACT_MSB0_UINT (insn, 32, 16, 16);
825a5a4af3bSchristos 
826a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
827a5a4af3bSchristos   FLD (f_r2) = f_r2;
828a5a4af3bSchristos   FLD (f_uimm16) = f_uimm16;
829a5a4af3bSchristos   FLD (f_r1) = f_r1;
830a5a4af3bSchristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
831a5a4af3bSchristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
832a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_or3", "f_r2 0x%x", 'x', f_r2, "f_uimm16 0x%x", 'x', f_uimm16, "f_r1 0x%x", 'x', f_r1, "sr 0x%x", 'x', f_r2, "dr 0x%x", 'x', f_r1, (char *) 0));
833a5a4af3bSchristos 
834a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
835a5a4af3bSchristos   /* Record the fields for profiling.  */
836a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
837a5a4af3bSchristos     {
838a5a4af3bSchristos       FLD (in_sr) = f_r2;
839a5a4af3bSchristos       FLD (out_dr) = f_r1;
840a5a4af3bSchristos     }
841a5a4af3bSchristos #endif
842a5a4af3bSchristos #undef FLD
843a5a4af3bSchristos     return idesc;
844a5a4af3bSchristos   }
845a5a4af3bSchristos 
846a5a4af3bSchristos  extract_sfmt_addi:
847a5a4af3bSchristos   {
848a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
849a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
850a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_addi.f
851a5a4af3bSchristos     UINT f_r1;
852a5a4af3bSchristos     INT f_simm8;
853a5a4af3bSchristos 
854a5a4af3bSchristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
855a5a4af3bSchristos     f_simm8 = EXTRACT_MSB0_SINT (insn, 16, 8, 8);
856a5a4af3bSchristos 
857a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
858a5a4af3bSchristos   FLD (f_r1) = f_r1;
859a5a4af3bSchristos   FLD (f_simm8) = f_simm8;
860a5a4af3bSchristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
861a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addi", "f_r1 0x%x", 'x', f_r1, "f_simm8 0x%x", 'x', f_simm8, "dr 0x%x", 'x', f_r1, (char *) 0));
862a5a4af3bSchristos 
863a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
864a5a4af3bSchristos   /* Record the fields for profiling.  */
865a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
866a5a4af3bSchristos     {
867a5a4af3bSchristos       FLD (in_dr) = f_r1;
868a5a4af3bSchristos       FLD (out_dr) = f_r1;
869a5a4af3bSchristos     }
870a5a4af3bSchristos #endif
871a5a4af3bSchristos #undef FLD
872a5a4af3bSchristos     return idesc;
873a5a4af3bSchristos   }
874a5a4af3bSchristos 
875a5a4af3bSchristos  extract_sfmt_addv:
876a5a4af3bSchristos   {
877a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
878a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
879a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_add.f
880a5a4af3bSchristos     UINT f_r1;
881a5a4af3bSchristos     UINT f_r2;
882a5a4af3bSchristos 
883a5a4af3bSchristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
884a5a4af3bSchristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
885a5a4af3bSchristos 
886a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
887a5a4af3bSchristos   FLD (f_r1) = f_r1;
888a5a4af3bSchristos   FLD (f_r2) = f_r2;
889a5a4af3bSchristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
890a5a4af3bSchristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
891a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addv", "f_r1 0x%x", 'x', f_r1, "f_r2 0x%x", 'x', f_r2, "dr 0x%x", 'x', f_r1, "sr 0x%x", 'x', f_r2, (char *) 0));
892a5a4af3bSchristos 
893a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
894a5a4af3bSchristos   /* Record the fields for profiling.  */
895a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
896a5a4af3bSchristos     {
897a5a4af3bSchristos       FLD (in_dr) = f_r1;
898a5a4af3bSchristos       FLD (in_sr) = f_r2;
899a5a4af3bSchristos       FLD (out_dr) = f_r1;
900a5a4af3bSchristos     }
901a5a4af3bSchristos #endif
902a5a4af3bSchristos #undef FLD
903a5a4af3bSchristos     return idesc;
904a5a4af3bSchristos   }
905a5a4af3bSchristos 
906a5a4af3bSchristos  extract_sfmt_addv3:
907a5a4af3bSchristos   {
908a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
909a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
910a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_add3.f
911a5a4af3bSchristos     UINT f_r1;
912a5a4af3bSchristos     UINT f_r2;
913a5a4af3bSchristos     INT f_simm16;
914a5a4af3bSchristos 
915a5a4af3bSchristos     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
916a5a4af3bSchristos     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
917a5a4af3bSchristos     f_simm16 = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
918a5a4af3bSchristos 
919a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
920a5a4af3bSchristos   FLD (f_simm16) = f_simm16;
921a5a4af3bSchristos   FLD (f_r2) = f_r2;
922a5a4af3bSchristos   FLD (f_r1) = f_r1;
923a5a4af3bSchristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
924a5a4af3bSchristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
925a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addv3", "f_simm16 0x%x", 'x', f_simm16, "f_r2 0x%x", 'x', f_r2, "f_r1 0x%x", 'x', f_r1, "sr 0x%x", 'x', f_r2, "dr 0x%x", 'x', f_r1, (char *) 0));
926a5a4af3bSchristos 
927a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
928a5a4af3bSchristos   /* Record the fields for profiling.  */
929a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
930a5a4af3bSchristos     {
931a5a4af3bSchristos       FLD (in_sr) = f_r2;
932a5a4af3bSchristos       FLD (out_dr) = f_r1;
933a5a4af3bSchristos     }
934a5a4af3bSchristos #endif
935a5a4af3bSchristos #undef FLD
936a5a4af3bSchristos     return idesc;
937a5a4af3bSchristos   }
938a5a4af3bSchristos 
939a5a4af3bSchristos  extract_sfmt_addx:
940a5a4af3bSchristos   {
941a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
942a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
943a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_add.f
944a5a4af3bSchristos     UINT f_r1;
945a5a4af3bSchristos     UINT f_r2;
946a5a4af3bSchristos 
947a5a4af3bSchristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
948a5a4af3bSchristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
949a5a4af3bSchristos 
950a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
951a5a4af3bSchristos   FLD (f_r1) = f_r1;
952a5a4af3bSchristos   FLD (f_r2) = f_r2;
953a5a4af3bSchristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
954a5a4af3bSchristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
955a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addx", "f_r1 0x%x", 'x', f_r1, "f_r2 0x%x", 'x', f_r2, "dr 0x%x", 'x', f_r1, "sr 0x%x", 'x', f_r2, (char *) 0));
956a5a4af3bSchristos 
957a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
958a5a4af3bSchristos   /* Record the fields for profiling.  */
959a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
960a5a4af3bSchristos     {
961a5a4af3bSchristos       FLD (in_dr) = f_r1;
962a5a4af3bSchristos       FLD (in_sr) = f_r2;
963a5a4af3bSchristos       FLD (out_dr) = f_r1;
964a5a4af3bSchristos     }
965a5a4af3bSchristos #endif
966a5a4af3bSchristos #undef FLD
967a5a4af3bSchristos     return idesc;
968a5a4af3bSchristos   }
969a5a4af3bSchristos 
970a5a4af3bSchristos  extract_sfmt_bc8:
971a5a4af3bSchristos   {
972a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
973a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
974a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_bl8.f
975a5a4af3bSchristos     SI f_disp8;
976a5a4af3bSchristos 
977a5a4af3bSchristos     f_disp8 = ((((EXTRACT_MSB0_SINT (insn, 16, 8, 8)) << (2))) + (((pc) & (-4))));
978a5a4af3bSchristos 
979a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
980a5a4af3bSchristos   FLD (i_disp8) = f_disp8;
981a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bc8", "disp8 0x%x", 'x', f_disp8, (char *) 0));
982a5a4af3bSchristos 
983a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
984a5a4af3bSchristos   /* Record the fields for profiling.  */
985a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
986a5a4af3bSchristos     {
987a5a4af3bSchristos     }
988a5a4af3bSchristos #endif
989a5a4af3bSchristos #undef FLD
990a5a4af3bSchristos     return idesc;
991a5a4af3bSchristos   }
992a5a4af3bSchristos 
993a5a4af3bSchristos  extract_sfmt_bc24:
994a5a4af3bSchristos   {
995a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
996a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
997a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_bl24.f
998a5a4af3bSchristos     SI f_disp24;
999a5a4af3bSchristos 
1000a5a4af3bSchristos     f_disp24 = ((((EXTRACT_MSB0_SINT (insn, 32, 8, 24)) << (2))) + (pc));
1001a5a4af3bSchristos 
1002a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
1003a5a4af3bSchristos   FLD (i_disp24) = f_disp24;
1004a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bc24", "disp24 0x%x", 'x', f_disp24, (char *) 0));
1005a5a4af3bSchristos 
1006a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
1007a5a4af3bSchristos   /* Record the fields for profiling.  */
1008a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
1009a5a4af3bSchristos     {
1010a5a4af3bSchristos     }
1011a5a4af3bSchristos #endif
1012a5a4af3bSchristos #undef FLD
1013a5a4af3bSchristos     return idesc;
1014a5a4af3bSchristos   }
1015a5a4af3bSchristos 
1016a5a4af3bSchristos  extract_sfmt_beq:
1017a5a4af3bSchristos   {
1018a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
1019a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
1020a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_beq.f
1021a5a4af3bSchristos     UINT f_r1;
1022a5a4af3bSchristos     UINT f_r2;
1023a5a4af3bSchristos     SI f_disp16;
1024a5a4af3bSchristos 
1025a5a4af3bSchristos     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
1026a5a4af3bSchristos     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
1027a5a4af3bSchristos     f_disp16 = ((((EXTRACT_MSB0_SINT (insn, 32, 16, 16)) << (2))) + (pc));
1028a5a4af3bSchristos 
1029a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
1030a5a4af3bSchristos   FLD (f_r1) = f_r1;
1031a5a4af3bSchristos   FLD (f_r2) = f_r2;
1032a5a4af3bSchristos   FLD (i_disp16) = f_disp16;
1033a5a4af3bSchristos   FLD (i_src1) = & CPU (h_gr)[f_r1];
1034a5a4af3bSchristos   FLD (i_src2) = & CPU (h_gr)[f_r2];
1035a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_beq", "f_r1 0x%x", 'x', f_r1, "f_r2 0x%x", 'x', f_r2, "disp16 0x%x", 'x', f_disp16, "src1 0x%x", 'x', f_r1, "src2 0x%x", 'x', f_r2, (char *) 0));
1036a5a4af3bSchristos 
1037a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
1038a5a4af3bSchristos   /* Record the fields for profiling.  */
1039a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
1040a5a4af3bSchristos     {
1041a5a4af3bSchristos       FLD (in_src1) = f_r1;
1042a5a4af3bSchristos       FLD (in_src2) = f_r2;
1043a5a4af3bSchristos     }
1044a5a4af3bSchristos #endif
1045a5a4af3bSchristos #undef FLD
1046a5a4af3bSchristos     return idesc;
1047a5a4af3bSchristos   }
1048a5a4af3bSchristos 
1049a5a4af3bSchristos  extract_sfmt_beqz:
1050a5a4af3bSchristos   {
1051a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
1052a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
1053a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_beq.f
1054a5a4af3bSchristos     UINT f_r2;
1055a5a4af3bSchristos     SI f_disp16;
1056a5a4af3bSchristos 
1057a5a4af3bSchristos     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
1058a5a4af3bSchristos     f_disp16 = ((((EXTRACT_MSB0_SINT (insn, 32, 16, 16)) << (2))) + (pc));
1059a5a4af3bSchristos 
1060a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
1061a5a4af3bSchristos   FLD (f_r2) = f_r2;
1062a5a4af3bSchristos   FLD (i_disp16) = f_disp16;
1063a5a4af3bSchristos   FLD (i_src2) = & CPU (h_gr)[f_r2];
1064a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_beqz", "f_r2 0x%x", 'x', f_r2, "disp16 0x%x", 'x', f_disp16, "src2 0x%x", 'x', f_r2, (char *) 0));
1065a5a4af3bSchristos 
1066a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
1067a5a4af3bSchristos   /* Record the fields for profiling.  */
1068a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
1069a5a4af3bSchristos     {
1070a5a4af3bSchristos       FLD (in_src2) = f_r2;
1071a5a4af3bSchristos     }
1072a5a4af3bSchristos #endif
1073a5a4af3bSchristos #undef FLD
1074a5a4af3bSchristos     return idesc;
1075a5a4af3bSchristos   }
1076a5a4af3bSchristos 
1077a5a4af3bSchristos  extract_sfmt_bl8:
1078a5a4af3bSchristos   {
1079a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
1080a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
1081a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_bl8.f
1082a5a4af3bSchristos     SI f_disp8;
1083a5a4af3bSchristos 
1084a5a4af3bSchristos     f_disp8 = ((((EXTRACT_MSB0_SINT (insn, 16, 8, 8)) << (2))) + (((pc) & (-4))));
1085a5a4af3bSchristos 
1086a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
1087a5a4af3bSchristos   FLD (i_disp8) = f_disp8;
1088a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bl8", "disp8 0x%x", 'x', f_disp8, (char *) 0));
1089a5a4af3bSchristos 
1090a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
1091a5a4af3bSchristos   /* Record the fields for profiling.  */
1092a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
1093a5a4af3bSchristos     {
1094a5a4af3bSchristos       FLD (out_h_gr_SI_14) = 14;
1095a5a4af3bSchristos     }
1096a5a4af3bSchristos #endif
1097a5a4af3bSchristos #undef FLD
1098a5a4af3bSchristos     return idesc;
1099a5a4af3bSchristos   }
1100a5a4af3bSchristos 
1101a5a4af3bSchristos  extract_sfmt_bl24:
1102a5a4af3bSchristos   {
1103a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
1104a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
1105a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_bl24.f
1106a5a4af3bSchristos     SI f_disp24;
1107a5a4af3bSchristos 
1108a5a4af3bSchristos     f_disp24 = ((((EXTRACT_MSB0_SINT (insn, 32, 8, 24)) << (2))) + (pc));
1109a5a4af3bSchristos 
1110a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
1111a5a4af3bSchristos   FLD (i_disp24) = f_disp24;
1112a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bl24", "disp24 0x%x", 'x', f_disp24, (char *) 0));
1113a5a4af3bSchristos 
1114a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
1115a5a4af3bSchristos   /* Record the fields for profiling.  */
1116a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
1117a5a4af3bSchristos     {
1118a5a4af3bSchristos       FLD (out_h_gr_SI_14) = 14;
1119a5a4af3bSchristos     }
1120a5a4af3bSchristos #endif
1121a5a4af3bSchristos #undef FLD
1122a5a4af3bSchristos     return idesc;
1123a5a4af3bSchristos   }
1124a5a4af3bSchristos 
1125a5a4af3bSchristos  extract_sfmt_bcl8:
1126a5a4af3bSchristos   {
1127a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
1128a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
1129a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_bl8.f
1130a5a4af3bSchristos     SI f_disp8;
1131a5a4af3bSchristos 
1132a5a4af3bSchristos     f_disp8 = ((((EXTRACT_MSB0_SINT (insn, 16, 8, 8)) << (2))) + (((pc) & (-4))));
1133a5a4af3bSchristos 
1134a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
1135a5a4af3bSchristos   FLD (i_disp8) = f_disp8;
1136a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bcl8", "disp8 0x%x", 'x', f_disp8, (char *) 0));
1137a5a4af3bSchristos 
1138a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
1139a5a4af3bSchristos   /* Record the fields for profiling.  */
1140a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
1141a5a4af3bSchristos     {
1142a5a4af3bSchristos       FLD (out_h_gr_SI_14) = 14;
1143a5a4af3bSchristos     }
1144a5a4af3bSchristos #endif
1145a5a4af3bSchristos #undef FLD
1146a5a4af3bSchristos     return idesc;
1147a5a4af3bSchristos   }
1148a5a4af3bSchristos 
1149a5a4af3bSchristos  extract_sfmt_bcl24:
1150a5a4af3bSchristos   {
1151a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
1152a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
1153a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_bl24.f
1154a5a4af3bSchristos     SI f_disp24;
1155a5a4af3bSchristos 
1156a5a4af3bSchristos     f_disp24 = ((((EXTRACT_MSB0_SINT (insn, 32, 8, 24)) << (2))) + (pc));
1157a5a4af3bSchristos 
1158a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
1159a5a4af3bSchristos   FLD (i_disp24) = f_disp24;
1160a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bcl24", "disp24 0x%x", 'x', f_disp24, (char *) 0));
1161a5a4af3bSchristos 
1162a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
1163a5a4af3bSchristos   /* Record the fields for profiling.  */
1164a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
1165a5a4af3bSchristos     {
1166a5a4af3bSchristos       FLD (out_h_gr_SI_14) = 14;
1167a5a4af3bSchristos     }
1168a5a4af3bSchristos #endif
1169a5a4af3bSchristos #undef FLD
1170a5a4af3bSchristos     return idesc;
1171a5a4af3bSchristos   }
1172a5a4af3bSchristos 
1173a5a4af3bSchristos  extract_sfmt_bra8:
1174a5a4af3bSchristos   {
1175a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
1176a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
1177a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_bl8.f
1178a5a4af3bSchristos     SI f_disp8;
1179a5a4af3bSchristos 
1180a5a4af3bSchristos     f_disp8 = ((((EXTRACT_MSB0_SINT (insn, 16, 8, 8)) << (2))) + (((pc) & (-4))));
1181a5a4af3bSchristos 
1182a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
1183a5a4af3bSchristos   FLD (i_disp8) = f_disp8;
1184a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bra8", "disp8 0x%x", 'x', f_disp8, (char *) 0));
1185a5a4af3bSchristos 
1186a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
1187a5a4af3bSchristos   /* Record the fields for profiling.  */
1188a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
1189a5a4af3bSchristos     {
1190a5a4af3bSchristos     }
1191a5a4af3bSchristos #endif
1192a5a4af3bSchristos #undef FLD
1193a5a4af3bSchristos     return idesc;
1194a5a4af3bSchristos   }
1195a5a4af3bSchristos 
1196a5a4af3bSchristos  extract_sfmt_bra24:
1197a5a4af3bSchristos   {
1198a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
1199a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
1200a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_bl24.f
1201a5a4af3bSchristos     SI f_disp24;
1202a5a4af3bSchristos 
1203a5a4af3bSchristos     f_disp24 = ((((EXTRACT_MSB0_SINT (insn, 32, 8, 24)) << (2))) + (pc));
1204a5a4af3bSchristos 
1205a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
1206a5a4af3bSchristos   FLD (i_disp24) = f_disp24;
1207a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bra24", "disp24 0x%x", 'x', f_disp24, (char *) 0));
1208a5a4af3bSchristos 
1209a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
1210a5a4af3bSchristos   /* Record the fields for profiling.  */
1211a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
1212a5a4af3bSchristos     {
1213a5a4af3bSchristos     }
1214a5a4af3bSchristos #endif
1215a5a4af3bSchristos #undef FLD
1216a5a4af3bSchristos     return idesc;
1217a5a4af3bSchristos   }
1218a5a4af3bSchristos 
1219a5a4af3bSchristos  extract_sfmt_cmp:
1220a5a4af3bSchristos   {
1221a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
1222a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
1223a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_st_plus.f
1224a5a4af3bSchristos     UINT f_r1;
1225a5a4af3bSchristos     UINT f_r2;
1226a5a4af3bSchristos 
1227a5a4af3bSchristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
1228a5a4af3bSchristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1229a5a4af3bSchristos 
1230a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
1231a5a4af3bSchristos   FLD (f_r1) = f_r1;
1232a5a4af3bSchristos   FLD (f_r2) = f_r2;
1233a5a4af3bSchristos   FLD (i_src1) = & CPU (h_gr)[f_r1];
1234a5a4af3bSchristos   FLD (i_src2) = & CPU (h_gr)[f_r2];
1235a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_cmp", "f_r1 0x%x", 'x', f_r1, "f_r2 0x%x", 'x', f_r2, "src1 0x%x", 'x', f_r1, "src2 0x%x", 'x', f_r2, (char *) 0));
1236a5a4af3bSchristos 
1237a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
1238a5a4af3bSchristos   /* Record the fields for profiling.  */
1239a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
1240a5a4af3bSchristos     {
1241a5a4af3bSchristos       FLD (in_src1) = f_r1;
1242a5a4af3bSchristos       FLD (in_src2) = f_r2;
1243a5a4af3bSchristos     }
1244a5a4af3bSchristos #endif
1245a5a4af3bSchristos #undef FLD
1246a5a4af3bSchristos     return idesc;
1247a5a4af3bSchristos   }
1248a5a4af3bSchristos 
1249a5a4af3bSchristos  extract_sfmt_cmpi:
1250a5a4af3bSchristos   {
1251a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
1252a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
1253a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_st_d.f
1254a5a4af3bSchristos     UINT f_r2;
1255a5a4af3bSchristos     INT f_simm16;
1256a5a4af3bSchristos 
1257a5a4af3bSchristos     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
1258a5a4af3bSchristos     f_simm16 = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
1259a5a4af3bSchristos 
1260a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
1261a5a4af3bSchristos   FLD (f_simm16) = f_simm16;
1262a5a4af3bSchristos   FLD (f_r2) = f_r2;
1263a5a4af3bSchristos   FLD (i_src2) = & CPU (h_gr)[f_r2];
1264a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_cmpi", "f_simm16 0x%x", 'x', f_simm16, "f_r2 0x%x", 'x', f_r2, "src2 0x%x", 'x', f_r2, (char *) 0));
1265a5a4af3bSchristos 
1266a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
1267a5a4af3bSchristos   /* Record the fields for profiling.  */
1268a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
1269a5a4af3bSchristos     {
1270a5a4af3bSchristos       FLD (in_src2) = f_r2;
1271a5a4af3bSchristos     }
1272a5a4af3bSchristos #endif
1273a5a4af3bSchristos #undef FLD
1274a5a4af3bSchristos     return idesc;
1275a5a4af3bSchristos   }
1276a5a4af3bSchristos 
1277a5a4af3bSchristos  extract_sfmt_cmpz:
1278a5a4af3bSchristos   {
1279a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
1280a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
1281a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_st_plus.f
1282a5a4af3bSchristos     UINT f_r2;
1283a5a4af3bSchristos 
1284a5a4af3bSchristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1285a5a4af3bSchristos 
1286a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
1287a5a4af3bSchristos   FLD (f_r2) = f_r2;
1288a5a4af3bSchristos   FLD (i_src2) = & CPU (h_gr)[f_r2];
1289a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_cmpz", "f_r2 0x%x", 'x', f_r2, "src2 0x%x", 'x', f_r2, (char *) 0));
1290a5a4af3bSchristos 
1291a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
1292a5a4af3bSchristos   /* Record the fields for profiling.  */
1293a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
1294a5a4af3bSchristos     {
1295a5a4af3bSchristos       FLD (in_src2) = f_r2;
1296a5a4af3bSchristos     }
1297a5a4af3bSchristos #endif
1298a5a4af3bSchristos #undef FLD
1299a5a4af3bSchristos     return idesc;
1300a5a4af3bSchristos   }
1301a5a4af3bSchristos 
1302a5a4af3bSchristos  extract_sfmt_div:
1303a5a4af3bSchristos   {
1304a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
1305a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
1306a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_add.f
1307a5a4af3bSchristos     UINT f_r1;
1308a5a4af3bSchristos     UINT f_r2;
1309a5a4af3bSchristos 
1310a5a4af3bSchristos     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
1311a5a4af3bSchristos     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
1312a5a4af3bSchristos 
1313a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
1314a5a4af3bSchristos   FLD (f_r1) = f_r1;
1315a5a4af3bSchristos   FLD (f_r2) = f_r2;
1316a5a4af3bSchristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
1317a5a4af3bSchristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
1318a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_div", "f_r1 0x%x", 'x', f_r1, "f_r2 0x%x", 'x', f_r2, "dr 0x%x", 'x', f_r1, "sr 0x%x", 'x', f_r2, (char *) 0));
1319a5a4af3bSchristos 
1320a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
1321a5a4af3bSchristos   /* Record the fields for profiling.  */
1322a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
1323a5a4af3bSchristos     {
1324a5a4af3bSchristos       FLD (in_dr) = f_r1;
1325a5a4af3bSchristos       FLD (in_sr) = f_r2;
1326a5a4af3bSchristos       FLD (out_dr) = f_r1;
1327a5a4af3bSchristos     }
1328a5a4af3bSchristos #endif
1329a5a4af3bSchristos #undef FLD
1330a5a4af3bSchristos     return idesc;
1331a5a4af3bSchristos   }
1332a5a4af3bSchristos 
1333a5a4af3bSchristos  extract_sfmt_jc:
1334a5a4af3bSchristos   {
1335a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
1336a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
1337a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_jl.f
1338a5a4af3bSchristos     UINT f_r2;
1339a5a4af3bSchristos 
1340a5a4af3bSchristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1341a5a4af3bSchristos 
1342a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
1343a5a4af3bSchristos   FLD (f_r2) = f_r2;
1344a5a4af3bSchristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
1345a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_jc", "f_r2 0x%x", 'x', f_r2, "sr 0x%x", 'x', f_r2, (char *) 0));
1346a5a4af3bSchristos 
1347a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
1348a5a4af3bSchristos   /* Record the fields for profiling.  */
1349a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
1350a5a4af3bSchristos     {
1351a5a4af3bSchristos       FLD (in_sr) = f_r2;
1352a5a4af3bSchristos     }
1353a5a4af3bSchristos #endif
1354a5a4af3bSchristos #undef FLD
1355a5a4af3bSchristos     return idesc;
1356a5a4af3bSchristos   }
1357a5a4af3bSchristos 
1358a5a4af3bSchristos  extract_sfmt_jl:
1359a5a4af3bSchristos   {
1360a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
1361a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
1362a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_jl.f
1363a5a4af3bSchristos     UINT f_r2;
1364a5a4af3bSchristos 
1365a5a4af3bSchristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1366a5a4af3bSchristos 
1367a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
1368a5a4af3bSchristos   FLD (f_r2) = f_r2;
1369a5a4af3bSchristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
1370a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_jl", "f_r2 0x%x", 'x', f_r2, "sr 0x%x", 'x', f_r2, (char *) 0));
1371a5a4af3bSchristos 
1372a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
1373a5a4af3bSchristos   /* Record the fields for profiling.  */
1374a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
1375a5a4af3bSchristos     {
1376a5a4af3bSchristos       FLD (in_sr) = f_r2;
1377a5a4af3bSchristos       FLD (out_h_gr_SI_14) = 14;
1378a5a4af3bSchristos     }
1379a5a4af3bSchristos #endif
1380a5a4af3bSchristos #undef FLD
1381a5a4af3bSchristos     return idesc;
1382a5a4af3bSchristos   }
1383a5a4af3bSchristos 
1384a5a4af3bSchristos  extract_sfmt_jmp:
1385a5a4af3bSchristos   {
1386a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
1387a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
1388a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_jl.f
1389a5a4af3bSchristos     UINT f_r2;
1390a5a4af3bSchristos 
1391a5a4af3bSchristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1392a5a4af3bSchristos 
1393a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
1394a5a4af3bSchristos   FLD (f_r2) = f_r2;
1395a5a4af3bSchristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
1396a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_jmp", "f_r2 0x%x", 'x', f_r2, "sr 0x%x", 'x', f_r2, (char *) 0));
1397a5a4af3bSchristos 
1398a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
1399a5a4af3bSchristos   /* Record the fields for profiling.  */
1400a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
1401a5a4af3bSchristos     {
1402a5a4af3bSchristos       FLD (in_sr) = f_r2;
1403a5a4af3bSchristos     }
1404a5a4af3bSchristos #endif
1405a5a4af3bSchristos #undef FLD
1406a5a4af3bSchristos     return idesc;
1407a5a4af3bSchristos   }
1408a5a4af3bSchristos 
1409a5a4af3bSchristos  extract_sfmt_ld:
1410a5a4af3bSchristos   {
1411a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
1412a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
1413a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_ld_plus.f
1414a5a4af3bSchristos     UINT f_r1;
1415a5a4af3bSchristos     UINT f_r2;
1416a5a4af3bSchristos 
1417a5a4af3bSchristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
1418a5a4af3bSchristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1419a5a4af3bSchristos 
1420a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
1421a5a4af3bSchristos   FLD (f_r2) = f_r2;
1422a5a4af3bSchristos   FLD (f_r1) = f_r1;
1423a5a4af3bSchristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
1424a5a4af3bSchristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
1425a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ld", "f_r2 0x%x", 'x', f_r2, "f_r1 0x%x", 'x', f_r1, "sr 0x%x", 'x', f_r2, "dr 0x%x", 'x', f_r1, (char *) 0));
1426a5a4af3bSchristos 
1427a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
1428a5a4af3bSchristos   /* Record the fields for profiling.  */
1429a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
1430a5a4af3bSchristos     {
1431a5a4af3bSchristos       FLD (in_sr) = f_r2;
1432a5a4af3bSchristos       FLD (out_dr) = f_r1;
1433a5a4af3bSchristos     }
1434a5a4af3bSchristos #endif
1435a5a4af3bSchristos #undef FLD
1436a5a4af3bSchristos     return idesc;
1437a5a4af3bSchristos   }
1438a5a4af3bSchristos 
1439a5a4af3bSchristos  extract_sfmt_ld_d:
1440a5a4af3bSchristos   {
1441a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
1442a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
1443a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_add3.f
1444a5a4af3bSchristos     UINT f_r1;
1445a5a4af3bSchristos     UINT f_r2;
1446a5a4af3bSchristos     INT f_simm16;
1447a5a4af3bSchristos 
1448a5a4af3bSchristos     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
1449a5a4af3bSchristos     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
1450a5a4af3bSchristos     f_simm16 = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
1451a5a4af3bSchristos 
1452a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
1453a5a4af3bSchristos   FLD (f_simm16) = f_simm16;
1454a5a4af3bSchristos   FLD (f_r2) = f_r2;
1455a5a4af3bSchristos   FLD (f_r1) = f_r1;
1456a5a4af3bSchristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
1457a5a4af3bSchristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
1458a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ld_d", "f_simm16 0x%x", 'x', f_simm16, "f_r2 0x%x", 'x', f_r2, "f_r1 0x%x", 'x', f_r1, "sr 0x%x", 'x', f_r2, "dr 0x%x", 'x', f_r1, (char *) 0));
1459a5a4af3bSchristos 
1460a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
1461a5a4af3bSchristos   /* Record the fields for profiling.  */
1462a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
1463a5a4af3bSchristos     {
1464a5a4af3bSchristos       FLD (in_sr) = f_r2;
1465a5a4af3bSchristos       FLD (out_dr) = f_r1;
1466a5a4af3bSchristos     }
1467a5a4af3bSchristos #endif
1468a5a4af3bSchristos #undef FLD
1469a5a4af3bSchristos     return idesc;
1470a5a4af3bSchristos   }
1471a5a4af3bSchristos 
1472a5a4af3bSchristos  extract_sfmt_ldb:
1473a5a4af3bSchristos   {
1474a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
1475a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
1476a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_ld_plus.f
1477a5a4af3bSchristos     UINT f_r1;
1478a5a4af3bSchristos     UINT f_r2;
1479a5a4af3bSchristos 
1480a5a4af3bSchristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
1481a5a4af3bSchristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1482a5a4af3bSchristos 
1483a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
1484a5a4af3bSchristos   FLD (f_r2) = f_r2;
1485a5a4af3bSchristos   FLD (f_r1) = f_r1;
1486a5a4af3bSchristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
1487a5a4af3bSchristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
1488a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldb", "f_r2 0x%x", 'x', f_r2, "f_r1 0x%x", 'x', f_r1, "sr 0x%x", 'x', f_r2, "dr 0x%x", 'x', f_r1, (char *) 0));
1489a5a4af3bSchristos 
1490a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
1491a5a4af3bSchristos   /* Record the fields for profiling.  */
1492a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
1493a5a4af3bSchristos     {
1494a5a4af3bSchristos       FLD (in_sr) = f_r2;
1495a5a4af3bSchristos       FLD (out_dr) = f_r1;
1496a5a4af3bSchristos     }
1497a5a4af3bSchristos #endif
1498a5a4af3bSchristos #undef FLD
1499a5a4af3bSchristos     return idesc;
1500a5a4af3bSchristos   }
1501a5a4af3bSchristos 
1502a5a4af3bSchristos  extract_sfmt_ldb_d:
1503a5a4af3bSchristos   {
1504a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
1505a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
1506a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_add3.f
1507a5a4af3bSchristos     UINT f_r1;
1508a5a4af3bSchristos     UINT f_r2;
1509a5a4af3bSchristos     INT f_simm16;
1510a5a4af3bSchristos 
1511a5a4af3bSchristos     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
1512a5a4af3bSchristos     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
1513a5a4af3bSchristos     f_simm16 = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
1514a5a4af3bSchristos 
1515a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
1516a5a4af3bSchristos   FLD (f_simm16) = f_simm16;
1517a5a4af3bSchristos   FLD (f_r2) = f_r2;
1518a5a4af3bSchristos   FLD (f_r1) = f_r1;
1519a5a4af3bSchristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
1520a5a4af3bSchristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
1521a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldb_d", "f_simm16 0x%x", 'x', f_simm16, "f_r2 0x%x", 'x', f_r2, "f_r1 0x%x", 'x', f_r1, "sr 0x%x", 'x', f_r2, "dr 0x%x", 'x', f_r1, (char *) 0));
1522a5a4af3bSchristos 
1523a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
1524a5a4af3bSchristos   /* Record the fields for profiling.  */
1525a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
1526a5a4af3bSchristos     {
1527a5a4af3bSchristos       FLD (in_sr) = f_r2;
1528a5a4af3bSchristos       FLD (out_dr) = f_r1;
1529a5a4af3bSchristos     }
1530a5a4af3bSchristos #endif
1531a5a4af3bSchristos #undef FLD
1532a5a4af3bSchristos     return idesc;
1533a5a4af3bSchristos   }
1534a5a4af3bSchristos 
1535a5a4af3bSchristos  extract_sfmt_ldh:
1536a5a4af3bSchristos   {
1537a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
1538a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
1539a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_ld_plus.f
1540a5a4af3bSchristos     UINT f_r1;
1541a5a4af3bSchristos     UINT f_r2;
1542a5a4af3bSchristos 
1543a5a4af3bSchristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
1544a5a4af3bSchristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1545a5a4af3bSchristos 
1546a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
1547a5a4af3bSchristos   FLD (f_r2) = f_r2;
1548a5a4af3bSchristos   FLD (f_r1) = f_r1;
1549a5a4af3bSchristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
1550a5a4af3bSchristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
1551a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldh", "f_r2 0x%x", 'x', f_r2, "f_r1 0x%x", 'x', f_r1, "sr 0x%x", 'x', f_r2, "dr 0x%x", 'x', f_r1, (char *) 0));
1552a5a4af3bSchristos 
1553a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
1554a5a4af3bSchristos   /* Record the fields for profiling.  */
1555a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
1556a5a4af3bSchristos     {
1557a5a4af3bSchristos       FLD (in_sr) = f_r2;
1558a5a4af3bSchristos       FLD (out_dr) = f_r1;
1559a5a4af3bSchristos     }
1560a5a4af3bSchristos #endif
1561a5a4af3bSchristos #undef FLD
1562a5a4af3bSchristos     return idesc;
1563a5a4af3bSchristos   }
1564a5a4af3bSchristos 
1565a5a4af3bSchristos  extract_sfmt_ldh_d:
1566a5a4af3bSchristos   {
1567a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
1568a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
1569a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_add3.f
1570a5a4af3bSchristos     UINT f_r1;
1571a5a4af3bSchristos     UINT f_r2;
1572a5a4af3bSchristos     INT f_simm16;
1573a5a4af3bSchristos 
1574a5a4af3bSchristos     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
1575a5a4af3bSchristos     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
1576a5a4af3bSchristos     f_simm16 = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
1577a5a4af3bSchristos 
1578a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
1579a5a4af3bSchristos   FLD (f_simm16) = f_simm16;
1580a5a4af3bSchristos   FLD (f_r2) = f_r2;
1581a5a4af3bSchristos   FLD (f_r1) = f_r1;
1582a5a4af3bSchristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
1583a5a4af3bSchristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
1584a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldh_d", "f_simm16 0x%x", 'x', f_simm16, "f_r2 0x%x", 'x', f_r2, "f_r1 0x%x", 'x', f_r1, "sr 0x%x", 'x', f_r2, "dr 0x%x", 'x', f_r1, (char *) 0));
1585a5a4af3bSchristos 
1586a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
1587a5a4af3bSchristos   /* Record the fields for profiling.  */
1588a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
1589a5a4af3bSchristos     {
1590a5a4af3bSchristos       FLD (in_sr) = f_r2;
1591a5a4af3bSchristos       FLD (out_dr) = f_r1;
1592a5a4af3bSchristos     }
1593a5a4af3bSchristos #endif
1594a5a4af3bSchristos #undef FLD
1595a5a4af3bSchristos     return idesc;
1596a5a4af3bSchristos   }
1597a5a4af3bSchristos 
1598a5a4af3bSchristos  extract_sfmt_ld_plus:
1599a5a4af3bSchristos   {
1600a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
1601a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
1602a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_ld_plus.f
1603a5a4af3bSchristos     UINT f_r1;
1604a5a4af3bSchristos     UINT f_r2;
1605a5a4af3bSchristos 
1606a5a4af3bSchristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
1607a5a4af3bSchristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1608a5a4af3bSchristos 
1609a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
1610a5a4af3bSchristos   FLD (f_r2) = f_r2;
1611a5a4af3bSchristos   FLD (f_r1) = f_r1;
1612a5a4af3bSchristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
1613a5a4af3bSchristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
1614a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ld_plus", "f_r2 0x%x", 'x', f_r2, "f_r1 0x%x", 'x', f_r1, "sr 0x%x", 'x', f_r2, "dr 0x%x", 'x', f_r1, (char *) 0));
1615a5a4af3bSchristos 
1616a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
1617a5a4af3bSchristos   /* Record the fields for profiling.  */
1618a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
1619a5a4af3bSchristos     {
1620a5a4af3bSchristos       FLD (in_sr) = f_r2;
1621a5a4af3bSchristos       FLD (out_dr) = f_r1;
1622a5a4af3bSchristos       FLD (out_sr) = f_r2;
1623a5a4af3bSchristos     }
1624a5a4af3bSchristos #endif
1625a5a4af3bSchristos #undef FLD
1626a5a4af3bSchristos     return idesc;
1627a5a4af3bSchristos   }
1628a5a4af3bSchristos 
1629a5a4af3bSchristos  extract_sfmt_ld24:
1630a5a4af3bSchristos   {
1631a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
1632a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
1633a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_ld24.f
1634a5a4af3bSchristos     UINT f_r1;
1635a5a4af3bSchristos     UINT f_uimm24;
1636a5a4af3bSchristos 
1637a5a4af3bSchristos     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
1638a5a4af3bSchristos     f_uimm24 = EXTRACT_MSB0_UINT (insn, 32, 8, 24);
1639a5a4af3bSchristos 
1640a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
1641a5a4af3bSchristos   FLD (f_r1) = f_r1;
1642a5a4af3bSchristos   FLD (i_uimm24) = f_uimm24;
1643a5a4af3bSchristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
1644a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ld24", "f_r1 0x%x", 'x', f_r1, "uimm24 0x%x", 'x', f_uimm24, "dr 0x%x", 'x', f_r1, (char *) 0));
1645a5a4af3bSchristos 
1646a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
1647a5a4af3bSchristos   /* Record the fields for profiling.  */
1648a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
1649a5a4af3bSchristos     {
1650a5a4af3bSchristos       FLD (out_dr) = f_r1;
1651a5a4af3bSchristos     }
1652a5a4af3bSchristos #endif
1653a5a4af3bSchristos #undef FLD
1654a5a4af3bSchristos     return idesc;
1655a5a4af3bSchristos   }
1656a5a4af3bSchristos 
1657a5a4af3bSchristos  extract_sfmt_ldi8:
1658a5a4af3bSchristos   {
1659a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
1660a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
1661a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_addi.f
1662a5a4af3bSchristos     UINT f_r1;
1663a5a4af3bSchristos     INT f_simm8;
1664a5a4af3bSchristos 
1665a5a4af3bSchristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
1666a5a4af3bSchristos     f_simm8 = EXTRACT_MSB0_SINT (insn, 16, 8, 8);
1667a5a4af3bSchristos 
1668a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
1669a5a4af3bSchristos   FLD (f_simm8) = f_simm8;
1670a5a4af3bSchristos   FLD (f_r1) = f_r1;
1671a5a4af3bSchristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
1672a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldi8", "f_simm8 0x%x", 'x', f_simm8, "f_r1 0x%x", 'x', f_r1, "dr 0x%x", 'x', f_r1, (char *) 0));
1673a5a4af3bSchristos 
1674a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
1675a5a4af3bSchristos   /* Record the fields for profiling.  */
1676a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
1677a5a4af3bSchristos     {
1678a5a4af3bSchristos       FLD (out_dr) = f_r1;
1679a5a4af3bSchristos     }
1680a5a4af3bSchristos #endif
1681a5a4af3bSchristos #undef FLD
1682a5a4af3bSchristos     return idesc;
1683a5a4af3bSchristos   }
1684a5a4af3bSchristos 
1685a5a4af3bSchristos  extract_sfmt_ldi16:
1686a5a4af3bSchristos   {
1687a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
1688a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
1689a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_add3.f
1690a5a4af3bSchristos     UINT f_r1;
1691a5a4af3bSchristos     INT f_simm16;
1692a5a4af3bSchristos 
1693a5a4af3bSchristos     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
1694a5a4af3bSchristos     f_simm16 = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
1695a5a4af3bSchristos 
1696a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
1697a5a4af3bSchristos   FLD (f_simm16) = f_simm16;
1698a5a4af3bSchristos   FLD (f_r1) = f_r1;
1699a5a4af3bSchristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
1700a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldi16", "f_simm16 0x%x", 'x', f_simm16, "f_r1 0x%x", 'x', f_r1, "dr 0x%x", 'x', f_r1, (char *) 0));
1701a5a4af3bSchristos 
1702a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
1703a5a4af3bSchristos   /* Record the fields for profiling.  */
1704a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
1705a5a4af3bSchristos     {
1706a5a4af3bSchristos       FLD (out_dr) = f_r1;
1707a5a4af3bSchristos     }
1708a5a4af3bSchristos #endif
1709a5a4af3bSchristos #undef FLD
1710a5a4af3bSchristos     return idesc;
1711a5a4af3bSchristos   }
1712a5a4af3bSchristos 
1713a5a4af3bSchristos  extract_sfmt_lock:
1714a5a4af3bSchristos   {
1715a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
1716a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
1717a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_ld_plus.f
1718a5a4af3bSchristos     UINT f_r1;
1719a5a4af3bSchristos     UINT f_r2;
1720a5a4af3bSchristos 
1721a5a4af3bSchristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
1722a5a4af3bSchristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1723a5a4af3bSchristos 
1724a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
1725a5a4af3bSchristos   FLD (f_r2) = f_r2;
1726a5a4af3bSchristos   FLD (f_r1) = f_r1;
1727a5a4af3bSchristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
1728a5a4af3bSchristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
1729a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_lock", "f_r2 0x%x", 'x', f_r2, "f_r1 0x%x", 'x', f_r1, "sr 0x%x", 'x', f_r2, "dr 0x%x", 'x', f_r1, (char *) 0));
1730a5a4af3bSchristos 
1731a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
1732a5a4af3bSchristos   /* Record the fields for profiling.  */
1733a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
1734a5a4af3bSchristos     {
1735a5a4af3bSchristos       FLD (in_sr) = f_r2;
1736a5a4af3bSchristos       FLD (out_dr) = f_r1;
1737a5a4af3bSchristos     }
1738a5a4af3bSchristos #endif
1739a5a4af3bSchristos #undef FLD
1740a5a4af3bSchristos     return idesc;
1741a5a4af3bSchristos   }
1742a5a4af3bSchristos 
1743a5a4af3bSchristos  extract_sfmt_machi_a:
1744a5a4af3bSchristos   {
1745a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
1746a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
1747a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_machi_a.f
1748a5a4af3bSchristos     UINT f_r1;
1749a5a4af3bSchristos     UINT f_acc;
1750a5a4af3bSchristos     UINT f_r2;
1751a5a4af3bSchristos 
1752a5a4af3bSchristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
1753a5a4af3bSchristos     f_acc = EXTRACT_MSB0_UINT (insn, 16, 8, 1);
1754a5a4af3bSchristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1755a5a4af3bSchristos 
1756a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
1757a5a4af3bSchristos   FLD (f_acc) = f_acc;
1758a5a4af3bSchristos   FLD (f_r1) = f_r1;
1759a5a4af3bSchristos   FLD (f_r2) = f_r2;
1760a5a4af3bSchristos   FLD (i_src1) = & CPU (h_gr)[f_r1];
1761a5a4af3bSchristos   FLD (i_src2) = & CPU (h_gr)[f_r2];
1762a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_machi_a", "f_acc 0x%x", 'x', f_acc, "f_r1 0x%x", 'x', f_r1, "f_r2 0x%x", 'x', f_r2, "src1 0x%x", 'x', f_r1, "src2 0x%x", 'x', f_r2, (char *) 0));
1763a5a4af3bSchristos 
1764a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
1765a5a4af3bSchristos   /* Record the fields for profiling.  */
1766a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
1767a5a4af3bSchristos     {
1768a5a4af3bSchristos       FLD (in_src1) = f_r1;
1769a5a4af3bSchristos       FLD (in_src2) = f_r2;
1770a5a4af3bSchristos     }
1771a5a4af3bSchristos #endif
1772a5a4af3bSchristos #undef FLD
1773a5a4af3bSchristos     return idesc;
1774a5a4af3bSchristos   }
1775a5a4af3bSchristos 
1776a5a4af3bSchristos  extract_sfmt_mulhi_a:
1777a5a4af3bSchristos   {
1778a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
1779a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
1780a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_machi_a.f
1781a5a4af3bSchristos     UINT f_r1;
1782a5a4af3bSchristos     UINT f_acc;
1783a5a4af3bSchristos     UINT f_r2;
1784a5a4af3bSchristos 
1785a5a4af3bSchristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
1786a5a4af3bSchristos     f_acc = EXTRACT_MSB0_UINT (insn, 16, 8, 1);
1787a5a4af3bSchristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1788a5a4af3bSchristos 
1789a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
1790a5a4af3bSchristos   FLD (f_r1) = f_r1;
1791a5a4af3bSchristos   FLD (f_r2) = f_r2;
1792a5a4af3bSchristos   FLD (f_acc) = f_acc;
1793a5a4af3bSchristos   FLD (i_src1) = & CPU (h_gr)[f_r1];
1794a5a4af3bSchristos   FLD (i_src2) = & CPU (h_gr)[f_r2];
1795a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mulhi_a", "f_r1 0x%x", 'x', f_r1, "f_r2 0x%x", 'x', f_r2, "f_acc 0x%x", 'x', f_acc, "src1 0x%x", 'x', f_r1, "src2 0x%x", 'x', f_r2, (char *) 0));
1796a5a4af3bSchristos 
1797a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
1798a5a4af3bSchristos   /* Record the fields for profiling.  */
1799a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
1800a5a4af3bSchristos     {
1801a5a4af3bSchristos       FLD (in_src1) = f_r1;
1802a5a4af3bSchristos       FLD (in_src2) = f_r2;
1803a5a4af3bSchristos     }
1804a5a4af3bSchristos #endif
1805a5a4af3bSchristos #undef FLD
1806a5a4af3bSchristos     return idesc;
1807a5a4af3bSchristos   }
1808a5a4af3bSchristos 
1809a5a4af3bSchristos  extract_sfmt_mv:
1810a5a4af3bSchristos   {
1811a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
1812a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
1813a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_ld_plus.f
1814a5a4af3bSchristos     UINT f_r1;
1815a5a4af3bSchristos     UINT f_r2;
1816a5a4af3bSchristos 
1817a5a4af3bSchristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
1818a5a4af3bSchristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1819a5a4af3bSchristos 
1820a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
1821a5a4af3bSchristos   FLD (f_r2) = f_r2;
1822a5a4af3bSchristos   FLD (f_r1) = f_r1;
1823a5a4af3bSchristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
1824a5a4af3bSchristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
1825a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mv", "f_r2 0x%x", 'x', f_r2, "f_r1 0x%x", 'x', f_r1, "sr 0x%x", 'x', f_r2, "dr 0x%x", 'x', f_r1, (char *) 0));
1826a5a4af3bSchristos 
1827a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
1828a5a4af3bSchristos   /* Record the fields for profiling.  */
1829a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
1830a5a4af3bSchristos     {
1831a5a4af3bSchristos       FLD (in_sr) = f_r2;
1832a5a4af3bSchristos       FLD (out_dr) = f_r1;
1833a5a4af3bSchristos     }
1834a5a4af3bSchristos #endif
1835a5a4af3bSchristos #undef FLD
1836a5a4af3bSchristos     return idesc;
1837a5a4af3bSchristos   }
1838a5a4af3bSchristos 
1839a5a4af3bSchristos  extract_sfmt_mvfachi_a:
1840a5a4af3bSchristos   {
1841a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
1842a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
1843a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_mvfachi_a.f
1844a5a4af3bSchristos     UINT f_r1;
1845a5a4af3bSchristos     UINT f_accs;
1846a5a4af3bSchristos 
1847a5a4af3bSchristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
1848a5a4af3bSchristos     f_accs = EXTRACT_MSB0_UINT (insn, 16, 12, 2);
1849a5a4af3bSchristos 
1850a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
1851a5a4af3bSchristos   FLD (f_accs) = f_accs;
1852a5a4af3bSchristos   FLD (f_r1) = f_r1;
1853a5a4af3bSchristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
1854a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mvfachi_a", "f_accs 0x%x", 'x', f_accs, "f_r1 0x%x", 'x', f_r1, "dr 0x%x", 'x', f_r1, (char *) 0));
1855a5a4af3bSchristos 
1856a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
1857a5a4af3bSchristos   /* Record the fields for profiling.  */
1858a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
1859a5a4af3bSchristos     {
1860a5a4af3bSchristos       FLD (out_dr) = f_r1;
1861a5a4af3bSchristos     }
1862a5a4af3bSchristos #endif
1863a5a4af3bSchristos #undef FLD
1864a5a4af3bSchristos     return idesc;
1865a5a4af3bSchristos   }
1866a5a4af3bSchristos 
1867a5a4af3bSchristos  extract_sfmt_mvfc:
1868a5a4af3bSchristos   {
1869a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
1870a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
1871a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_ld_plus.f
1872a5a4af3bSchristos     UINT f_r1;
1873a5a4af3bSchristos     UINT f_r2;
1874a5a4af3bSchristos 
1875a5a4af3bSchristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
1876a5a4af3bSchristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1877a5a4af3bSchristos 
1878a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
1879a5a4af3bSchristos   FLD (f_r2) = f_r2;
1880a5a4af3bSchristos   FLD (f_r1) = f_r1;
1881a5a4af3bSchristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
1882a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mvfc", "f_r2 0x%x", 'x', f_r2, "f_r1 0x%x", 'x', f_r1, "dr 0x%x", 'x', f_r1, (char *) 0));
1883a5a4af3bSchristos 
1884a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
1885a5a4af3bSchristos   /* Record the fields for profiling.  */
1886a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
1887a5a4af3bSchristos     {
1888a5a4af3bSchristos       FLD (out_dr) = f_r1;
1889a5a4af3bSchristos     }
1890a5a4af3bSchristos #endif
1891a5a4af3bSchristos #undef FLD
1892a5a4af3bSchristos     return idesc;
1893a5a4af3bSchristos   }
1894a5a4af3bSchristos 
1895a5a4af3bSchristos  extract_sfmt_mvtachi_a:
1896a5a4af3bSchristos   {
1897a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
1898a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
1899a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_mvtachi_a.f
1900a5a4af3bSchristos     UINT f_r1;
1901a5a4af3bSchristos     UINT f_accs;
1902a5a4af3bSchristos 
1903a5a4af3bSchristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
1904a5a4af3bSchristos     f_accs = EXTRACT_MSB0_UINT (insn, 16, 12, 2);
1905a5a4af3bSchristos 
1906a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
1907a5a4af3bSchristos   FLD (f_accs) = f_accs;
1908a5a4af3bSchristos   FLD (f_r1) = f_r1;
1909a5a4af3bSchristos   FLD (i_src1) = & CPU (h_gr)[f_r1];
1910a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mvtachi_a", "f_accs 0x%x", 'x', f_accs, "f_r1 0x%x", 'x', f_r1, "src1 0x%x", 'x', f_r1, (char *) 0));
1911a5a4af3bSchristos 
1912a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
1913a5a4af3bSchristos   /* Record the fields for profiling.  */
1914a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
1915a5a4af3bSchristos     {
1916a5a4af3bSchristos       FLD (in_src1) = f_r1;
1917a5a4af3bSchristos     }
1918a5a4af3bSchristos #endif
1919a5a4af3bSchristos #undef FLD
1920a5a4af3bSchristos     return idesc;
1921a5a4af3bSchristos   }
1922a5a4af3bSchristos 
1923a5a4af3bSchristos  extract_sfmt_mvtc:
1924a5a4af3bSchristos   {
1925a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
1926a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
1927a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_ld_plus.f
1928a5a4af3bSchristos     UINT f_r1;
1929a5a4af3bSchristos     UINT f_r2;
1930a5a4af3bSchristos 
1931a5a4af3bSchristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
1932a5a4af3bSchristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1933a5a4af3bSchristos 
1934a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
1935a5a4af3bSchristos   FLD (f_r2) = f_r2;
1936a5a4af3bSchristos   FLD (f_r1) = f_r1;
1937a5a4af3bSchristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
1938a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mvtc", "f_r2 0x%x", 'x', f_r2, "f_r1 0x%x", 'x', f_r1, "sr 0x%x", 'x', f_r2, (char *) 0));
1939a5a4af3bSchristos 
1940a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
1941a5a4af3bSchristos   /* Record the fields for profiling.  */
1942a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
1943a5a4af3bSchristos     {
1944a5a4af3bSchristos       FLD (in_sr) = f_r2;
1945a5a4af3bSchristos     }
1946a5a4af3bSchristos #endif
1947a5a4af3bSchristos #undef FLD
1948a5a4af3bSchristos     return idesc;
1949a5a4af3bSchristos   }
1950a5a4af3bSchristos 
1951a5a4af3bSchristos  extract_sfmt_nop:
1952a5a4af3bSchristos   {
1953a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
1954a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_empty.f
1955a5a4af3bSchristos 
1956a5a4af3bSchristos 
1957a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
1958a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_nop", (char *) 0));
1959a5a4af3bSchristos 
1960a5a4af3bSchristos #undef FLD
1961a5a4af3bSchristos     return idesc;
1962a5a4af3bSchristos   }
1963a5a4af3bSchristos 
1964a5a4af3bSchristos  extract_sfmt_rac_dsi:
1965a5a4af3bSchristos   {
1966a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
1967a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
1968a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_rac_dsi.f
1969a5a4af3bSchristos     UINT f_accd;
1970a5a4af3bSchristos     UINT f_accs;
1971a5a4af3bSchristos     SI f_imm1;
1972a5a4af3bSchristos 
1973a5a4af3bSchristos     f_accd = EXTRACT_MSB0_UINT (insn, 16, 4, 2);
1974a5a4af3bSchristos     f_accs = EXTRACT_MSB0_UINT (insn, 16, 12, 2);
1975a5a4af3bSchristos     f_imm1 = ((EXTRACT_MSB0_UINT (insn, 16, 15, 1)) + (1));
1976a5a4af3bSchristos 
1977a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
1978a5a4af3bSchristos   FLD (f_accs) = f_accs;
1979a5a4af3bSchristos   FLD (f_imm1) = f_imm1;
1980a5a4af3bSchristos   FLD (f_accd) = f_accd;
1981a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_rac_dsi", "f_accs 0x%x", 'x', f_accs, "f_imm1 0x%x", 'x', f_imm1, "f_accd 0x%x", 'x', f_accd, (char *) 0));
1982a5a4af3bSchristos 
1983a5a4af3bSchristos #undef FLD
1984a5a4af3bSchristos     return idesc;
1985a5a4af3bSchristos   }
1986a5a4af3bSchristos 
1987a5a4af3bSchristos  extract_sfmt_rte:
1988a5a4af3bSchristos   {
1989a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
1990a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_empty.f
1991a5a4af3bSchristos 
1992a5a4af3bSchristos 
1993a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
1994a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_rte", (char *) 0));
1995a5a4af3bSchristos 
1996a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
1997a5a4af3bSchristos   /* Record the fields for profiling.  */
1998a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
1999a5a4af3bSchristos     {
2000a5a4af3bSchristos     }
2001a5a4af3bSchristos #endif
2002a5a4af3bSchristos #undef FLD
2003a5a4af3bSchristos     return idesc;
2004a5a4af3bSchristos   }
2005a5a4af3bSchristos 
2006a5a4af3bSchristos  extract_sfmt_seth:
2007a5a4af3bSchristos   {
2008a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
2009a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
2010a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_seth.f
2011a5a4af3bSchristos     UINT f_r1;
2012a5a4af3bSchristos     UINT f_hi16;
2013a5a4af3bSchristos 
2014a5a4af3bSchristos     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
2015a5a4af3bSchristos     f_hi16 = EXTRACT_MSB0_UINT (insn, 32, 16, 16);
2016a5a4af3bSchristos 
2017a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
2018a5a4af3bSchristos   FLD (f_hi16) = f_hi16;
2019a5a4af3bSchristos   FLD (f_r1) = f_r1;
2020a5a4af3bSchristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
2021a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_seth", "f_hi16 0x%x", 'x', f_hi16, "f_r1 0x%x", 'x', f_r1, "dr 0x%x", 'x', f_r1, (char *) 0));
2022a5a4af3bSchristos 
2023a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
2024a5a4af3bSchristos   /* Record the fields for profiling.  */
2025a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
2026a5a4af3bSchristos     {
2027a5a4af3bSchristos       FLD (out_dr) = f_r1;
2028a5a4af3bSchristos     }
2029a5a4af3bSchristos #endif
2030a5a4af3bSchristos #undef FLD
2031a5a4af3bSchristos     return idesc;
2032a5a4af3bSchristos   }
2033a5a4af3bSchristos 
2034a5a4af3bSchristos  extract_sfmt_sll3:
2035a5a4af3bSchristos   {
2036a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
2037a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
2038a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_add3.f
2039a5a4af3bSchristos     UINT f_r1;
2040a5a4af3bSchristos     UINT f_r2;
2041a5a4af3bSchristos     INT f_simm16;
2042a5a4af3bSchristos 
2043a5a4af3bSchristos     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
2044a5a4af3bSchristos     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
2045a5a4af3bSchristos     f_simm16 = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
2046a5a4af3bSchristos 
2047a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
2048a5a4af3bSchristos   FLD (f_simm16) = f_simm16;
2049a5a4af3bSchristos   FLD (f_r2) = f_r2;
2050a5a4af3bSchristos   FLD (f_r1) = f_r1;
2051a5a4af3bSchristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
2052a5a4af3bSchristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
2053a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_sll3", "f_simm16 0x%x", 'x', f_simm16, "f_r2 0x%x", 'x', f_r2, "f_r1 0x%x", 'x', f_r1, "sr 0x%x", 'x', f_r2, "dr 0x%x", 'x', f_r1, (char *) 0));
2054a5a4af3bSchristos 
2055a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
2056a5a4af3bSchristos   /* Record the fields for profiling.  */
2057a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
2058a5a4af3bSchristos     {
2059a5a4af3bSchristos       FLD (in_sr) = f_r2;
2060a5a4af3bSchristos       FLD (out_dr) = f_r1;
2061a5a4af3bSchristos     }
2062a5a4af3bSchristos #endif
2063a5a4af3bSchristos #undef FLD
2064a5a4af3bSchristos     return idesc;
2065a5a4af3bSchristos   }
2066a5a4af3bSchristos 
2067a5a4af3bSchristos  extract_sfmt_slli:
2068a5a4af3bSchristos   {
2069a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
2070a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
2071a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_slli.f
2072a5a4af3bSchristos     UINT f_r1;
2073a5a4af3bSchristos     UINT f_uimm5;
2074a5a4af3bSchristos 
2075a5a4af3bSchristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
2076a5a4af3bSchristos     f_uimm5 = EXTRACT_MSB0_UINT (insn, 16, 11, 5);
2077a5a4af3bSchristos 
2078a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
2079a5a4af3bSchristos   FLD (f_r1) = f_r1;
2080a5a4af3bSchristos   FLD (f_uimm5) = f_uimm5;
2081a5a4af3bSchristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
2082a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_slli", "f_r1 0x%x", 'x', f_r1, "f_uimm5 0x%x", 'x', f_uimm5, "dr 0x%x", 'x', f_r1, (char *) 0));
2083a5a4af3bSchristos 
2084a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
2085a5a4af3bSchristos   /* Record the fields for profiling.  */
2086a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
2087a5a4af3bSchristos     {
2088a5a4af3bSchristos       FLD (in_dr) = f_r1;
2089a5a4af3bSchristos       FLD (out_dr) = f_r1;
2090a5a4af3bSchristos     }
2091a5a4af3bSchristos #endif
2092a5a4af3bSchristos #undef FLD
2093a5a4af3bSchristos     return idesc;
2094a5a4af3bSchristos   }
2095a5a4af3bSchristos 
2096a5a4af3bSchristos  extract_sfmt_st:
2097a5a4af3bSchristos   {
2098a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
2099a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
2100a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_st_plus.f
2101a5a4af3bSchristos     UINT f_r1;
2102a5a4af3bSchristos     UINT f_r2;
2103a5a4af3bSchristos 
2104a5a4af3bSchristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
2105a5a4af3bSchristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2106a5a4af3bSchristos 
2107a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
2108a5a4af3bSchristos   FLD (f_r1) = f_r1;
2109a5a4af3bSchristos   FLD (f_r2) = f_r2;
2110a5a4af3bSchristos   FLD (i_src1) = & CPU (h_gr)[f_r1];
2111a5a4af3bSchristos   FLD (i_src2) = & CPU (h_gr)[f_r2];
2112a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_st", "f_r1 0x%x", 'x', f_r1, "f_r2 0x%x", 'x', f_r2, "src1 0x%x", 'x', f_r1, "src2 0x%x", 'x', f_r2, (char *) 0));
2113a5a4af3bSchristos 
2114a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
2115a5a4af3bSchristos   /* Record the fields for profiling.  */
2116a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
2117a5a4af3bSchristos     {
2118a5a4af3bSchristos       FLD (in_src1) = f_r1;
2119a5a4af3bSchristos       FLD (in_src2) = f_r2;
2120a5a4af3bSchristos     }
2121a5a4af3bSchristos #endif
2122a5a4af3bSchristos #undef FLD
2123a5a4af3bSchristos     return idesc;
2124a5a4af3bSchristos   }
2125a5a4af3bSchristos 
2126a5a4af3bSchristos  extract_sfmt_st_d:
2127a5a4af3bSchristos   {
2128a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
2129a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
2130a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_st_d.f
2131a5a4af3bSchristos     UINT f_r1;
2132a5a4af3bSchristos     UINT f_r2;
2133a5a4af3bSchristos     INT f_simm16;
2134a5a4af3bSchristos 
2135a5a4af3bSchristos     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
2136a5a4af3bSchristos     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
2137a5a4af3bSchristos     f_simm16 = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
2138a5a4af3bSchristos 
2139a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
2140a5a4af3bSchristos   FLD (f_simm16) = f_simm16;
2141a5a4af3bSchristos   FLD (f_r1) = f_r1;
2142a5a4af3bSchristos   FLD (f_r2) = f_r2;
2143a5a4af3bSchristos   FLD (i_src1) = & CPU (h_gr)[f_r1];
2144a5a4af3bSchristos   FLD (i_src2) = & CPU (h_gr)[f_r2];
2145a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_st_d", "f_simm16 0x%x", 'x', f_simm16, "f_r1 0x%x", 'x', f_r1, "f_r2 0x%x", 'x', f_r2, "src1 0x%x", 'x', f_r1, "src2 0x%x", 'x', f_r2, (char *) 0));
2146a5a4af3bSchristos 
2147a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
2148a5a4af3bSchristos   /* Record the fields for profiling.  */
2149a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
2150a5a4af3bSchristos     {
2151a5a4af3bSchristos       FLD (in_src1) = f_r1;
2152a5a4af3bSchristos       FLD (in_src2) = f_r2;
2153a5a4af3bSchristos     }
2154a5a4af3bSchristos #endif
2155a5a4af3bSchristos #undef FLD
2156a5a4af3bSchristos     return idesc;
2157a5a4af3bSchristos   }
2158a5a4af3bSchristos 
2159a5a4af3bSchristos  extract_sfmt_stb:
2160a5a4af3bSchristos   {
2161a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
2162a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
2163a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_st_plus.f
2164a5a4af3bSchristos     UINT f_r1;
2165a5a4af3bSchristos     UINT f_r2;
2166a5a4af3bSchristos 
2167a5a4af3bSchristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
2168a5a4af3bSchristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2169a5a4af3bSchristos 
2170a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
2171a5a4af3bSchristos   FLD (f_r1) = f_r1;
2172a5a4af3bSchristos   FLD (f_r2) = f_r2;
2173a5a4af3bSchristos   FLD (i_src1) = & CPU (h_gr)[f_r1];
2174a5a4af3bSchristos   FLD (i_src2) = & CPU (h_gr)[f_r2];
2175a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_stb", "f_r1 0x%x", 'x', f_r1, "f_r2 0x%x", 'x', f_r2, "src1 0x%x", 'x', f_r1, "src2 0x%x", 'x', f_r2, (char *) 0));
2176a5a4af3bSchristos 
2177a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
2178a5a4af3bSchristos   /* Record the fields for profiling.  */
2179a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
2180a5a4af3bSchristos     {
2181a5a4af3bSchristos       FLD (in_src1) = f_r1;
2182a5a4af3bSchristos       FLD (in_src2) = f_r2;
2183a5a4af3bSchristos     }
2184a5a4af3bSchristos #endif
2185a5a4af3bSchristos #undef FLD
2186a5a4af3bSchristos     return idesc;
2187a5a4af3bSchristos   }
2188a5a4af3bSchristos 
2189a5a4af3bSchristos  extract_sfmt_stb_d:
2190a5a4af3bSchristos   {
2191a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
2192a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
2193a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_st_d.f
2194a5a4af3bSchristos     UINT f_r1;
2195a5a4af3bSchristos     UINT f_r2;
2196a5a4af3bSchristos     INT f_simm16;
2197a5a4af3bSchristos 
2198a5a4af3bSchristos     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
2199a5a4af3bSchristos     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
2200a5a4af3bSchristos     f_simm16 = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
2201a5a4af3bSchristos 
2202a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
2203a5a4af3bSchristos   FLD (f_simm16) = f_simm16;
2204a5a4af3bSchristos   FLD (f_r1) = f_r1;
2205a5a4af3bSchristos   FLD (f_r2) = f_r2;
2206a5a4af3bSchristos   FLD (i_src1) = & CPU (h_gr)[f_r1];
2207a5a4af3bSchristos   FLD (i_src2) = & CPU (h_gr)[f_r2];
2208a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_stb_d", "f_simm16 0x%x", 'x', f_simm16, "f_r1 0x%x", 'x', f_r1, "f_r2 0x%x", 'x', f_r2, "src1 0x%x", 'x', f_r1, "src2 0x%x", 'x', f_r2, (char *) 0));
2209a5a4af3bSchristos 
2210a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
2211a5a4af3bSchristos   /* Record the fields for profiling.  */
2212a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
2213a5a4af3bSchristos     {
2214a5a4af3bSchristos       FLD (in_src1) = f_r1;
2215a5a4af3bSchristos       FLD (in_src2) = f_r2;
2216a5a4af3bSchristos     }
2217a5a4af3bSchristos #endif
2218a5a4af3bSchristos #undef FLD
2219a5a4af3bSchristos     return idesc;
2220a5a4af3bSchristos   }
2221a5a4af3bSchristos 
2222a5a4af3bSchristos  extract_sfmt_sth:
2223a5a4af3bSchristos   {
2224a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
2225a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
2226a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_st_plus.f
2227a5a4af3bSchristos     UINT f_r1;
2228a5a4af3bSchristos     UINT f_r2;
2229a5a4af3bSchristos 
2230a5a4af3bSchristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
2231a5a4af3bSchristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2232a5a4af3bSchristos 
2233a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
2234a5a4af3bSchristos   FLD (f_r1) = f_r1;
2235a5a4af3bSchristos   FLD (f_r2) = f_r2;
2236a5a4af3bSchristos   FLD (i_src1) = & CPU (h_gr)[f_r1];
2237a5a4af3bSchristos   FLD (i_src2) = & CPU (h_gr)[f_r2];
2238a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_sth", "f_r1 0x%x", 'x', f_r1, "f_r2 0x%x", 'x', f_r2, "src1 0x%x", 'x', f_r1, "src2 0x%x", 'x', f_r2, (char *) 0));
2239a5a4af3bSchristos 
2240a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
2241a5a4af3bSchristos   /* Record the fields for profiling.  */
2242a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
2243a5a4af3bSchristos     {
2244a5a4af3bSchristos       FLD (in_src1) = f_r1;
2245a5a4af3bSchristos       FLD (in_src2) = f_r2;
2246a5a4af3bSchristos     }
2247a5a4af3bSchristos #endif
2248a5a4af3bSchristos #undef FLD
2249a5a4af3bSchristos     return idesc;
2250a5a4af3bSchristos   }
2251a5a4af3bSchristos 
2252a5a4af3bSchristos  extract_sfmt_sth_d:
2253a5a4af3bSchristos   {
2254a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
2255a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
2256a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_st_d.f
2257a5a4af3bSchristos     UINT f_r1;
2258a5a4af3bSchristos     UINT f_r2;
2259a5a4af3bSchristos     INT f_simm16;
2260a5a4af3bSchristos 
2261a5a4af3bSchristos     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
2262a5a4af3bSchristos     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
2263a5a4af3bSchristos     f_simm16 = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
2264a5a4af3bSchristos 
2265a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
2266a5a4af3bSchristos   FLD (f_simm16) = f_simm16;
2267a5a4af3bSchristos   FLD (f_r1) = f_r1;
2268a5a4af3bSchristos   FLD (f_r2) = f_r2;
2269a5a4af3bSchristos   FLD (i_src1) = & CPU (h_gr)[f_r1];
2270a5a4af3bSchristos   FLD (i_src2) = & CPU (h_gr)[f_r2];
2271a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_sth_d", "f_simm16 0x%x", 'x', f_simm16, "f_r1 0x%x", 'x', f_r1, "f_r2 0x%x", 'x', f_r2, "src1 0x%x", 'x', f_r1, "src2 0x%x", 'x', f_r2, (char *) 0));
2272a5a4af3bSchristos 
2273a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
2274a5a4af3bSchristos   /* Record the fields for profiling.  */
2275a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
2276a5a4af3bSchristos     {
2277a5a4af3bSchristos       FLD (in_src1) = f_r1;
2278a5a4af3bSchristos       FLD (in_src2) = f_r2;
2279a5a4af3bSchristos     }
2280a5a4af3bSchristos #endif
2281a5a4af3bSchristos #undef FLD
2282a5a4af3bSchristos     return idesc;
2283a5a4af3bSchristos   }
2284a5a4af3bSchristos 
2285a5a4af3bSchristos  extract_sfmt_st_plus:
2286a5a4af3bSchristos   {
2287a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
2288a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
2289a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_st_plus.f
2290a5a4af3bSchristos     UINT f_r1;
2291a5a4af3bSchristos     UINT f_r2;
2292a5a4af3bSchristos 
2293a5a4af3bSchristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
2294a5a4af3bSchristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2295a5a4af3bSchristos 
2296a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
2297a5a4af3bSchristos   FLD (f_r1) = f_r1;
2298a5a4af3bSchristos   FLD (f_r2) = f_r2;
2299a5a4af3bSchristos   FLD (i_src1) = & CPU (h_gr)[f_r1];
2300a5a4af3bSchristos   FLD (i_src2) = & CPU (h_gr)[f_r2];
2301a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_st_plus", "f_r1 0x%x", 'x', f_r1, "f_r2 0x%x", 'x', f_r2, "src1 0x%x", 'x', f_r1, "src2 0x%x", 'x', f_r2, (char *) 0));
2302a5a4af3bSchristos 
2303a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
2304a5a4af3bSchristos   /* Record the fields for profiling.  */
2305a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
2306a5a4af3bSchristos     {
2307a5a4af3bSchristos       FLD (in_src1) = f_r1;
2308a5a4af3bSchristos       FLD (in_src2) = f_r2;
2309a5a4af3bSchristos       FLD (out_src2) = f_r2;
2310a5a4af3bSchristos     }
2311a5a4af3bSchristos #endif
2312a5a4af3bSchristos #undef FLD
2313a5a4af3bSchristos     return idesc;
2314a5a4af3bSchristos   }
2315a5a4af3bSchristos 
2316a5a4af3bSchristos  extract_sfmt_sth_plus:
2317a5a4af3bSchristos   {
2318a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
2319a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
2320a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_st_plus.f
2321a5a4af3bSchristos     UINT f_r1;
2322a5a4af3bSchristos     UINT f_r2;
2323a5a4af3bSchristos 
2324a5a4af3bSchristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
2325a5a4af3bSchristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2326a5a4af3bSchristos 
2327a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
2328a5a4af3bSchristos   FLD (f_r1) = f_r1;
2329a5a4af3bSchristos   FLD (f_r2) = f_r2;
2330a5a4af3bSchristos   FLD (i_src1) = & CPU (h_gr)[f_r1];
2331a5a4af3bSchristos   FLD (i_src2) = & CPU (h_gr)[f_r2];
2332a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_sth_plus", "f_r1 0x%x", 'x', f_r1, "f_r2 0x%x", 'x', f_r2, "src1 0x%x", 'x', f_r1, "src2 0x%x", 'x', f_r2, (char *) 0));
2333a5a4af3bSchristos 
2334a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
2335a5a4af3bSchristos   /* Record the fields for profiling.  */
2336a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
2337a5a4af3bSchristos     {
2338a5a4af3bSchristos       FLD (in_src1) = f_r1;
2339a5a4af3bSchristos       FLD (in_src2) = f_r2;
2340a5a4af3bSchristos       FLD (out_src2) = f_r2;
2341a5a4af3bSchristos     }
2342a5a4af3bSchristos #endif
2343a5a4af3bSchristos #undef FLD
2344a5a4af3bSchristos     return idesc;
2345a5a4af3bSchristos   }
2346a5a4af3bSchristos 
2347a5a4af3bSchristos  extract_sfmt_stb_plus:
2348a5a4af3bSchristos   {
2349a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
2350a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
2351a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_st_plus.f
2352a5a4af3bSchristos     UINT f_r1;
2353a5a4af3bSchristos     UINT f_r2;
2354a5a4af3bSchristos 
2355a5a4af3bSchristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
2356a5a4af3bSchristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2357a5a4af3bSchristos 
2358a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
2359a5a4af3bSchristos   FLD (f_r1) = f_r1;
2360a5a4af3bSchristos   FLD (f_r2) = f_r2;
2361a5a4af3bSchristos   FLD (i_src1) = & CPU (h_gr)[f_r1];
2362a5a4af3bSchristos   FLD (i_src2) = & CPU (h_gr)[f_r2];
2363a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_stb_plus", "f_r1 0x%x", 'x', f_r1, "f_r2 0x%x", 'x', f_r2, "src1 0x%x", 'x', f_r1, "src2 0x%x", 'x', f_r2, (char *) 0));
2364a5a4af3bSchristos 
2365a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
2366a5a4af3bSchristos   /* Record the fields for profiling.  */
2367a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
2368a5a4af3bSchristos     {
2369a5a4af3bSchristos       FLD (in_src1) = f_r1;
2370a5a4af3bSchristos       FLD (in_src2) = f_r2;
2371a5a4af3bSchristos       FLD (out_src2) = f_r2;
2372a5a4af3bSchristos     }
2373a5a4af3bSchristos #endif
2374a5a4af3bSchristos #undef FLD
2375a5a4af3bSchristos     return idesc;
2376a5a4af3bSchristos   }
2377a5a4af3bSchristos 
2378a5a4af3bSchristos  extract_sfmt_trap:
2379a5a4af3bSchristos   {
2380a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
2381a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
2382a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_trap.f
2383a5a4af3bSchristos     UINT f_uimm4;
2384a5a4af3bSchristos 
2385a5a4af3bSchristos     f_uimm4 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2386a5a4af3bSchristos 
2387a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
2388a5a4af3bSchristos   FLD (f_uimm4) = f_uimm4;
2389a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_trap", "f_uimm4 0x%x", 'x', f_uimm4, (char *) 0));
2390a5a4af3bSchristos 
2391a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
2392a5a4af3bSchristos   /* Record the fields for profiling.  */
2393a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
2394a5a4af3bSchristos     {
2395a5a4af3bSchristos     }
2396a5a4af3bSchristos #endif
2397a5a4af3bSchristos #undef FLD
2398a5a4af3bSchristos     return idesc;
2399a5a4af3bSchristos   }
2400a5a4af3bSchristos 
2401a5a4af3bSchristos  extract_sfmt_unlock:
2402a5a4af3bSchristos   {
2403a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
2404a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
2405a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_st_plus.f
2406a5a4af3bSchristos     UINT f_r1;
2407a5a4af3bSchristos     UINT f_r2;
2408a5a4af3bSchristos 
2409a5a4af3bSchristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
2410a5a4af3bSchristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2411a5a4af3bSchristos 
2412a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
2413a5a4af3bSchristos   FLD (f_r1) = f_r1;
2414a5a4af3bSchristos   FLD (f_r2) = f_r2;
2415a5a4af3bSchristos   FLD (i_src1) = & CPU (h_gr)[f_r1];
2416a5a4af3bSchristos   FLD (i_src2) = & CPU (h_gr)[f_r2];
2417a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_unlock", "f_r1 0x%x", 'x', f_r1, "f_r2 0x%x", 'x', f_r2, "src1 0x%x", 'x', f_r1, "src2 0x%x", 'x', f_r2, (char *) 0));
2418a5a4af3bSchristos 
2419a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
2420a5a4af3bSchristos   /* Record the fields for profiling.  */
2421a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
2422a5a4af3bSchristos     {
2423a5a4af3bSchristos       FLD (in_src1) = f_r1;
2424a5a4af3bSchristos       FLD (in_src2) = f_r2;
2425a5a4af3bSchristos     }
2426a5a4af3bSchristos #endif
2427a5a4af3bSchristos #undef FLD
2428a5a4af3bSchristos     return idesc;
2429a5a4af3bSchristos   }
2430a5a4af3bSchristos 
2431a5a4af3bSchristos  extract_sfmt_satb:
2432a5a4af3bSchristos   {
2433a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
2434a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
2435a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_ld_plus.f
2436a5a4af3bSchristos     UINT f_r1;
2437a5a4af3bSchristos     UINT f_r2;
2438a5a4af3bSchristos 
2439a5a4af3bSchristos     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
2440a5a4af3bSchristos     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
2441a5a4af3bSchristos 
2442a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
2443a5a4af3bSchristos   FLD (f_r2) = f_r2;
2444a5a4af3bSchristos   FLD (f_r1) = f_r1;
2445a5a4af3bSchristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
2446a5a4af3bSchristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
2447a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_satb", "f_r2 0x%x", 'x', f_r2, "f_r1 0x%x", 'x', f_r1, "sr 0x%x", 'x', f_r2, "dr 0x%x", 'x', f_r1, (char *) 0));
2448a5a4af3bSchristos 
2449a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
2450a5a4af3bSchristos   /* Record the fields for profiling.  */
2451a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
2452a5a4af3bSchristos     {
2453a5a4af3bSchristos       FLD (in_sr) = f_r2;
2454a5a4af3bSchristos       FLD (out_dr) = f_r1;
2455a5a4af3bSchristos     }
2456a5a4af3bSchristos #endif
2457a5a4af3bSchristos #undef FLD
2458a5a4af3bSchristos     return idesc;
2459a5a4af3bSchristos   }
2460a5a4af3bSchristos 
2461a5a4af3bSchristos  extract_sfmt_sat:
2462a5a4af3bSchristos   {
2463a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
2464a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
2465a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_ld_plus.f
2466a5a4af3bSchristos     UINT f_r1;
2467a5a4af3bSchristos     UINT f_r2;
2468a5a4af3bSchristos 
2469a5a4af3bSchristos     f_r1 = EXTRACT_MSB0_UINT (insn, 32, 4, 4);
2470a5a4af3bSchristos     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
2471a5a4af3bSchristos 
2472a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
2473a5a4af3bSchristos   FLD (f_r2) = f_r2;
2474a5a4af3bSchristos   FLD (f_r1) = f_r1;
2475a5a4af3bSchristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
2476a5a4af3bSchristos   FLD (i_dr) = & CPU (h_gr)[f_r1];
2477a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_sat", "f_r2 0x%x", 'x', f_r2, "f_r1 0x%x", 'x', f_r1, "sr 0x%x", 'x', f_r2, "dr 0x%x", 'x', f_r1, (char *) 0));
2478a5a4af3bSchristos 
2479a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
2480a5a4af3bSchristos   /* Record the fields for profiling.  */
2481a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
2482a5a4af3bSchristos     {
2483a5a4af3bSchristos       FLD (in_sr) = f_r2;
2484a5a4af3bSchristos       FLD (out_dr) = f_r1;
2485a5a4af3bSchristos     }
2486a5a4af3bSchristos #endif
2487a5a4af3bSchristos #undef FLD
2488a5a4af3bSchristos     return idesc;
2489a5a4af3bSchristos   }
2490a5a4af3bSchristos 
2491a5a4af3bSchristos  extract_sfmt_sadd:
2492a5a4af3bSchristos   {
2493a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
2494a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_empty.f
2495a5a4af3bSchristos 
2496a5a4af3bSchristos 
2497a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
2498a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_sadd", (char *) 0));
2499a5a4af3bSchristos 
2500a5a4af3bSchristos #undef FLD
2501a5a4af3bSchristos     return idesc;
2502a5a4af3bSchristos   }
2503a5a4af3bSchristos 
2504a5a4af3bSchristos  extract_sfmt_macwu1:
2505a5a4af3bSchristos   {
2506a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
2507a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
2508a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_st_plus.f
2509a5a4af3bSchristos     UINT f_r1;
2510a5a4af3bSchristos     UINT f_r2;
2511a5a4af3bSchristos 
2512a5a4af3bSchristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
2513a5a4af3bSchristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2514a5a4af3bSchristos 
2515a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
2516a5a4af3bSchristos   FLD (f_r1) = f_r1;
2517a5a4af3bSchristos   FLD (f_r2) = f_r2;
2518a5a4af3bSchristos   FLD (i_src1) = & CPU (h_gr)[f_r1];
2519a5a4af3bSchristos   FLD (i_src2) = & CPU (h_gr)[f_r2];
2520a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_macwu1", "f_r1 0x%x", 'x', f_r1, "f_r2 0x%x", 'x', f_r2, "src1 0x%x", 'x', f_r1, "src2 0x%x", 'x', f_r2, (char *) 0));
2521a5a4af3bSchristos 
2522a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
2523a5a4af3bSchristos   /* Record the fields for profiling.  */
2524a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
2525a5a4af3bSchristos     {
2526a5a4af3bSchristos       FLD (in_src1) = f_r1;
2527a5a4af3bSchristos       FLD (in_src2) = f_r2;
2528a5a4af3bSchristos     }
2529a5a4af3bSchristos #endif
2530a5a4af3bSchristos #undef FLD
2531a5a4af3bSchristos     return idesc;
2532a5a4af3bSchristos   }
2533a5a4af3bSchristos 
2534a5a4af3bSchristos  extract_sfmt_msblo:
2535a5a4af3bSchristos   {
2536a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
2537a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
2538a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_st_plus.f
2539a5a4af3bSchristos     UINT f_r1;
2540a5a4af3bSchristos     UINT f_r2;
2541a5a4af3bSchristos 
2542a5a4af3bSchristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
2543a5a4af3bSchristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2544a5a4af3bSchristos 
2545a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
2546a5a4af3bSchristos   FLD (f_r1) = f_r1;
2547a5a4af3bSchristos   FLD (f_r2) = f_r2;
2548a5a4af3bSchristos   FLD (i_src1) = & CPU (h_gr)[f_r1];
2549a5a4af3bSchristos   FLD (i_src2) = & CPU (h_gr)[f_r2];
2550a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_msblo", "f_r1 0x%x", 'x', f_r1, "f_r2 0x%x", 'x', f_r2, "src1 0x%x", 'x', f_r1, "src2 0x%x", 'x', f_r2, (char *) 0));
2551a5a4af3bSchristos 
2552a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
2553a5a4af3bSchristos   /* Record the fields for profiling.  */
2554a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
2555a5a4af3bSchristos     {
2556a5a4af3bSchristos       FLD (in_src1) = f_r1;
2557a5a4af3bSchristos       FLD (in_src2) = f_r2;
2558a5a4af3bSchristos     }
2559a5a4af3bSchristos #endif
2560a5a4af3bSchristos #undef FLD
2561a5a4af3bSchristos     return idesc;
2562a5a4af3bSchristos   }
2563a5a4af3bSchristos 
2564a5a4af3bSchristos  extract_sfmt_mulwu1:
2565a5a4af3bSchristos   {
2566a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
2567a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
2568a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_st_plus.f
2569a5a4af3bSchristos     UINT f_r1;
2570a5a4af3bSchristos     UINT f_r2;
2571a5a4af3bSchristos 
2572a5a4af3bSchristos     f_r1 = EXTRACT_MSB0_UINT (insn, 16, 4, 4);
2573a5a4af3bSchristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2574a5a4af3bSchristos 
2575a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
2576a5a4af3bSchristos   FLD (f_r1) = f_r1;
2577a5a4af3bSchristos   FLD (f_r2) = f_r2;
2578a5a4af3bSchristos   FLD (i_src1) = & CPU (h_gr)[f_r1];
2579a5a4af3bSchristos   FLD (i_src2) = & CPU (h_gr)[f_r2];
2580a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mulwu1", "f_r1 0x%x", 'x', f_r1, "f_r2 0x%x", 'x', f_r2, "src1 0x%x", 'x', f_r1, "src2 0x%x", 'x', f_r2, (char *) 0));
2581a5a4af3bSchristos 
2582a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
2583a5a4af3bSchristos   /* Record the fields for profiling.  */
2584a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
2585a5a4af3bSchristos     {
2586a5a4af3bSchristos       FLD (in_src1) = f_r1;
2587a5a4af3bSchristos       FLD (in_src2) = f_r2;
2588a5a4af3bSchristos     }
2589a5a4af3bSchristos #endif
2590a5a4af3bSchristos #undef FLD
2591a5a4af3bSchristos     return idesc;
2592a5a4af3bSchristos   }
2593a5a4af3bSchristos 
2594a5a4af3bSchristos  extract_sfmt_sc:
2595a5a4af3bSchristos   {
2596a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
2597a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_empty.f
2598a5a4af3bSchristos 
2599a5a4af3bSchristos 
2600a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
2601a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_sc", (char *) 0));
2602a5a4af3bSchristos 
2603a5a4af3bSchristos #undef FLD
2604a5a4af3bSchristos     return idesc;
2605a5a4af3bSchristos   }
2606a5a4af3bSchristos 
2607a5a4af3bSchristos  extract_sfmt_clrpsw:
2608a5a4af3bSchristos   {
2609a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
2610a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
2611a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_clrpsw.f
2612a5a4af3bSchristos     UINT f_uimm8;
2613a5a4af3bSchristos 
2614a5a4af3bSchristos     f_uimm8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
2615a5a4af3bSchristos 
2616a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
2617a5a4af3bSchristos   FLD (f_uimm8) = f_uimm8;
2618a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_clrpsw", "f_uimm8 0x%x", 'x', f_uimm8, (char *) 0));
2619a5a4af3bSchristos 
2620a5a4af3bSchristos #undef FLD
2621a5a4af3bSchristos     return idesc;
2622a5a4af3bSchristos   }
2623a5a4af3bSchristos 
2624a5a4af3bSchristos  extract_sfmt_setpsw:
2625a5a4af3bSchristos   {
2626a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
2627a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
2628a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_clrpsw.f
2629a5a4af3bSchristos     UINT f_uimm8;
2630a5a4af3bSchristos 
2631a5a4af3bSchristos     f_uimm8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
2632a5a4af3bSchristos 
2633a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
2634a5a4af3bSchristos   FLD (f_uimm8) = f_uimm8;
2635a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_setpsw", "f_uimm8 0x%x", 'x', f_uimm8, (char *) 0));
2636a5a4af3bSchristos 
2637a5a4af3bSchristos #undef FLD
2638a5a4af3bSchristos     return idesc;
2639a5a4af3bSchristos   }
2640a5a4af3bSchristos 
2641a5a4af3bSchristos  extract_sfmt_bset:
2642a5a4af3bSchristos   {
2643a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
2644a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
2645a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_bset.f
2646a5a4af3bSchristos     UINT f_uimm3;
2647a5a4af3bSchristos     UINT f_r2;
2648a5a4af3bSchristos     INT f_simm16;
2649a5a4af3bSchristos 
2650a5a4af3bSchristos     f_uimm3 = EXTRACT_MSB0_UINT (insn, 32, 5, 3);
2651a5a4af3bSchristos     f_r2 = EXTRACT_MSB0_UINT (insn, 32, 12, 4);
2652a5a4af3bSchristos     f_simm16 = EXTRACT_MSB0_SINT (insn, 32, 16, 16);
2653a5a4af3bSchristos 
2654a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
2655a5a4af3bSchristos   FLD (f_simm16) = f_simm16;
2656a5a4af3bSchristos   FLD (f_r2) = f_r2;
2657a5a4af3bSchristos   FLD (f_uimm3) = f_uimm3;
2658a5a4af3bSchristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
2659a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bset", "f_simm16 0x%x", 'x', f_simm16, "f_r2 0x%x", 'x', f_r2, "f_uimm3 0x%x", 'x', f_uimm3, "sr 0x%x", 'x', f_r2, (char *) 0));
2660a5a4af3bSchristos 
2661a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
2662a5a4af3bSchristos   /* Record the fields for profiling.  */
2663a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
2664a5a4af3bSchristos     {
2665a5a4af3bSchristos       FLD (in_sr) = f_r2;
2666a5a4af3bSchristos     }
2667a5a4af3bSchristos #endif
2668a5a4af3bSchristos #undef FLD
2669a5a4af3bSchristos     return idesc;
2670a5a4af3bSchristos   }
2671a5a4af3bSchristos 
2672a5a4af3bSchristos  extract_sfmt_btst:
2673a5a4af3bSchristos   {
2674a5a4af3bSchristos     const IDESC *idesc = &m32rxf_insn_data[itype];
2675a5a4af3bSchristos     CGEN_INSN_WORD insn = entire_insn;
2676a5a4af3bSchristos #define FLD(f) abuf->fields.sfmt_bset.f
2677a5a4af3bSchristos     UINT f_uimm3;
2678a5a4af3bSchristos     UINT f_r2;
2679a5a4af3bSchristos 
2680a5a4af3bSchristos     f_uimm3 = EXTRACT_MSB0_UINT (insn, 16, 5, 3);
2681a5a4af3bSchristos     f_r2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2682a5a4af3bSchristos 
2683a5a4af3bSchristos   /* Record the fields for the semantic handler.  */
2684a5a4af3bSchristos   FLD (f_r2) = f_r2;
2685a5a4af3bSchristos   FLD (f_uimm3) = f_uimm3;
2686a5a4af3bSchristos   FLD (i_sr) = & CPU (h_gr)[f_r2];
2687a5a4af3bSchristos   CGEN_TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_btst", "f_r2 0x%x", 'x', f_r2, "f_uimm3 0x%x", 'x', f_uimm3, "sr 0x%x", 'x', f_r2, (char *) 0));
2688a5a4af3bSchristos 
2689a5a4af3bSchristos #if WITH_PROFILE_MODEL_P
2690a5a4af3bSchristos   /* Record the fields for profiling.  */
2691a5a4af3bSchristos   if (PROFILE_MODEL_P (current_cpu))
2692a5a4af3bSchristos     {
2693a5a4af3bSchristos       FLD (in_sr) = f_r2;
2694a5a4af3bSchristos     }
2695a5a4af3bSchristos #endif
2696a5a4af3bSchristos #undef FLD
2697a5a4af3bSchristos     return idesc;
2698a5a4af3bSchristos   }
2699a5a4af3bSchristos 
2700a5a4af3bSchristos }
2701