1 /* Simulator instruction extractor for m32r.
3 Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
5 This file is part of the GNU Simulators.
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
9 the Free Software Foundation; either version 2, or (at your option)
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License along
18 with this program; if not, write to the Free Software Foundation, Inc.,
19 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
30 EX_FN_NAME (m32r
,fmt_0_add
) (SIM_CPU
*current_cpu
, PCADDR pc
, insn_t insn
, ARGBUF
*abuf
)
32 #define FLD(f) abuf->fields.fmt_0_add.f
33 EXTRACT_FMT_0_ADD_VARS
/* f-op1 f-r1 f-op2 f-r2 */
35 EXTRACT_FMT_0_ADD_CODE
37 /* Record the fields for the semantic handler. */
38 FLD (f_r1
) = & CPU (h_gr
)[f_r1
];
39 FLD (f_r2
) = & CPU (h_gr
)[f_r2
];
40 TRACE_EXTRACT (current_cpu
, (current_cpu
, pc
, "fmt_0_add", "dr 0x%x", 'x', f_r1
, "sr 0x%x", 'x', f_r2
, (char *) 0));
42 abuf
->length
= length
;
45 #if WITH_PROFILE_MODEL_P
46 /* Record the fields for profiling. */
47 if (PROFILE_MODEL_P (current_cpu
))
49 abuf
->h_gr_get
= 0 | (1 << f_r1
) | (1 << f_r2
);
50 abuf
->h_gr_set
= 0 | (1 << f_r1
);
57 EX_FN_NAME (m32r
,fmt_1_add3
) (SIM_CPU
*current_cpu
, PCADDR pc
, insn_t insn
, ARGBUF
*abuf
)
59 #define FLD(f) abuf->fields.fmt_1_add3.f
60 EXTRACT_FMT_1_ADD3_VARS
/* f-op1 f-r1 f-op2 f-r2 f-simm16 */
62 EXTRACT_FMT_1_ADD3_CODE
64 /* Record the fields for the semantic handler. */
65 FLD (f_r1
) = & CPU (h_gr
)[f_r1
];
66 FLD (f_r2
) = & CPU (h_gr
)[f_r2
];
67 FLD (f_simm16
) = f_simm16
;
68 TRACE_EXTRACT (current_cpu
, (current_cpu
, pc
, "fmt_1_add3", "dr 0x%x", 'x', f_r1
, "sr 0x%x", 'x', f_r2
, "slo16 0x%x", 'x', f_simm16
, (char *) 0));
70 abuf
->length
= length
;
73 #if WITH_PROFILE_MODEL_P
74 /* Record the fields for profiling. */
75 if (PROFILE_MODEL_P (current_cpu
))
77 abuf
->h_gr_get
= 0 | (1 << f_r2
);
78 abuf
->h_gr_set
= 0 | (1 << f_r1
);
85 EX_FN_NAME (m32r
,fmt_2_and3
) (SIM_CPU
*current_cpu
, PCADDR pc
, insn_t insn
, ARGBUF
*abuf
)
87 #define FLD(f) abuf->fields.fmt_2_and3.f
88 EXTRACT_FMT_2_AND3_VARS
/* f-op1 f-r1 f-op2 f-r2 f-uimm16 */
90 EXTRACT_FMT_2_AND3_CODE
92 /* Record the fields for the semantic handler. */
93 FLD (f_r1
) = & CPU (h_gr
)[f_r1
];
94 FLD (f_r2
) = & CPU (h_gr
)[f_r2
];
95 FLD (f_uimm16
) = f_uimm16
;
96 TRACE_EXTRACT (current_cpu
, (current_cpu
, pc
, "fmt_2_and3", "dr 0x%x", 'x', f_r1
, "sr 0x%x", 'x', f_r2
, "uimm16 0x%x", 'x', f_uimm16
, (char *) 0));
98 abuf
->length
= length
;
101 #if WITH_PROFILE_MODEL_P
102 /* Record the fields for profiling. */
103 if (PROFILE_MODEL_P (current_cpu
))
105 abuf
->h_gr_get
= 0 | (1 << f_r2
);
106 abuf
->h_gr_set
= 0 | (1 << f_r1
);
113 EX_FN_NAME (m32r
,fmt_3_or3
) (SIM_CPU
*current_cpu
, PCADDR pc
, insn_t insn
, ARGBUF
*abuf
)
115 #define FLD(f) abuf->fields.fmt_3_or3.f
116 EXTRACT_FMT_3_OR3_VARS
/* f-op1 f-r1 f-op2 f-r2 f-uimm16 */
118 EXTRACT_FMT_3_OR3_CODE
120 /* Record the fields for the semantic handler. */
121 FLD (f_r1
) = & CPU (h_gr
)[f_r1
];
122 FLD (f_r2
) = & CPU (h_gr
)[f_r2
];
123 FLD (f_uimm16
) = f_uimm16
;
124 TRACE_EXTRACT (current_cpu
, (current_cpu
, pc
, "fmt_3_or3", "dr 0x%x", 'x', f_r1
, "sr 0x%x", 'x', f_r2
, "ulo16 0x%x", 'x', f_uimm16
, (char *) 0));
126 abuf
->length
= length
;
129 #if WITH_PROFILE_MODEL_P
130 /* Record the fields for profiling. */
131 if (PROFILE_MODEL_P (current_cpu
))
133 abuf
->h_gr_get
= 0 | (1 << f_r2
);
134 abuf
->h_gr_set
= 0 | (1 << f_r1
);
141 EX_FN_NAME (m32r
,fmt_4_addi
) (SIM_CPU
*current_cpu
, PCADDR pc
, insn_t insn
, ARGBUF
*abuf
)
143 #define FLD(f) abuf->fields.fmt_4_addi.f
144 EXTRACT_FMT_4_ADDI_VARS
/* f-op1 f-r1 f-simm8 */
146 EXTRACT_FMT_4_ADDI_CODE
148 /* Record the fields for the semantic handler. */
149 FLD (f_r1
) = & CPU (h_gr
)[f_r1
];
150 FLD (f_simm8
) = f_simm8
;
151 TRACE_EXTRACT (current_cpu
, (current_cpu
, pc
, "fmt_4_addi", "dr 0x%x", 'x', f_r1
, "simm8 0x%x", 'x', f_simm8
, (char *) 0));
153 abuf
->length
= length
;
156 #if WITH_PROFILE_MODEL_P
157 /* Record the fields for profiling. */
158 if (PROFILE_MODEL_P (current_cpu
))
160 abuf
->h_gr_get
= 0 | (1 << f_r1
);
161 abuf
->h_gr_set
= 0 | (1 << f_r1
);
168 EX_FN_NAME (m32r
,fmt_5_addv3
) (SIM_CPU
*current_cpu
, PCADDR pc
, insn_t insn
, ARGBUF
*abuf
)
170 #define FLD(f) abuf->fields.fmt_5_addv3.f
171 EXTRACT_FMT_5_ADDV3_VARS
/* f-op1 f-r1 f-op2 f-r2 f-simm16 */
173 EXTRACT_FMT_5_ADDV3_CODE
175 /* Record the fields for the semantic handler. */
176 FLD (f_r1
) = & CPU (h_gr
)[f_r1
];
177 FLD (f_r2
) = & CPU (h_gr
)[f_r2
];
178 FLD (f_simm16
) = f_simm16
;
179 TRACE_EXTRACT (current_cpu
, (current_cpu
, pc
, "fmt_5_addv3", "dr 0x%x", 'x', f_r1
, "sr 0x%x", 'x', f_r2
, "simm16 0x%x", 'x', f_simm16
, (char *) 0));
181 abuf
->length
= length
;
184 #if WITH_PROFILE_MODEL_P
185 /* Record the fields for profiling. */
186 if (PROFILE_MODEL_P (current_cpu
))
188 abuf
->h_gr_get
= 0 | (1 << f_r2
);
189 abuf
->h_gr_set
= 0 | (1 << f_r1
);
196 EX_FN_NAME (m32r
,fmt_6_addx
) (SIM_CPU
*current_cpu
, PCADDR pc
, insn_t insn
, ARGBUF
*abuf
)
198 #define FLD(f) abuf->fields.fmt_6_addx.f
199 EXTRACT_FMT_6_ADDX_VARS
/* f-op1 f-r1 f-op2 f-r2 */
201 EXTRACT_FMT_6_ADDX_CODE
203 /* Record the fields for the semantic handler. */
204 FLD (f_r1
) = & CPU (h_gr
)[f_r1
];
205 FLD (f_r2
) = & CPU (h_gr
)[f_r2
];
206 TRACE_EXTRACT (current_cpu
, (current_cpu
, pc
, "fmt_6_addx", "dr 0x%x", 'x', f_r1
, "sr 0x%x", 'x', f_r2
, (char *) 0));
208 abuf
->length
= length
;
211 #if WITH_PROFILE_MODEL_P
212 /* Record the fields for profiling. */
213 if (PROFILE_MODEL_P (current_cpu
))
215 abuf
->h_gr_get
= 0 | (1 << f_r1
) | (1 << f_r2
);
216 abuf
->h_gr_set
= 0 | (1 << f_r1
);
223 EX_FN_NAME (m32r
,fmt_7_bc8
) (SIM_CPU
*current_cpu
, PCADDR pc
, insn_t insn
, ARGBUF
*abuf
)
225 #define FLD(f) abuf->fields.fmt_7_bc8.f
226 EXTRACT_FMT_7_BC8_VARS
/* f-op1 f-r1 f-disp8 */
228 EXTRACT_FMT_7_BC8_CODE
230 /* Record the fields for the semantic handler. */
231 RECORD_IADDR (FLD (f_disp8
), (pc
& -4L) + f_disp8
);
232 TRACE_EXTRACT (current_cpu
, (current_cpu
, pc
, "fmt_7_bc8", "disp8 0x%x", 'x', f_disp8
, (char *) 0));
234 abuf
->length
= length
;
240 EX_FN_NAME (m32r
,fmt_8_bc24
) (SIM_CPU
*current_cpu
, PCADDR pc
, insn_t insn
, ARGBUF
*abuf
)
242 #define FLD(f) abuf->fields.fmt_8_bc24.f
243 EXTRACT_FMT_8_BC24_VARS
/* f-op1 f-r1 f-disp24 */
245 EXTRACT_FMT_8_BC24_CODE
247 /* Record the fields for the semantic handler. */
248 RECORD_IADDR (FLD (f_disp24
), pc
+ f_disp24
);
249 TRACE_EXTRACT (current_cpu
, (current_cpu
, pc
, "fmt_8_bc24", "disp24 0x%x", 'x', f_disp24
, (char *) 0));
251 abuf
->length
= length
;
257 EX_FN_NAME (m32r
,fmt_9_beq
) (SIM_CPU
*current_cpu
, PCADDR pc
, insn_t insn
, ARGBUF
*abuf
)
259 #define FLD(f) abuf->fields.fmt_9_beq.f
260 EXTRACT_FMT_9_BEQ_VARS
/* f-op1 f-r1 f-op2 f-r2 f-disp16 */
262 EXTRACT_FMT_9_BEQ_CODE
264 /* Record the fields for the semantic handler. */
265 FLD (f_r1
) = & CPU (h_gr
)[f_r1
];
266 FLD (f_r2
) = & CPU (h_gr
)[f_r2
];
267 RECORD_IADDR (FLD (f_disp16
), pc
+ f_disp16
);
268 TRACE_EXTRACT (current_cpu
, (current_cpu
, pc
, "fmt_9_beq", "src1 0x%x", 'x', f_r1
, "src2 0x%x", 'x', f_r2
, "disp16 0x%x", 'x', f_disp16
, (char *) 0));
270 abuf
->length
= length
;
273 #if WITH_PROFILE_MODEL_P
274 /* Record the fields for profiling. */
275 if (PROFILE_MODEL_P (current_cpu
))
277 abuf
->h_gr_get
= 0 | (1 << f_r1
) | (1 << f_r2
);
284 EX_FN_NAME (m32r
,fmt_10_beqz
) (SIM_CPU
*current_cpu
, PCADDR pc
, insn_t insn
, ARGBUF
*abuf
)
286 #define FLD(f) abuf->fields.fmt_10_beqz.f
287 EXTRACT_FMT_10_BEQZ_VARS
/* f-op1 f-r1 f-op2 f-r2 f-disp16 */
289 EXTRACT_FMT_10_BEQZ_CODE
291 /* Record the fields for the semantic handler. */
292 FLD (f_r2
) = & CPU (h_gr
)[f_r2
];
293 RECORD_IADDR (FLD (f_disp16
), pc
+ f_disp16
);
294 TRACE_EXTRACT (current_cpu
, (current_cpu
, pc
, "fmt_10_beqz", "src2 0x%x", 'x', f_r2
, "disp16 0x%x", 'x', f_disp16
, (char *) 0));
296 abuf
->length
= length
;
299 #if WITH_PROFILE_MODEL_P
300 /* Record the fields for profiling. */
301 if (PROFILE_MODEL_P (current_cpu
))
303 abuf
->h_gr_get
= 0 | (1 << f_r2
);
310 EX_FN_NAME (m32r
,fmt_11_bl8
) (SIM_CPU
*current_cpu
, PCADDR pc
, insn_t insn
, ARGBUF
*abuf
)
312 #define FLD(f) abuf->fields.fmt_11_bl8.f
313 EXTRACT_FMT_11_BL8_VARS
/* f-op1 f-r1 f-disp8 */
315 EXTRACT_FMT_11_BL8_CODE
317 /* Record the fields for the semantic handler. */
318 RECORD_IADDR (FLD (f_disp8
), (pc
& -4L) + f_disp8
);
319 TRACE_EXTRACT (current_cpu
, (current_cpu
, pc
, "fmt_11_bl8", "disp8 0x%x", 'x', f_disp8
, (char *) 0));
321 abuf
->length
= length
;
327 EX_FN_NAME (m32r
,fmt_12_bl24
) (SIM_CPU
*current_cpu
, PCADDR pc
, insn_t insn
, ARGBUF
*abuf
)
329 #define FLD(f) abuf->fields.fmt_12_bl24.f
330 EXTRACT_FMT_12_BL24_VARS
/* f-op1 f-r1 f-disp24 */
332 EXTRACT_FMT_12_BL24_CODE
334 /* Record the fields for the semantic handler. */
335 RECORD_IADDR (FLD (f_disp24
), pc
+ f_disp24
);
336 TRACE_EXTRACT (current_cpu
, (current_cpu
, pc
, "fmt_12_bl24", "disp24 0x%x", 'x', f_disp24
, (char *) 0));
338 abuf
->length
= length
;
344 EX_FN_NAME (m32r
,fmt_13_bra8
) (SIM_CPU
*current_cpu
, PCADDR pc
, insn_t insn
, ARGBUF
*abuf
)
346 #define FLD(f) abuf->fields.fmt_13_bra8.f
347 EXTRACT_FMT_13_BRA8_VARS
/* f-op1 f-r1 f-disp8 */
349 EXTRACT_FMT_13_BRA8_CODE
351 /* Record the fields for the semantic handler. */
352 RECORD_IADDR (FLD (f_disp8
), (pc
& -4L) + f_disp8
);
353 TRACE_EXTRACT (current_cpu
, (current_cpu
, pc
, "fmt_13_bra8", "disp8 0x%x", 'x', f_disp8
, (char *) 0));
355 abuf
->length
= length
;
361 EX_FN_NAME (m32r
,fmt_14_bra24
) (SIM_CPU
*current_cpu
, PCADDR pc
, insn_t insn
, ARGBUF
*abuf
)
363 #define FLD(f) abuf->fields.fmt_14_bra24.f
364 EXTRACT_FMT_14_BRA24_VARS
/* f-op1 f-r1 f-disp24 */
366 EXTRACT_FMT_14_BRA24_CODE
368 /* Record the fields for the semantic handler. */
369 RECORD_IADDR (FLD (f_disp24
), pc
+ f_disp24
);
370 TRACE_EXTRACT (current_cpu
, (current_cpu
, pc
, "fmt_14_bra24", "disp24 0x%x", 'x', f_disp24
, (char *) 0));
372 abuf
->length
= length
;
378 EX_FN_NAME (m32r
,fmt_15_cmp
) (SIM_CPU
*current_cpu
, PCADDR pc
, insn_t insn
, ARGBUF
*abuf
)
380 #define FLD(f) abuf->fields.fmt_15_cmp.f
381 EXTRACT_FMT_15_CMP_VARS
/* f-op1 f-r1 f-op2 f-r2 */
383 EXTRACT_FMT_15_CMP_CODE
385 /* Record the fields for the semantic handler. */
386 FLD (f_r1
) = & CPU (h_gr
)[f_r1
];
387 FLD (f_r2
) = & CPU (h_gr
)[f_r2
];
388 TRACE_EXTRACT (current_cpu
, (current_cpu
, pc
, "fmt_15_cmp", "src1 0x%x", 'x', f_r1
, "src2 0x%x", 'x', f_r2
, (char *) 0));
390 abuf
->length
= length
;
393 #if WITH_PROFILE_MODEL_P
394 /* Record the fields for profiling. */
395 if (PROFILE_MODEL_P (current_cpu
))
397 abuf
->h_gr_get
= 0 | (1 << f_r1
) | (1 << f_r2
);
404 EX_FN_NAME (m32r
,fmt_16_cmpi
) (SIM_CPU
*current_cpu
, PCADDR pc
, insn_t insn
, ARGBUF
*abuf
)
406 #define FLD(f) abuf->fields.fmt_16_cmpi.f
407 EXTRACT_FMT_16_CMPI_VARS
/* f-op1 f-r1 f-op2 f-r2 f-simm16 */
409 EXTRACT_FMT_16_CMPI_CODE
411 /* Record the fields for the semantic handler. */
412 FLD (f_r2
) = & CPU (h_gr
)[f_r2
];
413 FLD (f_simm16
) = f_simm16
;
414 TRACE_EXTRACT (current_cpu
, (current_cpu
, pc
, "fmt_16_cmpi", "src2 0x%x", 'x', f_r2
, "simm16 0x%x", 'x', f_simm16
, (char *) 0));
416 abuf
->length
= length
;
419 #if WITH_PROFILE_MODEL_P
420 /* Record the fields for profiling. */
421 if (PROFILE_MODEL_P (current_cpu
))
423 abuf
->h_gr_get
= 0 | (1 << f_r2
);
430 EX_FN_NAME (m32r
,fmt_17_cmpui
) (SIM_CPU
*current_cpu
, PCADDR pc
, insn_t insn
, ARGBUF
*abuf
)
432 #define FLD(f) abuf->fields.fmt_17_cmpui.f
433 EXTRACT_FMT_17_CMPUI_VARS
/* f-op1 f-r1 f-op2 f-r2 f-uimm16 */
435 EXTRACT_FMT_17_CMPUI_CODE
437 /* Record the fields for the semantic handler. */
438 FLD (f_r2
) = & CPU (h_gr
)[f_r2
];
439 FLD (f_uimm16
) = f_uimm16
;
440 TRACE_EXTRACT (current_cpu
, (current_cpu
, pc
, "fmt_17_cmpui", "src2 0x%x", 'x', f_r2
, "uimm16 0x%x", 'x', f_uimm16
, (char *) 0));
442 abuf
->length
= length
;
445 #if WITH_PROFILE_MODEL_P
446 /* Record the fields for profiling. */
447 if (PROFILE_MODEL_P (current_cpu
))
449 abuf
->h_gr_get
= 0 | (1 << f_r2
);
456 EX_FN_NAME (m32r
,fmt_18_div
) (SIM_CPU
*current_cpu
, PCADDR pc
, insn_t insn
, ARGBUF
*abuf
)
458 #define FLD(f) abuf->fields.fmt_18_div.f
459 EXTRACT_FMT_18_DIV_VARS
/* f-op1 f-r1 f-op2 f-r2 f-simm16 */
461 EXTRACT_FMT_18_DIV_CODE
463 /* Record the fields for the semantic handler. */
464 FLD (f_r1
) = & CPU (h_gr
)[f_r1
];
465 FLD (f_r2
) = & CPU (h_gr
)[f_r2
];
466 TRACE_EXTRACT (current_cpu
, (current_cpu
, pc
, "fmt_18_div", "dr 0x%x", 'x', f_r1
, "sr 0x%x", 'x', f_r2
, (char *) 0));
468 abuf
->length
= length
;
471 #if WITH_PROFILE_MODEL_P
472 /* Record the fields for profiling. */
473 if (PROFILE_MODEL_P (current_cpu
))
475 abuf
->h_gr_get
= 0 | (1 << f_r1
) | (1 << f_r2
);
476 abuf
->h_gr_set
= 0 | (1 << f_r1
);
483 EX_FN_NAME (m32r
,fmt_19_jl
) (SIM_CPU
*current_cpu
, PCADDR pc
, insn_t insn
, ARGBUF
*abuf
)
485 #define FLD(f) abuf->fields.fmt_19_jl.f
486 EXTRACT_FMT_19_JL_VARS
/* f-op1 f-r1 f-op2 f-r2 */
488 EXTRACT_FMT_19_JL_CODE
490 /* Record the fields for the semantic handler. */
491 FLD (f_r2
) = & CPU (h_gr
)[f_r2
];
492 TRACE_EXTRACT (current_cpu
, (current_cpu
, pc
, "fmt_19_jl", "sr 0x%x", 'x', f_r2
, (char *) 0));
494 abuf
->length
= length
;
497 #if WITH_PROFILE_MODEL_P
498 /* Record the fields for profiling. */
499 if (PROFILE_MODEL_P (current_cpu
))
501 abuf
->h_gr_get
= 0 | (1 << f_r2
);
508 EX_FN_NAME (m32r
,fmt_20_jmp
) (SIM_CPU
*current_cpu
, PCADDR pc
, insn_t insn
, ARGBUF
*abuf
)
510 #define FLD(f) abuf->fields.fmt_20_jmp.f
511 EXTRACT_FMT_20_JMP_VARS
/* f-op1 f-r1 f-op2 f-r2 */
513 EXTRACT_FMT_20_JMP_CODE
515 /* Record the fields for the semantic handler. */
516 FLD (f_r2
) = & CPU (h_gr
)[f_r2
];
517 TRACE_EXTRACT (current_cpu
, (current_cpu
, pc
, "fmt_20_jmp", "sr 0x%x", 'x', f_r2
, (char *) 0));
519 abuf
->length
= length
;
522 #if WITH_PROFILE_MODEL_P
523 /* Record the fields for profiling. */
524 if (PROFILE_MODEL_P (current_cpu
))
526 abuf
->h_gr_get
= 0 | (1 << f_r2
);
533 EX_FN_NAME (m32r
,fmt_21_ld
) (SIM_CPU
*current_cpu
, PCADDR pc
, insn_t insn
, ARGBUF
*abuf
)
535 #define FLD(f) abuf->fields.fmt_21_ld.f
536 EXTRACT_FMT_21_LD_VARS
/* f-op1 f-r1 f-op2 f-r2 */
538 EXTRACT_FMT_21_LD_CODE
540 /* Record the fields for the semantic handler. */
541 FLD (f_r1
) = & CPU (h_gr
)[f_r1
];
542 FLD (f_r2
) = & CPU (h_gr
)[f_r2
];
543 TRACE_EXTRACT (current_cpu
, (current_cpu
, pc
, "fmt_21_ld", "dr 0x%x", 'x', f_r1
, "sr 0x%x", 'x', f_r2
, (char *) 0));
545 abuf
->length
= length
;
548 #if WITH_PROFILE_MODEL_P
549 /* Record the fields for profiling. */
550 if (PROFILE_MODEL_P (current_cpu
))
552 abuf
->h_gr_get
= 0 | (1 << f_r2
);
553 abuf
->h_gr_set
= 0 | (1 << f_r1
);
560 EX_FN_NAME (m32r
,fmt_22_ld_d
) (SIM_CPU
*current_cpu
, PCADDR pc
, insn_t insn
, ARGBUF
*abuf
)
562 #define FLD(f) abuf->fields.fmt_22_ld_d.f
563 EXTRACT_FMT_22_LD_D_VARS
/* f-op1 f-r1 f-op2 f-r2 f-simm16 */
565 EXTRACT_FMT_22_LD_D_CODE
567 /* Record the fields for the semantic handler. */
568 FLD (f_r1
) = & CPU (h_gr
)[f_r1
];
569 FLD (f_r2
) = & CPU (h_gr
)[f_r2
];
570 FLD (f_simm16
) = f_simm16
;
571 TRACE_EXTRACT (current_cpu
, (current_cpu
, pc
, "fmt_22_ld_d", "dr 0x%x", 'x', f_r1
, "sr 0x%x", 'x', f_r2
, "slo16 0x%x", 'x', f_simm16
, (char *) 0));
573 abuf
->length
= length
;
576 #if WITH_PROFILE_MODEL_P
577 /* Record the fields for profiling. */
578 if (PROFILE_MODEL_P (current_cpu
))
580 abuf
->h_gr_get
= 0 | (1 << f_r2
);
581 abuf
->h_gr_set
= 0 | (1 << f_r1
);
588 EX_FN_NAME (m32r
,fmt_23_ldb
) (SIM_CPU
*current_cpu
, PCADDR pc
, insn_t insn
, ARGBUF
*abuf
)
590 #define FLD(f) abuf->fields.fmt_23_ldb.f
591 EXTRACT_FMT_23_LDB_VARS
/* f-op1 f-r1 f-op2 f-r2 */
593 EXTRACT_FMT_23_LDB_CODE
595 /* Record the fields for the semantic handler. */
596 FLD (f_r1
) = & CPU (h_gr
)[f_r1
];
597 FLD (f_r2
) = & CPU (h_gr
)[f_r2
];
598 TRACE_EXTRACT (current_cpu
, (current_cpu
, pc
, "fmt_23_ldb", "dr 0x%x", 'x', f_r1
, "sr 0x%x", 'x', f_r2
, (char *) 0));
600 abuf
->length
= length
;
603 #if WITH_PROFILE_MODEL_P
604 /* Record the fields for profiling. */
605 if (PROFILE_MODEL_P (current_cpu
))
607 abuf
->h_gr_get
= 0 | (1 << f_r2
);
608 abuf
->h_gr_set
= 0 | (1 << f_r1
);
615 EX_FN_NAME (m32r
,fmt_24_ldb_d
) (SIM_CPU
*current_cpu
, PCADDR pc
, insn_t insn
, ARGBUF
*abuf
)
617 #define FLD(f) abuf->fields.fmt_24_ldb_d.f
618 EXTRACT_FMT_24_LDB_D_VARS
/* f-op1 f-r1 f-op2 f-r2 f-simm16 */
620 EXTRACT_FMT_24_LDB_D_CODE
622 /* Record the fields for the semantic handler. */
623 FLD (f_r1
) = & CPU (h_gr
)[f_r1
];
624 FLD (f_r2
) = & CPU (h_gr
)[f_r2
];
625 FLD (f_simm16
) = f_simm16
;
626 TRACE_EXTRACT (current_cpu
, (current_cpu
, pc
, "fmt_24_ldb_d", "dr 0x%x", 'x', f_r1
, "sr 0x%x", 'x', f_r2
, "slo16 0x%x", 'x', f_simm16
, (char *) 0));
628 abuf
->length
= length
;
631 #if WITH_PROFILE_MODEL_P
632 /* Record the fields for profiling. */
633 if (PROFILE_MODEL_P (current_cpu
))
635 abuf
->h_gr_get
= 0 | (1 << f_r2
);
636 abuf
->h_gr_set
= 0 | (1 << f_r1
);
643 EX_FN_NAME (m32r
,fmt_25_ldh
) (SIM_CPU
*current_cpu
, PCADDR pc
, insn_t insn
, ARGBUF
*abuf
)
645 #define FLD(f) abuf->fields.fmt_25_ldh.f
646 EXTRACT_FMT_25_LDH_VARS
/* f-op1 f-r1 f-op2 f-r2 */
648 EXTRACT_FMT_25_LDH_CODE
650 /* Record the fields for the semantic handler. */
651 FLD (f_r1
) = & CPU (h_gr
)[f_r1
];
652 FLD (f_r2
) = & CPU (h_gr
)[f_r2
];
653 TRACE_EXTRACT (current_cpu
, (current_cpu
, pc
, "fmt_25_ldh", "dr 0x%x", 'x', f_r1
, "sr 0x%x", 'x', f_r2
, (char *) 0));
655 abuf
->length
= length
;
658 #if WITH_PROFILE_MODEL_P
659 /* Record the fields for profiling. */
660 if (PROFILE_MODEL_P (current_cpu
))
662 abuf
->h_gr_get
= 0 | (1 << f_r2
);
663 abuf
->h_gr_set
= 0 | (1 << f_r1
);
670 EX_FN_NAME (m32r
,fmt_26_ldh_d
) (SIM_CPU
*current_cpu
, PCADDR pc
, insn_t insn
, ARGBUF
*abuf
)
672 #define FLD(f) abuf->fields.fmt_26_ldh_d.f
673 EXTRACT_FMT_26_LDH_D_VARS
/* f-op1 f-r1 f-op2 f-r2 f-simm16 */
675 EXTRACT_FMT_26_LDH_D_CODE
677 /* Record the fields for the semantic handler. */
678 FLD (f_r1
) = & CPU (h_gr
)[f_r1
];
679 FLD (f_r2
) = & CPU (h_gr
)[f_r2
];
680 FLD (f_simm16
) = f_simm16
;
681 TRACE_EXTRACT (current_cpu
, (current_cpu
, pc
, "fmt_26_ldh_d", "dr 0x%x", 'x', f_r1
, "sr 0x%x", 'x', f_r2
, "slo16 0x%x", 'x', f_simm16
, (char *) 0));
683 abuf
->length
= length
;
686 #if WITH_PROFILE_MODEL_P
687 /* Record the fields for profiling. */
688 if (PROFILE_MODEL_P (current_cpu
))
690 abuf
->h_gr_get
= 0 | (1 << f_r2
);
691 abuf
->h_gr_set
= 0 | (1 << f_r1
);
698 EX_FN_NAME (m32r
,fmt_27_ld24
) (SIM_CPU
*current_cpu
, PCADDR pc
, insn_t insn
, ARGBUF
*abuf
)
700 #define FLD(f) abuf->fields.fmt_27_ld24.f
701 EXTRACT_FMT_27_LD24_VARS
/* f-op1 f-r1 f-uimm24 */
703 EXTRACT_FMT_27_LD24_CODE
705 /* Record the fields for the semantic handler. */
706 FLD (f_r1
) = & CPU (h_gr
)[f_r1
];
707 FLD (f_uimm24
) = f_uimm24
;
708 TRACE_EXTRACT (current_cpu
, (current_cpu
, pc
, "fmt_27_ld24", "dr 0x%x", 'x', f_r1
, "uimm24 0x%x", 'x', f_uimm24
, (char *) 0));
710 abuf
->length
= length
;
713 #if WITH_PROFILE_MODEL_P
714 /* Record the fields for profiling. */
715 if (PROFILE_MODEL_P (current_cpu
))
717 abuf
->h_gr_set
= 0 | (1 << f_r1
);
724 EX_FN_NAME (m32r
,fmt_28_ldi8
) (SIM_CPU
*current_cpu
, PCADDR pc
, insn_t insn
, ARGBUF
*abuf
)
726 #define FLD(f) abuf->fields.fmt_28_ldi8.f
727 EXTRACT_FMT_28_LDI8_VARS
/* f-op1 f-r1 f-simm8 */
729 EXTRACT_FMT_28_LDI8_CODE
731 /* Record the fields for the semantic handler. */
732 FLD (f_r1
) = & CPU (h_gr
)[f_r1
];
733 FLD (f_simm8
) = f_simm8
;
734 TRACE_EXTRACT (current_cpu
, (current_cpu
, pc
, "fmt_28_ldi8", "dr 0x%x", 'x', f_r1
, "simm8 0x%x", 'x', f_simm8
, (char *) 0));
736 abuf
->length
= length
;
739 #if WITH_PROFILE_MODEL_P
740 /* Record the fields for profiling. */
741 if (PROFILE_MODEL_P (current_cpu
))
743 abuf
->h_gr_set
= 0 | (1 << f_r1
);
750 EX_FN_NAME (m32r
,fmt_29_ldi16
) (SIM_CPU
*current_cpu
, PCADDR pc
, insn_t insn
, ARGBUF
*abuf
)
752 #define FLD(f) abuf->fields.fmt_29_ldi16.f
753 EXTRACT_FMT_29_LDI16_VARS
/* f-op1 f-r1 f-op2 f-r2 f-simm16 */
755 EXTRACT_FMT_29_LDI16_CODE
757 /* Record the fields for the semantic handler. */
758 FLD (f_r1
) = & CPU (h_gr
)[f_r1
];
759 FLD (f_simm16
) = f_simm16
;
760 TRACE_EXTRACT (current_cpu
, (current_cpu
, pc
, "fmt_29_ldi16", "dr 0x%x", 'x', f_r1
, "slo16 0x%x", 'x', f_simm16
, (char *) 0));
762 abuf
->length
= length
;
765 #if WITH_PROFILE_MODEL_P
766 /* Record the fields for profiling. */
767 if (PROFILE_MODEL_P (current_cpu
))
769 abuf
->h_gr_set
= 0 | (1 << f_r1
);
776 EX_FN_NAME (m32r
,fmt_30_machi
) (SIM_CPU
*current_cpu
, PCADDR pc
, insn_t insn
, ARGBUF
*abuf
)
778 #define FLD(f) abuf->fields.fmt_30_machi.f
779 EXTRACT_FMT_30_MACHI_VARS
/* f-op1 f-r1 f-op2 f-r2 */
781 EXTRACT_FMT_30_MACHI_CODE
783 /* Record the fields for the semantic handler. */
784 FLD (f_r1
) = & CPU (h_gr
)[f_r1
];
785 FLD (f_r2
) = & CPU (h_gr
)[f_r2
];
786 TRACE_EXTRACT (current_cpu
, (current_cpu
, pc
, "fmt_30_machi", "src1 0x%x", 'x', f_r1
, "src2 0x%x", 'x', f_r2
, (char *) 0));
788 abuf
->length
= length
;
791 #if WITH_PROFILE_MODEL_P
792 /* Record the fields for profiling. */
793 if (PROFILE_MODEL_P (current_cpu
))
795 abuf
->h_gr_get
= 0 | (1 << f_r1
) | (1 << f_r2
);
802 EX_FN_NAME (m32r
,fmt_31_mv
) (SIM_CPU
*current_cpu
, PCADDR pc
, insn_t insn
, ARGBUF
*abuf
)
804 #define FLD(f) abuf->fields.fmt_31_mv.f
805 EXTRACT_FMT_31_MV_VARS
/* f-op1 f-r1 f-op2 f-r2 */
807 EXTRACT_FMT_31_MV_CODE
809 /* Record the fields for the semantic handler. */
810 FLD (f_r1
) = & CPU (h_gr
)[f_r1
];
811 FLD (f_r2
) = & CPU (h_gr
)[f_r2
];
812 TRACE_EXTRACT (current_cpu
, (current_cpu
, pc
, "fmt_31_mv", "dr 0x%x", 'x', f_r1
, "sr 0x%x", 'x', f_r2
, (char *) 0));
814 abuf
->length
= length
;
817 #if WITH_PROFILE_MODEL_P
818 /* Record the fields for profiling. */
819 if (PROFILE_MODEL_P (current_cpu
))
821 abuf
->h_gr_get
= 0 | (1 << f_r2
);
822 abuf
->h_gr_set
= 0 | (1 << f_r1
);
829 EX_FN_NAME (m32r
,fmt_32_mvfachi
) (SIM_CPU
*current_cpu
, PCADDR pc
, insn_t insn
, ARGBUF
*abuf
)
831 #define FLD(f) abuf->fields.fmt_32_mvfachi.f
832 EXTRACT_FMT_32_MVFACHI_VARS
/* f-op1 f-r1 f-op2 f-r2 */
834 EXTRACT_FMT_32_MVFACHI_CODE
836 /* Record the fields for the semantic handler. */
837 FLD (f_r1
) = & CPU (h_gr
)[f_r1
];
838 TRACE_EXTRACT (current_cpu
, (current_cpu
, pc
, "fmt_32_mvfachi", "dr 0x%x", 'x', f_r1
, (char *) 0));
840 abuf
->length
= length
;
843 #if WITH_PROFILE_MODEL_P
844 /* Record the fields for profiling. */
845 if (PROFILE_MODEL_P (current_cpu
))
847 abuf
->h_gr_set
= 0 | (1 << f_r1
);
854 EX_FN_NAME (m32r
,fmt_33_mvfc
) (SIM_CPU
*current_cpu
, PCADDR pc
, insn_t insn
, ARGBUF
*abuf
)
856 #define FLD(f) abuf->fields.fmt_33_mvfc.f
857 EXTRACT_FMT_33_MVFC_VARS
/* f-op1 f-r1 f-op2 f-r2 */
859 EXTRACT_FMT_33_MVFC_CODE
861 /* Record the fields for the semantic handler. */
862 FLD (f_r1
) = & CPU (h_gr
)[f_r1
];
864 TRACE_EXTRACT (current_cpu
, (current_cpu
, pc
, "fmt_33_mvfc", "dr 0x%x", 'x', f_r1
, "scr 0x%x", 'x', f_r2
, (char *) 0));
866 abuf
->length
= length
;
869 #if WITH_PROFILE_MODEL_P
870 /* Record the fields for profiling. */
871 if (PROFILE_MODEL_P (current_cpu
))
873 abuf
->h_gr_set
= 0 | (1 << f_r1
);
880 EX_FN_NAME (m32r
,fmt_34_mvtachi
) (SIM_CPU
*current_cpu
, PCADDR pc
, insn_t insn
, ARGBUF
*abuf
)
882 #define FLD(f) abuf->fields.fmt_34_mvtachi.f
883 EXTRACT_FMT_34_MVTACHI_VARS
/* f-op1 f-r1 f-op2 f-r2 */
885 EXTRACT_FMT_34_MVTACHI_CODE
887 /* Record the fields for the semantic handler. */
888 FLD (f_r1
) = & CPU (h_gr
)[f_r1
];
889 TRACE_EXTRACT (current_cpu
, (current_cpu
, pc
, "fmt_34_mvtachi", "src1 0x%x", 'x', f_r1
, (char *) 0));
891 abuf
->length
= length
;
894 #if WITH_PROFILE_MODEL_P
895 /* Record the fields for profiling. */
896 if (PROFILE_MODEL_P (current_cpu
))
898 abuf
->h_gr_get
= 0 | (1 << f_r1
);
905 EX_FN_NAME (m32r
,fmt_35_mvtc
) (SIM_CPU
*current_cpu
, PCADDR pc
, insn_t insn
, ARGBUF
*abuf
)
907 #define FLD(f) abuf->fields.fmt_35_mvtc.f
908 EXTRACT_FMT_35_MVTC_VARS
/* f-op1 f-r1 f-op2 f-r2 */
910 EXTRACT_FMT_35_MVTC_CODE
912 /* Record the fields for the semantic handler. */
914 FLD (f_r2
) = & CPU (h_gr
)[f_r2
];
915 TRACE_EXTRACT (current_cpu
, (current_cpu
, pc
, "fmt_35_mvtc", "dcr 0x%x", 'x', f_r1
, "sr 0x%x", 'x', f_r2
, (char *) 0));
917 abuf
->length
= length
;
920 #if WITH_PROFILE_MODEL_P
921 /* Record the fields for profiling. */
922 if (PROFILE_MODEL_P (current_cpu
))
924 abuf
->h_gr_get
= 0 | (1 << f_r2
);
931 EX_FN_NAME (m32r
,fmt_36_nop
) (SIM_CPU
*current_cpu
, PCADDR pc
, insn_t insn
, ARGBUF
*abuf
)
933 #define FLD(f) abuf->fields.fmt_36_nop.f
934 EXTRACT_FMT_36_NOP_VARS
/* f-op1 f-r1 f-op2 f-r2 */
936 EXTRACT_FMT_36_NOP_CODE
938 /* Record the fields for the semantic handler. */
939 TRACE_EXTRACT (current_cpu
, (current_cpu
, pc
, "fmt_36_nop", (char *) 0));
941 abuf
->length
= length
;
947 EX_FN_NAME (m32r
,fmt_37_rac
) (SIM_CPU
*current_cpu
, PCADDR pc
, insn_t insn
, ARGBUF
*abuf
)
949 #define FLD(f) abuf->fields.fmt_37_rac.f
950 EXTRACT_FMT_37_RAC_VARS
/* f-op1 f-r1 f-op2 f-r2 */
952 EXTRACT_FMT_37_RAC_CODE
954 /* Record the fields for the semantic handler. */
955 TRACE_EXTRACT (current_cpu
, (current_cpu
, pc
, "fmt_37_rac", (char *) 0));
957 abuf
->length
= length
;
963 EX_FN_NAME (m32r
,fmt_38_seth
) (SIM_CPU
*current_cpu
, PCADDR pc
, insn_t insn
, ARGBUF
*abuf
)
965 #define FLD(f) abuf->fields.fmt_38_seth.f
966 EXTRACT_FMT_38_SETH_VARS
/* f-op1 f-r1 f-op2 f-r2 f-hi16 */
968 EXTRACT_FMT_38_SETH_CODE
970 /* Record the fields for the semantic handler. */
971 FLD (f_r1
) = & CPU (h_gr
)[f_r1
];
972 FLD (f_hi16
) = f_hi16
;
973 TRACE_EXTRACT (current_cpu
, (current_cpu
, pc
, "fmt_38_seth", "dr 0x%x", 'x', f_r1
, "hi16 0x%x", 'x', f_hi16
, (char *) 0));
975 abuf
->length
= length
;
978 #if WITH_PROFILE_MODEL_P
979 /* Record the fields for profiling. */
980 if (PROFILE_MODEL_P (current_cpu
))
982 abuf
->h_gr_set
= 0 | (1 << f_r1
);
989 EX_FN_NAME (m32r
,fmt_39_slli
) (SIM_CPU
*current_cpu
, PCADDR pc
, insn_t insn
, ARGBUF
*abuf
)
991 #define FLD(f) abuf->fields.fmt_39_slli.f
992 EXTRACT_FMT_39_SLLI_VARS
/* f-op1 f-r1 f-shift-op2 f-uimm5 */
994 EXTRACT_FMT_39_SLLI_CODE
996 /* Record the fields for the semantic handler. */
997 FLD (f_r1
) = & CPU (h_gr
)[f_r1
];
998 FLD (f_uimm5
) = f_uimm5
;
999 TRACE_EXTRACT (current_cpu
, (current_cpu
, pc
, "fmt_39_slli", "dr 0x%x", 'x', f_r1
, "uimm5 0x%x", 'x', f_uimm5
, (char *) 0));
1001 abuf
->length
= length
;
1004 #if WITH_PROFILE_MODEL_P
1005 /* Record the fields for profiling. */
1006 if (PROFILE_MODEL_P (current_cpu
))
1008 abuf
->h_gr_get
= 0 | (1 << f_r1
);
1009 abuf
->h_gr_set
= 0 | (1 << f_r1
);
1016 EX_FN_NAME (m32r
,fmt_40_st_d
) (SIM_CPU
*current_cpu
, PCADDR pc
, insn_t insn
, ARGBUF
*abuf
)
1018 #define FLD(f) abuf->fields.fmt_40_st_d.f
1019 EXTRACT_FMT_40_ST_D_VARS
/* f-op1 f-r1 f-op2 f-r2 f-simm16 */
1021 EXTRACT_FMT_40_ST_D_CODE
1023 /* Record the fields for the semantic handler. */
1024 FLD (f_r1
) = & CPU (h_gr
)[f_r1
];
1025 FLD (f_r2
) = & CPU (h_gr
)[f_r2
];
1026 FLD (f_simm16
) = f_simm16
;
1027 TRACE_EXTRACT (current_cpu
, (current_cpu
, pc
, "fmt_40_st_d", "src1 0x%x", 'x', f_r1
, "src2 0x%x", 'x', f_r2
, "slo16 0x%x", 'x', f_simm16
, (char *) 0));
1029 abuf
->length
= length
;
1032 #if WITH_PROFILE_MODEL_P
1033 /* Record the fields for profiling. */
1034 if (PROFILE_MODEL_P (current_cpu
))
1036 abuf
->h_gr_get
= 0 | (1 << f_r1
) | (1 << f_r2
);
1043 EX_FN_NAME (m32r
,fmt_41_trap
) (SIM_CPU
*current_cpu
, PCADDR pc
, insn_t insn
, ARGBUF
*abuf
)
1045 #define FLD(f) abuf->fields.fmt_41_trap.f
1046 EXTRACT_FMT_41_TRAP_VARS
/* f-op1 f-r1 f-op2 f-uimm4 */
1048 EXTRACT_FMT_41_TRAP_CODE
1050 /* Record the fields for the semantic handler. */
1051 FLD (f_uimm4
) = f_uimm4
;
1052 TRACE_EXTRACT (current_cpu
, (current_cpu
, pc
, "fmt_41_trap", "uimm4 0x%x", 'x', f_uimm4
, (char *) 0));
1054 abuf
->length
= length
;
1060 EX_FN_NAME (m32r
,illegal
) (SIM_CPU
*cpu
, PCADDR pc
, insn_t insn
, ARGBUF
*abuf
)
1062 abuf
->length
= CGEN_BASE_INSN_SIZE
;
1064 /* Leave signalling to semantic fn. */
1069 EXC_FN_NAME (m32r
,illegal
) (SIM_CPU
*cpu
, PCADDR pc
, insn_t insn
, ARGBUF
*abuf
)
1071 abuf
->length
= CGEN_BASE_INSN_SIZE
;
1073 /* Leave signalling to semantic fn. */