1 /* Simulator instruction decoder for m32rbf.
3 THIS FILE IS MACHINE GENERATED WITH CGEN.
5 Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
7 This file is part of the GNU Simulators.
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)
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.
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.
25 #define WANT_CPU m32rbf
26 #define WANT_CPU_M32RBF
29 #include "sim-assert.h"
31 /* FIXME: Need to review choices for the following. */
33 #if WITH_SEM_SWITCH_FULL
36 #define FULL(fn) CONCAT3 (m32rbf,_sem_,fn) ,
40 #if WITH_SEM_SWITCH_FAST
43 #define FAST(fn) CONCAT3 (m32rbf,_semf_,fn) , /* f for fast */
49 /* The instruction descriptor array.
50 This is computed at runtime. Space for it is not malloc'd to save a
51 teensy bit of cpu in the decoder. Moving it to malloc space is trivial
52 but won't be done until necessary (we don't currently support the runtime
53 addition of instructions nor an SMP machine with different cpus). */
54 static IDESC m32rbf_insn_data
[M32RBF_INSN_MAX
];
56 /* Instruction semantic handlers and support.
57 This struct defines the part of an IDESC that can be computed at
61 /* The instruction type (a number that identifies each insn over the
62 entire architecture). */
65 /* Index in IDESC table. */
68 /* Routines to execute the insn.
69 The full version has all features (profiling,tracing) compiled in.
70 The fast version has none of that. */
71 #if ! WITH_SEM_SWITCH_FULL
72 SEMANTIC_FN
*sem_full
;
74 #if WITH_FAST && ! WITH_SEM_SWITCH_FAST
75 SEMANTIC_FN
*sem_fast
;
79 /* The INSN_ prefix is not here and is instead part of the `insn' argument
80 to avoid collisions with header files (e.g. `AND' in ansidecl.h). */
81 #define IDX(insn) CONCAT2 (M32RBF_,insn)
82 #define TYPE(insn) CONCAT2 (M32R_,insn)
84 /* Commas between elements are contained in the macros.
85 Some of these are conditionally compiled out. */
87 static const struct insn_sem m32rbf_insn_sem
[] =
89 { VIRTUAL_INSN_X_INVALID
, IDX (INSN_X_INVALID
), FULL (x_invalid
) FAST (x_invalid
) },
90 { VIRTUAL_INSN_X_AFTER
, IDX (INSN_X_AFTER
), FULL (x_after
) FAST (x_after
) },
91 { VIRTUAL_INSN_X_BEFORE
, IDX (INSN_X_BEFORE
), FULL (x_before
) FAST (x_before
) },
92 { VIRTUAL_INSN_X_CTI_CHAIN
, IDX (INSN_X_CTI_CHAIN
), FULL (x_cti_chain
) FAST (x_cti_chain
) },
93 { VIRTUAL_INSN_X_CHAIN
, IDX (INSN_X_CHAIN
), FULL (x_chain
) FAST (x_chain
) },
94 { VIRTUAL_INSN_X_BEGIN
, IDX (INSN_X_BEGIN
), FULL (x_begin
) FAST (x_begin
) },
95 { TYPE (INSN_ADD
), IDX (INSN_ADD
), FULL (add
) FAST (add
) },
96 { TYPE (INSN_ADD3
), IDX (INSN_ADD3
), FULL (add3
) FAST (add3
) },
97 { TYPE (INSN_AND
), IDX (INSN_AND
), FULL (and) FAST (and) },
98 { TYPE (INSN_AND3
), IDX (INSN_AND3
), FULL (and3
) FAST (and3
) },
99 { TYPE (INSN_OR
), IDX (INSN_OR
), FULL (or) FAST (or) },
100 { TYPE (INSN_OR3
), IDX (INSN_OR3
), FULL (or3
) FAST (or3
) },
101 { TYPE (INSN_XOR
), IDX (INSN_XOR
), FULL (xor) FAST (xor) },
102 { TYPE (INSN_XOR3
), IDX (INSN_XOR3
), FULL (xor3
) FAST (xor3
) },
103 { TYPE (INSN_ADDI
), IDX (INSN_ADDI
), FULL (addi
) FAST (addi
) },
104 { TYPE (INSN_ADDV
), IDX (INSN_ADDV
), FULL (addv
) FAST (addv
) },
105 { TYPE (INSN_ADDV3
), IDX (INSN_ADDV3
), FULL (addv3
) FAST (addv3
) },
106 { TYPE (INSN_ADDX
), IDX (INSN_ADDX
), FULL (addx
) FAST (addx
) },
107 { TYPE (INSN_BC8
), IDX (INSN_BC8
), FULL (bc8
) FAST (bc8
) },
108 { TYPE (INSN_BC24
), IDX (INSN_BC24
), FULL (bc24
) FAST (bc24
) },
109 { TYPE (INSN_BEQ
), IDX (INSN_BEQ
), FULL (beq
) FAST (beq
) },
110 { TYPE (INSN_BEQZ
), IDX (INSN_BEQZ
), FULL (beqz
) FAST (beqz
) },
111 { TYPE (INSN_BGEZ
), IDX (INSN_BGEZ
), FULL (bgez
) FAST (bgez
) },
112 { TYPE (INSN_BGTZ
), IDX (INSN_BGTZ
), FULL (bgtz
) FAST (bgtz
) },
113 { TYPE (INSN_BLEZ
), IDX (INSN_BLEZ
), FULL (blez
) FAST (blez
) },
114 { TYPE (INSN_BLTZ
), IDX (INSN_BLTZ
), FULL (bltz
) FAST (bltz
) },
115 { TYPE (INSN_BNEZ
), IDX (INSN_BNEZ
), FULL (bnez
) FAST (bnez
) },
116 { TYPE (INSN_BL8
), IDX (INSN_BL8
), FULL (bl8
) FAST (bl8
) },
117 { TYPE (INSN_BL24
), IDX (INSN_BL24
), FULL (bl24
) FAST (bl24
) },
118 { TYPE (INSN_BNC8
), IDX (INSN_BNC8
), FULL (bnc8
) FAST (bnc8
) },
119 { TYPE (INSN_BNC24
), IDX (INSN_BNC24
), FULL (bnc24
) FAST (bnc24
) },
120 { TYPE (INSN_BNE
), IDX (INSN_BNE
), FULL (bne
) FAST (bne
) },
121 { TYPE (INSN_BRA8
), IDX (INSN_BRA8
), FULL (bra8
) FAST (bra8
) },
122 { TYPE (INSN_BRA24
), IDX (INSN_BRA24
), FULL (bra24
) FAST (bra24
) },
123 { TYPE (INSN_CMP
), IDX (INSN_CMP
), FULL (cmp
) FAST (cmp
) },
124 { TYPE (INSN_CMPI
), IDX (INSN_CMPI
), FULL (cmpi
) FAST (cmpi
) },
125 { TYPE (INSN_CMPU
), IDX (INSN_CMPU
), FULL (cmpu
) FAST (cmpu
) },
126 { TYPE (INSN_CMPUI
), IDX (INSN_CMPUI
), FULL (cmpui
) FAST (cmpui
) },
127 { TYPE (INSN_DIV
), IDX (INSN_DIV
), FULL (div
) FAST (div
) },
128 { TYPE (INSN_DIVU
), IDX (INSN_DIVU
), FULL (divu
) FAST (divu
) },
129 { TYPE (INSN_REM
), IDX (INSN_REM
), FULL (rem
) FAST (rem
) },
130 { TYPE (INSN_REMU
), IDX (INSN_REMU
), FULL (remu
) FAST (remu
) },
131 { TYPE (INSN_JL
), IDX (INSN_JL
), FULL (jl
) FAST (jl
) },
132 { TYPE (INSN_JMP
), IDX (INSN_JMP
), FULL (jmp
) FAST (jmp
) },
133 { TYPE (INSN_LD
), IDX (INSN_LD
), FULL (ld
) FAST (ld
) },
134 { TYPE (INSN_LD_D
), IDX (INSN_LD_D
), FULL (ld_d
) FAST (ld_d
) },
135 { TYPE (INSN_LDB
), IDX (INSN_LDB
), FULL (ldb
) FAST (ldb
) },
136 { TYPE (INSN_LDB_D
), IDX (INSN_LDB_D
), FULL (ldb_d
) FAST (ldb_d
) },
137 { TYPE (INSN_LDH
), IDX (INSN_LDH
), FULL (ldh
) FAST (ldh
) },
138 { TYPE (INSN_LDH_D
), IDX (INSN_LDH_D
), FULL (ldh_d
) FAST (ldh_d
) },
139 { TYPE (INSN_LDUB
), IDX (INSN_LDUB
), FULL (ldub
) FAST (ldub
) },
140 { TYPE (INSN_LDUB_D
), IDX (INSN_LDUB_D
), FULL (ldub_d
) FAST (ldub_d
) },
141 { TYPE (INSN_LDUH
), IDX (INSN_LDUH
), FULL (lduh
) FAST (lduh
) },
142 { TYPE (INSN_LDUH_D
), IDX (INSN_LDUH_D
), FULL (lduh_d
) FAST (lduh_d
) },
143 { TYPE (INSN_LD_PLUS
), IDX (INSN_LD_PLUS
), FULL (ld_plus
) FAST (ld_plus
) },
144 { TYPE (INSN_LD24
), IDX (INSN_LD24
), FULL (ld24
) FAST (ld24
) },
145 { TYPE (INSN_LDI8
), IDX (INSN_LDI8
), FULL (ldi8
) FAST (ldi8
) },
146 { TYPE (INSN_LDI16
), IDX (INSN_LDI16
), FULL (ldi16
) FAST (ldi16
) },
147 { TYPE (INSN_LOCK
), IDX (INSN_LOCK
), FULL (lock
) FAST (lock
) },
148 { TYPE (INSN_MACHI
), IDX (INSN_MACHI
), FULL (machi
) FAST (machi
) },
149 { TYPE (INSN_MACLO
), IDX (INSN_MACLO
), FULL (maclo
) FAST (maclo
) },
150 { TYPE (INSN_MACWHI
), IDX (INSN_MACWHI
), FULL (macwhi
) FAST (macwhi
) },
151 { TYPE (INSN_MACWLO
), IDX (INSN_MACWLO
), FULL (macwlo
) FAST (macwlo
) },
152 { TYPE (INSN_MUL
), IDX (INSN_MUL
), FULL (mul
) FAST (mul
) },
153 { TYPE (INSN_MULHI
), IDX (INSN_MULHI
), FULL (mulhi
) FAST (mulhi
) },
154 { TYPE (INSN_MULLO
), IDX (INSN_MULLO
), FULL (mullo
) FAST (mullo
) },
155 { TYPE (INSN_MULWHI
), IDX (INSN_MULWHI
), FULL (mulwhi
) FAST (mulwhi
) },
156 { TYPE (INSN_MULWLO
), IDX (INSN_MULWLO
), FULL (mulwlo
) FAST (mulwlo
) },
157 { TYPE (INSN_MV
), IDX (INSN_MV
), FULL (mv
) FAST (mv
) },
158 { TYPE (INSN_MVFACHI
), IDX (INSN_MVFACHI
), FULL (mvfachi
) FAST (mvfachi
) },
159 { TYPE (INSN_MVFACLO
), IDX (INSN_MVFACLO
), FULL (mvfaclo
) FAST (mvfaclo
) },
160 { TYPE (INSN_MVFACMI
), IDX (INSN_MVFACMI
), FULL (mvfacmi
) FAST (mvfacmi
) },
161 { TYPE (INSN_MVFC
), IDX (INSN_MVFC
), FULL (mvfc
) FAST (mvfc
) },
162 { TYPE (INSN_MVTACHI
), IDX (INSN_MVTACHI
), FULL (mvtachi
) FAST (mvtachi
) },
163 { TYPE (INSN_MVTACLO
), IDX (INSN_MVTACLO
), FULL (mvtaclo
) FAST (mvtaclo
) },
164 { TYPE (INSN_MVTC
), IDX (INSN_MVTC
), FULL (mvtc
) FAST (mvtc
) },
165 { TYPE (INSN_NEG
), IDX (INSN_NEG
), FULL (neg
) FAST (neg
) },
166 { TYPE (INSN_NOP
), IDX (INSN_NOP
), FULL (nop
) FAST (nop
) },
167 { TYPE (INSN_NOT
), IDX (INSN_NOT
), FULL (not) FAST (not) },
168 { TYPE (INSN_RAC
), IDX (INSN_RAC
), FULL (rac
) FAST (rac
) },
169 { TYPE (INSN_RACH
), IDX (INSN_RACH
), FULL (rach
) FAST (rach
) },
170 { TYPE (INSN_RTE
), IDX (INSN_RTE
), FULL (rte
) FAST (rte
) },
171 { TYPE (INSN_SETH
), IDX (INSN_SETH
), FULL (seth
) FAST (seth
) },
172 { TYPE (INSN_SLL
), IDX (INSN_SLL
), FULL (sll
) FAST (sll
) },
173 { TYPE (INSN_SLL3
), IDX (INSN_SLL3
), FULL (sll3
) FAST (sll3
) },
174 { TYPE (INSN_SLLI
), IDX (INSN_SLLI
), FULL (slli
) FAST (slli
) },
175 { TYPE (INSN_SRA
), IDX (INSN_SRA
), FULL (sra
) FAST (sra
) },
176 { TYPE (INSN_SRA3
), IDX (INSN_SRA3
), FULL (sra3
) FAST (sra3
) },
177 { TYPE (INSN_SRAI
), IDX (INSN_SRAI
), FULL (srai
) FAST (srai
) },
178 { TYPE (INSN_SRL
), IDX (INSN_SRL
), FULL (srl
) FAST (srl
) },
179 { TYPE (INSN_SRL3
), IDX (INSN_SRL3
), FULL (srl3
) FAST (srl3
) },
180 { TYPE (INSN_SRLI
), IDX (INSN_SRLI
), FULL (srli
) FAST (srli
) },
181 { TYPE (INSN_ST
), IDX (INSN_ST
), FULL (st
) FAST (st
) },
182 { TYPE (INSN_ST_D
), IDX (INSN_ST_D
), FULL (st_d
) FAST (st_d
) },
183 { TYPE (INSN_STB
), IDX (INSN_STB
), FULL (stb
) FAST (stb
) },
184 { TYPE (INSN_STB_D
), IDX (INSN_STB_D
), FULL (stb_d
) FAST (stb_d
) },
185 { TYPE (INSN_STH
), IDX (INSN_STH
), FULL (sth
) FAST (sth
) },
186 { TYPE (INSN_STH_D
), IDX (INSN_STH_D
), FULL (sth_d
) FAST (sth_d
) },
187 { TYPE (INSN_ST_PLUS
), IDX (INSN_ST_PLUS
), FULL (st_plus
) FAST (st_plus
) },
188 { TYPE (INSN_ST_MINUS
), IDX (INSN_ST_MINUS
), FULL (st_minus
) FAST (st_minus
) },
189 { TYPE (INSN_SUB
), IDX (INSN_SUB
), FULL (sub
) FAST (sub
) },
190 { TYPE (INSN_SUBV
), IDX (INSN_SUBV
), FULL (subv
) FAST (subv
) },
191 { TYPE (INSN_SUBX
), IDX (INSN_SUBX
), FULL (subx
) FAST (subx
) },
192 { TYPE (INSN_TRAP
), IDX (INSN_TRAP
), FULL (trap
) FAST (trap
) },
193 { TYPE (INSN_UNLOCK
), IDX (INSN_UNLOCK
), FULL (unlock
) FAST (unlock
) },
196 static const struct insn_sem m32rbf_insn_sem_invalid
=
198 VIRTUAL_INSN_X_INVALID
, IDX (INSN_X_INVALID
), FULL (x_invalid
) FAST (x_invalid
)
204 /* Initialize an IDESC from the compile-time computable parts. */
207 init_idesc (SIM_CPU
*cpu
, IDESC
*id
, const struct insn_sem
*t
)
209 const CGEN_INSN
*opcode_table
= m32r_cgen_insn_table_entries
;
212 if ((int) t
->type
<= 0)
213 id
->opcode
= & cgen_virtual_opcode_table
[- t
->type
];
215 id
->opcode
= & opcode_table
[t
->type
];
216 #if ! WITH_SEM_SWITCH_FULL
217 id
->sem_full
= t
->sem_full
;
219 #if WITH_FAST && ! WITH_SEM_SWITCH_FAST
220 id
->sem_fast
= t
->sem_fast
;
222 #if WITH_PROFILE_MODEL_P
223 id
->timing
= & MODEL_TIMING (CPU_MODEL (cpu
)) [t
->index
];
225 SIM_DESC sd
= CPU_STATE (cpu
);
226 SIM_ASSERT (t
->index
== id
->timing
->num
);
231 /* Initialize the instruction descriptor table. */
234 m32rbf_init_idesc_table (SIM_CPU
*cpu
)
237 const struct insn_sem
*t
,*tend
;
238 int tabsize
= M32RBF_INSN_MAX
;
239 IDESC
*table
= m32rbf_insn_data
;
241 memset (table
, 0, tabsize
* sizeof (IDESC
));
243 /* First set all entries to the `invalid insn'. */
244 t
= & m32rbf_insn_sem_invalid
;
245 for (id
= table
, tabend
= table
+ tabsize
; id
< tabend
; ++id
)
246 init_idesc (cpu
, id
, t
);
248 /* Now fill in the values for the chosen cpu. */
249 for (t
= m32rbf_insn_sem
, tend
= t
+ sizeof (m32rbf_insn_sem
) / sizeof (*t
);
252 init_idesc (cpu
, & table
[t
->index
], t
);
255 /* Link the IDESC table into the cpu. */
256 CPU_IDESC (cpu
) = table
;
259 /* Enum declaration for all instruction formats. */
261 FMT_EMPTY
, FMT_ADD
, FMT_ADD3
, FMT_AND3
262 , FMT_OR3
, FMT_ADDI
, FMT_ADDV
, FMT_ADDV3
263 , FMT_ADDX
, FMT_BC8
, FMT_BC24
, FMT_BEQ
264 , FMT_BEQZ
, FMT_BL8
, FMT_BL24
, FMT_BRA8
265 , FMT_BRA24
, FMT_CMP
, FMT_CMPI
, FMT_DIV
266 , FMT_JL
, FMT_JMP
, FMT_LD
, FMT_LD_D
267 , FMT_LDB
, FMT_LDB_D
, FMT_LDH
, FMT_LDH_D
268 , FMT_LD_PLUS
, FMT_LD24
, FMT_LDI8
, FMT_LDI16
269 , FMT_LOCK
, FMT_MACHI
, FMT_MULHI
, FMT_MV
270 , FMT_MVFACHI
, FMT_MVFC
, FMT_MVTACHI
, FMT_MVTC
271 , FMT_NOP
, FMT_RAC
, FMT_RTE
, FMT_SETH
272 , FMT_SLL3
, FMT_SLLI
, FMT_ST
, FMT_ST_D
273 , FMT_STB
, FMT_STB_D
, FMT_STH
, FMT_STH_D
274 , FMT_ST_PLUS
, FMT_TRAP
, FMT_UNLOCK
277 /* The decoder uses this to record insns and direct extraction handling. */
288 /* Macro to go from decode phase to extraction phase. */
291 #define GOTO_EXTRACT(id) goto *(id)->ifmt
293 #define GOTO_EXTRACT(id) goto extract
296 /* The decoder needs a slightly different computed goto switch control. */
298 #define DECODE_SWITCH(N, X) goto *labels_##N[X];
300 #define DECODE_SWITCH(N, X) switch (X)
303 /* Given an instruction, return a pointer to its IDESC entry. */
306 m32rbf_decode (SIM_CPU
*current_cpu
, PCADDR pc
,
307 CGEN_INSN_INT base_insn
, CGEN_INSN_INT entire_insn
,
310 /* Result of decoder, used by extractor. */
311 const DECODE_DESC
*idecode
;
313 /* First decode the instruction. */
316 #define I(insn) & m32rbf_insn_data[CONCAT2 (M32RBF_,insn)]
318 #define E(fmt) && case_ex_##fmt
322 CGEN_INSN_INT insn
= base_insn
;
323 static const DECODE_DESC idecode_invalid
= { I (INSN_X_INVALID
), E (FMT_EMPTY
) };
326 static const void *labels_0
[256] = {
327 && default_0
, && default_0
, && default_0
, && default_0
,
328 && default_0
, && default_0
, && default_0
, && default_0
,
329 && default_0
, && default_0
, && default_0
, && default_0
,
330 && default_0
, && default_0
, && default_0
, && default_0
,
331 && default_0
, && default_0
, && default_0
, && default_0
,
332 && default_0
, && default_0
, && default_0
, && default_0
,
333 && default_0
, && default_0
, && default_0
, && default_0
,
334 && case_0_28
, && default_0
, && default_0
, && default_0
,
335 && default_0
, && default_0
, && default_0
, && default_0
,
336 && default_0
, && default_0
, && default_0
, && default_0
,
337 && default_0
, && default_0
, && default_0
, && default_0
,
338 && default_0
, && default_0
, && default_0
, && default_0
,
339 && default_0
, && default_0
, && default_0
, && default_0
,
340 && default_0
, && default_0
, && default_0
, && default_0
,
341 && default_0
, && default_0
, && default_0
, && default_0
,
342 && default_0
, && default_0
, && default_0
, && default_0
,
343 && default_0
, && default_0
, && default_0
, && default_0
,
344 && default_0
, && default_0
, && default_0
, && default_0
,
345 && default_0
, && default_0
, && default_0
, && default_0
,
346 && default_0
, && default_0
, && default_0
, && default_0
,
347 && default_0
, && default_0
, && default_0
, && default_0
,
348 && default_0
, && default_0
, && default_0
, && case_0_87
,
349 && default_0
, && default_0
, && default_0
, && default_0
,
350 && default_0
, && default_0
, && default_0
, && case_0_95
,
351 && default_0
, && default_0
, && default_0
, && default_0
,
352 && default_0
, && default_0
, && default_0
, && default_0
,
353 && default_0
, && default_0
, && default_0
, && default_0
,
354 && default_0
, && default_0
, && default_0
, && default_0
,
355 && case_0_112
, && case_0_113
, && case_0_114
, && case_0_115
,
356 && case_0_116
, && case_0_117
, && case_0_118
, && case_0_119
,
357 && case_0_120
, && case_0_121
, && case_0_122
, && case_0_123
,
358 && case_0_124
, && case_0_125
, && case_0_126
, && case_0_127
,
359 && default_0
, && default_0
, && default_0
, && default_0
,
360 && default_0
, && default_0
, && default_0
, && default_0
,
361 && default_0
, && default_0
, && default_0
, && default_0
,
362 && default_0
, && default_0
, && default_0
, && default_0
,
363 && default_0
, && default_0
, && default_0
, && default_0
,
364 && default_0
, && default_0
, && default_0
, && default_0
,
365 && default_0
, && default_0
, && default_0
, && default_0
,
366 && default_0
, && default_0
, && default_0
, && default_0
,
367 && default_0
, && default_0
, && default_0
, && default_0
,
368 && default_0
, && default_0
, && default_0
, && default_0
,
369 && default_0
, && default_0
, && default_0
, && default_0
,
370 && default_0
, && default_0
, && default_0
, && default_0
,
371 && default_0
, && default_0
, && default_0
, && default_0
,
372 && default_0
, && default_0
, && default_0
, && default_0
,
373 && default_0
, && default_0
, && default_0
, && default_0
,
374 && default_0
, && default_0
, && default_0
, && default_0
,
375 && default_0
, && default_0
, && default_0
, && default_0
,
376 && default_0
, && default_0
, && default_0
, && default_0
,
377 && default_0
, && default_0
, && default_0
, && default_0
,
378 && default_0
, && default_0
, && default_0
, && default_0
,
379 && default_0
, && default_0
, && default_0
, && default_0
,
380 && default_0
, && default_0
, && default_0
, && default_0
,
381 && default_0
, && default_0
, && default_0
, && default_0
,
382 && default_0
, && default_0
, && default_0
, && default_0
,
383 && default_0
, && default_0
, && default_0
, && default_0
,
384 && default_0
, && default_0
, && default_0
, && default_0
,
385 && default_0
, && default_0
, && default_0
, && default_0
,
386 && default_0
, && default_0
, && default_0
, && default_0
,
387 && case_0_240
, && case_0_241
, && case_0_242
, && case_0_243
,
388 && case_0_244
, && case_0_245
, && case_0_246
, && case_0_247
,
389 && case_0_248
, && case_0_249
, && case_0_250
, && case_0_251
,
390 && case_0_252
, && case_0_253
, && case_0_254
, && case_0_255
,
393 static const DECODE_DESC insns
[256] = {
394 { I (INSN_SUBV
), E (FMT_ADDV
) }, { I (INSN_SUBX
), E (FMT_ADDX
) },
395 { I (INSN_SUB
), E (FMT_ADD
) }, { I (INSN_NEG
), E (FMT_MV
) },
396 { I (INSN_CMP
), E (FMT_CMP
) }, { I (INSN_CMPU
), E (FMT_CMP
) },
397 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
398 { I (INSN_ADDV
), E (FMT_ADDV
) }, { I (INSN_ADDX
), E (FMT_ADDX
) },
399 { I (INSN_ADD
), E (FMT_ADD
) }, { I (INSN_NOT
), E (FMT_MV
) },
400 { I (INSN_AND
), E (FMT_ADD
) }, { I (INSN_XOR
), E (FMT_ADD
) },
401 { I (INSN_OR
), E (FMT_ADD
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
402 { I (INSN_SRL
), E (FMT_ADD
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
403 { I (INSN_SRA
), E (FMT_ADD
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
404 { I (INSN_SLL
), E (FMT_ADD
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
405 { I (INSN_MUL
), E (FMT_ADD
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
406 { I (INSN_MV
), E (FMT_MV
) }, { I (INSN_MVFC
), E (FMT_MVFC
) },
407 { I (INSN_MVTC
), E (FMT_MVTC
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
408 { 0 }, { I (INSN_RTE
), E (FMT_RTE
) },
409 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_TRAP
), E (FMT_TRAP
) },
410 { I (INSN_STB
), E (FMT_STB
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
411 { I (INSN_STH
), E (FMT_STH
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
412 { I (INSN_ST
), E (FMT_ST
) }, { I (INSN_UNLOCK
), E (FMT_UNLOCK
) },
413 { I (INSN_ST_PLUS
), E (FMT_ST_PLUS
) }, { I (INSN_ST_MINUS
), E (FMT_ST_PLUS
) },
414 { I (INSN_LDB
), E (FMT_LDB
) }, { I (INSN_LDUB
), E (FMT_LDB
) },
415 { I (INSN_LDH
), E (FMT_LDH
) }, { I (INSN_LDUH
), E (FMT_LDH
) },
416 { I (INSN_LD
), E (FMT_LD
) }, { I (INSN_LOCK
), E (FMT_LOCK
) },
417 { I (INSN_LD_PLUS
), E (FMT_LD_PLUS
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
418 { I (INSN_MULHI
), E (FMT_MULHI
) }, { I (INSN_MULLO
), E (FMT_MULHI
) },
419 { I (INSN_MULWHI
), E (FMT_MULHI
) }, { I (INSN_MULWLO
), E (FMT_MULHI
) },
420 { I (INSN_MACHI
), E (FMT_MACHI
) }, { I (INSN_MACLO
), E (FMT_MACHI
) },
421 { I (INSN_MACWHI
), E (FMT_MACHI
) }, { I (INSN_MACWLO
), E (FMT_MACHI
) },
422 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
423 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
424 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
425 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
426 { I (INSN_ADDI
), E (FMT_ADDI
) }, { I (INSN_ADDI
), E (FMT_ADDI
) },
427 { I (INSN_ADDI
), E (FMT_ADDI
) }, { I (INSN_ADDI
), E (FMT_ADDI
) },
428 { I (INSN_ADDI
), E (FMT_ADDI
) }, { I (INSN_ADDI
), E (FMT_ADDI
) },
429 { I (INSN_ADDI
), E (FMT_ADDI
) }, { I (INSN_ADDI
), E (FMT_ADDI
) },
430 { I (INSN_ADDI
), E (FMT_ADDI
) }, { I (INSN_ADDI
), E (FMT_ADDI
) },
431 { I (INSN_ADDI
), E (FMT_ADDI
) }, { I (INSN_ADDI
), E (FMT_ADDI
) },
432 { I (INSN_ADDI
), E (FMT_ADDI
) }, { I (INSN_ADDI
), E (FMT_ADDI
) },
433 { I (INSN_ADDI
), E (FMT_ADDI
) }, { I (INSN_ADDI
), E (FMT_ADDI
) },
434 { I (INSN_SRLI
), E (FMT_SLLI
) }, { I (INSN_SRLI
), E (FMT_SLLI
) },
435 { I (INSN_SRAI
), E (FMT_SLLI
) }, { I (INSN_SRAI
), E (FMT_SLLI
) },
436 { I (INSN_SLLI
), E (FMT_SLLI
) }, { I (INSN_SLLI
), E (FMT_SLLI
) },
437 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { 0 },
438 { I (INSN_RACH
), E (FMT_RAC
) }, { I (INSN_RAC
), E (FMT_RAC
) },
439 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
440 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
441 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { 0 },
442 { I (INSN_LDI8
), E (FMT_LDI8
) }, { I (INSN_LDI8
), E (FMT_LDI8
) },
443 { I (INSN_LDI8
), E (FMT_LDI8
) }, { I (INSN_LDI8
), E (FMT_LDI8
) },
444 { I (INSN_LDI8
), E (FMT_LDI8
) }, { I (INSN_LDI8
), E (FMT_LDI8
) },
445 { I (INSN_LDI8
), E (FMT_LDI8
) }, { I (INSN_LDI8
), E (FMT_LDI8
) },
446 { I (INSN_LDI8
), E (FMT_LDI8
) }, { I (INSN_LDI8
), E (FMT_LDI8
) },
447 { I (INSN_LDI8
), E (FMT_LDI8
) }, { I (INSN_LDI8
), E (FMT_LDI8
) },
448 { I (INSN_LDI8
), E (FMT_LDI8
) }, { I (INSN_LDI8
), E (FMT_LDI8
) },
449 { I (INSN_LDI8
), E (FMT_LDI8
) }, { I (INSN_LDI8
), E (FMT_LDI8
) },
458 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
459 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
460 { I (INSN_CMPI
), E (FMT_CMPI
) }, { I (INSN_CMPUI
), E (FMT_CMPI
) },
461 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
462 { I (INSN_ADDV3
), E (FMT_ADDV3
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
463 { I (INSN_ADD3
), E (FMT_ADD3
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
464 { I (INSN_AND3
), E (FMT_AND3
) }, { I (INSN_XOR3
), E (FMT_AND3
) },
465 { I (INSN_OR3
), E (FMT_OR3
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
466 { I (INSN_DIV
), E (FMT_DIV
) }, { I (INSN_DIVU
), E (FMT_DIV
) },
467 { I (INSN_REM
), E (FMT_DIV
) }, { I (INSN_REMU
), E (FMT_DIV
) },
468 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
469 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
470 { I (INSN_SRL3
), E (FMT_SLL3
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
471 { I (INSN_SRA3
), E (FMT_SLL3
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
472 { I (INSN_SLL3
), E (FMT_SLL3
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
473 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_LDI16
), E (FMT_LDI16
) },
474 { I (INSN_STB_D
), E (FMT_STB_D
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
475 { I (INSN_STH_D
), E (FMT_STH_D
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
476 { I (INSN_ST_D
), E (FMT_ST_D
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
477 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
478 { I (INSN_LDB_D
), E (FMT_LDB_D
) }, { I (INSN_LDUB_D
), E (FMT_LDB_D
) },
479 { I (INSN_LDH_D
), E (FMT_LDH_D
) }, { I (INSN_LDUH_D
), E (FMT_LDH_D
) },
480 { I (INSN_LD_D
), E (FMT_LD_D
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
481 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
482 { I (INSN_BEQ
), E (FMT_BEQ
) }, { I (INSN_BNE
), E (FMT_BEQ
) },
483 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
484 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
485 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
486 { I (INSN_BEQZ
), E (FMT_BEQZ
) }, { I (INSN_BNEZ
), E (FMT_BEQZ
) },
487 { I (INSN_BLTZ
), E (FMT_BEQZ
) }, { I (INSN_BGEZ
), E (FMT_BEQZ
) },
488 { I (INSN_BLEZ
), E (FMT_BEQZ
) }, { I (INSN_BGTZ
), E (FMT_BEQZ
) },
489 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
490 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
491 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
492 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
493 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
494 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
495 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
496 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
497 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
498 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
499 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
500 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
501 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
502 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
503 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
504 { I (INSN_SETH
), E (FMT_SETH
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
505 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
506 { I (INSN_LD24
), E (FMT_LD24
) }, { I (INSN_LD24
), E (FMT_LD24
) },
507 { I (INSN_LD24
), E (FMT_LD24
) }, { I (INSN_LD24
), E (FMT_LD24
) },
508 { I (INSN_LD24
), E (FMT_LD24
) }, { I (INSN_LD24
), E (FMT_LD24
) },
509 { I (INSN_LD24
), E (FMT_LD24
) }, { I (INSN_LD24
), E (FMT_LD24
) },
510 { I (INSN_LD24
), E (FMT_LD24
) }, { I (INSN_LD24
), E (FMT_LD24
) },
511 { I (INSN_LD24
), E (FMT_LD24
) }, { I (INSN_LD24
), E (FMT_LD24
) },
512 { I (INSN_LD24
), E (FMT_LD24
) }, { I (INSN_LD24
), E (FMT_LD24
) },
513 { I (INSN_LD24
), E (FMT_LD24
) }, { I (INSN_LD24
), E (FMT_LD24
) },
524 val
= (((insn
>> 8) & (15 << 4)) | ((insn
>> 4) & (15 << 0)));
525 DECODE_SWITCH (0, val
)
529 static const DECODE_DESC insns
[16] = {
530 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
531 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
532 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
533 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
534 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
535 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
536 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
537 { I (INSN_JL
), E (FMT_JL
) }, { I (INSN_JMP
), E (FMT_JMP
) },
539 unsigned int val
= (((insn
>> 8) & (15 << 0)));
540 idecode
= &insns
[val
];
541 GOTO_EXTRACT (idecode
);
545 static const DECODE_DESC insns
[16] = {
546 { I (INSN_MVTACHI
), E (FMT_MVTACHI
) }, { I (INSN_MVTACLO
), E (FMT_MVTACHI
) },
547 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
548 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
549 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
550 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
551 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
552 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
553 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
555 unsigned int val
= (((insn
>> 0) & (15 << 0)));
556 idecode
= &insns
[val
];
557 GOTO_EXTRACT (idecode
);
561 static const DECODE_DESC insns
[16] = {
562 { I (INSN_MVFACHI
), E (FMT_MVFACHI
) }, { I (INSN_MVFACLO
), E (FMT_MVFACHI
) },
563 { I (INSN_MVFACMI
), E (FMT_MVFACHI
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
564 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
565 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
566 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
567 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
568 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
569 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
571 unsigned int val
= (((insn
>> 0) & (15 << 0)));
572 idecode
= &insns
[val
];
573 GOTO_EXTRACT (idecode
);
577 static const DECODE_DESC insns
[16] = {
578 { I (INSN_NOP
), E (FMT_NOP
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
579 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
580 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
581 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
582 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
583 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
584 { I (INSN_BC8
), E (FMT_BC8
) }, { I (INSN_BNC8
), E (FMT_BC8
) },
585 { I (INSN_BL8
), E (FMT_BL8
) }, { I (INSN_BRA8
), E (FMT_BRA8
) },
587 unsigned int val
= (((insn
>> 8) & (15 << 0)));
588 idecode
= &insns
[val
];
589 GOTO_EXTRACT (idecode
);
591 CASE (0, 113) : /* fall through */
592 CASE (0, 114) : /* fall through */
593 CASE (0, 115) : /* fall through */
594 CASE (0, 116) : /* fall through */
595 CASE (0, 117) : /* fall through */
596 CASE (0, 118) : /* fall through */
597 CASE (0, 119) : /* fall through */
598 CASE (0, 120) : /* fall through */
599 CASE (0, 121) : /* fall through */
600 CASE (0, 122) : /* fall through */
601 CASE (0, 123) : /* fall through */
602 CASE (0, 124) : /* fall through */
603 CASE (0, 125) : /* fall through */
604 CASE (0, 126) : /* fall through */
607 static const DECODE_DESC insns
[16] = {
608 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
609 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
610 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
611 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
612 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
613 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
614 { I (INSN_BC8
), E (FMT_BC8
) }, { I (INSN_BNC8
), E (FMT_BC8
) },
615 { I (INSN_BL8
), E (FMT_BL8
) }, { I (INSN_BRA8
), E (FMT_BRA8
) },
617 unsigned int val
= (((insn
>> 8) & (15 << 0)));
618 idecode
= &insns
[val
];
619 GOTO_EXTRACT (idecode
);
621 CASE (0, 240) : /* fall through */
622 CASE (0, 241) : /* fall through */
623 CASE (0, 242) : /* fall through */
624 CASE (0, 243) : /* fall through */
625 CASE (0, 244) : /* fall through */
626 CASE (0, 245) : /* fall through */
627 CASE (0, 246) : /* fall through */
628 CASE (0, 247) : /* fall through */
629 CASE (0, 248) : /* fall through */
630 CASE (0, 249) : /* fall through */
631 CASE (0, 250) : /* fall through */
632 CASE (0, 251) : /* fall through */
633 CASE (0, 252) : /* fall through */
634 CASE (0, 253) : /* fall through */
635 CASE (0, 254) : /* fall through */
638 static const DECODE_DESC insns
[16] = {
639 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
640 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
641 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
642 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
643 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
644 { I (INSN_X_INVALID
), E (FMT_EMPTY
) }, { I (INSN_X_INVALID
), E (FMT_EMPTY
) },
645 { I (INSN_BC24
), E (FMT_BC24
) }, { I (INSN_BNC24
), E (FMT_BC24
) },
646 { I (INSN_BL24
), E (FMT_BL24
) }, { I (INSN_BRA24
), E (FMT_BRA24
) },
648 unsigned int val
= (((insn
>> 8) & (15 << 0)));
649 idecode
= &insns
[val
];
650 GOTO_EXTRACT (idecode
);
653 idecode
= &insns
[val
];
654 GOTO_EXTRACT (idecode
);
662 /* The instruction has been decoded, now extract the fields. */
667 switch (idecode
->ifmt
)
671 CASE (ex
, FMT_EMPTY
) :
673 CGEN_INSN_INT insn
= entire_insn
;
674 #define FLD(f) abuf->fields.fmt_empty.f
675 EXTRACT_FMT_EMPTY_VARS
/* */
677 EXTRACT_FMT_EMPTY_CODE
679 /* Record the fields for the semantic handler. */
680 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_empty", (char *) 0));
688 CGEN_INSN_INT insn
= entire_insn
;
689 #define FLD(f) abuf->fields.fmt_add.f
690 EXTRACT_FMT_ADD_VARS
/* f-op1 f-r1 f-op2 f-r2 */
694 /* Record the fields for the semantic handler. */
695 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
696 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
697 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_add", "dr 0x%x", 'x', f_r1
, "sr 0x%x", 'x', f_r2
, (char *) 0));
699 #if WITH_PROFILE_MODEL_P
700 /* Record the fields for profiling. */
701 if (PROFILE_MODEL_P (current_cpu
))
712 CASE (ex
, FMT_ADD3
) :
714 CGEN_INSN_INT insn
= entire_insn
;
715 #define FLD(f) abuf->fields.fmt_add3.f
716 EXTRACT_FMT_ADD3_VARS
/* f-op1 f-r1 f-op2 f-r2 f-simm16 */
718 EXTRACT_FMT_ADD3_CODE
720 /* Record the fields for the semantic handler. */
721 FLD (f_simm16
) = f_simm16
;
722 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
723 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
724 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_add3", "f_simm16 0x%x", 'x', f_simm16
, "sr 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, (char *) 0));
726 #if WITH_PROFILE_MODEL_P
727 /* Record the fields for profiling. */
728 if (PROFILE_MODEL_P (current_cpu
))
738 CASE (ex
, FMT_AND3
) :
740 CGEN_INSN_INT insn
= entire_insn
;
741 #define FLD(f) abuf->fields.fmt_and3.f
742 EXTRACT_FMT_AND3_VARS
/* f-op1 f-r1 f-op2 f-r2 f-uimm16 */
744 EXTRACT_FMT_AND3_CODE
746 /* Record the fields for the semantic handler. */
747 FLD (f_uimm16
) = f_uimm16
;
748 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
749 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
750 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_and3", "f_uimm16 0x%x", 'x', f_uimm16
, "sr 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, (char *) 0));
752 #if WITH_PROFILE_MODEL_P
753 /* Record the fields for profiling. */
754 if (PROFILE_MODEL_P (current_cpu
))
766 CGEN_INSN_INT insn
= entire_insn
;
767 #define FLD(f) abuf->fields.fmt_or3.f
768 EXTRACT_FMT_OR3_VARS
/* f-op1 f-r1 f-op2 f-r2 f-uimm16 */
772 /* Record the fields for the semantic handler. */
773 FLD (f_uimm16
) = f_uimm16
;
774 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
775 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
776 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_or3", "f_uimm16 0x%x", 'x', f_uimm16
, "sr 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, (char *) 0));
778 #if WITH_PROFILE_MODEL_P
779 /* Record the fields for profiling. */
780 if (PROFILE_MODEL_P (current_cpu
))
790 CASE (ex
, FMT_ADDI
) :
792 CGEN_INSN_INT insn
= entire_insn
;
793 #define FLD(f) abuf->fields.fmt_addi.f
794 EXTRACT_FMT_ADDI_VARS
/* f-op1 f-r1 f-simm8 */
796 EXTRACT_FMT_ADDI_CODE
798 /* Record the fields for the semantic handler. */
799 FLD (f_simm8
) = f_simm8
;
800 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
801 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_addi", "f_simm8 0x%x", 'x', f_simm8
, "dr 0x%x", 'x', f_r1
, (char *) 0));
803 #if WITH_PROFILE_MODEL_P
804 /* Record the fields for profiling. */
805 if (PROFILE_MODEL_P (current_cpu
))
815 CASE (ex
, FMT_ADDV
) :
817 CGEN_INSN_INT insn
= entire_insn
;
818 #define FLD(f) abuf->fields.fmt_addv.f
819 EXTRACT_FMT_ADDV_VARS
/* f-op1 f-r1 f-op2 f-r2 */
821 EXTRACT_FMT_ADDV_CODE
823 /* Record the fields for the semantic handler. */
824 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
825 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
826 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_addv", "dr 0x%x", 'x', f_r1
, "sr 0x%x", 'x', f_r2
, (char *) 0));
828 #if WITH_PROFILE_MODEL_P
829 /* Record the fields for profiling. */
830 if (PROFILE_MODEL_P (current_cpu
))
841 CASE (ex
, FMT_ADDV3
) :
843 CGEN_INSN_INT insn
= entire_insn
;
844 #define FLD(f) abuf->fields.fmt_addv3.f
845 EXTRACT_FMT_ADDV3_VARS
/* f-op1 f-r1 f-op2 f-r2 f-simm16 */
847 EXTRACT_FMT_ADDV3_CODE
849 /* Record the fields for the semantic handler. */
850 FLD (f_simm16
) = f_simm16
;
851 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
852 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
853 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_addv3", "f_simm16 0x%x", 'x', f_simm16
, "sr 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, (char *) 0));
855 #if WITH_PROFILE_MODEL_P
856 /* Record the fields for profiling. */
857 if (PROFILE_MODEL_P (current_cpu
))
867 CASE (ex
, FMT_ADDX
) :
869 CGEN_INSN_INT insn
= entire_insn
;
870 #define FLD(f) abuf->fields.fmt_addx.f
871 EXTRACT_FMT_ADDX_VARS
/* f-op1 f-r1 f-op2 f-r2 */
873 EXTRACT_FMT_ADDX_CODE
875 /* Record the fields for the semantic handler. */
876 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
877 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
878 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_addx", "dr 0x%x", 'x', f_r1
, "sr 0x%x", 'x', f_r2
, (char *) 0));
880 #if WITH_PROFILE_MODEL_P
881 /* Record the fields for profiling. */
882 if (PROFILE_MODEL_P (current_cpu
))
895 CGEN_INSN_INT insn
= entire_insn
;
896 #define FLD(f) abuf->fields.cti.fields.fmt_bc8.f
897 EXTRACT_FMT_BC8_VARS
/* f-op1 f-r1 f-disp8 */
901 /* Record the fields for the semantic handler. */
902 FLD (i_disp8
) = f_disp8
;
903 SEM_BRANCH_INIT_EXTRACT (abuf
);
904 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_bc8", "disp8 0x%x", 'x', f_disp8
, (char *) 0));
906 #if WITH_PROFILE_MODEL_P
907 /* Record the fields for profiling. */
908 if (PROFILE_MODEL_P (current_cpu
))
916 CASE (ex
, FMT_BC24
) :
918 CGEN_INSN_INT insn
= entire_insn
;
919 #define FLD(f) abuf->fields.cti.fields.fmt_bc24.f
920 EXTRACT_FMT_BC24_VARS
/* f-op1 f-r1 f-disp24 */
922 EXTRACT_FMT_BC24_CODE
924 /* Record the fields for the semantic handler. */
925 FLD (i_disp24
) = f_disp24
;
926 SEM_BRANCH_INIT_EXTRACT (abuf
);
927 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_bc24", "disp24 0x%x", 'x', f_disp24
, (char *) 0));
929 #if WITH_PROFILE_MODEL_P
930 /* Record the fields for profiling. */
931 if (PROFILE_MODEL_P (current_cpu
))
941 CGEN_INSN_INT insn
= entire_insn
;
942 #define FLD(f) abuf->fields.cti.fields.fmt_beq.f
943 EXTRACT_FMT_BEQ_VARS
/* f-op1 f-r1 f-op2 f-r2 f-disp16 */
947 /* Record the fields for the semantic handler. */
948 FLD (i_src1
) = & CPU (h_gr
)[f_r1
];
949 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
950 FLD (i_disp16
) = f_disp16
;
951 SEM_BRANCH_INIT_EXTRACT (abuf
);
952 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_beq", "src1 0x%x", 'x', f_r1
, "src2 0x%x", 'x', f_r2
, "disp16 0x%x", 'x', f_disp16
, (char *) 0));
954 #if WITH_PROFILE_MODEL_P
955 /* Record the fields for profiling. */
956 if (PROFILE_MODEL_P (current_cpu
))
958 FLD (in_src1
) = f_r1
;
959 FLD (in_src2
) = f_r2
;
966 CASE (ex
, FMT_BEQZ
) :
968 CGEN_INSN_INT insn
= entire_insn
;
969 #define FLD(f) abuf->fields.cti.fields.fmt_beqz.f
970 EXTRACT_FMT_BEQZ_VARS
/* f-op1 f-r1 f-op2 f-r2 f-disp16 */
972 EXTRACT_FMT_BEQZ_CODE
974 /* Record the fields for the semantic handler. */
975 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
976 FLD (i_disp16
) = f_disp16
;
977 SEM_BRANCH_INIT_EXTRACT (abuf
);
978 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_beqz", "src2 0x%x", 'x', f_r2
, "disp16 0x%x", 'x', f_disp16
, (char *) 0));
980 #if WITH_PROFILE_MODEL_P
981 /* Record the fields for profiling. */
982 if (PROFILE_MODEL_P (current_cpu
))
984 FLD (in_src2
) = f_r2
;
993 CGEN_INSN_INT insn
= entire_insn
;
994 #define FLD(f) abuf->fields.cti.fields.fmt_bl8.f
995 EXTRACT_FMT_BL8_VARS
/* f-op1 f-r1 f-disp8 */
999 /* Record the fields for the semantic handler. */
1000 FLD (i_disp8
) = f_disp8
;
1001 SEM_BRANCH_INIT_EXTRACT (abuf
);
1002 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_bl8", "disp8 0x%x", 'x', f_disp8
, (char *) 0));
1004 #if WITH_PROFILE_MODEL_P
1005 /* Record the fields for profiling. */
1006 if (PROFILE_MODEL_P (current_cpu
))
1008 FLD (out_h_gr_14
) = 14;
1015 CASE (ex
, FMT_BL24
) :
1017 CGEN_INSN_INT insn
= entire_insn
;
1018 #define FLD(f) abuf->fields.cti.fields.fmt_bl24.f
1019 EXTRACT_FMT_BL24_VARS
/* f-op1 f-r1 f-disp24 */
1021 EXTRACT_FMT_BL24_CODE
1023 /* Record the fields for the semantic handler. */
1024 FLD (i_disp24
) = f_disp24
;
1025 SEM_BRANCH_INIT_EXTRACT (abuf
);
1026 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_bl24", "disp24 0x%x", 'x', f_disp24
, (char *) 0));
1028 #if WITH_PROFILE_MODEL_P
1029 /* Record the fields for profiling. */
1030 if (PROFILE_MODEL_P (current_cpu
))
1032 FLD (out_h_gr_14
) = 14;
1039 CASE (ex
, FMT_BRA8
) :
1041 CGEN_INSN_INT insn
= entire_insn
;
1042 #define FLD(f) abuf->fields.cti.fields.fmt_bra8.f
1043 EXTRACT_FMT_BRA8_VARS
/* f-op1 f-r1 f-disp8 */
1045 EXTRACT_FMT_BRA8_CODE
1047 /* Record the fields for the semantic handler. */
1048 FLD (i_disp8
) = f_disp8
;
1049 SEM_BRANCH_INIT_EXTRACT (abuf
);
1050 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_bra8", "disp8 0x%x", 'x', f_disp8
, (char *) 0));
1052 #if WITH_PROFILE_MODEL_P
1053 /* Record the fields for profiling. */
1054 if (PROFILE_MODEL_P (current_cpu
))
1062 CASE (ex
, FMT_BRA24
) :
1064 CGEN_INSN_INT insn
= entire_insn
;
1065 #define FLD(f) abuf->fields.cti.fields.fmt_bra24.f
1066 EXTRACT_FMT_BRA24_VARS
/* f-op1 f-r1 f-disp24 */
1068 EXTRACT_FMT_BRA24_CODE
1070 /* Record the fields for the semantic handler. */
1071 FLD (i_disp24
) = f_disp24
;
1072 SEM_BRANCH_INIT_EXTRACT (abuf
);
1073 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_bra24", "disp24 0x%x", 'x', f_disp24
, (char *) 0));
1075 #if WITH_PROFILE_MODEL_P
1076 /* Record the fields for profiling. */
1077 if (PROFILE_MODEL_P (current_cpu
))
1085 CASE (ex
, FMT_CMP
) :
1087 CGEN_INSN_INT insn
= entire_insn
;
1088 #define FLD(f) abuf->fields.fmt_cmp.f
1089 EXTRACT_FMT_CMP_VARS
/* f-op1 f-r1 f-op2 f-r2 */
1091 EXTRACT_FMT_CMP_CODE
1093 /* Record the fields for the semantic handler. */
1094 FLD (i_src1
) = & CPU (h_gr
)[f_r1
];
1095 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
1096 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_cmp", "src1 0x%x", 'x', f_r1
, "src2 0x%x", 'x', f_r2
, (char *) 0));
1098 #if WITH_PROFILE_MODEL_P
1099 /* Record the fields for profiling. */
1100 if (PROFILE_MODEL_P (current_cpu
))
1102 FLD (in_src1
) = f_r1
;
1103 FLD (in_src2
) = f_r2
;
1110 CASE (ex
, FMT_CMPI
) :
1112 CGEN_INSN_INT insn
= entire_insn
;
1113 #define FLD(f) abuf->fields.fmt_cmpi.f
1114 EXTRACT_FMT_CMPI_VARS
/* f-op1 f-r1 f-op2 f-r2 f-simm16 */
1116 EXTRACT_FMT_CMPI_CODE
1118 /* Record the fields for the semantic handler. */
1119 FLD (f_simm16
) = f_simm16
;
1120 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
1121 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_cmpi", "f_simm16 0x%x", 'x', f_simm16
, "src2 0x%x", 'x', f_r2
, (char *) 0));
1123 #if WITH_PROFILE_MODEL_P
1124 /* Record the fields for profiling. */
1125 if (PROFILE_MODEL_P (current_cpu
))
1127 FLD (in_src2
) = f_r2
;
1134 CASE (ex
, FMT_DIV
) :
1136 CGEN_INSN_INT insn
= entire_insn
;
1137 #define FLD(f) abuf->fields.fmt_div.f
1138 EXTRACT_FMT_DIV_VARS
/* f-op1 f-r1 f-op2 f-r2 f-simm16 */
1140 EXTRACT_FMT_DIV_CODE
1142 /* Record the fields for the semantic handler. */
1143 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
1144 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1145 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_div", "sr 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, (char *) 0));
1147 #if WITH_PROFILE_MODEL_P
1148 /* Record the fields for profiling. */
1149 if (PROFILE_MODEL_P (current_cpu
))
1153 FLD (out_dr
) = f_r1
;
1162 CGEN_INSN_INT insn
= entire_insn
;
1163 #define FLD(f) abuf->fields.cti.fields.fmt_jl.f
1164 EXTRACT_FMT_JL_VARS
/* f-op1 f-r1 f-op2 f-r2 */
1168 /* Record the fields for the semantic handler. */
1169 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
1170 SEM_BRANCH_INIT_EXTRACT (abuf
);
1171 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_jl", "sr 0x%x", 'x', f_r2
, (char *) 0));
1173 #if WITH_PROFILE_MODEL_P
1174 /* Record the fields for profiling. */
1175 if (PROFILE_MODEL_P (current_cpu
))
1178 FLD (out_h_gr_14
) = 14;
1185 CASE (ex
, FMT_JMP
) :
1187 CGEN_INSN_INT insn
= entire_insn
;
1188 #define FLD(f) abuf->fields.cti.fields.fmt_jmp.f
1189 EXTRACT_FMT_JMP_VARS
/* f-op1 f-r1 f-op2 f-r2 */
1191 EXTRACT_FMT_JMP_CODE
1193 /* Record the fields for the semantic handler. */
1194 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
1195 SEM_BRANCH_INIT_EXTRACT (abuf
);
1196 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_jmp", "sr 0x%x", 'x', f_r2
, (char *) 0));
1198 #if WITH_PROFILE_MODEL_P
1199 /* Record the fields for profiling. */
1200 if (PROFILE_MODEL_P (current_cpu
))
1211 CGEN_INSN_INT insn
= entire_insn
;
1212 #define FLD(f) abuf->fields.fmt_ld.f
1213 EXTRACT_FMT_LD_VARS
/* f-op1 f-r1 f-op2 f-r2 */
1217 /* Record the fields for the semantic handler. */
1218 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
1219 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1220 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_ld", "sr 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, (char *) 0));
1222 #if WITH_PROFILE_MODEL_P
1223 /* Record the fields for profiling. */
1224 if (PROFILE_MODEL_P (current_cpu
))
1227 FLD (out_dr
) = f_r1
;
1234 CASE (ex
, FMT_LD_D
) :
1236 CGEN_INSN_INT insn
= entire_insn
;
1237 #define FLD(f) abuf->fields.fmt_ld_d.f
1238 EXTRACT_FMT_LD_D_VARS
/* f-op1 f-r1 f-op2 f-r2 f-simm16 */
1240 EXTRACT_FMT_LD_D_CODE
1242 /* Record the fields for the semantic handler. */
1243 FLD (f_simm16
) = f_simm16
;
1244 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
1245 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1246 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_ld_d", "f_simm16 0x%x", 'x', f_simm16
, "sr 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, (char *) 0));
1248 #if WITH_PROFILE_MODEL_P
1249 /* Record the fields for profiling. */
1250 if (PROFILE_MODEL_P (current_cpu
))
1253 FLD (out_dr
) = f_r1
;
1260 CASE (ex
, FMT_LDB
) :
1262 CGEN_INSN_INT insn
= entire_insn
;
1263 #define FLD(f) abuf->fields.fmt_ldb.f
1264 EXTRACT_FMT_LDB_VARS
/* f-op1 f-r1 f-op2 f-r2 */
1266 EXTRACT_FMT_LDB_CODE
1268 /* Record the fields for the semantic handler. */
1269 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
1270 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1271 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_ldb", "sr 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, (char *) 0));
1273 #if WITH_PROFILE_MODEL_P
1274 /* Record the fields for profiling. */
1275 if (PROFILE_MODEL_P (current_cpu
))
1278 FLD (out_dr
) = f_r1
;
1285 CASE (ex
, FMT_LDB_D
) :
1287 CGEN_INSN_INT insn
= entire_insn
;
1288 #define FLD(f) abuf->fields.fmt_ldb_d.f
1289 EXTRACT_FMT_LDB_D_VARS
/* f-op1 f-r1 f-op2 f-r2 f-simm16 */
1291 EXTRACT_FMT_LDB_D_CODE
1293 /* Record the fields for the semantic handler. */
1294 FLD (f_simm16
) = f_simm16
;
1295 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
1296 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1297 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_ldb_d", "f_simm16 0x%x", 'x', f_simm16
, "sr 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, (char *) 0));
1299 #if WITH_PROFILE_MODEL_P
1300 /* Record the fields for profiling. */
1301 if (PROFILE_MODEL_P (current_cpu
))
1304 FLD (out_dr
) = f_r1
;
1311 CASE (ex
, FMT_LDH
) :
1313 CGEN_INSN_INT insn
= entire_insn
;
1314 #define FLD(f) abuf->fields.fmt_ldh.f
1315 EXTRACT_FMT_LDH_VARS
/* f-op1 f-r1 f-op2 f-r2 */
1317 EXTRACT_FMT_LDH_CODE
1319 /* Record the fields for the semantic handler. */
1320 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
1321 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1322 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_ldh", "sr 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, (char *) 0));
1324 #if WITH_PROFILE_MODEL_P
1325 /* Record the fields for profiling. */
1326 if (PROFILE_MODEL_P (current_cpu
))
1329 FLD (out_dr
) = f_r1
;
1336 CASE (ex
, FMT_LDH_D
) :
1338 CGEN_INSN_INT insn
= entire_insn
;
1339 #define FLD(f) abuf->fields.fmt_ldh_d.f
1340 EXTRACT_FMT_LDH_D_VARS
/* f-op1 f-r1 f-op2 f-r2 f-simm16 */
1342 EXTRACT_FMT_LDH_D_CODE
1344 /* Record the fields for the semantic handler. */
1345 FLD (f_simm16
) = f_simm16
;
1346 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
1347 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1348 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_ldh_d", "f_simm16 0x%x", 'x', f_simm16
, "sr 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, (char *) 0));
1350 #if WITH_PROFILE_MODEL_P
1351 /* Record the fields for profiling. */
1352 if (PROFILE_MODEL_P (current_cpu
))
1355 FLD (out_dr
) = f_r1
;
1362 CASE (ex
, FMT_LD_PLUS
) :
1364 CGEN_INSN_INT insn
= entire_insn
;
1365 #define FLD(f) abuf->fields.fmt_ld_plus.f
1366 EXTRACT_FMT_LD_PLUS_VARS
/* f-op1 f-r1 f-op2 f-r2 */
1368 EXTRACT_FMT_LD_PLUS_CODE
1370 /* Record the fields for the semantic handler. */
1371 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
1372 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1373 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_ld_plus", "sr 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, (char *) 0));
1375 #if WITH_PROFILE_MODEL_P
1376 /* Record the fields for profiling. */
1377 if (PROFILE_MODEL_P (current_cpu
))
1380 FLD (out_dr
) = f_r1
;
1381 FLD (out_sr
) = f_r2
;
1388 CASE (ex
, FMT_LD24
) :
1390 CGEN_INSN_INT insn
= entire_insn
;
1391 #define FLD(f) abuf->fields.fmt_ld24.f
1392 EXTRACT_FMT_LD24_VARS
/* f-op1 f-r1 f-uimm24 */
1394 EXTRACT_FMT_LD24_CODE
1396 /* Record the fields for the semantic handler. */
1397 FLD (i_uimm24
) = f_uimm24
;
1398 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1399 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_ld24", "uimm24 0x%x", 'x', f_uimm24
, "dr 0x%x", 'x', f_r1
, (char *) 0));
1401 #if WITH_PROFILE_MODEL_P
1402 /* Record the fields for profiling. */
1403 if (PROFILE_MODEL_P (current_cpu
))
1405 FLD (out_dr
) = f_r1
;
1412 CASE (ex
, FMT_LDI8
) :
1414 CGEN_INSN_INT insn
= entire_insn
;
1415 #define FLD(f) abuf->fields.fmt_ldi8.f
1416 EXTRACT_FMT_LDI8_VARS
/* f-op1 f-r1 f-simm8 */
1418 EXTRACT_FMT_LDI8_CODE
1420 /* Record the fields for the semantic handler. */
1421 FLD (f_simm8
) = f_simm8
;
1422 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1423 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_ldi8", "f_simm8 0x%x", 'x', f_simm8
, "dr 0x%x", 'x', f_r1
, (char *) 0));
1425 #if WITH_PROFILE_MODEL_P
1426 /* Record the fields for profiling. */
1427 if (PROFILE_MODEL_P (current_cpu
))
1429 FLD (out_dr
) = f_r1
;
1436 CASE (ex
, FMT_LDI16
) :
1438 CGEN_INSN_INT insn
= entire_insn
;
1439 #define FLD(f) abuf->fields.fmt_ldi16.f
1440 EXTRACT_FMT_LDI16_VARS
/* f-op1 f-r1 f-op2 f-r2 f-simm16 */
1442 EXTRACT_FMT_LDI16_CODE
1444 /* Record the fields for the semantic handler. */
1445 FLD (f_simm16
) = f_simm16
;
1446 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1447 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_ldi16", "f_simm16 0x%x", 'x', f_simm16
, "dr 0x%x", 'x', f_r1
, (char *) 0));
1449 #if WITH_PROFILE_MODEL_P
1450 /* Record the fields for profiling. */
1451 if (PROFILE_MODEL_P (current_cpu
))
1453 FLD (out_dr
) = f_r1
;
1460 CASE (ex
, FMT_LOCK
) :
1462 CGEN_INSN_INT insn
= entire_insn
;
1463 #define FLD(f) abuf->fields.fmt_lock.f
1464 EXTRACT_FMT_LOCK_VARS
/* f-op1 f-r1 f-op2 f-r2 */
1466 EXTRACT_FMT_LOCK_CODE
1468 /* Record the fields for the semantic handler. */
1469 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
1470 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1471 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_lock", "sr 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, (char *) 0));
1473 #if WITH_PROFILE_MODEL_P
1474 /* Record the fields for profiling. */
1475 if (PROFILE_MODEL_P (current_cpu
))
1478 FLD (out_dr
) = f_r1
;
1485 CASE (ex
, FMT_MACHI
) :
1487 CGEN_INSN_INT insn
= entire_insn
;
1488 #define FLD(f) abuf->fields.fmt_machi.f
1489 EXTRACT_FMT_MACHI_VARS
/* f-op1 f-r1 f-op2 f-r2 */
1491 EXTRACT_FMT_MACHI_CODE
1493 /* Record the fields for the semantic handler. */
1494 FLD (i_src1
) = & CPU (h_gr
)[f_r1
];
1495 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
1496 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_machi", "src1 0x%x", 'x', f_r1
, "src2 0x%x", 'x', f_r2
, (char *) 0));
1498 #if WITH_PROFILE_MODEL_P
1499 /* Record the fields for profiling. */
1500 if (PROFILE_MODEL_P (current_cpu
))
1502 FLD (in_src1
) = f_r1
;
1503 FLD (in_src2
) = f_r2
;
1510 CASE (ex
, FMT_MULHI
) :
1512 CGEN_INSN_INT insn
= entire_insn
;
1513 #define FLD(f) abuf->fields.fmt_mulhi.f
1514 EXTRACT_FMT_MULHI_VARS
/* f-op1 f-r1 f-op2 f-r2 */
1516 EXTRACT_FMT_MULHI_CODE
1518 /* Record the fields for the semantic handler. */
1519 FLD (i_src1
) = & CPU (h_gr
)[f_r1
];
1520 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
1521 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_mulhi", "src1 0x%x", 'x', f_r1
, "src2 0x%x", 'x', f_r2
, (char *) 0));
1523 #if WITH_PROFILE_MODEL_P
1524 /* Record the fields for profiling. */
1525 if (PROFILE_MODEL_P (current_cpu
))
1527 FLD (in_src1
) = f_r1
;
1528 FLD (in_src2
) = f_r2
;
1537 CGEN_INSN_INT insn
= entire_insn
;
1538 #define FLD(f) abuf->fields.fmt_mv.f
1539 EXTRACT_FMT_MV_VARS
/* f-op1 f-r1 f-op2 f-r2 */
1543 /* Record the fields for the semantic handler. */
1544 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
1545 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1546 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_mv", "sr 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, (char *) 0));
1548 #if WITH_PROFILE_MODEL_P
1549 /* Record the fields for profiling. */
1550 if (PROFILE_MODEL_P (current_cpu
))
1553 FLD (out_dr
) = f_r1
;
1560 CASE (ex
, FMT_MVFACHI
) :
1562 CGEN_INSN_INT insn
= entire_insn
;
1563 #define FLD(f) abuf->fields.fmt_mvfachi.f
1564 EXTRACT_FMT_MVFACHI_VARS
/* f-op1 f-r1 f-op2 f-r2 */
1566 EXTRACT_FMT_MVFACHI_CODE
1568 /* Record the fields for the semantic handler. */
1569 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1570 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_mvfachi", "dr 0x%x", 'x', f_r1
, (char *) 0));
1572 #if WITH_PROFILE_MODEL_P
1573 /* Record the fields for profiling. */
1574 if (PROFILE_MODEL_P (current_cpu
))
1576 FLD (out_dr
) = f_r1
;
1583 CASE (ex
, FMT_MVFC
) :
1585 CGEN_INSN_INT insn
= entire_insn
;
1586 #define FLD(f) abuf->fields.fmt_mvfc.f
1587 EXTRACT_FMT_MVFC_VARS
/* f-op1 f-r1 f-op2 f-r2 */
1589 EXTRACT_FMT_MVFC_CODE
1591 /* Record the fields for the semantic handler. */
1593 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1594 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_mvfc", "f_r2 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, (char *) 0));
1596 #if WITH_PROFILE_MODEL_P
1597 /* Record the fields for profiling. */
1598 if (PROFILE_MODEL_P (current_cpu
))
1600 FLD (out_dr
) = f_r1
;
1607 CASE (ex
, FMT_MVTACHI
) :
1609 CGEN_INSN_INT insn
= entire_insn
;
1610 #define FLD(f) abuf->fields.fmt_mvtachi.f
1611 EXTRACT_FMT_MVTACHI_VARS
/* f-op1 f-r1 f-op2 f-r2 */
1613 EXTRACT_FMT_MVTACHI_CODE
1615 /* Record the fields for the semantic handler. */
1616 FLD (i_src1
) = & CPU (h_gr
)[f_r1
];
1617 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_mvtachi", "src1 0x%x", 'x', f_r1
, (char *) 0));
1619 #if WITH_PROFILE_MODEL_P
1620 /* Record the fields for profiling. */
1621 if (PROFILE_MODEL_P (current_cpu
))
1623 FLD (in_src1
) = f_r1
;
1630 CASE (ex
, FMT_MVTC
) :
1632 CGEN_INSN_INT insn
= entire_insn
;
1633 #define FLD(f) abuf->fields.fmt_mvtc.f
1634 EXTRACT_FMT_MVTC_VARS
/* f-op1 f-r1 f-op2 f-r2 */
1636 EXTRACT_FMT_MVTC_CODE
1638 /* Record the fields for the semantic handler. */
1640 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
1641 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_mvtc", "f_r1 0x%x", 'x', f_r1
, "sr 0x%x", 'x', f_r2
, (char *) 0));
1643 #if WITH_PROFILE_MODEL_P
1644 /* Record the fields for profiling. */
1645 if (PROFILE_MODEL_P (current_cpu
))
1654 CASE (ex
, FMT_NOP
) :
1656 CGEN_INSN_INT insn
= entire_insn
;
1657 #define FLD(f) abuf->fields.fmt_nop.f
1658 EXTRACT_FMT_NOP_VARS
/* f-op1 f-r1 f-op2 f-r2 */
1660 EXTRACT_FMT_NOP_CODE
1662 /* Record the fields for the semantic handler. */
1663 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_nop", (char *) 0));
1669 CASE (ex
, FMT_RAC
) :
1671 CGEN_INSN_INT insn
= entire_insn
;
1672 #define FLD(f) abuf->fields.fmt_rac.f
1673 EXTRACT_FMT_RAC_VARS
/* f-op1 f-r1 f-op2 f-r2 */
1675 EXTRACT_FMT_RAC_CODE
1677 /* Record the fields for the semantic handler. */
1678 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_rac", (char *) 0));
1684 CASE (ex
, FMT_RTE
) :
1686 CGEN_INSN_INT insn
= entire_insn
;
1687 #define FLD(f) abuf->fields.cti.fields.fmt_rte.f
1688 EXTRACT_FMT_RTE_VARS
/* f-op1 f-r1 f-op2 f-r2 */
1690 EXTRACT_FMT_RTE_CODE
1692 /* Record the fields for the semantic handler. */
1693 SEM_BRANCH_INIT_EXTRACT (abuf
);
1694 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_rte", (char *) 0));
1696 #if WITH_PROFILE_MODEL_P
1697 /* Record the fields for profiling. */
1698 if (PROFILE_MODEL_P (current_cpu
))
1706 CASE (ex
, FMT_SETH
) :
1708 CGEN_INSN_INT insn
= entire_insn
;
1709 #define FLD(f) abuf->fields.fmt_seth.f
1710 EXTRACT_FMT_SETH_VARS
/* f-op1 f-r1 f-op2 f-r2 f-hi16 */
1712 EXTRACT_FMT_SETH_CODE
1714 /* Record the fields for the semantic handler. */
1715 FLD (f_hi16
) = f_hi16
;
1716 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1717 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_seth", "f_hi16 0x%x", 'x', f_hi16
, "dr 0x%x", 'x', f_r1
, (char *) 0));
1719 #if WITH_PROFILE_MODEL_P
1720 /* Record the fields for profiling. */
1721 if (PROFILE_MODEL_P (current_cpu
))
1723 FLD (out_dr
) = f_r1
;
1730 CASE (ex
, FMT_SLL3
) :
1732 CGEN_INSN_INT insn
= entire_insn
;
1733 #define FLD(f) abuf->fields.fmt_sll3.f
1734 EXTRACT_FMT_SLL3_VARS
/* f-op1 f-r1 f-op2 f-r2 f-simm16 */
1736 EXTRACT_FMT_SLL3_CODE
1738 /* Record the fields for the semantic handler. */
1739 FLD (f_simm16
) = f_simm16
;
1740 FLD (i_sr
) = & CPU (h_gr
)[f_r2
];
1741 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1742 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_sll3", "f_simm16 0x%x", 'x', f_simm16
, "sr 0x%x", 'x', f_r2
, "dr 0x%x", 'x', f_r1
, (char *) 0));
1744 #if WITH_PROFILE_MODEL_P
1745 /* Record the fields for profiling. */
1746 if (PROFILE_MODEL_P (current_cpu
))
1749 FLD (out_dr
) = f_r1
;
1756 CASE (ex
, FMT_SLLI
) :
1758 CGEN_INSN_INT insn
= entire_insn
;
1759 #define FLD(f) abuf->fields.fmt_slli.f
1760 EXTRACT_FMT_SLLI_VARS
/* f-op1 f-r1 f-shift-op2 f-uimm5 */
1762 EXTRACT_FMT_SLLI_CODE
1764 /* Record the fields for the semantic handler. */
1765 FLD (f_uimm5
) = f_uimm5
;
1766 FLD (i_dr
) = & CPU (h_gr
)[f_r1
];
1767 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_slli", "f_uimm5 0x%x", 'x', f_uimm5
, "dr 0x%x", 'x', f_r1
, (char *) 0));
1769 #if WITH_PROFILE_MODEL_P
1770 /* Record the fields for profiling. */
1771 if (PROFILE_MODEL_P (current_cpu
))
1774 FLD (out_dr
) = f_r1
;
1783 CGEN_INSN_INT insn
= entire_insn
;
1784 #define FLD(f) abuf->fields.fmt_st.f
1785 EXTRACT_FMT_ST_VARS
/* f-op1 f-r1 f-op2 f-r2 */
1789 /* Record the fields for the semantic handler. */
1790 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
1791 FLD (i_src1
) = & CPU (h_gr
)[f_r1
];
1792 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_st", "src2 0x%x", 'x', f_r2
, "src1 0x%x", 'x', f_r1
, (char *) 0));
1794 #if WITH_PROFILE_MODEL_P
1795 /* Record the fields for profiling. */
1796 if (PROFILE_MODEL_P (current_cpu
))
1798 FLD (in_src2
) = f_r2
;
1799 FLD (in_src1
) = f_r1
;
1806 CASE (ex
, FMT_ST_D
) :
1808 CGEN_INSN_INT insn
= entire_insn
;
1809 #define FLD(f) abuf->fields.fmt_st_d.f
1810 EXTRACT_FMT_ST_D_VARS
/* f-op1 f-r1 f-op2 f-r2 f-simm16 */
1812 EXTRACT_FMT_ST_D_CODE
1814 /* Record the fields for the semantic handler. */
1815 FLD (f_simm16
) = f_simm16
;
1816 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
1817 FLD (i_src1
) = & CPU (h_gr
)[f_r1
];
1818 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_st_d", "f_simm16 0x%x", 'x', f_simm16
, "src2 0x%x", 'x', f_r2
, "src1 0x%x", 'x', f_r1
, (char *) 0));
1820 #if WITH_PROFILE_MODEL_P
1821 /* Record the fields for profiling. */
1822 if (PROFILE_MODEL_P (current_cpu
))
1824 FLD (in_src2
) = f_r2
;
1825 FLD (in_src1
) = f_r1
;
1832 CASE (ex
, FMT_STB
) :
1834 CGEN_INSN_INT insn
= entire_insn
;
1835 #define FLD(f) abuf->fields.fmt_stb.f
1836 EXTRACT_FMT_STB_VARS
/* f-op1 f-r1 f-op2 f-r2 */
1838 EXTRACT_FMT_STB_CODE
1840 /* Record the fields for the semantic handler. */
1841 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
1842 FLD (i_src1
) = & CPU (h_gr
)[f_r1
];
1843 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_stb", "src2 0x%x", 'x', f_r2
, "src1 0x%x", 'x', f_r1
, (char *) 0));
1845 #if WITH_PROFILE_MODEL_P
1846 /* Record the fields for profiling. */
1847 if (PROFILE_MODEL_P (current_cpu
))
1849 FLD (in_src2
) = f_r2
;
1850 FLD (in_src1
) = f_r1
;
1857 CASE (ex
, FMT_STB_D
) :
1859 CGEN_INSN_INT insn
= entire_insn
;
1860 #define FLD(f) abuf->fields.fmt_stb_d.f
1861 EXTRACT_FMT_STB_D_VARS
/* f-op1 f-r1 f-op2 f-r2 f-simm16 */
1863 EXTRACT_FMT_STB_D_CODE
1865 /* Record the fields for the semantic handler. */
1866 FLD (f_simm16
) = f_simm16
;
1867 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
1868 FLD (i_src1
) = & CPU (h_gr
)[f_r1
];
1869 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_stb_d", "f_simm16 0x%x", 'x', f_simm16
, "src2 0x%x", 'x', f_r2
, "src1 0x%x", 'x', f_r1
, (char *) 0));
1871 #if WITH_PROFILE_MODEL_P
1872 /* Record the fields for profiling. */
1873 if (PROFILE_MODEL_P (current_cpu
))
1875 FLD (in_src2
) = f_r2
;
1876 FLD (in_src1
) = f_r1
;
1883 CASE (ex
, FMT_STH
) :
1885 CGEN_INSN_INT insn
= entire_insn
;
1886 #define FLD(f) abuf->fields.fmt_sth.f
1887 EXTRACT_FMT_STH_VARS
/* f-op1 f-r1 f-op2 f-r2 */
1889 EXTRACT_FMT_STH_CODE
1891 /* Record the fields for the semantic handler. */
1892 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
1893 FLD (i_src1
) = & CPU (h_gr
)[f_r1
];
1894 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_sth", "src2 0x%x", 'x', f_r2
, "src1 0x%x", 'x', f_r1
, (char *) 0));
1896 #if WITH_PROFILE_MODEL_P
1897 /* Record the fields for profiling. */
1898 if (PROFILE_MODEL_P (current_cpu
))
1900 FLD (in_src2
) = f_r2
;
1901 FLD (in_src1
) = f_r1
;
1908 CASE (ex
, FMT_STH_D
) :
1910 CGEN_INSN_INT insn
= entire_insn
;
1911 #define FLD(f) abuf->fields.fmt_sth_d.f
1912 EXTRACT_FMT_STH_D_VARS
/* f-op1 f-r1 f-op2 f-r2 f-simm16 */
1914 EXTRACT_FMT_STH_D_CODE
1916 /* Record the fields for the semantic handler. */
1917 FLD (f_simm16
) = f_simm16
;
1918 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
1919 FLD (i_src1
) = & CPU (h_gr
)[f_r1
];
1920 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_sth_d", "f_simm16 0x%x", 'x', f_simm16
, "src2 0x%x", 'x', f_r2
, "src1 0x%x", 'x', f_r1
, (char *) 0));
1922 #if WITH_PROFILE_MODEL_P
1923 /* Record the fields for profiling. */
1924 if (PROFILE_MODEL_P (current_cpu
))
1926 FLD (in_src2
) = f_r2
;
1927 FLD (in_src1
) = f_r1
;
1934 CASE (ex
, FMT_ST_PLUS
) :
1936 CGEN_INSN_INT insn
= entire_insn
;
1937 #define FLD(f) abuf->fields.fmt_st_plus.f
1938 EXTRACT_FMT_ST_PLUS_VARS
/* f-op1 f-r1 f-op2 f-r2 */
1940 EXTRACT_FMT_ST_PLUS_CODE
1942 /* Record the fields for the semantic handler. */
1943 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
1944 FLD (i_src1
) = & CPU (h_gr
)[f_r1
];
1945 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_st_plus", "src2 0x%x", 'x', f_r2
, "src1 0x%x", 'x', f_r1
, (char *) 0));
1947 #if WITH_PROFILE_MODEL_P
1948 /* Record the fields for profiling. */
1949 if (PROFILE_MODEL_P (current_cpu
))
1951 FLD (in_src2
) = f_r2
;
1952 FLD (in_src1
) = f_r1
;
1953 FLD (out_src2
) = f_r2
;
1960 CASE (ex
, FMT_TRAP
) :
1962 CGEN_INSN_INT insn
= entire_insn
;
1963 #define FLD(f) abuf->fields.cti.fields.fmt_trap.f
1964 EXTRACT_FMT_TRAP_VARS
/* f-op1 f-r1 f-op2 f-uimm4 */
1966 EXTRACT_FMT_TRAP_CODE
1968 /* Record the fields for the semantic handler. */
1969 FLD (f_uimm4
) = f_uimm4
;
1970 SEM_BRANCH_INIT_EXTRACT (abuf
);
1971 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_trap", "f_uimm4 0x%x", 'x', f_uimm4
, (char *) 0));
1973 #if WITH_PROFILE_MODEL_P
1974 /* Record the fields for profiling. */
1975 if (PROFILE_MODEL_P (current_cpu
))
1983 CASE (ex
, FMT_UNLOCK
) :
1985 CGEN_INSN_INT insn
= entire_insn
;
1986 #define FLD(f) abuf->fields.fmt_unlock.f
1987 EXTRACT_FMT_UNLOCK_VARS
/* f-op1 f-r1 f-op2 f-r2 */
1989 EXTRACT_FMT_UNLOCK_CODE
1991 /* Record the fields for the semantic handler. */
1992 FLD (i_src2
) = & CPU (h_gr
)[f_r2
];
1993 FLD (i_src1
) = & CPU (h_gr
)[f_r1
];
1994 TRACE_EXTRACT (current_cpu
, abuf
, (current_cpu
, pc
, "fmt_unlock", "src2 0x%x", 'x', f_r2
, "src1 0x%x", 'x', f_r1
, (char *) 0));
1996 #if WITH_PROFILE_MODEL_P
1997 /* Record the fields for profiling. */
1998 if (PROFILE_MODEL_P (current_cpu
))
2000 FLD (in_src2
) = f_r2
;
2001 FLD (in_src1
) = f_r1
;
2014 return idecode
->idesc
;