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