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