OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [insight/] [sim/] [fr30/] [decode.c] - Blame information for rev 1771

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 578 markom
/* Simulator instruction decoder for fr30bf.
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 fr30bf
26
#define WANT_CPU_FR30BF
27
 
28
#include "sim-main.h"
29
#include "sim-assert.h"
30
 
31
/* The instruction descriptor array.
32
   This is computed at runtime.  Space for it is not malloc'd to save a
33
   teensy bit of cpu in the decoder.  Moving it to malloc space is trivial
34
   but won't be done until necessary (we don't currently support the runtime
35
   addition of instructions nor an SMP machine with different cpus).  */
36
static IDESC fr30bf_insn_data[FR30BF_INSN_MAX];
37
 
38
/* Commas between elements are contained in the macros.
39
   Some of these are conditionally compiled out.  */
40
 
41
static const struct insn_sem fr30bf_insn_sem[] =
42
{
43
  { VIRTUAL_INSN_X_INVALID, FR30BF_INSN_X_INVALID, FR30BF_SFMT_EMPTY },
44
  { VIRTUAL_INSN_X_AFTER, FR30BF_INSN_X_AFTER, FR30BF_SFMT_EMPTY },
45
  { VIRTUAL_INSN_X_BEFORE, FR30BF_INSN_X_BEFORE, FR30BF_SFMT_EMPTY },
46
  { VIRTUAL_INSN_X_CTI_CHAIN, FR30BF_INSN_X_CTI_CHAIN, FR30BF_SFMT_EMPTY },
47
  { VIRTUAL_INSN_X_CHAIN, FR30BF_INSN_X_CHAIN, FR30BF_SFMT_EMPTY },
48
  { VIRTUAL_INSN_X_BEGIN, FR30BF_INSN_X_BEGIN, FR30BF_SFMT_EMPTY },
49
  { FR30_INSN_ADD, FR30BF_INSN_ADD, FR30BF_SFMT_ADD },
50
  { FR30_INSN_ADDI, FR30BF_INSN_ADDI, FR30BF_SFMT_ADDI },
51
  { FR30_INSN_ADD2, FR30BF_INSN_ADD2, FR30BF_SFMT_ADD2 },
52
  { FR30_INSN_ADDC, FR30BF_INSN_ADDC, FR30BF_SFMT_ADDC },
53
  { FR30_INSN_ADDN, FR30BF_INSN_ADDN, FR30BF_SFMT_ADDN },
54
  { FR30_INSN_ADDNI, FR30BF_INSN_ADDNI, FR30BF_SFMT_ADDNI },
55
  { FR30_INSN_ADDN2, FR30BF_INSN_ADDN2, FR30BF_SFMT_ADDN2 },
56
  { FR30_INSN_SUB, FR30BF_INSN_SUB, FR30BF_SFMT_ADD },
57
  { FR30_INSN_SUBC, FR30BF_INSN_SUBC, FR30BF_SFMT_ADDC },
58
  { FR30_INSN_SUBN, FR30BF_INSN_SUBN, FR30BF_SFMT_ADDN },
59
  { FR30_INSN_CMP, FR30BF_INSN_CMP, FR30BF_SFMT_CMP },
60
  { FR30_INSN_CMPI, FR30BF_INSN_CMPI, FR30BF_SFMT_CMPI },
61
  { FR30_INSN_CMP2, FR30BF_INSN_CMP2, FR30BF_SFMT_CMP2 },
62
  { FR30_INSN_AND, FR30BF_INSN_AND, FR30BF_SFMT_AND },
63
  { FR30_INSN_OR, FR30BF_INSN_OR, FR30BF_SFMT_AND },
64
  { FR30_INSN_EOR, FR30BF_INSN_EOR, FR30BF_SFMT_AND },
65
  { FR30_INSN_ANDM, FR30BF_INSN_ANDM, FR30BF_SFMT_ANDM },
66
  { FR30_INSN_ANDH, FR30BF_INSN_ANDH, FR30BF_SFMT_ANDH },
67
  { FR30_INSN_ANDB, FR30BF_INSN_ANDB, FR30BF_SFMT_ANDB },
68
  { FR30_INSN_ORM, FR30BF_INSN_ORM, FR30BF_SFMT_ANDM },
69
  { FR30_INSN_ORH, FR30BF_INSN_ORH, FR30BF_SFMT_ANDH },
70
  { FR30_INSN_ORB, FR30BF_INSN_ORB, FR30BF_SFMT_ANDB },
71
  { FR30_INSN_EORM, FR30BF_INSN_EORM, FR30BF_SFMT_ANDM },
72
  { FR30_INSN_EORH, FR30BF_INSN_EORH, FR30BF_SFMT_ANDH },
73
  { FR30_INSN_EORB, FR30BF_INSN_EORB, FR30BF_SFMT_ANDB },
74
  { FR30_INSN_BANDL, FR30BF_INSN_BANDL, FR30BF_SFMT_BANDL },
75
  { FR30_INSN_BORL, FR30BF_INSN_BORL, FR30BF_SFMT_BANDL },
76
  { FR30_INSN_BEORL, FR30BF_INSN_BEORL, FR30BF_SFMT_BANDL },
77
  { FR30_INSN_BANDH, FR30BF_INSN_BANDH, FR30BF_SFMT_BANDL },
78
  { FR30_INSN_BORH, FR30BF_INSN_BORH, FR30BF_SFMT_BANDL },
79
  { FR30_INSN_BEORH, FR30BF_INSN_BEORH, FR30BF_SFMT_BANDL },
80
  { FR30_INSN_BTSTL, FR30BF_INSN_BTSTL, FR30BF_SFMT_BTSTL },
81
  { FR30_INSN_BTSTH, FR30BF_INSN_BTSTH, FR30BF_SFMT_BTSTL },
82
  { FR30_INSN_MUL, FR30BF_INSN_MUL, FR30BF_SFMT_MUL },
83
  { FR30_INSN_MULU, FR30BF_INSN_MULU, FR30BF_SFMT_MULU },
84
  { FR30_INSN_MULH, FR30BF_INSN_MULH, FR30BF_SFMT_MULH },
85
  { FR30_INSN_MULUH, FR30BF_INSN_MULUH, FR30BF_SFMT_MULH },
86
  { FR30_INSN_DIV0S, FR30BF_INSN_DIV0S, FR30BF_SFMT_DIV0S },
87
  { FR30_INSN_DIV0U, FR30BF_INSN_DIV0U, FR30BF_SFMT_DIV0U },
88
  { FR30_INSN_DIV1, FR30BF_INSN_DIV1, FR30BF_SFMT_DIV1 },
89
  { FR30_INSN_DIV2, FR30BF_INSN_DIV2, FR30BF_SFMT_DIV2 },
90
  { FR30_INSN_DIV3, FR30BF_INSN_DIV3, FR30BF_SFMT_DIV3 },
91
  { FR30_INSN_DIV4S, FR30BF_INSN_DIV4S, FR30BF_SFMT_DIV4S },
92
  { FR30_INSN_LSL, FR30BF_INSN_LSL, FR30BF_SFMT_LSL },
93
  { FR30_INSN_LSLI, FR30BF_INSN_LSLI, FR30BF_SFMT_LSLI },
94
  { FR30_INSN_LSL2, FR30BF_INSN_LSL2, FR30BF_SFMT_LSLI },
95
  { FR30_INSN_LSR, FR30BF_INSN_LSR, FR30BF_SFMT_LSL },
96
  { FR30_INSN_LSRI, FR30BF_INSN_LSRI, FR30BF_SFMT_LSLI },
97
  { FR30_INSN_LSR2, FR30BF_INSN_LSR2, FR30BF_SFMT_LSLI },
98
  { FR30_INSN_ASR, FR30BF_INSN_ASR, FR30BF_SFMT_LSL },
99
  { FR30_INSN_ASRI, FR30BF_INSN_ASRI, FR30BF_SFMT_LSLI },
100
  { FR30_INSN_ASR2, FR30BF_INSN_ASR2, FR30BF_SFMT_LSLI },
101
  { FR30_INSN_LDI8, FR30BF_INSN_LDI8, FR30BF_SFMT_LDI8 },
102
  { FR30_INSN_LDI20, FR30BF_INSN_LDI20, FR30BF_SFMT_LDI20 },
103
  { FR30_INSN_LDI32, FR30BF_INSN_LDI32, FR30BF_SFMT_LDI32 },
104
  { FR30_INSN_LD, FR30BF_INSN_LD, FR30BF_SFMT_LD },
105
  { FR30_INSN_LDUH, FR30BF_INSN_LDUH, FR30BF_SFMT_LD },
106
  { FR30_INSN_LDUB, FR30BF_INSN_LDUB, FR30BF_SFMT_LD },
107
  { FR30_INSN_LDR13, FR30BF_INSN_LDR13, FR30BF_SFMT_LDR13 },
108
  { FR30_INSN_LDR13UH, FR30BF_INSN_LDR13UH, FR30BF_SFMT_LDR13 },
109
  { FR30_INSN_LDR13UB, FR30BF_INSN_LDR13UB, FR30BF_SFMT_LDR13 },
110
  { FR30_INSN_LDR14, FR30BF_INSN_LDR14, FR30BF_SFMT_LDR14 },
111
  { FR30_INSN_LDR14UH, FR30BF_INSN_LDR14UH, FR30BF_SFMT_LDR14UH },
112
  { FR30_INSN_LDR14UB, FR30BF_INSN_LDR14UB, FR30BF_SFMT_LDR14UB },
113
  { FR30_INSN_LDR15, FR30BF_INSN_LDR15, FR30BF_SFMT_LDR15 },
114
  { FR30_INSN_LDR15GR, FR30BF_INSN_LDR15GR, FR30BF_SFMT_LDR15GR },
115
  { FR30_INSN_LDR15DR, FR30BF_INSN_LDR15DR, FR30BF_SFMT_LDR15DR },
116
  { FR30_INSN_LDR15PS, FR30BF_INSN_LDR15PS, FR30BF_SFMT_LDR15PS },
117
  { FR30_INSN_ST, FR30BF_INSN_ST, FR30BF_SFMT_ST },
118
  { FR30_INSN_STH, FR30BF_INSN_STH, FR30BF_SFMT_ST },
119
  { FR30_INSN_STB, FR30BF_INSN_STB, FR30BF_SFMT_ST },
120
  { FR30_INSN_STR13, FR30BF_INSN_STR13, FR30BF_SFMT_STR13 },
121
  { FR30_INSN_STR13H, FR30BF_INSN_STR13H, FR30BF_SFMT_STR13 },
122
  { FR30_INSN_STR13B, FR30BF_INSN_STR13B, FR30BF_SFMT_STR13 },
123
  { FR30_INSN_STR14, FR30BF_INSN_STR14, FR30BF_SFMT_STR14 },
124
  { FR30_INSN_STR14H, FR30BF_INSN_STR14H, FR30BF_SFMT_STR14H },
125
  { FR30_INSN_STR14B, FR30BF_INSN_STR14B, FR30BF_SFMT_STR14B },
126
  { FR30_INSN_STR15, FR30BF_INSN_STR15, FR30BF_SFMT_STR15 },
127
  { FR30_INSN_STR15GR, FR30BF_INSN_STR15GR, FR30BF_SFMT_STR15GR },
128
  { FR30_INSN_STR15DR, FR30BF_INSN_STR15DR, FR30BF_SFMT_STR15DR },
129
  { FR30_INSN_STR15PS, FR30BF_INSN_STR15PS, FR30BF_SFMT_STR15PS },
130
  { FR30_INSN_MOV, FR30BF_INSN_MOV, FR30BF_SFMT_MOV },
131
  { FR30_INSN_MOVDR, FR30BF_INSN_MOVDR, FR30BF_SFMT_MOVDR },
132
  { FR30_INSN_MOVPS, FR30BF_INSN_MOVPS, FR30BF_SFMT_MOVPS },
133
  { FR30_INSN_MOV2DR, FR30BF_INSN_MOV2DR, FR30BF_SFMT_MOV2DR },
134
  { FR30_INSN_MOV2PS, FR30BF_INSN_MOV2PS, FR30BF_SFMT_MOV2PS },
135
  { FR30_INSN_JMP, FR30BF_INSN_JMP, FR30BF_SFMT_JMP },
136
  { FR30_INSN_JMPD, FR30BF_INSN_JMPD, FR30BF_SFMT_JMP },
137
  { FR30_INSN_CALLR, FR30BF_INSN_CALLR, FR30BF_SFMT_CALLR },
138
  { FR30_INSN_CALLRD, FR30BF_INSN_CALLRD, FR30BF_SFMT_CALLR },
139
  { FR30_INSN_CALL, FR30BF_INSN_CALL, FR30BF_SFMT_CALL },
140
  { FR30_INSN_CALLD, FR30BF_INSN_CALLD, FR30BF_SFMT_CALL },
141
  { FR30_INSN_RET, FR30BF_INSN_RET, FR30BF_SFMT_RET },
142
  { FR30_INSN_RET_D, FR30BF_INSN_RET_D, FR30BF_SFMT_RET },
143
  { FR30_INSN_INT, FR30BF_INSN_INT, FR30BF_SFMT_INT },
144
  { FR30_INSN_INTE, FR30BF_INSN_INTE, FR30BF_SFMT_INTE },
145
  { FR30_INSN_RETI, FR30BF_INSN_RETI, FR30BF_SFMT_RETI },
146
  { FR30_INSN_BRAD, FR30BF_INSN_BRAD, FR30BF_SFMT_BRAD },
147
  { FR30_INSN_BRA, FR30BF_INSN_BRA, FR30BF_SFMT_BRAD },
148
  { FR30_INSN_BNOD, FR30BF_INSN_BNOD, FR30BF_SFMT_BNOD },
149
  { FR30_INSN_BNO, FR30BF_INSN_BNO, FR30BF_SFMT_BNOD },
150
  { FR30_INSN_BEQD, FR30BF_INSN_BEQD, FR30BF_SFMT_BEQD },
151
  { FR30_INSN_BEQ, FR30BF_INSN_BEQ, FR30BF_SFMT_BEQD },
152
  { FR30_INSN_BNED, FR30BF_INSN_BNED, FR30BF_SFMT_BEQD },
153
  { FR30_INSN_BNE, FR30BF_INSN_BNE, FR30BF_SFMT_BEQD },
154
  { FR30_INSN_BCD, FR30BF_INSN_BCD, FR30BF_SFMT_BCD },
155
  { FR30_INSN_BC, FR30BF_INSN_BC, FR30BF_SFMT_BCD },
156
  { FR30_INSN_BNCD, FR30BF_INSN_BNCD, FR30BF_SFMT_BCD },
157
  { FR30_INSN_BNC, FR30BF_INSN_BNC, FR30BF_SFMT_BCD },
158
  { FR30_INSN_BND, FR30BF_INSN_BND, FR30BF_SFMT_BND },
159
  { FR30_INSN_BN, FR30BF_INSN_BN, FR30BF_SFMT_BND },
160
  { FR30_INSN_BPD, FR30BF_INSN_BPD, FR30BF_SFMT_BND },
161
  { FR30_INSN_BP, FR30BF_INSN_BP, FR30BF_SFMT_BND },
162
  { FR30_INSN_BVD, FR30BF_INSN_BVD, FR30BF_SFMT_BVD },
163
  { FR30_INSN_BV, FR30BF_INSN_BV, FR30BF_SFMT_BVD },
164
  { FR30_INSN_BNVD, FR30BF_INSN_BNVD, FR30BF_SFMT_BVD },
165
  { FR30_INSN_BNV, FR30BF_INSN_BNV, FR30BF_SFMT_BVD },
166
  { FR30_INSN_BLTD, FR30BF_INSN_BLTD, FR30BF_SFMT_BLTD },
167
  { FR30_INSN_BLT, FR30BF_INSN_BLT, FR30BF_SFMT_BLTD },
168
  { FR30_INSN_BGED, FR30BF_INSN_BGED, FR30BF_SFMT_BLTD },
169
  { FR30_INSN_BGE, FR30BF_INSN_BGE, FR30BF_SFMT_BLTD },
170
  { FR30_INSN_BLED, FR30BF_INSN_BLED, FR30BF_SFMT_BLED },
171
  { FR30_INSN_BLE, FR30BF_INSN_BLE, FR30BF_SFMT_BLED },
172
  { FR30_INSN_BGTD, FR30BF_INSN_BGTD, FR30BF_SFMT_BLED },
173
  { FR30_INSN_BGT, FR30BF_INSN_BGT, FR30BF_SFMT_BLED },
174
  { FR30_INSN_BLSD, FR30BF_INSN_BLSD, FR30BF_SFMT_BLSD },
175
  { FR30_INSN_BLS, FR30BF_INSN_BLS, FR30BF_SFMT_BLSD },
176
  { FR30_INSN_BHID, FR30BF_INSN_BHID, FR30BF_SFMT_BLSD },
177
  { FR30_INSN_BHI, FR30BF_INSN_BHI, FR30BF_SFMT_BLSD },
178
  { FR30_INSN_DMOVR13, FR30BF_INSN_DMOVR13, FR30BF_SFMT_DMOVR13 },
179
  { FR30_INSN_DMOVR13H, FR30BF_INSN_DMOVR13H, FR30BF_SFMT_DMOVR13H },
180
  { FR30_INSN_DMOVR13B, FR30BF_INSN_DMOVR13B, FR30BF_SFMT_DMOVR13B },
181
  { FR30_INSN_DMOVR13PI, FR30BF_INSN_DMOVR13PI, FR30BF_SFMT_DMOVR13PI },
182
  { FR30_INSN_DMOVR13PIH, FR30BF_INSN_DMOVR13PIH, FR30BF_SFMT_DMOVR13PIH },
183
  { FR30_INSN_DMOVR13PIB, FR30BF_INSN_DMOVR13PIB, FR30BF_SFMT_DMOVR13PIB },
184
  { FR30_INSN_DMOVR15PI, FR30BF_INSN_DMOVR15PI, FR30BF_SFMT_DMOVR15PI },
185
  { FR30_INSN_DMOV2R13, FR30BF_INSN_DMOV2R13, FR30BF_SFMT_DMOV2R13 },
186
  { FR30_INSN_DMOV2R13H, FR30BF_INSN_DMOV2R13H, FR30BF_SFMT_DMOV2R13H },
187
  { FR30_INSN_DMOV2R13B, FR30BF_INSN_DMOV2R13B, FR30BF_SFMT_DMOV2R13B },
188
  { FR30_INSN_DMOV2R13PI, FR30BF_INSN_DMOV2R13PI, FR30BF_SFMT_DMOV2R13PI },
189
  { FR30_INSN_DMOV2R13PIH, FR30BF_INSN_DMOV2R13PIH, FR30BF_SFMT_DMOV2R13PIH },
190
  { FR30_INSN_DMOV2R13PIB, FR30BF_INSN_DMOV2R13PIB, FR30BF_SFMT_DMOV2R13PIB },
191
  { FR30_INSN_DMOV2R15PD, FR30BF_INSN_DMOV2R15PD, FR30BF_SFMT_DMOV2R15PD },
192
  { FR30_INSN_LDRES, FR30BF_INSN_LDRES, FR30BF_SFMT_LDRES },
193
  { FR30_INSN_STRES, FR30BF_INSN_STRES, FR30BF_SFMT_LDRES },
194
  { FR30_INSN_COPOP, FR30BF_INSN_COPOP, FR30BF_SFMT_COPOP },
195
  { FR30_INSN_COPLD, FR30BF_INSN_COPLD, FR30BF_SFMT_COPOP },
196
  { FR30_INSN_COPST, FR30BF_INSN_COPST, FR30BF_SFMT_COPOP },
197
  { FR30_INSN_COPSV, FR30BF_INSN_COPSV, FR30BF_SFMT_COPOP },
198
  { FR30_INSN_NOP, FR30BF_INSN_NOP, FR30BF_SFMT_BNOD },
199
  { FR30_INSN_ANDCCR, FR30BF_INSN_ANDCCR, FR30BF_SFMT_ANDCCR },
200
  { FR30_INSN_ORCCR, FR30BF_INSN_ORCCR, FR30BF_SFMT_ANDCCR },
201
  { FR30_INSN_STILM, FR30BF_INSN_STILM, FR30BF_SFMT_STILM },
202
  { FR30_INSN_ADDSP, FR30BF_INSN_ADDSP, FR30BF_SFMT_ADDSP },
203
  { FR30_INSN_EXTSB, FR30BF_INSN_EXTSB, FR30BF_SFMT_EXTSB },
204
  { FR30_INSN_EXTUB, FR30BF_INSN_EXTUB, FR30BF_SFMT_EXTUB },
205
  { FR30_INSN_EXTSH, FR30BF_INSN_EXTSH, FR30BF_SFMT_EXTSH },
206
  { FR30_INSN_EXTUH, FR30BF_INSN_EXTUH, FR30BF_SFMT_EXTUH },
207
  { FR30_INSN_LDM0, FR30BF_INSN_LDM0, FR30BF_SFMT_LDM0 },
208
  { FR30_INSN_LDM1, FR30BF_INSN_LDM1, FR30BF_SFMT_LDM1 },
209
  { FR30_INSN_STM0, FR30BF_INSN_STM0, FR30BF_SFMT_STM0 },
210
  { FR30_INSN_STM1, FR30BF_INSN_STM1, FR30BF_SFMT_STM1 },
211
  { FR30_INSN_ENTER, FR30BF_INSN_ENTER, FR30BF_SFMT_ENTER },
212
  { FR30_INSN_LEAVE, FR30BF_INSN_LEAVE, FR30BF_SFMT_LEAVE },
213
  { FR30_INSN_XCHB, FR30BF_INSN_XCHB, FR30BF_SFMT_XCHB },
214
};
215
 
216
static const struct insn_sem fr30bf_insn_sem_invalid = {
217
  VIRTUAL_INSN_X_INVALID, FR30BF_INSN_X_INVALID, FR30BF_SFMT_EMPTY
218
};
219
 
220
/* Initialize an IDESC from the compile-time computable parts.  */
221
 
222
static INLINE void
223
init_idesc (SIM_CPU *cpu, IDESC *id, const struct insn_sem *t)
224
{
225
  const CGEN_INSN *insn_table = CGEN_CPU_INSN_TABLE (CPU_CPU_DESC (cpu))->init_entries;
226
 
227
  id->num = t->index;
228
  id->sfmt = t->sfmt;
229
  if ((int) t->type <= 0)
230
    id->idata = & cgen_virtual_insn_table[- (int) t->type];
231
  else
232
    id->idata = & insn_table[t->type];
233
  id->attrs = CGEN_INSN_ATTRS (id->idata);
234
  /* Oh my god, a magic number.  */
235
  id->length = CGEN_INSN_BITSIZE (id->idata) / 8;
236
 
237
#if WITH_PROFILE_MODEL_P
238
  id->timing = & MODEL_TIMING (CPU_MODEL (cpu)) [t->index];
239
  {
240
    SIM_DESC sd = CPU_STATE (cpu);
241
    SIM_ASSERT (t->index == id->timing->num);
242
  }
243
#endif
244
 
245
  /* Semantic pointers are initialized elsewhere.  */
246
}
247
 
248
/* Initialize the instruction descriptor table.  */
249
 
250
void
251
fr30bf_init_idesc_table (SIM_CPU *cpu)
252
{
253
  IDESC *id,*tabend;
254
  const struct insn_sem *t,*tend;
255
  int tabsize = FR30BF_INSN_MAX;
256
  IDESC *table = fr30bf_insn_data;
257
 
258
  memset (table, 0, tabsize * sizeof (IDESC));
259
 
260
  /* First set all entries to the `invalid insn'.  */
261
  t = & fr30bf_insn_sem_invalid;
262
  for (id = table, tabend = table + tabsize; id < tabend; ++id)
263
    init_idesc (cpu, id, t);
264
 
265
  /* Now fill in the values for the chosen cpu.  */
266
  for (t = fr30bf_insn_sem, tend = t + sizeof (fr30bf_insn_sem) / sizeof (*t);
267
       t != tend; ++t)
268
    {
269
      init_idesc (cpu, & table[t->index], t);
270
    }
271
 
272
  /* Link the IDESC table into the cpu.  */
273
  CPU_IDESC (cpu) = table;
274
}
275
 
276
/* Given an instruction, return a pointer to its IDESC entry.  */
277
 
278
const IDESC *
279
fr30bf_decode (SIM_CPU *current_cpu, IADDR pc,
280
              CGEN_INSN_INT base_insn,
281
              ARGBUF *abuf)
282
{
283
  /* Result of decoder.  */
284
  FR30BF_INSN_TYPE itype;
285
  CGEN_INSN_INT insn = base_insn;
286
 
287
  {
288
 
289
    {
290
      unsigned int val = (((insn >> 8) & (255 << 0)));
291
      switch (val)
292
      {
293
      case 0 : itype = FR30BF_INSN_LDR13; goto extract_sfmt_ldr13;      case 1 : itype = FR30BF_INSN_LDR13UH; goto extract_sfmt_ldr13;      case 2 : itype = FR30BF_INSN_LDR13UB; goto extract_sfmt_ldr13;      case 3 : itype = FR30BF_INSN_LDR15; goto extract_sfmt_ldr15;      case 4 : itype = FR30BF_INSN_LD; goto extract_sfmt_ld;      case 5 : itype = FR30BF_INSN_LDUH; goto extract_sfmt_ld;      case 6 : itype = FR30BF_INSN_LDUB; goto extract_sfmt_ld;      case 7 :
294
        {
295
          unsigned int val = (((insn >> 6) & (1 << 1)) | ((insn >> 4) & (1 << 0)));
296
          switch (val)
297
          {
298
          case 0 : itype = FR30BF_INSN_LDR15GR; goto extract_sfmt_ldr15gr;          case 1 : itype = FR30BF_INSN_MOV2PS; goto extract_sfmt_mov2ps;          case 2 : itype = FR30BF_INSN_LDR15DR; goto extract_sfmt_ldr15dr;          case 3 : itype = FR30BF_INSN_LDR15PS; goto extract_sfmt_ldr15ps;          default : itype = FR30BF_INSN_X_INVALID; goto extract_sfmt_empty;
299
          }
300
        }
301
      case 8 : itype = FR30BF_INSN_DMOV2R13; goto extract_sfmt_dmov2r13;      case 9 : itype = FR30BF_INSN_DMOV2R13H; goto extract_sfmt_dmov2r13h;      case 10 : itype = FR30BF_INSN_DMOV2R13B; goto extract_sfmt_dmov2r13b;      case 11 : itype = FR30BF_INSN_DMOV2R15PD; goto extract_sfmt_dmov2r15pd;      case 12 : itype = FR30BF_INSN_DMOV2R13PI; goto extract_sfmt_dmov2r13pi;      case 13 : itype = FR30BF_INSN_DMOV2R13PIH; goto extract_sfmt_dmov2r13pih;      case 14 : itype = FR30BF_INSN_DMOV2R13PIB; goto extract_sfmt_dmov2r13pib;      case 15 : itype = FR30BF_INSN_ENTER; goto extract_sfmt_enter;      case 16 : itype = FR30BF_INSN_STR13; goto extract_sfmt_str13;      case 17 : itype = FR30BF_INSN_STR13H; goto extract_sfmt_str13;      case 18 : itype = FR30BF_INSN_STR13B; goto extract_sfmt_str13;      case 19 : itype = FR30BF_INSN_STR15; goto extract_sfmt_str15;      case 20 : itype = FR30BF_INSN_ST; goto extract_sfmt_st;      case 21 : itype = FR30BF_INSN_STH; goto extract_sfmt_st;      case 22 : itype = FR30BF_INSN_STB; goto extract_sfmt_st;      case 23 :
302
        {
303
          unsigned int val = (((insn >> 6) & (1 << 1)) | ((insn >> 4) & (1 << 0)));
304
          switch (val)
305
          {
306
          case 0 : itype = FR30BF_INSN_STR15GR; goto extract_sfmt_str15gr;          case 1 : itype = FR30BF_INSN_MOVPS; goto extract_sfmt_movps;          case 2 : itype = FR30BF_INSN_STR15DR; goto extract_sfmt_str15dr;          case 3 : itype = FR30BF_INSN_STR15PS; goto extract_sfmt_str15ps;          default : itype = FR30BF_INSN_X_INVALID; goto extract_sfmt_empty;
307
          }
308
        }
309
      case 24 : itype = FR30BF_INSN_DMOVR13; goto extract_sfmt_dmovr13;      case 25 : itype = FR30BF_INSN_DMOVR13H; goto extract_sfmt_dmovr13h;      case 26 : itype = FR30BF_INSN_DMOVR13B; goto extract_sfmt_dmovr13b;      case 27 : itype = FR30BF_INSN_DMOVR15PI; goto extract_sfmt_dmovr15pi;      case 28 : itype = FR30BF_INSN_DMOVR13PI; goto extract_sfmt_dmovr13pi;      case 29 : itype = FR30BF_INSN_DMOVR13PIH; goto extract_sfmt_dmovr13pih;      case 30 : itype = FR30BF_INSN_DMOVR13PIB; goto extract_sfmt_dmovr13pib;      case 31 : itype = FR30BF_INSN_INT; goto extract_sfmt_int;      case 32 : /* fall through */
310
      case 33 : /* fall through */
311
      case 34 : /* fall through */
312
      case 35 : /* fall through */
313
      case 36 : /* fall through */
314
      case 37 : /* fall through */
315
      case 38 : /* fall through */
316
      case 39 : /* fall through */
317
      case 40 : /* fall through */
318
      case 41 : /* fall through */
319
      case 42 : /* fall through */
320
      case 43 : /* fall through */
321
      case 44 : /* fall through */
322
      case 45 : /* fall through */
323
      case 46 : /* fall through */
324
      case 47 : itype = FR30BF_INSN_LDR14; goto extract_sfmt_ldr14;      case 48 : /* fall through */
325
      case 49 : /* fall through */
326
      case 50 : /* fall through */
327
      case 51 : /* fall through */
328
      case 52 : /* fall through */
329
      case 53 : /* fall through */
330
      case 54 : /* fall through */
331
      case 55 : /* fall through */
332
      case 56 : /* fall through */
333
      case 57 : /* fall through */
334
      case 58 : /* fall through */
335
      case 59 : /* fall through */
336
      case 60 : /* fall through */
337
      case 61 : /* fall through */
338
      case 62 : /* fall through */
339
      case 63 : itype = FR30BF_INSN_STR14; goto extract_sfmt_str14;      case 64 : /* fall through */
340
      case 65 : /* fall through */
341
      case 66 : /* fall through */
342
      case 67 : /* fall through */
343
      case 68 : /* fall through */
344
      case 69 : /* fall through */
345
      case 70 : /* fall through */
346
      case 71 : /* fall through */
347
      case 72 : /* fall through */
348
      case 73 : /* fall through */
349
      case 74 : /* fall through */
350
      case 75 : /* fall through */
351
      case 76 : /* fall through */
352
      case 77 : /* fall through */
353
      case 78 : /* fall through */
354
      case 79 : itype = FR30BF_INSN_LDR14UH; goto extract_sfmt_ldr14uh;      case 80 : /* fall through */
355
      case 81 : /* fall through */
356
      case 82 : /* fall through */
357
      case 83 : /* fall through */
358
      case 84 : /* fall through */
359
      case 85 : /* fall through */
360
      case 86 : /* fall through */
361
      case 87 : /* fall through */
362
      case 88 : /* fall through */
363
      case 89 : /* fall through */
364
      case 90 : /* fall through */
365
      case 91 : /* fall through */
366
      case 92 : /* fall through */
367
      case 93 : /* fall through */
368
      case 94 : /* fall through */
369
      case 95 : itype = FR30BF_INSN_STR14H; goto extract_sfmt_str14h;      case 96 : /* fall through */
370
      case 97 : /* fall through */
371
      case 98 : /* fall through */
372
      case 99 : /* fall through */
373
      case 100 : /* fall through */
374
      case 101 : /* fall through */
375
      case 102 : /* fall through */
376
      case 103 : /* fall through */
377
      case 104 : /* fall through */
378
      case 105 : /* fall through */
379
      case 106 : /* fall through */
380
      case 107 : /* fall through */
381
      case 108 : /* fall through */
382
      case 109 : /* fall through */
383
      case 110 : /* fall through */
384
      case 111 : itype = FR30BF_INSN_LDR14UB; goto extract_sfmt_ldr14ub;      case 112 : /* fall through */
385
      case 113 : /* fall through */
386
      case 114 : /* fall through */
387
      case 115 : /* fall through */
388
      case 116 : /* fall through */
389
      case 117 : /* fall through */
390
      case 118 : /* fall through */
391
      case 119 : /* fall through */
392
      case 120 : /* fall through */
393
      case 121 : /* fall through */
394
      case 122 : /* fall through */
395
      case 123 : /* fall through */
396
      case 124 : /* fall through */
397
      case 125 : /* fall through */
398
      case 126 : /* fall through */
399
      case 127 : itype = FR30BF_INSN_STR14B; goto extract_sfmt_str14b;      case 128 : itype = FR30BF_INSN_BANDL; goto extract_sfmt_bandl;      case 129 : itype = FR30BF_INSN_BANDH; goto extract_sfmt_bandl;      case 130 : itype = FR30BF_INSN_AND; goto extract_sfmt_and;      case 131 : itype = FR30BF_INSN_ANDCCR; goto extract_sfmt_andccr;      case 132 : itype = FR30BF_INSN_ANDM; goto extract_sfmt_andm;      case 133 : itype = FR30BF_INSN_ANDH; goto extract_sfmt_andh;      case 134 : itype = FR30BF_INSN_ANDB; goto extract_sfmt_andb;      case 135 : itype = FR30BF_INSN_STILM; goto extract_sfmt_stilm;      case 136 : itype = FR30BF_INSN_BTSTL; goto extract_sfmt_btstl;      case 137 : itype = FR30BF_INSN_BTSTH; goto extract_sfmt_btstl;      case 138 : itype = FR30BF_INSN_XCHB; goto extract_sfmt_xchb;      case 139 : itype = FR30BF_INSN_MOV; goto extract_sfmt_mov;      case 140 : itype = FR30BF_INSN_LDM0; goto extract_sfmt_ldm0;      case 141 : itype = FR30BF_INSN_LDM1; goto extract_sfmt_ldm1;      case 142 : itype = FR30BF_INSN_STM0; goto extract_sfmt_stm0;      case 143 : itype = FR30BF_INSN_STM1; goto extract_sfmt_stm1;      case 144 : itype = FR30BF_INSN_BORL; goto extract_sfmt_bandl;      case 145 : itype = FR30BF_INSN_BORH; goto extract_sfmt_bandl;      case 146 : itype = FR30BF_INSN_OR; goto extract_sfmt_and;      case 147 : itype = FR30BF_INSN_ORCCR; goto extract_sfmt_andccr;      case 148 : itype = FR30BF_INSN_ORM; goto extract_sfmt_andm;      case 149 : itype = FR30BF_INSN_ORH; goto extract_sfmt_andh;      case 150 : itype = FR30BF_INSN_ORB; goto extract_sfmt_andb;      case 151 :
400
        {
401
          unsigned int val = (((insn >> 4) & (15 << 0)));
402
          switch (val)
403
          {
404
          case 0 : itype = FR30BF_INSN_JMP; goto extract_sfmt_jmp;          case 1 : itype = FR30BF_INSN_CALLR; goto extract_sfmt_callr;          case 2 : itype = FR30BF_INSN_RET; goto extract_sfmt_ret;          case 3 : itype = FR30BF_INSN_RETI; goto extract_sfmt_reti;          case 4 : itype = FR30BF_INSN_DIV0S; goto extract_sfmt_div0s;          case 5 : itype = FR30BF_INSN_DIV0U; goto extract_sfmt_div0u;          case 6 : itype = FR30BF_INSN_DIV1; goto extract_sfmt_div1;          case 7 : itype = FR30BF_INSN_DIV2; goto extract_sfmt_div2;          case 8 : itype = FR30BF_INSN_EXTSB; goto extract_sfmt_extsb;          case 9 : itype = FR30BF_INSN_EXTUB; goto extract_sfmt_extub;          case 10 : itype = FR30BF_INSN_EXTSH; goto extract_sfmt_extsh;          case 11 : itype = FR30BF_INSN_EXTUH; goto extract_sfmt_extuh;          default : itype = FR30BF_INSN_X_INVALID; goto extract_sfmt_empty;
405
          }
406
        }
407
      case 152 : itype = FR30BF_INSN_BEORL; goto extract_sfmt_bandl;      case 153 : itype = FR30BF_INSN_BEORH; goto extract_sfmt_bandl;      case 154 : itype = FR30BF_INSN_EOR; goto extract_sfmt_and;      case 155 : itype = FR30BF_INSN_LDI20; goto extract_sfmt_ldi20;      case 156 : itype = FR30BF_INSN_EORM; goto extract_sfmt_andm;      case 157 : itype = FR30BF_INSN_EORH; goto extract_sfmt_andh;      case 158 : itype = FR30BF_INSN_EORB; goto extract_sfmt_andb;      case 159 :
408
        {
409
          unsigned int val = (((insn >> 4) & (15 << 0)));
410
          switch (val)
411
          {
412
          case 0 : itype = FR30BF_INSN_JMPD; goto extract_sfmt_jmp;          case 1 : itype = FR30BF_INSN_CALLRD; goto extract_sfmt_callr;          case 2 : itype = FR30BF_INSN_RET_D; goto extract_sfmt_ret;          case 3 : itype = FR30BF_INSN_INTE; goto extract_sfmt_inte;          case 6 : itype = FR30BF_INSN_DIV3; goto extract_sfmt_div3;          case 7 : itype = FR30BF_INSN_DIV4S; goto extract_sfmt_div4s;          case 8 : itype = FR30BF_INSN_LDI32; goto extract_sfmt_ldi32;          case 9 : itype = FR30BF_INSN_LEAVE; goto extract_sfmt_leave;          case 10 : itype = FR30BF_INSN_NOP; goto extract_sfmt_bnod;          case 12 : itype = FR30BF_INSN_COPOP; goto extract_sfmt_copop;          case 13 : itype = FR30BF_INSN_COPLD; goto extract_sfmt_copop;          case 14 : itype = FR30BF_INSN_COPST; goto extract_sfmt_copop;          case 15 : itype = FR30BF_INSN_COPSV; goto extract_sfmt_copop;          default : itype = FR30BF_INSN_X_INVALID; goto extract_sfmt_empty;
413
          }
414
        }
415
      case 160 : itype = FR30BF_INSN_ADDNI; goto extract_sfmt_addni;      case 161 : itype = FR30BF_INSN_ADDN2; goto extract_sfmt_addn2;      case 162 : itype = FR30BF_INSN_ADDN; goto extract_sfmt_addn;      case 163 : itype = FR30BF_INSN_ADDSP; goto extract_sfmt_addsp;      case 164 : itype = FR30BF_INSN_ADDI; goto extract_sfmt_addi;      case 165 : itype = FR30BF_INSN_ADD2; goto extract_sfmt_add2;      case 166 : itype = FR30BF_INSN_ADD; goto extract_sfmt_add;      case 167 : itype = FR30BF_INSN_ADDC; goto extract_sfmt_addc;      case 168 : itype = FR30BF_INSN_CMPI; goto extract_sfmt_cmpi;      case 169 : itype = FR30BF_INSN_CMP2; goto extract_sfmt_cmp2;      case 170 : itype = FR30BF_INSN_CMP; goto extract_sfmt_cmp;      case 171 : itype = FR30BF_INSN_MULU; goto extract_sfmt_mulu;      case 172 : itype = FR30BF_INSN_SUB; goto extract_sfmt_add;      case 173 : itype = FR30BF_INSN_SUBC; goto extract_sfmt_addc;      case 174 : itype = FR30BF_INSN_SUBN; goto extract_sfmt_addn;      case 175 : itype = FR30BF_INSN_MUL; goto extract_sfmt_mul;      case 176 : itype = FR30BF_INSN_LSRI; goto extract_sfmt_lsli;      case 177 : itype = FR30BF_INSN_LSR2; goto extract_sfmt_lsli;      case 178 : itype = FR30BF_INSN_LSR; goto extract_sfmt_lsl;      case 179 : itype = FR30BF_INSN_MOV2DR; goto extract_sfmt_mov2dr;      case 180 : itype = FR30BF_INSN_LSLI; goto extract_sfmt_lsli;      case 181 : itype = FR30BF_INSN_LSL2; goto extract_sfmt_lsli;      case 182 : itype = FR30BF_INSN_LSL; goto extract_sfmt_lsl;      case 183 : itype = FR30BF_INSN_MOVDR; goto extract_sfmt_movdr;      case 184 : itype = FR30BF_INSN_ASRI; goto extract_sfmt_lsli;      case 185 : itype = FR30BF_INSN_ASR2; goto extract_sfmt_lsli;      case 186 : itype = FR30BF_INSN_ASR; goto extract_sfmt_lsl;      case 187 : itype = FR30BF_INSN_MULUH; goto extract_sfmt_mulh;      case 188 : itype = FR30BF_INSN_LDRES; goto extract_sfmt_ldres;      case 189 : itype = FR30BF_INSN_STRES; goto extract_sfmt_ldres;      case 191 : itype = FR30BF_INSN_MULH; goto extract_sfmt_mulh;      case 192 : /* fall through */
416
      case 193 : /* fall through */
417
      case 194 : /* fall through */
418
      case 195 : /* fall through */
419
      case 196 : /* fall through */
420
      case 197 : /* fall through */
421
      case 198 : /* fall through */
422
      case 199 : /* fall through */
423
      case 200 : /* fall through */
424
      case 201 : /* fall through */
425
      case 202 : /* fall through */
426
      case 203 : /* fall through */
427
      case 204 : /* fall through */
428
      case 205 : /* fall through */
429
      case 206 : /* fall through */
430
      case 207 : itype = FR30BF_INSN_LDI8; goto extract_sfmt_ldi8;      case 208 : /* fall through */
431
      case 209 : /* fall through */
432
      case 210 : /* fall through */
433
      case 211 : /* fall through */
434
      case 212 : /* fall through */
435
      case 213 : /* fall through */
436
      case 214 : /* fall through */
437
      case 215 : itype = FR30BF_INSN_CALL; goto extract_sfmt_call;      case 216 : /* fall through */
438
      case 217 : /* fall through */
439
      case 218 : /* fall through */
440
      case 219 : /* fall through */
441
      case 220 : /* fall through */
442
      case 221 : /* fall through */
443
      case 222 : /* fall through */
444
      case 223 : itype = FR30BF_INSN_CALLD; goto extract_sfmt_call;      case 224 : itype = FR30BF_INSN_BRA; goto extract_sfmt_brad;      case 225 : itype = FR30BF_INSN_BNO; goto extract_sfmt_bnod;      case 226 : itype = FR30BF_INSN_BEQ; goto extract_sfmt_beqd;      case 227 : itype = FR30BF_INSN_BNE; goto extract_sfmt_beqd;      case 228 : itype = FR30BF_INSN_BC; goto extract_sfmt_bcd;      case 229 : itype = FR30BF_INSN_BNC; goto extract_sfmt_bcd;      case 230 : itype = FR30BF_INSN_BN; goto extract_sfmt_bnd;      case 231 : itype = FR30BF_INSN_BP; goto extract_sfmt_bnd;      case 232 : itype = FR30BF_INSN_BV; goto extract_sfmt_bvd;      case 233 : itype = FR30BF_INSN_BNV; goto extract_sfmt_bvd;      case 234 : itype = FR30BF_INSN_BLT; goto extract_sfmt_bltd;      case 235 : itype = FR30BF_INSN_BGE; goto extract_sfmt_bltd;      case 236 : itype = FR30BF_INSN_BLE; goto extract_sfmt_bled;      case 237 : itype = FR30BF_INSN_BGT; goto extract_sfmt_bled;      case 238 : itype = FR30BF_INSN_BLS; goto extract_sfmt_blsd;      case 239 : itype = FR30BF_INSN_BHI; goto extract_sfmt_blsd;      case 240 : itype = FR30BF_INSN_BRAD; goto extract_sfmt_brad;      case 241 : itype = FR30BF_INSN_BNOD; goto extract_sfmt_bnod;      case 242 : itype = FR30BF_INSN_BEQD; goto extract_sfmt_beqd;      case 243 : itype = FR30BF_INSN_BNED; goto extract_sfmt_beqd;      case 244 : itype = FR30BF_INSN_BCD; goto extract_sfmt_bcd;      case 245 : itype = FR30BF_INSN_BNCD; goto extract_sfmt_bcd;      case 246 : itype = FR30BF_INSN_BND; goto extract_sfmt_bnd;      case 247 : itype = FR30BF_INSN_BPD; goto extract_sfmt_bnd;      case 248 : itype = FR30BF_INSN_BVD; goto extract_sfmt_bvd;      case 249 : itype = FR30BF_INSN_BNVD; goto extract_sfmt_bvd;      case 250 : itype = FR30BF_INSN_BLTD; goto extract_sfmt_bltd;      case 251 : itype = FR30BF_INSN_BGED; goto extract_sfmt_bltd;      case 252 : itype = FR30BF_INSN_BLED; goto extract_sfmt_bled;      case 253 : itype = FR30BF_INSN_BGTD; goto extract_sfmt_bled;      case 254 : itype = FR30BF_INSN_BLSD; goto extract_sfmt_blsd;      case 255 : itype = FR30BF_INSN_BHID; goto extract_sfmt_blsd;      default : itype = FR30BF_INSN_X_INVALID; goto extract_sfmt_empty;
445
      }
446
    }
447
  }
448
 
449
  /* The instruction has been decoded, now extract the fields.  */
450
 
451
 extract_sfmt_empty:
452
  {
453
    const IDESC *idesc = &fr30bf_insn_data[itype];
454
#define FLD(f) abuf->fields.fmt_empty.f
455
 
456
 
457
  /* Record the fields for the semantic handler.  */
458
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_empty", (char *) 0));
459
 
460
#undef FLD
461
    return idesc;
462
  }
463
 
464
 extract_sfmt_add:
465
  {
466
    const IDESC *idesc = &fr30bf_insn_data[itype];
467
#define FLD(f) abuf->fields.sfmt_add.f
468
    UINT f_Rj;
469
    UINT f_Ri;
470
 
471
    f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
472
    f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
473
 
474
  /* Record the fields for the semantic handler.  */
475
  FLD (f_Ri) = f_Ri;
476
  FLD (f_Rj) = f_Rj;
477
  FLD (i_Ri) = & CPU (h_gr)[f_Ri];
478
  FLD (i_Rj) = & CPU (h_gr)[f_Rj];
479
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_add", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
480
 
481
#if WITH_PROFILE_MODEL_P
482
  /* Record the fields for profiling.  */
483
  if (PROFILE_MODEL_P (current_cpu))
484
    {
485
      FLD (in_Ri) = f_Ri;
486
      FLD (in_Rj) = f_Rj;
487
      FLD (out_Ri) = f_Ri;
488
    }
489
#endif
490
#undef FLD
491
    return idesc;
492
  }
493
 
494
 extract_sfmt_addi:
495
  {
496
    const IDESC *idesc = &fr30bf_insn_data[itype];
497
#define FLD(f) abuf->fields.sfmt_addi.f
498
    UINT f_u4;
499
    UINT f_Ri;
500
 
501
    f_u4 = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
502
    f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
503
 
504
  /* Record the fields for the semantic handler.  */
505
  FLD (f_Ri) = f_Ri;
506
  FLD (f_u4) = f_u4;
507
  FLD (i_Ri) = & CPU (h_gr)[f_Ri];
508
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addi", "f_Ri 0x%x", 'x', f_Ri, "f_u4 0x%x", 'x', f_u4, "Ri 0x%x", 'x', f_Ri, (char *) 0));
509
 
510
#if WITH_PROFILE_MODEL_P
511
  /* Record the fields for profiling.  */
512
  if (PROFILE_MODEL_P (current_cpu))
513
    {
514
      FLD (in_Ri) = f_Ri;
515
      FLD (out_Ri) = f_Ri;
516
    }
517
#endif
518
#undef FLD
519
    return idesc;
520
  }
521
 
522
 extract_sfmt_add2:
523
  {
524
    const IDESC *idesc = &fr30bf_insn_data[itype];
525
#define FLD(f) abuf->fields.sfmt_add2.f
526
    SI f_m4;
527
    UINT f_Ri;
528
 
529
    f_m4 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 4)) | (((-1) << (4))));
530
    f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
531
 
532
  /* Record the fields for the semantic handler.  */
533
  FLD (f_Ri) = f_Ri;
534
  FLD (f_m4) = f_m4;
535
  FLD (i_Ri) = & CPU (h_gr)[f_Ri];
536
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_add2", "f_Ri 0x%x", 'x', f_Ri, "f_m4 0x%x", 'x', f_m4, "Ri 0x%x", 'x', f_Ri, (char *) 0));
537
 
538
#if WITH_PROFILE_MODEL_P
539
  /* Record the fields for profiling.  */
540
  if (PROFILE_MODEL_P (current_cpu))
541
    {
542
      FLD (in_Ri) = f_Ri;
543
      FLD (out_Ri) = f_Ri;
544
    }
545
#endif
546
#undef FLD
547
    return idesc;
548
  }
549
 
550
 extract_sfmt_addc:
551
  {
552
    const IDESC *idesc = &fr30bf_insn_data[itype];
553
#define FLD(f) abuf->fields.sfmt_add.f
554
    UINT f_Rj;
555
    UINT f_Ri;
556
 
557
    f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
558
    f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
559
 
560
  /* Record the fields for the semantic handler.  */
561
  FLD (f_Ri) = f_Ri;
562
  FLD (f_Rj) = f_Rj;
563
  FLD (i_Ri) = & CPU (h_gr)[f_Ri];
564
  FLD (i_Rj) = & CPU (h_gr)[f_Rj];
565
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addc", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
566
 
567
#if WITH_PROFILE_MODEL_P
568
  /* Record the fields for profiling.  */
569
  if (PROFILE_MODEL_P (current_cpu))
570
    {
571
      FLD (in_Ri) = f_Ri;
572
      FLD (in_Rj) = f_Rj;
573
      FLD (out_Ri) = f_Ri;
574
    }
575
#endif
576
#undef FLD
577
    return idesc;
578
  }
579
 
580
 extract_sfmt_addn:
581
  {
582
    const IDESC *idesc = &fr30bf_insn_data[itype];
583
#define FLD(f) abuf->fields.sfmt_add.f
584
    UINT f_Rj;
585
    UINT f_Ri;
586
 
587
    f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
588
    f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
589
 
590
  /* Record the fields for the semantic handler.  */
591
  FLD (f_Ri) = f_Ri;
592
  FLD (f_Rj) = f_Rj;
593
  FLD (i_Ri) = & CPU (h_gr)[f_Ri];
594
  FLD (i_Rj) = & CPU (h_gr)[f_Rj];
595
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addn", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
596
 
597
#if WITH_PROFILE_MODEL_P
598
  /* Record the fields for profiling.  */
599
  if (PROFILE_MODEL_P (current_cpu))
600
    {
601
      FLD (in_Ri) = f_Ri;
602
      FLD (in_Rj) = f_Rj;
603
      FLD (out_Ri) = f_Ri;
604
    }
605
#endif
606
#undef FLD
607
    return idesc;
608
  }
609
 
610
 extract_sfmt_addni:
611
  {
612
    const IDESC *idesc = &fr30bf_insn_data[itype];
613
#define FLD(f) abuf->fields.sfmt_addi.f
614
    UINT f_u4;
615
    UINT f_Ri;
616
 
617
    f_u4 = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
618
    f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
619
 
620
  /* Record the fields for the semantic handler.  */
621
  FLD (f_Ri) = f_Ri;
622
  FLD (f_u4) = f_u4;
623
  FLD (i_Ri) = & CPU (h_gr)[f_Ri];
624
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addni", "f_Ri 0x%x", 'x', f_Ri, "f_u4 0x%x", 'x', f_u4, "Ri 0x%x", 'x', f_Ri, (char *) 0));
625
 
626
#if WITH_PROFILE_MODEL_P
627
  /* Record the fields for profiling.  */
628
  if (PROFILE_MODEL_P (current_cpu))
629
    {
630
      FLD (in_Ri) = f_Ri;
631
      FLD (out_Ri) = f_Ri;
632
    }
633
#endif
634
#undef FLD
635
    return idesc;
636
  }
637
 
638
 extract_sfmt_addn2:
639
  {
640
    const IDESC *idesc = &fr30bf_insn_data[itype];
641
#define FLD(f) abuf->fields.sfmt_add2.f
642
    SI f_m4;
643
    UINT f_Ri;
644
 
645
    f_m4 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 4)) | (((-1) << (4))));
646
    f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
647
 
648
  /* Record the fields for the semantic handler.  */
649
  FLD (f_Ri) = f_Ri;
650
  FLD (f_m4) = f_m4;
651
  FLD (i_Ri) = & CPU (h_gr)[f_Ri];
652
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addn2", "f_Ri 0x%x", 'x', f_Ri, "f_m4 0x%x", 'x', f_m4, "Ri 0x%x", 'x', f_Ri, (char *) 0));
653
 
654
#if WITH_PROFILE_MODEL_P
655
  /* Record the fields for profiling.  */
656
  if (PROFILE_MODEL_P (current_cpu))
657
    {
658
      FLD (in_Ri) = f_Ri;
659
      FLD (out_Ri) = f_Ri;
660
    }
661
#endif
662
#undef FLD
663
    return idesc;
664
  }
665
 
666
 extract_sfmt_cmp:
667
  {
668
    const IDESC *idesc = &fr30bf_insn_data[itype];
669
#define FLD(f) abuf->fields.sfmt_str13.f
670
    UINT f_Rj;
671
    UINT f_Ri;
672
 
673
    f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
674
    f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
675
 
676
  /* Record the fields for the semantic handler.  */
677
  FLD (f_Ri) = f_Ri;
678
  FLD (f_Rj) = f_Rj;
679
  FLD (i_Ri) = & CPU (h_gr)[f_Ri];
680
  FLD (i_Rj) = & CPU (h_gr)[f_Rj];
681
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_cmp", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
682
 
683
#if WITH_PROFILE_MODEL_P
684
  /* Record the fields for profiling.  */
685
  if (PROFILE_MODEL_P (current_cpu))
686
    {
687
      FLD (in_Ri) = f_Ri;
688
      FLD (in_Rj) = f_Rj;
689
    }
690
#endif
691
#undef FLD
692
    return idesc;
693
  }
694
 
695
 extract_sfmt_cmpi:
696
  {
697
    const IDESC *idesc = &fr30bf_insn_data[itype];
698
#define FLD(f) abuf->fields.sfmt_addi.f
699
    UINT f_u4;
700
    UINT f_Ri;
701
 
702
    f_u4 = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
703
    f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
704
 
705
  /* Record the fields for the semantic handler.  */
706
  FLD (f_Ri) = f_Ri;
707
  FLD (f_u4) = f_u4;
708
  FLD (i_Ri) = & CPU (h_gr)[f_Ri];
709
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_cmpi", "f_Ri 0x%x", 'x', f_Ri, "f_u4 0x%x", 'x', f_u4, "Ri 0x%x", 'x', f_Ri, (char *) 0));
710
 
711
#if WITH_PROFILE_MODEL_P
712
  /* Record the fields for profiling.  */
713
  if (PROFILE_MODEL_P (current_cpu))
714
    {
715
      FLD (in_Ri) = f_Ri;
716
    }
717
#endif
718
#undef FLD
719
    return idesc;
720
  }
721
 
722
 extract_sfmt_cmp2:
723
  {
724
    const IDESC *idesc = &fr30bf_insn_data[itype];
725
#define FLD(f) abuf->fields.sfmt_add2.f
726
    SI f_m4;
727
    UINT f_Ri;
728
 
729
    f_m4 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 4)) | (((-1) << (4))));
730
    f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
731
 
732
  /* Record the fields for the semantic handler.  */
733
  FLD (f_Ri) = f_Ri;
734
  FLD (f_m4) = f_m4;
735
  FLD (i_Ri) = & CPU (h_gr)[f_Ri];
736
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_cmp2", "f_Ri 0x%x", 'x', f_Ri, "f_m4 0x%x", 'x', f_m4, "Ri 0x%x", 'x', f_Ri, (char *) 0));
737
 
738
#if WITH_PROFILE_MODEL_P
739
  /* Record the fields for profiling.  */
740
  if (PROFILE_MODEL_P (current_cpu))
741
    {
742
      FLD (in_Ri) = f_Ri;
743
    }
744
#endif
745
#undef FLD
746
    return idesc;
747
  }
748
 
749
 extract_sfmt_and:
750
  {
751
    const IDESC *idesc = &fr30bf_insn_data[itype];
752
#define FLD(f) abuf->fields.sfmt_add.f
753
    UINT f_Rj;
754
    UINT f_Ri;
755
 
756
    f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
757
    f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
758
 
759
  /* Record the fields for the semantic handler.  */
760
  FLD (f_Ri) = f_Ri;
761
  FLD (f_Rj) = f_Rj;
762
  FLD (i_Ri) = & CPU (h_gr)[f_Ri];
763
  FLD (i_Rj) = & CPU (h_gr)[f_Rj];
764
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_and", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
765
 
766
#if WITH_PROFILE_MODEL_P
767
  /* Record the fields for profiling.  */
768
  if (PROFILE_MODEL_P (current_cpu))
769
    {
770
      FLD (in_Ri) = f_Ri;
771
      FLD (in_Rj) = f_Rj;
772
      FLD (out_Ri) = f_Ri;
773
    }
774
#endif
775
#undef FLD
776
    return idesc;
777
  }
778
 
779
 extract_sfmt_andm:
780
  {
781
    const IDESC *idesc = &fr30bf_insn_data[itype];
782
#define FLD(f) abuf->fields.sfmt_str13.f
783
    UINT f_Rj;
784
    UINT f_Ri;
785
 
786
    f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
787
    f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
788
 
789
  /* Record the fields for the semantic handler.  */
790
  FLD (f_Ri) = f_Ri;
791
  FLD (f_Rj) = f_Rj;
792
  FLD (i_Ri) = & CPU (h_gr)[f_Ri];
793
  FLD (i_Rj) = & CPU (h_gr)[f_Rj];
794
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_andm", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
795
 
796
#if WITH_PROFILE_MODEL_P
797
  /* Record the fields for profiling.  */
798
  if (PROFILE_MODEL_P (current_cpu))
799
    {
800
      FLD (in_Ri) = f_Ri;
801
      FLD (in_Rj) = f_Rj;
802
    }
803
#endif
804
#undef FLD
805
    return idesc;
806
  }
807
 
808
 extract_sfmt_andh:
809
  {
810
    const IDESC *idesc = &fr30bf_insn_data[itype];
811
#define FLD(f) abuf->fields.sfmt_str13.f
812
    UINT f_Rj;
813
    UINT f_Ri;
814
 
815
    f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
816
    f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
817
 
818
  /* Record the fields for the semantic handler.  */
819
  FLD (f_Ri) = f_Ri;
820
  FLD (f_Rj) = f_Rj;
821
  FLD (i_Ri) = & CPU (h_gr)[f_Ri];
822
  FLD (i_Rj) = & CPU (h_gr)[f_Rj];
823
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_andh", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
824
 
825
#if WITH_PROFILE_MODEL_P
826
  /* Record the fields for profiling.  */
827
  if (PROFILE_MODEL_P (current_cpu))
828
    {
829
      FLD (in_Ri) = f_Ri;
830
      FLD (in_Rj) = f_Rj;
831
    }
832
#endif
833
#undef FLD
834
    return idesc;
835
  }
836
 
837
 extract_sfmt_andb:
838
  {
839
    const IDESC *idesc = &fr30bf_insn_data[itype];
840
#define FLD(f) abuf->fields.sfmt_str13.f
841
    UINT f_Rj;
842
    UINT f_Ri;
843
 
844
    f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
845
    f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
846
 
847
  /* Record the fields for the semantic handler.  */
848
  FLD (f_Ri) = f_Ri;
849
  FLD (f_Rj) = f_Rj;
850
  FLD (i_Ri) = & CPU (h_gr)[f_Ri];
851
  FLD (i_Rj) = & CPU (h_gr)[f_Rj];
852
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_andb", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
853
 
854
#if WITH_PROFILE_MODEL_P
855
  /* Record the fields for profiling.  */
856
  if (PROFILE_MODEL_P (current_cpu))
857
    {
858
      FLD (in_Ri) = f_Ri;
859
      FLD (in_Rj) = f_Rj;
860
    }
861
#endif
862
#undef FLD
863
    return idesc;
864
  }
865
 
866
 extract_sfmt_bandl:
867
  {
868
    const IDESC *idesc = &fr30bf_insn_data[itype];
869
#define FLD(f) abuf->fields.sfmt_addi.f
870
    UINT f_u4;
871
    UINT f_Ri;
872
 
873
    f_u4 = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
874
    f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
875
 
876
  /* Record the fields for the semantic handler.  */
877
  FLD (f_Ri) = f_Ri;
878
  FLD (f_u4) = f_u4;
879
  FLD (i_Ri) = & CPU (h_gr)[f_Ri];
880
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bandl", "f_Ri 0x%x", 'x', f_Ri, "f_u4 0x%x", 'x', f_u4, "Ri 0x%x", 'x', f_Ri, (char *) 0));
881
 
882
#if WITH_PROFILE_MODEL_P
883
  /* Record the fields for profiling.  */
884
  if (PROFILE_MODEL_P (current_cpu))
885
    {
886
      FLD (in_Ri) = f_Ri;
887
    }
888
#endif
889
#undef FLD
890
    return idesc;
891
  }
892
 
893
 extract_sfmt_btstl:
894
  {
895
    const IDESC *idesc = &fr30bf_insn_data[itype];
896
#define FLD(f) abuf->fields.sfmt_addi.f
897
    UINT f_u4;
898
    UINT f_Ri;
899
 
900
    f_u4 = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
901
    f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
902
 
903
  /* Record the fields for the semantic handler.  */
904
  FLD (f_Ri) = f_Ri;
905
  FLD (f_u4) = f_u4;
906
  FLD (i_Ri) = & CPU (h_gr)[f_Ri];
907
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_btstl", "f_Ri 0x%x", 'x', f_Ri, "f_u4 0x%x", 'x', f_u4, "Ri 0x%x", 'x', f_Ri, (char *) 0));
908
 
909
#if WITH_PROFILE_MODEL_P
910
  /* Record the fields for profiling.  */
911
  if (PROFILE_MODEL_P (current_cpu))
912
    {
913
      FLD (in_Ri) = f_Ri;
914
    }
915
#endif
916
#undef FLD
917
    return idesc;
918
  }
919
 
920
 extract_sfmt_mul:
921
  {
922
    const IDESC *idesc = &fr30bf_insn_data[itype];
923
#define FLD(f) abuf->fields.sfmt_str13.f
924
    UINT f_Rj;
925
    UINT f_Ri;
926
 
927
    f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
928
    f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
929
 
930
  /* Record the fields for the semantic handler.  */
931
  FLD (f_Ri) = f_Ri;
932
  FLD (f_Rj) = f_Rj;
933
  FLD (i_Ri) = & CPU (h_gr)[f_Ri];
934
  FLD (i_Rj) = & CPU (h_gr)[f_Rj];
935
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mul", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
936
 
937
#if WITH_PROFILE_MODEL_P
938
  /* Record the fields for profiling.  */
939
  if (PROFILE_MODEL_P (current_cpu))
940
    {
941
      FLD (in_Ri) = f_Ri;
942
      FLD (in_Rj) = f_Rj;
943
    }
944
#endif
945
#undef FLD
946
    return idesc;
947
  }
948
 
949
 extract_sfmt_mulu:
950
  {
951
    const IDESC *idesc = &fr30bf_insn_data[itype];
952
#define FLD(f) abuf->fields.sfmt_str13.f
953
    UINT f_Rj;
954
    UINT f_Ri;
955
 
956
    f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
957
    f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
958
 
959
  /* Record the fields for the semantic handler.  */
960
  FLD (f_Ri) = f_Ri;
961
  FLD (f_Rj) = f_Rj;
962
  FLD (i_Ri) = & CPU (h_gr)[f_Ri];
963
  FLD (i_Rj) = & CPU (h_gr)[f_Rj];
964
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mulu", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
965
 
966
#if WITH_PROFILE_MODEL_P
967
  /* Record the fields for profiling.  */
968
  if (PROFILE_MODEL_P (current_cpu))
969
    {
970
      FLD (in_Ri) = f_Ri;
971
      FLD (in_Rj) = f_Rj;
972
    }
973
#endif
974
#undef FLD
975
    return idesc;
976
  }
977
 
978
 extract_sfmt_mulh:
979
  {
980
    const IDESC *idesc = &fr30bf_insn_data[itype];
981
#define FLD(f) abuf->fields.sfmt_str13.f
982
    UINT f_Rj;
983
    UINT f_Ri;
984
 
985
    f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
986
    f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
987
 
988
  /* Record the fields for the semantic handler.  */
989
  FLD (f_Ri) = f_Ri;
990
  FLD (f_Rj) = f_Rj;
991
  FLD (i_Ri) = & CPU (h_gr)[f_Ri];
992
  FLD (i_Rj) = & CPU (h_gr)[f_Rj];
993
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mulh", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
994
 
995
#if WITH_PROFILE_MODEL_P
996
  /* Record the fields for profiling.  */
997
  if (PROFILE_MODEL_P (current_cpu))
998
    {
999
      FLD (in_Ri) = f_Ri;
1000
      FLD (in_Rj) = f_Rj;
1001
    }
1002
#endif
1003
#undef FLD
1004
    return idesc;
1005
  }
1006
 
1007
 extract_sfmt_div0s:
1008
  {
1009
    const IDESC *idesc = &fr30bf_insn_data[itype];
1010
#define FLD(f) abuf->fields.sfmt_mov2dr.f
1011
    UINT f_Ri;
1012
 
1013
    f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1014
 
1015
  /* Record the fields for the semantic handler.  */
1016
  FLD (f_Ri) = f_Ri;
1017
  FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1018
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_div0s", "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1019
 
1020
#if WITH_PROFILE_MODEL_P
1021
  /* Record the fields for profiling.  */
1022
  if (PROFILE_MODEL_P (current_cpu))
1023
    {
1024
      FLD (in_Ri) = f_Ri;
1025
    }
1026
#endif
1027
#undef FLD
1028
    return idesc;
1029
  }
1030
 
1031
 extract_sfmt_div0u:
1032
  {
1033
    const IDESC *idesc = &fr30bf_insn_data[itype];
1034
#define FLD(f) abuf->fields.fmt_empty.f
1035
 
1036
 
1037
  /* Record the fields for the semantic handler.  */
1038
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_div0u", (char *) 0));
1039
 
1040
#undef FLD
1041
    return idesc;
1042
  }
1043
 
1044
 extract_sfmt_div1:
1045
  {
1046
    const IDESC *idesc = &fr30bf_insn_data[itype];
1047
#define FLD(f) abuf->fields.sfmt_mov2dr.f
1048
    UINT f_Ri;
1049
 
1050
    f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1051
 
1052
  /* Record the fields for the semantic handler.  */
1053
  FLD (f_Ri) = f_Ri;
1054
  FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1055
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_div1", "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1056
 
1057
#if WITH_PROFILE_MODEL_P
1058
  /* Record the fields for profiling.  */
1059
  if (PROFILE_MODEL_P (current_cpu))
1060
    {
1061
      FLD (in_Ri) = f_Ri;
1062
    }
1063
#endif
1064
#undef FLD
1065
    return idesc;
1066
  }
1067
 
1068
 extract_sfmt_div2:
1069
  {
1070
    const IDESC *idesc = &fr30bf_insn_data[itype];
1071
#define FLD(f) abuf->fields.sfmt_mov2dr.f
1072
    UINT f_Ri;
1073
 
1074
    f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1075
 
1076
  /* Record the fields for the semantic handler.  */
1077
  FLD (f_Ri) = f_Ri;
1078
  FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1079
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_div2", "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1080
 
1081
#if WITH_PROFILE_MODEL_P
1082
  /* Record the fields for profiling.  */
1083
  if (PROFILE_MODEL_P (current_cpu))
1084
    {
1085
      FLD (in_Ri) = f_Ri;
1086
    }
1087
#endif
1088
#undef FLD
1089
    return idesc;
1090
  }
1091
 
1092
 extract_sfmt_div3:
1093
  {
1094
    const IDESC *idesc = &fr30bf_insn_data[itype];
1095
#define FLD(f) abuf->fields.fmt_empty.f
1096
 
1097
 
1098
  /* Record the fields for the semantic handler.  */
1099
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_div3", (char *) 0));
1100
 
1101
#undef FLD
1102
    return idesc;
1103
  }
1104
 
1105
 extract_sfmt_div4s:
1106
  {
1107
    const IDESC *idesc = &fr30bf_insn_data[itype];
1108
#define FLD(f) abuf->fields.fmt_empty.f
1109
 
1110
 
1111
  /* Record the fields for the semantic handler.  */
1112
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_div4s", (char *) 0));
1113
 
1114
#undef FLD
1115
    return idesc;
1116
  }
1117
 
1118
 extract_sfmt_lsl:
1119
  {
1120
    const IDESC *idesc = &fr30bf_insn_data[itype];
1121
#define FLD(f) abuf->fields.sfmt_add.f
1122
    UINT f_Rj;
1123
    UINT f_Ri;
1124
 
1125
    f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1126
    f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1127
 
1128
  /* Record the fields for the semantic handler.  */
1129
  FLD (f_Ri) = f_Ri;
1130
  FLD (f_Rj) = f_Rj;
1131
  FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1132
  FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1133
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_lsl", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
1134
 
1135
#if WITH_PROFILE_MODEL_P
1136
  /* Record the fields for profiling.  */
1137
  if (PROFILE_MODEL_P (current_cpu))
1138
    {
1139
      FLD (in_Ri) = f_Ri;
1140
      FLD (in_Rj) = f_Rj;
1141
      FLD (out_Ri) = f_Ri;
1142
    }
1143
#endif
1144
#undef FLD
1145
    return idesc;
1146
  }
1147
 
1148
 extract_sfmt_lsli:
1149
  {
1150
    const IDESC *idesc = &fr30bf_insn_data[itype];
1151
#define FLD(f) abuf->fields.sfmt_addi.f
1152
    UINT f_u4;
1153
    UINT f_Ri;
1154
 
1155
    f_u4 = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1156
    f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1157
 
1158
  /* Record the fields for the semantic handler.  */
1159
  FLD (f_Ri) = f_Ri;
1160
  FLD (f_u4) = f_u4;
1161
  FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1162
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_lsli", "f_Ri 0x%x", 'x', f_Ri, "f_u4 0x%x", 'x', f_u4, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1163
 
1164
#if WITH_PROFILE_MODEL_P
1165
  /* Record the fields for profiling.  */
1166
  if (PROFILE_MODEL_P (current_cpu))
1167
    {
1168
      FLD (in_Ri) = f_Ri;
1169
      FLD (out_Ri) = f_Ri;
1170
    }
1171
#endif
1172
#undef FLD
1173
    return idesc;
1174
  }
1175
 
1176
 extract_sfmt_ldi8:
1177
  {
1178
    const IDESC *idesc = &fr30bf_insn_data[itype];
1179
#define FLD(f) abuf->fields.sfmt_ldi8.f
1180
    UINT f_i8;
1181
    UINT f_Ri;
1182
 
1183
    f_i8 = EXTRACT_MSB0_UINT (insn, 16, 4, 8);
1184
    f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1185
 
1186
  /* Record the fields for the semantic handler.  */
1187
  FLD (f_i8) = f_i8;
1188
  FLD (f_Ri) = f_Ri;
1189
  FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1190
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldi8", "f_i8 0x%x", 'x', f_i8, "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1191
 
1192
#if WITH_PROFILE_MODEL_P
1193
  /* Record the fields for profiling.  */
1194
  if (PROFILE_MODEL_P (current_cpu))
1195
    {
1196
      FLD (out_Ri) = f_Ri;
1197
    }
1198
#endif
1199
#undef FLD
1200
    return idesc;
1201
  }
1202
 
1203
 extract_sfmt_ldi20:
1204
  {
1205
    const IDESC *idesc = &fr30bf_insn_data[itype];
1206
#define FLD(f) abuf->fields.sfmt_ldi20.f
1207
    UINT f_i20_16;
1208
    UINT f_i20_4;
1209
    UINT f_Ri;
1210
    UINT f_i20;
1211
    /* Contents of trailing part of insn.  */
1212
    UINT word_1;
1213
 
1214
  word_1 = GETIMEMUHI (current_cpu, pc + 2);
1215
    f_i20_16 = (0|(EXTRACT_MSB0_UINT (word_1, 16, 0, 16) << 0));
1216
    f_i20_4 = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1217
    f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1218
{
1219
  f_i20 = ((((f_i20_4) << (16))) | (f_i20_16));
1220
}
1221
 
1222
  /* Record the fields for the semantic handler.  */
1223
  FLD (f_i20) = f_i20;
1224
  FLD (f_Ri) = f_Ri;
1225
  FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1226
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldi20", "f_i20 0x%x", 'x', f_i20, "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1227
 
1228
#if WITH_PROFILE_MODEL_P
1229
  /* Record the fields for profiling.  */
1230
  if (PROFILE_MODEL_P (current_cpu))
1231
    {
1232
      FLD (out_Ri) = f_Ri;
1233
    }
1234
#endif
1235
#undef FLD
1236
    return idesc;
1237
  }
1238
 
1239
 extract_sfmt_ldi32:
1240
  {
1241
    const IDESC *idesc = &fr30bf_insn_data[itype];
1242
#define FLD(f) abuf->fields.sfmt_ldi32.f
1243
    UINT f_i32;
1244
    UINT f_Ri;
1245
    /* Contents of trailing part of insn.  */
1246
    UINT word_1;
1247
    UINT word_2;
1248
 
1249
  word_1 = GETIMEMUHI (current_cpu, pc + 2);
1250
  word_2 = GETIMEMUHI (current_cpu, pc + 4);
1251
    f_i32 = (0|(EXTRACT_MSB0_UINT (word_2, 16, 0, 16) << 0)|(EXTRACT_MSB0_UINT (word_1, 16, 0, 16) << 16));
1252
    f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1253
 
1254
  /* Record the fields for the semantic handler.  */
1255
  FLD (f_i32) = f_i32;
1256
  FLD (f_Ri) = f_Ri;
1257
  FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1258
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldi32", "f_i32 0x%x", 'x', f_i32, "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1259
 
1260
#if WITH_PROFILE_MODEL_P
1261
  /* Record the fields for profiling.  */
1262
  if (PROFILE_MODEL_P (current_cpu))
1263
    {
1264
      FLD (out_Ri) = f_Ri;
1265
    }
1266
#endif
1267
#undef FLD
1268
    return idesc;
1269
  }
1270
 
1271
 extract_sfmt_ld:
1272
  {
1273
    const IDESC *idesc = &fr30bf_insn_data[itype];
1274
#define FLD(f) abuf->fields.sfmt_ldr13.f
1275
    UINT f_Rj;
1276
    UINT f_Ri;
1277
 
1278
    f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1279
    f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1280
 
1281
  /* Record the fields for the semantic handler.  */
1282
  FLD (f_Rj) = f_Rj;
1283
  FLD (f_Ri) = f_Ri;
1284
  FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1285
  FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1286
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ld", "f_Rj 0x%x", 'x', f_Rj, "f_Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1287
 
1288
#if WITH_PROFILE_MODEL_P
1289
  /* Record the fields for profiling.  */
1290
  if (PROFILE_MODEL_P (current_cpu))
1291
    {
1292
      FLD (in_Rj) = f_Rj;
1293
      FLD (out_Ri) = f_Ri;
1294
    }
1295
#endif
1296
#undef FLD
1297
    return idesc;
1298
  }
1299
 
1300
 extract_sfmt_ldr13:
1301
  {
1302
    const IDESC *idesc = &fr30bf_insn_data[itype];
1303
#define FLD(f) abuf->fields.sfmt_ldr13.f
1304
    UINT f_Rj;
1305
    UINT f_Ri;
1306
 
1307
    f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1308
    f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1309
 
1310
  /* Record the fields for the semantic handler.  */
1311
  FLD (f_Rj) = f_Rj;
1312
  FLD (f_Ri) = f_Ri;
1313
  FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1314
  FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1315
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldr13", "f_Rj 0x%x", 'x', f_Rj, "f_Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1316
 
1317
#if WITH_PROFILE_MODEL_P
1318
  /* Record the fields for profiling.  */
1319
  if (PROFILE_MODEL_P (current_cpu))
1320
    {
1321
      FLD (in_Rj) = f_Rj;
1322
      FLD (in_h_gr_13) = 13;
1323
      FLD (out_Ri) = f_Ri;
1324
    }
1325
#endif
1326
#undef FLD
1327
    return idesc;
1328
  }
1329
 
1330
 extract_sfmt_ldr14:
1331
  {
1332
    const IDESC *idesc = &fr30bf_insn_data[itype];
1333
#define FLD(f) abuf->fields.sfmt_ldr14.f
1334
    SI f_disp10;
1335
    UINT f_Ri;
1336
 
1337
    f_disp10 = ((EXTRACT_MSB0_INT (insn, 16, 4, 8)) << (2));
1338
    f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1339
 
1340
  /* Record the fields for the semantic handler.  */
1341
  FLD (f_disp10) = f_disp10;
1342
  FLD (f_Ri) = f_Ri;
1343
  FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1344
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldr14", "f_disp10 0x%x", 'x', f_disp10, "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1345
 
1346
#if WITH_PROFILE_MODEL_P
1347
  /* Record the fields for profiling.  */
1348
  if (PROFILE_MODEL_P (current_cpu))
1349
    {
1350
      FLD (in_h_gr_14) = 14;
1351
      FLD (out_Ri) = f_Ri;
1352
    }
1353
#endif
1354
#undef FLD
1355
    return idesc;
1356
  }
1357
 
1358
 extract_sfmt_ldr14uh:
1359
  {
1360
    const IDESC *idesc = &fr30bf_insn_data[itype];
1361
#define FLD(f) abuf->fields.sfmt_ldr14uh.f
1362
    SI f_disp9;
1363
    UINT f_Ri;
1364
 
1365
    f_disp9 = ((EXTRACT_MSB0_INT (insn, 16, 4, 8)) << (1));
1366
    f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1367
 
1368
  /* Record the fields for the semantic handler.  */
1369
  FLD (f_disp9) = f_disp9;
1370
  FLD (f_Ri) = f_Ri;
1371
  FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1372
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldr14uh", "f_disp9 0x%x", 'x', f_disp9, "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1373
 
1374
#if WITH_PROFILE_MODEL_P
1375
  /* Record the fields for profiling.  */
1376
  if (PROFILE_MODEL_P (current_cpu))
1377
    {
1378
      FLD (in_h_gr_14) = 14;
1379
      FLD (out_Ri) = f_Ri;
1380
    }
1381
#endif
1382
#undef FLD
1383
    return idesc;
1384
  }
1385
 
1386
 extract_sfmt_ldr14ub:
1387
  {
1388
    const IDESC *idesc = &fr30bf_insn_data[itype];
1389
#define FLD(f) abuf->fields.sfmt_ldr14ub.f
1390
    INT f_disp8;
1391
    UINT f_Ri;
1392
 
1393
    f_disp8 = EXTRACT_MSB0_INT (insn, 16, 4, 8);
1394
    f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1395
 
1396
  /* Record the fields for the semantic handler.  */
1397
  FLD (f_disp8) = f_disp8;
1398
  FLD (f_Ri) = f_Ri;
1399
  FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1400
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldr14ub", "f_disp8 0x%x", 'x', f_disp8, "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1401
 
1402
#if WITH_PROFILE_MODEL_P
1403
  /* Record the fields for profiling.  */
1404
  if (PROFILE_MODEL_P (current_cpu))
1405
    {
1406
      FLD (in_h_gr_14) = 14;
1407
      FLD (out_Ri) = f_Ri;
1408
    }
1409
#endif
1410
#undef FLD
1411
    return idesc;
1412
  }
1413
 
1414
 extract_sfmt_ldr15:
1415
  {
1416
    const IDESC *idesc = &fr30bf_insn_data[itype];
1417
#define FLD(f) abuf->fields.sfmt_ldr15.f
1418
    USI f_udisp6;
1419
    UINT f_Ri;
1420
 
1421
    f_udisp6 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 4)) << (2));
1422
    f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1423
 
1424
  /* Record the fields for the semantic handler.  */
1425
  FLD (f_udisp6) = f_udisp6;
1426
  FLD (f_Ri) = f_Ri;
1427
  FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1428
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldr15", "f_udisp6 0x%x", 'x', f_udisp6, "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1429
 
1430
#if WITH_PROFILE_MODEL_P
1431
  /* Record the fields for profiling.  */
1432
  if (PROFILE_MODEL_P (current_cpu))
1433
    {
1434
      FLD (in_h_gr_15) = 15;
1435
      FLD (out_Ri) = f_Ri;
1436
    }
1437
#endif
1438
#undef FLD
1439
    return idesc;
1440
  }
1441
 
1442
 extract_sfmt_ldr15gr:
1443
  {
1444
    const IDESC *idesc = &fr30bf_insn_data[itype];
1445
#define FLD(f) abuf->fields.sfmt_ldr15gr.f
1446
    UINT f_Ri;
1447
 
1448
    f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1449
 
1450
  /* Record the fields for the semantic handler.  */
1451
  FLD (f_Ri) = f_Ri;
1452
  FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1453
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldr15gr", "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1454
 
1455
#if WITH_PROFILE_MODEL_P
1456
  /* Record the fields for profiling.  */
1457
  if (PROFILE_MODEL_P (current_cpu))
1458
    {
1459
      FLD (in_h_gr_15) = 15;
1460
      FLD (out_Ri) = f_Ri;
1461
      FLD (out_h_gr_15) = 15;
1462
    }
1463
#endif
1464
#undef FLD
1465
    return idesc;
1466
  }
1467
 
1468
 extract_sfmt_ldr15dr:
1469
  {
1470
    const IDESC *idesc = &fr30bf_insn_data[itype];
1471
#define FLD(f) abuf->fields.sfmt_ldr15dr.f
1472
    UINT f_Rs2;
1473
 
1474
    f_Rs2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1475
 
1476
  /* Record the fields for the semantic handler.  */
1477
  FLD (f_Rs2) = f_Rs2;
1478
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldr15dr", "f_Rs2 0x%x", 'x', f_Rs2, (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 (in_h_gr_15) = 15;
1485
      FLD (out_h_gr_15) = 15;
1486
    }
1487
#endif
1488
#undef FLD
1489
    return idesc;
1490
  }
1491
 
1492
 extract_sfmt_ldr15ps:
1493
  {
1494
    const IDESC *idesc = &fr30bf_insn_data[itype];
1495
#define FLD(f) abuf->fields.sfmt_addsp.f
1496
 
1497
 
1498
  /* Record the fields for the semantic handler.  */
1499
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldr15ps", (char *) 0));
1500
 
1501
#if WITH_PROFILE_MODEL_P
1502
  /* Record the fields for profiling.  */
1503
  if (PROFILE_MODEL_P (current_cpu))
1504
    {
1505
      FLD (in_h_gr_15) = 15;
1506
      FLD (out_h_gr_15) = 15;
1507
    }
1508
#endif
1509
#undef FLD
1510
    return idesc;
1511
  }
1512
 
1513
 extract_sfmt_st:
1514
  {
1515
    const IDESC *idesc = &fr30bf_insn_data[itype];
1516
#define FLD(f) abuf->fields.sfmt_str13.f
1517
    UINT f_Rj;
1518
    UINT f_Ri;
1519
 
1520
    f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1521
    f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1522
 
1523
  /* Record the fields for the semantic handler.  */
1524
  FLD (f_Ri) = f_Ri;
1525
  FLD (f_Rj) = f_Rj;
1526
  FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1527
  FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1528
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_st", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
1529
 
1530
#if WITH_PROFILE_MODEL_P
1531
  /* Record the fields for profiling.  */
1532
  if (PROFILE_MODEL_P (current_cpu))
1533
    {
1534
      FLD (in_Ri) = f_Ri;
1535
      FLD (in_Rj) = f_Rj;
1536
    }
1537
#endif
1538
#undef FLD
1539
    return idesc;
1540
  }
1541
 
1542
 extract_sfmt_str13:
1543
  {
1544
    const IDESC *idesc = &fr30bf_insn_data[itype];
1545
#define FLD(f) abuf->fields.sfmt_str13.f
1546
    UINT f_Rj;
1547
    UINT f_Ri;
1548
 
1549
    f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1550
    f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1551
 
1552
  /* Record the fields for the semantic handler.  */
1553
  FLD (f_Ri) = f_Ri;
1554
  FLD (f_Rj) = f_Rj;
1555
  FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1556
  FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1557
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_str13", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
1558
 
1559
#if WITH_PROFILE_MODEL_P
1560
  /* Record the fields for profiling.  */
1561
  if (PROFILE_MODEL_P (current_cpu))
1562
    {
1563
      FLD (in_Ri) = f_Ri;
1564
      FLD (in_Rj) = f_Rj;
1565
      FLD (in_h_gr_13) = 13;
1566
    }
1567
#endif
1568
#undef FLD
1569
    return idesc;
1570
  }
1571
 
1572
 extract_sfmt_str14:
1573
  {
1574
    const IDESC *idesc = &fr30bf_insn_data[itype];
1575
#define FLD(f) abuf->fields.sfmt_str14.f
1576
    SI f_disp10;
1577
    UINT f_Ri;
1578
 
1579
    f_disp10 = ((EXTRACT_MSB0_INT (insn, 16, 4, 8)) << (2));
1580
    f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1581
 
1582
  /* Record the fields for the semantic handler.  */
1583
  FLD (f_Ri) = f_Ri;
1584
  FLD (f_disp10) = f_disp10;
1585
  FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1586
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_str14", "f_Ri 0x%x", 'x', f_Ri, "f_disp10 0x%x", 'x', f_disp10, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1587
 
1588
#if WITH_PROFILE_MODEL_P
1589
  /* Record the fields for profiling.  */
1590
  if (PROFILE_MODEL_P (current_cpu))
1591
    {
1592
      FLD (in_Ri) = f_Ri;
1593
      FLD (in_h_gr_14) = 14;
1594
    }
1595
#endif
1596
#undef FLD
1597
    return idesc;
1598
  }
1599
 
1600
 extract_sfmt_str14h:
1601
  {
1602
    const IDESC *idesc = &fr30bf_insn_data[itype];
1603
#define FLD(f) abuf->fields.sfmt_str14h.f
1604
    SI f_disp9;
1605
    UINT f_Ri;
1606
 
1607
    f_disp9 = ((EXTRACT_MSB0_INT (insn, 16, 4, 8)) << (1));
1608
    f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1609
 
1610
  /* Record the fields for the semantic handler.  */
1611
  FLD (f_Ri) = f_Ri;
1612
  FLD (f_disp9) = f_disp9;
1613
  FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1614
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_str14h", "f_Ri 0x%x", 'x', f_Ri, "f_disp9 0x%x", 'x', f_disp9, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1615
 
1616
#if WITH_PROFILE_MODEL_P
1617
  /* Record the fields for profiling.  */
1618
  if (PROFILE_MODEL_P (current_cpu))
1619
    {
1620
      FLD (in_Ri) = f_Ri;
1621
      FLD (in_h_gr_14) = 14;
1622
    }
1623
#endif
1624
#undef FLD
1625
    return idesc;
1626
  }
1627
 
1628
 extract_sfmt_str14b:
1629
  {
1630
    const IDESC *idesc = &fr30bf_insn_data[itype];
1631
#define FLD(f) abuf->fields.sfmt_str14b.f
1632
    INT f_disp8;
1633
    UINT f_Ri;
1634
 
1635
    f_disp8 = EXTRACT_MSB0_INT (insn, 16, 4, 8);
1636
    f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1637
 
1638
  /* Record the fields for the semantic handler.  */
1639
  FLD (f_Ri) = f_Ri;
1640
  FLD (f_disp8) = f_disp8;
1641
  FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1642
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_str14b", "f_Ri 0x%x", 'x', f_Ri, "f_disp8 0x%x", 'x', f_disp8, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1643
 
1644
#if WITH_PROFILE_MODEL_P
1645
  /* Record the fields for profiling.  */
1646
  if (PROFILE_MODEL_P (current_cpu))
1647
    {
1648
      FLD (in_Ri) = f_Ri;
1649
      FLD (in_h_gr_14) = 14;
1650
    }
1651
#endif
1652
#undef FLD
1653
    return idesc;
1654
  }
1655
 
1656
 extract_sfmt_str15:
1657
  {
1658
    const IDESC *idesc = &fr30bf_insn_data[itype];
1659
#define FLD(f) abuf->fields.sfmt_str15.f
1660
    USI f_udisp6;
1661
    UINT f_Ri;
1662
 
1663
    f_udisp6 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 4)) << (2));
1664
    f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1665
 
1666
  /* Record the fields for the semantic handler.  */
1667
  FLD (f_Ri) = f_Ri;
1668
  FLD (f_udisp6) = f_udisp6;
1669
  FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1670
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_str15", "f_Ri 0x%x", 'x', f_Ri, "f_udisp6 0x%x", 'x', f_udisp6, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1671
 
1672
#if WITH_PROFILE_MODEL_P
1673
  /* Record the fields for profiling.  */
1674
  if (PROFILE_MODEL_P (current_cpu))
1675
    {
1676
      FLD (in_Ri) = f_Ri;
1677
      FLD (in_h_gr_15) = 15;
1678
    }
1679
#endif
1680
#undef FLD
1681
    return idesc;
1682
  }
1683
 
1684
 extract_sfmt_str15gr:
1685
  {
1686
    const IDESC *idesc = &fr30bf_insn_data[itype];
1687
#define FLD(f) abuf->fields.sfmt_str15gr.f
1688
    UINT f_Ri;
1689
 
1690
    f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1691
 
1692
  /* Record the fields for the semantic handler.  */
1693
  FLD (f_Ri) = f_Ri;
1694
  FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1695
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_str15gr", "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (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_Ri) = f_Ri;
1702
      FLD (in_h_gr_15) = 15;
1703
      FLD (out_h_gr_15) = 15;
1704
    }
1705
#endif
1706
#undef FLD
1707
    return idesc;
1708
  }
1709
 
1710
 extract_sfmt_str15dr:
1711
  {
1712
    const IDESC *idesc = &fr30bf_insn_data[itype];
1713
#define FLD(f) abuf->fields.sfmt_ldr15dr.f
1714
    UINT f_Rs2;
1715
 
1716
    f_Rs2 = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1717
 
1718
  /* Record the fields for the semantic handler.  */
1719
  FLD (f_Rs2) = f_Rs2;
1720
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_str15dr", "f_Rs2 0x%x", 'x', f_Rs2, (char *) 0));
1721
 
1722
#if WITH_PROFILE_MODEL_P
1723
  /* Record the fields for profiling.  */
1724
  if (PROFILE_MODEL_P (current_cpu))
1725
    {
1726
      FLD (in_h_gr_15) = 15;
1727
      FLD (out_h_gr_15) = 15;
1728
    }
1729
#endif
1730
#undef FLD
1731
    return idesc;
1732
  }
1733
 
1734
 extract_sfmt_str15ps:
1735
  {
1736
    const IDESC *idesc = &fr30bf_insn_data[itype];
1737
#define FLD(f) abuf->fields.sfmt_addsp.f
1738
 
1739
 
1740
  /* Record the fields for the semantic handler.  */
1741
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_str15ps", (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_h_gr_15) = 15;
1748
      FLD (out_h_gr_15) = 15;
1749
    }
1750
#endif
1751
#undef FLD
1752
    return idesc;
1753
  }
1754
 
1755
 extract_sfmt_mov:
1756
  {
1757
    const IDESC *idesc = &fr30bf_insn_data[itype];
1758
#define FLD(f) abuf->fields.sfmt_ldr13.f
1759
    UINT f_Rj;
1760
    UINT f_Ri;
1761
 
1762
    f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1763
    f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1764
 
1765
  /* Record the fields for the semantic handler.  */
1766
  FLD (f_Rj) = f_Rj;
1767
  FLD (f_Ri) = f_Ri;
1768
  FLD (i_Rj) = & CPU (h_gr)[f_Rj];
1769
  FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1770
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mov", "f_Rj 0x%x", 'x', f_Rj, "f_Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1771
 
1772
#if WITH_PROFILE_MODEL_P
1773
  /* Record the fields for profiling.  */
1774
  if (PROFILE_MODEL_P (current_cpu))
1775
    {
1776
      FLD (in_Rj) = f_Rj;
1777
      FLD (out_Ri) = f_Ri;
1778
    }
1779
#endif
1780
#undef FLD
1781
    return idesc;
1782
  }
1783
 
1784
 extract_sfmt_movdr:
1785
  {
1786
    const IDESC *idesc = &fr30bf_insn_data[itype];
1787
#define FLD(f) abuf->fields.sfmt_movdr.f
1788
    UINT f_Rs1;
1789
    UINT f_Ri;
1790
 
1791
    f_Rs1 = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1792
    f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1793
 
1794
  /* Record the fields for the semantic handler.  */
1795
  FLD (f_Rs1) = f_Rs1;
1796
  FLD (f_Ri) = f_Ri;
1797
  FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1798
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movdr", "f_Rs1 0x%x", 'x', f_Rs1, "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1799
 
1800
#if WITH_PROFILE_MODEL_P
1801
  /* Record the fields for profiling.  */
1802
  if (PROFILE_MODEL_P (current_cpu))
1803
    {
1804
      FLD (out_Ri) = f_Ri;
1805
    }
1806
#endif
1807
#undef FLD
1808
    return idesc;
1809
  }
1810
 
1811
 extract_sfmt_movps:
1812
  {
1813
    const IDESC *idesc = &fr30bf_insn_data[itype];
1814
#define FLD(f) abuf->fields.sfmt_movdr.f
1815
    UINT f_Ri;
1816
 
1817
    f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1818
 
1819
  /* Record the fields for the semantic handler.  */
1820
  FLD (f_Ri) = f_Ri;
1821
  FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1822
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_movps", "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1823
 
1824
#if WITH_PROFILE_MODEL_P
1825
  /* Record the fields for profiling.  */
1826
  if (PROFILE_MODEL_P (current_cpu))
1827
    {
1828
      FLD (out_Ri) = f_Ri;
1829
    }
1830
#endif
1831
#undef FLD
1832
    return idesc;
1833
  }
1834
 
1835
 extract_sfmt_mov2dr:
1836
  {
1837
    const IDESC *idesc = &fr30bf_insn_data[itype];
1838
#define FLD(f) abuf->fields.sfmt_mov2dr.f
1839
    UINT f_Rs1;
1840
    UINT f_Ri;
1841
 
1842
    f_Rs1 = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
1843
    f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1844
 
1845
  /* Record the fields for the semantic handler.  */
1846
  FLD (f_Ri) = f_Ri;
1847
  FLD (f_Rs1) = f_Rs1;
1848
  FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1849
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mov2dr", "f_Ri 0x%x", 'x', f_Ri, "f_Rs1 0x%x", 'x', f_Rs1, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1850
 
1851
#if WITH_PROFILE_MODEL_P
1852
  /* Record the fields for profiling.  */
1853
  if (PROFILE_MODEL_P (current_cpu))
1854
    {
1855
      FLD (in_Ri) = f_Ri;
1856
    }
1857
#endif
1858
#undef FLD
1859
    return idesc;
1860
  }
1861
 
1862
 extract_sfmt_mov2ps:
1863
  {
1864
    const IDESC *idesc = &fr30bf_insn_data[itype];
1865
#define FLD(f) abuf->fields.sfmt_mov2dr.f
1866
    UINT f_Ri;
1867
 
1868
    f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1869
 
1870
  /* Record the fields for the semantic handler.  */
1871
  FLD (f_Ri) = f_Ri;
1872
  FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1873
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_mov2ps", "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1874
 
1875
#if WITH_PROFILE_MODEL_P
1876
  /* Record the fields for profiling.  */
1877
  if (PROFILE_MODEL_P (current_cpu))
1878
    {
1879
      FLD (in_Ri) = f_Ri;
1880
    }
1881
#endif
1882
#undef FLD
1883
    return idesc;
1884
  }
1885
 
1886
 extract_sfmt_jmp:
1887
  {
1888
    const IDESC *idesc = &fr30bf_insn_data[itype];
1889
#define FLD(f) abuf->fields.sfmt_mov2dr.f
1890
    UINT f_Ri;
1891
 
1892
    f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1893
 
1894
  /* Record the fields for the semantic handler.  */
1895
  FLD (f_Ri) = f_Ri;
1896
  FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1897
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_jmp", "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (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_Ri) = f_Ri;
1904
    }
1905
#endif
1906
#undef FLD
1907
    return idesc;
1908
  }
1909
 
1910
 extract_sfmt_callr:
1911
  {
1912
    const IDESC *idesc = &fr30bf_insn_data[itype];
1913
#define FLD(f) abuf->fields.sfmt_mov2dr.f
1914
    UINT f_Ri;
1915
 
1916
    f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
1917
 
1918
  /* Record the fields for the semantic handler.  */
1919
  FLD (f_Ri) = f_Ri;
1920
  FLD (i_Ri) = & CPU (h_gr)[f_Ri];
1921
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_callr", "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
1922
 
1923
#if WITH_PROFILE_MODEL_P
1924
  /* Record the fields for profiling.  */
1925
  if (PROFILE_MODEL_P (current_cpu))
1926
    {
1927
      FLD (in_Ri) = f_Ri;
1928
    }
1929
#endif
1930
#undef FLD
1931
    return idesc;
1932
  }
1933
 
1934
 extract_sfmt_call:
1935
  {
1936
    const IDESC *idesc = &fr30bf_insn_data[itype];
1937
#define FLD(f) abuf->fields.sfmt_call.f
1938
    SI f_rel12;
1939
 
1940
    f_rel12 = ((((EXTRACT_MSB0_INT (insn, 16, 5, 11)) << (1))) + (((pc) + (2))));
1941
 
1942
  /* Record the fields for the semantic handler.  */
1943
  FLD (i_label12) = f_rel12;
1944
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_call", "label12 0x%x", 'x', f_rel12, (char *) 0));
1945
 
1946
#if WITH_PROFILE_MODEL_P
1947
  /* Record the fields for profiling.  */
1948
  if (PROFILE_MODEL_P (current_cpu))
1949
    {
1950
    }
1951
#endif
1952
#undef FLD
1953
    return idesc;
1954
  }
1955
 
1956
 extract_sfmt_ret:
1957
  {
1958
    const IDESC *idesc = &fr30bf_insn_data[itype];
1959
#define FLD(f) abuf->fields.fmt_empty.f
1960
 
1961
 
1962
  /* Record the fields for the semantic handler.  */
1963
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ret", (char *) 0));
1964
 
1965
#if WITH_PROFILE_MODEL_P
1966
  /* Record the fields for profiling.  */
1967
  if (PROFILE_MODEL_P (current_cpu))
1968
    {
1969
    }
1970
#endif
1971
#undef FLD
1972
    return idesc;
1973
  }
1974
 
1975
 extract_sfmt_int:
1976
  {
1977
    const IDESC *idesc = &fr30bf_insn_data[itype];
1978
#define FLD(f) abuf->fields.sfmt_int.f
1979
    UINT f_u8;
1980
 
1981
    f_u8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
1982
 
1983
  /* Record the fields for the semantic handler.  */
1984
  FLD (f_u8) = f_u8;
1985
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_int", "f_u8 0x%x", 'x', f_u8, (char *) 0));
1986
 
1987
#if WITH_PROFILE_MODEL_P
1988
  /* Record the fields for profiling.  */
1989
  if (PROFILE_MODEL_P (current_cpu))
1990
    {
1991
    }
1992
#endif
1993
#undef FLD
1994
    return idesc;
1995
  }
1996
 
1997
 extract_sfmt_inte:
1998
  {
1999
    const IDESC *idesc = &fr30bf_insn_data[itype];
2000
#define FLD(f) abuf->fields.fmt_empty.f
2001
 
2002
 
2003
  /* Record the fields for the semantic handler.  */
2004
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_inte", (char *) 0));
2005
 
2006
#if WITH_PROFILE_MODEL_P
2007
  /* Record the fields for profiling.  */
2008
  if (PROFILE_MODEL_P (current_cpu))
2009
    {
2010
    }
2011
#endif
2012
#undef FLD
2013
    return idesc;
2014
  }
2015
 
2016
 extract_sfmt_reti:
2017
  {
2018
    const IDESC *idesc = &fr30bf_insn_data[itype];
2019
#define FLD(f) abuf->fields.fmt_empty.f
2020
 
2021
 
2022
  /* Record the fields for the semantic handler.  */
2023
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_reti", (char *) 0));
2024
 
2025
#if WITH_PROFILE_MODEL_P
2026
  /* Record the fields for profiling.  */
2027
  if (PROFILE_MODEL_P (current_cpu))
2028
    {
2029
    }
2030
#endif
2031
#undef FLD
2032
    return idesc;
2033
  }
2034
 
2035
 extract_sfmt_brad:
2036
  {
2037
    const IDESC *idesc = &fr30bf_insn_data[itype];
2038
#define FLD(f) abuf->fields.sfmt_brad.f
2039
    SI f_rel9;
2040
 
2041
    f_rel9 = ((((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (1))) + (((pc) + (2))));
2042
 
2043
  /* Record the fields for the semantic handler.  */
2044
  FLD (i_label9) = f_rel9;
2045
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_brad", "label9 0x%x", 'x', f_rel9, (char *) 0));
2046
 
2047
#if WITH_PROFILE_MODEL_P
2048
  /* Record the fields for profiling.  */
2049
  if (PROFILE_MODEL_P (current_cpu))
2050
    {
2051
    }
2052
#endif
2053
#undef FLD
2054
    return idesc;
2055
  }
2056
 
2057
 extract_sfmt_bnod:
2058
  {
2059
    const IDESC *idesc = &fr30bf_insn_data[itype];
2060
#define FLD(f) abuf->fields.fmt_empty.f
2061
 
2062
 
2063
  /* Record the fields for the semantic handler.  */
2064
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bnod", (char *) 0));
2065
 
2066
#undef FLD
2067
    return idesc;
2068
  }
2069
 
2070
 extract_sfmt_beqd:
2071
  {
2072
    const IDESC *idesc = &fr30bf_insn_data[itype];
2073
#define FLD(f) abuf->fields.sfmt_brad.f
2074
    SI f_rel9;
2075
 
2076
    f_rel9 = ((((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (1))) + (((pc) + (2))));
2077
 
2078
  /* Record the fields for the semantic handler.  */
2079
  FLD (i_label9) = f_rel9;
2080
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_beqd", "label9 0x%x", 'x', f_rel9, (char *) 0));
2081
 
2082
#if WITH_PROFILE_MODEL_P
2083
  /* Record the fields for profiling.  */
2084
  if (PROFILE_MODEL_P (current_cpu))
2085
    {
2086
    }
2087
#endif
2088
#undef FLD
2089
    return idesc;
2090
  }
2091
 
2092
 extract_sfmt_bcd:
2093
  {
2094
    const IDESC *idesc = &fr30bf_insn_data[itype];
2095
#define FLD(f) abuf->fields.sfmt_brad.f
2096
    SI f_rel9;
2097
 
2098
    f_rel9 = ((((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (1))) + (((pc) + (2))));
2099
 
2100
  /* Record the fields for the semantic handler.  */
2101
  FLD (i_label9) = f_rel9;
2102
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bcd", "label9 0x%x", 'x', f_rel9, (char *) 0));
2103
 
2104
#if WITH_PROFILE_MODEL_P
2105
  /* Record the fields for profiling.  */
2106
  if (PROFILE_MODEL_P (current_cpu))
2107
    {
2108
    }
2109
#endif
2110
#undef FLD
2111
    return idesc;
2112
  }
2113
 
2114
 extract_sfmt_bnd:
2115
  {
2116
    const IDESC *idesc = &fr30bf_insn_data[itype];
2117
#define FLD(f) abuf->fields.sfmt_brad.f
2118
    SI f_rel9;
2119
 
2120
    f_rel9 = ((((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (1))) + (((pc) + (2))));
2121
 
2122
  /* Record the fields for the semantic handler.  */
2123
  FLD (i_label9) = f_rel9;
2124
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bnd", "label9 0x%x", 'x', f_rel9, (char *) 0));
2125
 
2126
#if WITH_PROFILE_MODEL_P
2127
  /* Record the fields for profiling.  */
2128
  if (PROFILE_MODEL_P (current_cpu))
2129
    {
2130
    }
2131
#endif
2132
#undef FLD
2133
    return idesc;
2134
  }
2135
 
2136
 extract_sfmt_bvd:
2137
  {
2138
    const IDESC *idesc = &fr30bf_insn_data[itype];
2139
#define FLD(f) abuf->fields.sfmt_brad.f
2140
    SI f_rel9;
2141
 
2142
    f_rel9 = ((((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (1))) + (((pc) + (2))));
2143
 
2144
  /* Record the fields for the semantic handler.  */
2145
  FLD (i_label9) = f_rel9;
2146
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bvd", "label9 0x%x", 'x', f_rel9, (char *) 0));
2147
 
2148
#if WITH_PROFILE_MODEL_P
2149
  /* Record the fields for profiling.  */
2150
  if (PROFILE_MODEL_P (current_cpu))
2151
    {
2152
    }
2153
#endif
2154
#undef FLD
2155
    return idesc;
2156
  }
2157
 
2158
 extract_sfmt_bltd:
2159
  {
2160
    const IDESC *idesc = &fr30bf_insn_data[itype];
2161
#define FLD(f) abuf->fields.sfmt_brad.f
2162
    SI f_rel9;
2163
 
2164
    f_rel9 = ((((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (1))) + (((pc) + (2))));
2165
 
2166
  /* Record the fields for the semantic handler.  */
2167
  FLD (i_label9) = f_rel9;
2168
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bltd", "label9 0x%x", 'x', f_rel9, (char *) 0));
2169
 
2170
#if WITH_PROFILE_MODEL_P
2171
  /* Record the fields for profiling.  */
2172
  if (PROFILE_MODEL_P (current_cpu))
2173
    {
2174
    }
2175
#endif
2176
#undef FLD
2177
    return idesc;
2178
  }
2179
 
2180
 extract_sfmt_bled:
2181
  {
2182
    const IDESC *idesc = &fr30bf_insn_data[itype];
2183
#define FLD(f) abuf->fields.sfmt_brad.f
2184
    SI f_rel9;
2185
 
2186
    f_rel9 = ((((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (1))) + (((pc) + (2))));
2187
 
2188
  /* Record the fields for the semantic handler.  */
2189
  FLD (i_label9) = f_rel9;
2190
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_bled", "label9 0x%x", 'x', f_rel9, (char *) 0));
2191
 
2192
#if WITH_PROFILE_MODEL_P
2193
  /* Record the fields for profiling.  */
2194
  if (PROFILE_MODEL_P (current_cpu))
2195
    {
2196
    }
2197
#endif
2198
#undef FLD
2199
    return idesc;
2200
  }
2201
 
2202
 extract_sfmt_blsd:
2203
  {
2204
    const IDESC *idesc = &fr30bf_insn_data[itype];
2205
#define FLD(f) abuf->fields.sfmt_brad.f
2206
    SI f_rel9;
2207
 
2208
    f_rel9 = ((((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (1))) + (((pc) + (2))));
2209
 
2210
  /* Record the fields for the semantic handler.  */
2211
  FLD (i_label9) = f_rel9;
2212
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_blsd", "label9 0x%x", 'x', f_rel9, (char *) 0));
2213
 
2214
#if WITH_PROFILE_MODEL_P
2215
  /* Record the fields for profiling.  */
2216
  if (PROFILE_MODEL_P (current_cpu))
2217
    {
2218
    }
2219
#endif
2220
#undef FLD
2221
    return idesc;
2222
  }
2223
 
2224
 extract_sfmt_dmovr13:
2225
  {
2226
    const IDESC *idesc = &fr30bf_insn_data[itype];
2227
#define FLD(f) abuf->fields.sfmt_dmovr13pi.f
2228
    USI f_dir10;
2229
 
2230
    f_dir10 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (2));
2231
 
2232
  /* Record the fields for the semantic handler.  */
2233
  FLD (f_dir10) = f_dir10;
2234
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmovr13", "f_dir10 0x%x", 'x', f_dir10, (char *) 0));
2235
 
2236
#if WITH_PROFILE_MODEL_P
2237
  /* Record the fields for profiling.  */
2238
  if (PROFILE_MODEL_P (current_cpu))
2239
    {
2240
      FLD (in_h_gr_13) = 13;
2241
    }
2242
#endif
2243
#undef FLD
2244
    return idesc;
2245
  }
2246
 
2247
 extract_sfmt_dmovr13h:
2248
  {
2249
    const IDESC *idesc = &fr30bf_insn_data[itype];
2250
#define FLD(f) abuf->fields.sfmt_dmovr13pih.f
2251
    USI f_dir9;
2252
 
2253
    f_dir9 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (1));
2254
 
2255
  /* Record the fields for the semantic handler.  */
2256
  FLD (f_dir9) = f_dir9;
2257
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmovr13h", "f_dir9 0x%x", 'x', f_dir9, (char *) 0));
2258
 
2259
#if WITH_PROFILE_MODEL_P
2260
  /* Record the fields for profiling.  */
2261
  if (PROFILE_MODEL_P (current_cpu))
2262
    {
2263
      FLD (in_h_gr_13) = 13;
2264
    }
2265
#endif
2266
#undef FLD
2267
    return idesc;
2268
  }
2269
 
2270
 extract_sfmt_dmovr13b:
2271
  {
2272
    const IDESC *idesc = &fr30bf_insn_data[itype];
2273
#define FLD(f) abuf->fields.sfmt_dmovr13pib.f
2274
    UINT f_dir8;
2275
 
2276
    f_dir8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
2277
 
2278
  /* Record the fields for the semantic handler.  */
2279
  FLD (f_dir8) = f_dir8;
2280
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmovr13b", "f_dir8 0x%x", 'x', f_dir8, (char *) 0));
2281
 
2282
#if WITH_PROFILE_MODEL_P
2283
  /* Record the fields for profiling.  */
2284
  if (PROFILE_MODEL_P (current_cpu))
2285
    {
2286
      FLD (in_h_gr_13) = 13;
2287
    }
2288
#endif
2289
#undef FLD
2290
    return idesc;
2291
  }
2292
 
2293
 extract_sfmt_dmovr13pi:
2294
  {
2295
    const IDESC *idesc = &fr30bf_insn_data[itype];
2296
#define FLD(f) abuf->fields.sfmt_dmovr13pi.f
2297
    USI f_dir10;
2298
 
2299
    f_dir10 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (2));
2300
 
2301
  /* Record the fields for the semantic handler.  */
2302
  FLD (f_dir10) = f_dir10;
2303
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmovr13pi", "f_dir10 0x%x", 'x', f_dir10, (char *) 0));
2304
 
2305
#if WITH_PROFILE_MODEL_P
2306
  /* Record the fields for profiling.  */
2307
  if (PROFILE_MODEL_P (current_cpu))
2308
    {
2309
      FLD (in_h_gr_13) = 13;
2310
      FLD (out_h_gr_13) = 13;
2311
    }
2312
#endif
2313
#undef FLD
2314
    return idesc;
2315
  }
2316
 
2317
 extract_sfmt_dmovr13pih:
2318
  {
2319
    const IDESC *idesc = &fr30bf_insn_data[itype];
2320
#define FLD(f) abuf->fields.sfmt_dmovr13pih.f
2321
    USI f_dir9;
2322
 
2323
    f_dir9 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (1));
2324
 
2325
  /* Record the fields for the semantic handler.  */
2326
  FLD (f_dir9) = f_dir9;
2327
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmovr13pih", "f_dir9 0x%x", 'x', f_dir9, (char *) 0));
2328
 
2329
#if WITH_PROFILE_MODEL_P
2330
  /* Record the fields for profiling.  */
2331
  if (PROFILE_MODEL_P (current_cpu))
2332
    {
2333
      FLD (in_h_gr_13) = 13;
2334
      FLD (out_h_gr_13) = 13;
2335
    }
2336
#endif
2337
#undef FLD
2338
    return idesc;
2339
  }
2340
 
2341
 extract_sfmt_dmovr13pib:
2342
  {
2343
    const IDESC *idesc = &fr30bf_insn_data[itype];
2344
#define FLD(f) abuf->fields.sfmt_dmovr13pib.f
2345
    UINT f_dir8;
2346
 
2347
    f_dir8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
2348
 
2349
  /* Record the fields for the semantic handler.  */
2350
  FLD (f_dir8) = f_dir8;
2351
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmovr13pib", "f_dir8 0x%x", 'x', f_dir8, (char *) 0));
2352
 
2353
#if WITH_PROFILE_MODEL_P
2354
  /* Record the fields for profiling.  */
2355
  if (PROFILE_MODEL_P (current_cpu))
2356
    {
2357
      FLD (in_h_gr_13) = 13;
2358
      FLD (out_h_gr_13) = 13;
2359
    }
2360
#endif
2361
#undef FLD
2362
    return idesc;
2363
  }
2364
 
2365
 extract_sfmt_dmovr15pi:
2366
  {
2367
    const IDESC *idesc = &fr30bf_insn_data[itype];
2368
#define FLD(f) abuf->fields.sfmt_dmovr15pi.f
2369
    USI f_dir10;
2370
 
2371
    f_dir10 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (2));
2372
 
2373
  /* Record the fields for the semantic handler.  */
2374
  FLD (f_dir10) = f_dir10;
2375
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmovr15pi", "f_dir10 0x%x", 'x', f_dir10, (char *) 0));
2376
 
2377
#if WITH_PROFILE_MODEL_P
2378
  /* Record the fields for profiling.  */
2379
  if (PROFILE_MODEL_P (current_cpu))
2380
    {
2381
      FLD (in_h_gr_15) = 15;
2382
      FLD (out_h_gr_15) = 15;
2383
    }
2384
#endif
2385
#undef FLD
2386
    return idesc;
2387
  }
2388
 
2389
 extract_sfmt_dmov2r13:
2390
  {
2391
    const IDESC *idesc = &fr30bf_insn_data[itype];
2392
#define FLD(f) abuf->fields.sfmt_dmovr13pi.f
2393
    USI f_dir10;
2394
 
2395
    f_dir10 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (2));
2396
 
2397
  /* Record the fields for the semantic handler.  */
2398
  FLD (f_dir10) = f_dir10;
2399
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmov2r13", "f_dir10 0x%x", 'x', f_dir10, (char *) 0));
2400
 
2401
#if WITH_PROFILE_MODEL_P
2402
  /* Record the fields for profiling.  */
2403
  if (PROFILE_MODEL_P (current_cpu))
2404
    {
2405
      FLD (out_h_gr_13) = 13;
2406
    }
2407
#endif
2408
#undef FLD
2409
    return idesc;
2410
  }
2411
 
2412
 extract_sfmt_dmov2r13h:
2413
  {
2414
    const IDESC *idesc = &fr30bf_insn_data[itype];
2415
#define FLD(f) abuf->fields.sfmt_dmovr13pih.f
2416
    USI f_dir9;
2417
 
2418
    f_dir9 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (1));
2419
 
2420
  /* Record the fields for the semantic handler.  */
2421
  FLD (f_dir9) = f_dir9;
2422
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmov2r13h", "f_dir9 0x%x", 'x', f_dir9, (char *) 0));
2423
 
2424
#if WITH_PROFILE_MODEL_P
2425
  /* Record the fields for profiling.  */
2426
  if (PROFILE_MODEL_P (current_cpu))
2427
    {
2428
      FLD (out_h_gr_13) = 13;
2429
    }
2430
#endif
2431
#undef FLD
2432
    return idesc;
2433
  }
2434
 
2435
 extract_sfmt_dmov2r13b:
2436
  {
2437
    const IDESC *idesc = &fr30bf_insn_data[itype];
2438
#define FLD(f) abuf->fields.sfmt_dmovr13pib.f
2439
    UINT f_dir8;
2440
 
2441
    f_dir8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
2442
 
2443
  /* Record the fields for the semantic handler.  */
2444
  FLD (f_dir8) = f_dir8;
2445
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmov2r13b", "f_dir8 0x%x", 'x', f_dir8, (char *) 0));
2446
 
2447
#if WITH_PROFILE_MODEL_P
2448
  /* Record the fields for profiling.  */
2449
  if (PROFILE_MODEL_P (current_cpu))
2450
    {
2451
      FLD (out_h_gr_13) = 13;
2452
    }
2453
#endif
2454
#undef FLD
2455
    return idesc;
2456
  }
2457
 
2458
 extract_sfmt_dmov2r13pi:
2459
  {
2460
    const IDESC *idesc = &fr30bf_insn_data[itype];
2461
#define FLD(f) abuf->fields.sfmt_dmovr13pi.f
2462
    USI f_dir10;
2463
 
2464
    f_dir10 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (2));
2465
 
2466
  /* Record the fields for the semantic handler.  */
2467
  FLD (f_dir10) = f_dir10;
2468
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmov2r13pi", "f_dir10 0x%x", 'x', f_dir10, (char *) 0));
2469
 
2470
#if WITH_PROFILE_MODEL_P
2471
  /* Record the fields for profiling.  */
2472
  if (PROFILE_MODEL_P (current_cpu))
2473
    {
2474
      FLD (in_h_gr_13) = 13;
2475
      FLD (out_h_gr_13) = 13;
2476
    }
2477
#endif
2478
#undef FLD
2479
    return idesc;
2480
  }
2481
 
2482
 extract_sfmt_dmov2r13pih:
2483
  {
2484
    const IDESC *idesc = &fr30bf_insn_data[itype];
2485
#define FLD(f) abuf->fields.sfmt_dmovr13pih.f
2486
    USI f_dir9;
2487
 
2488
    f_dir9 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (1));
2489
 
2490
  /* Record the fields for the semantic handler.  */
2491
  FLD (f_dir9) = f_dir9;
2492
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmov2r13pih", "f_dir9 0x%x", 'x', f_dir9, (char *) 0));
2493
 
2494
#if WITH_PROFILE_MODEL_P
2495
  /* Record the fields for profiling.  */
2496
  if (PROFILE_MODEL_P (current_cpu))
2497
    {
2498
      FLD (in_h_gr_13) = 13;
2499
      FLD (out_h_gr_13) = 13;
2500
    }
2501
#endif
2502
#undef FLD
2503
    return idesc;
2504
  }
2505
 
2506
 extract_sfmt_dmov2r13pib:
2507
  {
2508
    const IDESC *idesc = &fr30bf_insn_data[itype];
2509
#define FLD(f) abuf->fields.sfmt_dmovr13pib.f
2510
    UINT f_dir8;
2511
 
2512
    f_dir8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
2513
 
2514
  /* Record the fields for the semantic handler.  */
2515
  FLD (f_dir8) = f_dir8;
2516
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmov2r13pib", "f_dir8 0x%x", 'x', f_dir8, (char *) 0));
2517
 
2518
#if WITH_PROFILE_MODEL_P
2519
  /* Record the fields for profiling.  */
2520
  if (PROFILE_MODEL_P (current_cpu))
2521
    {
2522
      FLD (in_h_gr_13) = 13;
2523
      FLD (out_h_gr_13) = 13;
2524
    }
2525
#endif
2526
#undef FLD
2527
    return idesc;
2528
  }
2529
 
2530
 extract_sfmt_dmov2r15pd:
2531
  {
2532
    const IDESC *idesc = &fr30bf_insn_data[itype];
2533
#define FLD(f) abuf->fields.sfmt_dmovr15pi.f
2534
    USI f_dir10;
2535
 
2536
    f_dir10 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (2));
2537
 
2538
  /* Record the fields for the semantic handler.  */
2539
  FLD (f_dir10) = f_dir10;
2540
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_dmov2r15pd", "f_dir10 0x%x", 'x', f_dir10, (char *) 0));
2541
 
2542
#if WITH_PROFILE_MODEL_P
2543
  /* Record the fields for profiling.  */
2544
  if (PROFILE_MODEL_P (current_cpu))
2545
    {
2546
      FLD (in_h_gr_15) = 15;
2547
      FLD (out_h_gr_15) = 15;
2548
    }
2549
#endif
2550
#undef FLD
2551
    return idesc;
2552
  }
2553
 
2554
 extract_sfmt_ldres:
2555
  {
2556
    const IDESC *idesc = &fr30bf_insn_data[itype];
2557
#define FLD(f) abuf->fields.sfmt_add2.f
2558
    UINT f_Ri;
2559
 
2560
    f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2561
 
2562
  /* Record the fields for the semantic handler.  */
2563
  FLD (f_Ri) = f_Ri;
2564
  FLD (i_Ri) = & CPU (h_gr)[f_Ri];
2565
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldres", "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
2566
 
2567
#if WITH_PROFILE_MODEL_P
2568
  /* Record the fields for profiling.  */
2569
  if (PROFILE_MODEL_P (current_cpu))
2570
    {
2571
      FLD (in_Ri) = f_Ri;
2572
      FLD (out_Ri) = f_Ri;
2573
    }
2574
#endif
2575
#undef FLD
2576
    return idesc;
2577
  }
2578
 
2579
 extract_sfmt_copop:
2580
  {
2581
    const IDESC *idesc = &fr30bf_insn_data[itype];
2582
#define FLD(f) abuf->fields.fmt_empty.f
2583
    /* Contents of trailing part of insn.  */
2584
    UINT word_1;
2585
 
2586
  word_1 = GETIMEMUHI (current_cpu, pc + 2);
2587
 
2588
  /* Record the fields for the semantic handler.  */
2589
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_copop", (char *) 0));
2590
 
2591
#undef FLD
2592
    return idesc;
2593
  }
2594
 
2595
 extract_sfmt_andccr:
2596
  {
2597
    const IDESC *idesc = &fr30bf_insn_data[itype];
2598
#define FLD(f) abuf->fields.sfmt_int.f
2599
    UINT f_u8;
2600
 
2601
    f_u8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
2602
 
2603
  /* Record the fields for the semantic handler.  */
2604
  FLD (f_u8) = f_u8;
2605
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_andccr", "f_u8 0x%x", 'x', f_u8, (char *) 0));
2606
 
2607
#undef FLD
2608
    return idesc;
2609
  }
2610
 
2611
 extract_sfmt_stilm:
2612
  {
2613
    const IDESC *idesc = &fr30bf_insn_data[itype];
2614
#define FLD(f) abuf->fields.sfmt_int.f
2615
    UINT f_u8;
2616
 
2617
    f_u8 = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
2618
 
2619
  /* Record the fields for the semantic handler.  */
2620
  FLD (f_u8) = f_u8;
2621
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_stilm", "f_u8 0x%x", 'x', f_u8, (char *) 0));
2622
 
2623
#undef FLD
2624
    return idesc;
2625
  }
2626
 
2627
 extract_sfmt_addsp:
2628
  {
2629
    const IDESC *idesc = &fr30bf_insn_data[itype];
2630
#define FLD(f) abuf->fields.sfmt_addsp.f
2631
    SI f_s10;
2632
 
2633
    f_s10 = ((EXTRACT_MSB0_INT (insn, 16, 8, 8)) << (2));
2634
 
2635
  /* Record the fields for the semantic handler.  */
2636
  FLD (f_s10) = f_s10;
2637
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_addsp", "f_s10 0x%x", 'x', f_s10, (char *) 0));
2638
 
2639
#if WITH_PROFILE_MODEL_P
2640
  /* Record the fields for profiling.  */
2641
  if (PROFILE_MODEL_P (current_cpu))
2642
    {
2643
      FLD (in_h_gr_15) = 15;
2644
      FLD (out_h_gr_15) = 15;
2645
    }
2646
#endif
2647
#undef FLD
2648
    return idesc;
2649
  }
2650
 
2651
 extract_sfmt_extsb:
2652
  {
2653
    const IDESC *idesc = &fr30bf_insn_data[itype];
2654
#define FLD(f) abuf->fields.sfmt_add2.f
2655
    UINT f_Ri;
2656
 
2657
    f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2658
 
2659
  /* Record the fields for the semantic handler.  */
2660
  FLD (f_Ri) = f_Ri;
2661
  FLD (i_Ri) = & CPU (h_gr)[f_Ri];
2662
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_extsb", "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
2663
 
2664
#if WITH_PROFILE_MODEL_P
2665
  /* Record the fields for profiling.  */
2666
  if (PROFILE_MODEL_P (current_cpu))
2667
    {
2668
      FLD (in_Ri) = f_Ri;
2669
      FLD (out_Ri) = f_Ri;
2670
    }
2671
#endif
2672
#undef FLD
2673
    return idesc;
2674
  }
2675
 
2676
 extract_sfmt_extub:
2677
  {
2678
    const IDESC *idesc = &fr30bf_insn_data[itype];
2679
#define FLD(f) abuf->fields.sfmt_add2.f
2680
    UINT f_Ri;
2681
 
2682
    f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2683
 
2684
  /* Record the fields for the semantic handler.  */
2685
  FLD (f_Ri) = f_Ri;
2686
  FLD (i_Ri) = & CPU (h_gr)[f_Ri];
2687
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_extub", "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
2688
 
2689
#if WITH_PROFILE_MODEL_P
2690
  /* Record the fields for profiling.  */
2691
  if (PROFILE_MODEL_P (current_cpu))
2692
    {
2693
      FLD (in_Ri) = f_Ri;
2694
      FLD (out_Ri) = f_Ri;
2695
    }
2696
#endif
2697
#undef FLD
2698
    return idesc;
2699
  }
2700
 
2701
 extract_sfmt_extsh:
2702
  {
2703
    const IDESC *idesc = &fr30bf_insn_data[itype];
2704
#define FLD(f) abuf->fields.sfmt_add2.f
2705
    UINT f_Ri;
2706
 
2707
    f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2708
 
2709
  /* Record the fields for the semantic handler.  */
2710
  FLD (f_Ri) = f_Ri;
2711
  FLD (i_Ri) = & CPU (h_gr)[f_Ri];
2712
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_extsh", "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
2713
 
2714
#if WITH_PROFILE_MODEL_P
2715
  /* Record the fields for profiling.  */
2716
  if (PROFILE_MODEL_P (current_cpu))
2717
    {
2718
      FLD (in_Ri) = f_Ri;
2719
      FLD (out_Ri) = f_Ri;
2720
    }
2721
#endif
2722
#undef FLD
2723
    return idesc;
2724
  }
2725
 
2726
 extract_sfmt_extuh:
2727
  {
2728
    const IDESC *idesc = &fr30bf_insn_data[itype];
2729
#define FLD(f) abuf->fields.sfmt_add2.f
2730
    UINT f_Ri;
2731
 
2732
    f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2733
 
2734
  /* Record the fields for the semantic handler.  */
2735
  FLD (f_Ri) = f_Ri;
2736
  FLD (i_Ri) = & CPU (h_gr)[f_Ri];
2737
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_extuh", "f_Ri 0x%x", 'x', f_Ri, "Ri 0x%x", 'x', f_Ri, (char *) 0));
2738
 
2739
#if WITH_PROFILE_MODEL_P
2740
  /* Record the fields for profiling.  */
2741
  if (PROFILE_MODEL_P (current_cpu))
2742
    {
2743
      FLD (in_Ri) = f_Ri;
2744
      FLD (out_Ri) = f_Ri;
2745
    }
2746
#endif
2747
#undef FLD
2748
    return idesc;
2749
  }
2750
 
2751
 extract_sfmt_ldm0:
2752
  {
2753
    const IDESC *idesc = &fr30bf_insn_data[itype];
2754
#define FLD(f) abuf->fields.sfmt_ldm0.f
2755
    UINT f_reglist_low_ld;
2756
 
2757
    f_reglist_low_ld = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
2758
 
2759
  /* Record the fields for the semantic handler.  */
2760
  FLD (f_reglist_low_ld) = f_reglist_low_ld;
2761
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldm0", "f_reglist_low_ld 0x%x", 'x', f_reglist_low_ld, (char *) 0));
2762
 
2763
#if WITH_PROFILE_MODEL_P
2764
  /* Record the fields for profiling.  */
2765
  if (PROFILE_MODEL_P (current_cpu))
2766
    {
2767
      FLD (in_h_gr_15) = 15;
2768
      FLD (out_h_gr_0) = 0;
2769
      FLD (out_h_gr_1) = 1;
2770
      FLD (out_h_gr_15) = 15;
2771
      FLD (out_h_gr_2) = 2;
2772
      FLD (out_h_gr_3) = 3;
2773
      FLD (out_h_gr_4) = 4;
2774
      FLD (out_h_gr_5) = 5;
2775
      FLD (out_h_gr_6) = 6;
2776
      FLD (out_h_gr_7) = 7;
2777
    }
2778
#endif
2779
#undef FLD
2780
    return idesc;
2781
  }
2782
 
2783
 extract_sfmt_ldm1:
2784
  {
2785
    const IDESC *idesc = &fr30bf_insn_data[itype];
2786
#define FLD(f) abuf->fields.sfmt_ldm1.f
2787
    UINT f_reglist_hi_ld;
2788
 
2789
    f_reglist_hi_ld = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
2790
 
2791
  /* Record the fields for the semantic handler.  */
2792
  FLD (f_reglist_hi_ld) = f_reglist_hi_ld;
2793
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_ldm1", "f_reglist_hi_ld 0x%x", 'x', f_reglist_hi_ld, (char *) 0));
2794
 
2795
#if WITH_PROFILE_MODEL_P
2796
  /* Record the fields for profiling.  */
2797
  if (PROFILE_MODEL_P (current_cpu))
2798
    {
2799
      FLD (in_h_gr_15) = 15;
2800
      FLD (out_h_gr_10) = 10;
2801
      FLD (out_h_gr_11) = 11;
2802
      FLD (out_h_gr_12) = 12;
2803
      FLD (out_h_gr_13) = 13;
2804
      FLD (out_h_gr_14) = 14;
2805
      FLD (out_h_gr_15) = 15;
2806
      FLD (out_h_gr_8) = 8;
2807
      FLD (out_h_gr_9) = 9;
2808
    }
2809
#endif
2810
#undef FLD
2811
    return idesc;
2812
  }
2813
 
2814
 extract_sfmt_stm0:
2815
  {
2816
    const IDESC *idesc = &fr30bf_insn_data[itype];
2817
#define FLD(f) abuf->fields.sfmt_stm0.f
2818
    UINT f_reglist_low_st;
2819
 
2820
    f_reglist_low_st = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
2821
 
2822
  /* Record the fields for the semantic handler.  */
2823
  FLD (f_reglist_low_st) = f_reglist_low_st;
2824
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_stm0", "f_reglist_low_st 0x%x", 'x', f_reglist_low_st, (char *) 0));
2825
 
2826
#if WITH_PROFILE_MODEL_P
2827
  /* Record the fields for profiling.  */
2828
  if (PROFILE_MODEL_P (current_cpu))
2829
    {
2830
      FLD (in_h_gr_0) = 0;
2831
      FLD (in_h_gr_1) = 1;
2832
      FLD (in_h_gr_15) = 15;
2833
      FLD (in_h_gr_2) = 2;
2834
      FLD (in_h_gr_3) = 3;
2835
      FLD (in_h_gr_4) = 4;
2836
      FLD (in_h_gr_5) = 5;
2837
      FLD (in_h_gr_6) = 6;
2838
      FLD (in_h_gr_7) = 7;
2839
      FLD (out_h_gr_15) = 15;
2840
    }
2841
#endif
2842
#undef FLD
2843
    return idesc;
2844
  }
2845
 
2846
 extract_sfmt_stm1:
2847
  {
2848
    const IDESC *idesc = &fr30bf_insn_data[itype];
2849
#define FLD(f) abuf->fields.sfmt_stm1.f
2850
    UINT f_reglist_hi_st;
2851
 
2852
    f_reglist_hi_st = EXTRACT_MSB0_UINT (insn, 16, 8, 8);
2853
 
2854
  /* Record the fields for the semantic handler.  */
2855
  FLD (f_reglist_hi_st) = f_reglist_hi_st;
2856
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_stm1", "f_reglist_hi_st 0x%x", 'x', f_reglist_hi_st, (char *) 0));
2857
 
2858
#if WITH_PROFILE_MODEL_P
2859
  /* Record the fields for profiling.  */
2860
  if (PROFILE_MODEL_P (current_cpu))
2861
    {
2862
      FLD (in_h_gr_10) = 10;
2863
      FLD (in_h_gr_11) = 11;
2864
      FLD (in_h_gr_12) = 12;
2865
      FLD (in_h_gr_13) = 13;
2866
      FLD (in_h_gr_14) = 14;
2867
      FLD (in_h_gr_15) = 15;
2868
      FLD (in_h_gr_8) = 8;
2869
      FLD (in_h_gr_9) = 9;
2870
      FLD (out_h_gr_15) = 15;
2871
    }
2872
#endif
2873
#undef FLD
2874
    return idesc;
2875
  }
2876
 
2877
 extract_sfmt_enter:
2878
  {
2879
    const IDESC *idesc = &fr30bf_insn_data[itype];
2880
#define FLD(f) abuf->fields.sfmt_enter.f
2881
    USI f_u10;
2882
 
2883
    f_u10 = ((EXTRACT_MSB0_UINT (insn, 16, 8, 8)) << (2));
2884
 
2885
  /* Record the fields for the semantic handler.  */
2886
  FLD (f_u10) = f_u10;
2887
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_enter", "f_u10 0x%x", 'x', f_u10, (char *) 0));
2888
 
2889
#if WITH_PROFILE_MODEL_P
2890
  /* Record the fields for profiling.  */
2891
  if (PROFILE_MODEL_P (current_cpu))
2892
    {
2893
      FLD (in_h_gr_14) = 14;
2894
      FLD (in_h_gr_15) = 15;
2895
      FLD (out_h_gr_14) = 14;
2896
      FLD (out_h_gr_15) = 15;
2897
    }
2898
#endif
2899
#undef FLD
2900
    return idesc;
2901
  }
2902
 
2903
 extract_sfmt_leave:
2904
  {
2905
    const IDESC *idesc = &fr30bf_insn_data[itype];
2906
#define FLD(f) abuf->fields.sfmt_enter.f
2907
 
2908
 
2909
  /* Record the fields for the semantic handler.  */
2910
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_leave", (char *) 0));
2911
 
2912
#if WITH_PROFILE_MODEL_P
2913
  /* Record the fields for profiling.  */
2914
  if (PROFILE_MODEL_P (current_cpu))
2915
    {
2916
      FLD (in_h_gr_14) = 14;
2917
      FLD (in_h_gr_15) = 15;
2918
      FLD (out_h_gr_14) = 14;
2919
      FLD (out_h_gr_15) = 15;
2920
    }
2921
#endif
2922
#undef FLD
2923
    return idesc;
2924
  }
2925
 
2926
 extract_sfmt_xchb:
2927
  {
2928
    const IDESC *idesc = &fr30bf_insn_data[itype];
2929
#define FLD(f) abuf->fields.sfmt_add.f
2930
    UINT f_Rj;
2931
    UINT f_Ri;
2932
 
2933
    f_Rj = EXTRACT_MSB0_UINT (insn, 16, 8, 4);
2934
    f_Ri = EXTRACT_MSB0_UINT (insn, 16, 12, 4);
2935
 
2936
  /* Record the fields for the semantic handler.  */
2937
  FLD (f_Ri) = f_Ri;
2938
  FLD (f_Rj) = f_Rj;
2939
  FLD (i_Ri) = & CPU (h_gr)[f_Ri];
2940
  FLD (i_Rj) = & CPU (h_gr)[f_Rj];
2941
  TRACE_EXTRACT (current_cpu, abuf, (current_cpu, pc, "sfmt_xchb", "f_Ri 0x%x", 'x', f_Ri, "f_Rj 0x%x", 'x', f_Rj, "Ri 0x%x", 'x', f_Ri, "Rj 0x%x", 'x', f_Rj, (char *) 0));
2942
 
2943
#if WITH_PROFILE_MODEL_P
2944
  /* Record the fields for profiling.  */
2945
  if (PROFILE_MODEL_P (current_cpu))
2946
    {
2947
      FLD (in_Ri) = f_Ri;
2948
      FLD (in_Rj) = f_Rj;
2949
      FLD (out_Ri) = f_Ri;
2950
    }
2951
#endif
2952
#undef FLD
2953
    return idesc;
2954
  }
2955
 
2956
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.