1 /* Simulator instruction operand reader for m32r.
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.
26 #define WANT_CPU_M32RX
34 /* The labels have the case they have because the enum of insn types
35 is all uppercase and in the non-stdc case the fmt symbol is built
38 The order here must match the order in m32rx_decode_vars in decode.c. */
40 static void *labels
[] = {
41 && case_read_READ_ILLEGAL
,
42 && case_read_READ_FMT_0_ADD
,
43 && case_read_READ_FMT_1_ADD3
,
44 && case_read_READ_FMT_2_AND3
,
45 && case_read_READ_FMT_3_OR3
,
46 && case_read_READ_FMT_4_ADDI
,
47 && case_read_READ_FMT_5_ADDV3
,
48 && case_read_READ_FMT_6_ADDX
,
49 && case_read_READ_FMT_7_BC8
,
50 && case_read_READ_FMT_8_BC24
,
51 && case_read_READ_FMT_9_BEQ
,
52 && case_read_READ_FMT_10_BEQZ
,
53 && case_read_READ_FMT_11_BL8
,
54 && case_read_READ_FMT_12_BL24
,
55 && case_read_READ_FMT_13_BCL8
,
56 && case_read_READ_FMT_14_BCL24
,
57 && case_read_READ_FMT_15_BRA8
,
58 && case_read_READ_FMT_16_BRA24
,
59 && case_read_READ_FMT_17_CMP
,
60 && case_read_READ_FMT_18_CMPI
,
61 && case_read_READ_FMT_19_CMPUI
,
62 && case_read_READ_FMT_20_CMPZ
,
63 && case_read_READ_FMT_21_DIV
,
64 && case_read_READ_FMT_22_JC
,
65 && case_read_READ_FMT_23_JL
,
66 && case_read_READ_FMT_24_JMP
,
67 && case_read_READ_FMT_25_LD
,
68 && case_read_READ_FMT_26_LD_D
,
69 && case_read_READ_FMT_27_LDB
,
70 && case_read_READ_FMT_28_LDB_D
,
71 && case_read_READ_FMT_29_LDH
,
72 && case_read_READ_FMT_30_LDH_D
,
73 && case_read_READ_FMT_31_LD24
,
74 && case_read_READ_FMT_32_LDI8
,
75 && case_read_READ_FMT_33_LDI16
,
76 && case_read_READ_FMT_34_MACHI_A
,
77 && case_read_READ_FMT_35_MULHI_A
,
78 && case_read_READ_FMT_36_MV
,
79 && case_read_READ_FMT_37_MVFACHI_A
,
80 && case_read_READ_FMT_38_MVFC
,
81 && case_read_READ_FMT_39_MVTACHI_A
,
82 && case_read_READ_FMT_40_MVTC
,
83 && case_read_READ_FMT_41_NOP
,
84 && case_read_READ_FMT_42_RAC_A
,
85 && case_read_READ_FMT_43_RTE
,
86 && case_read_READ_FMT_44_SETH
,
87 && case_read_READ_FMT_45_SLLI
,
88 && case_read_READ_FMT_46_ST_D
,
89 && case_read_READ_FMT_47_TRAP
,
90 && case_read_READ_FMT_48_SATB
,
91 && case_read_READ_FMT_49_SAT
,
92 && case_read_READ_FMT_50_SADD
,
93 && case_read_READ_FMT_51_MACWU1
,
94 && case_read_READ_FMT_52_MSBLO
,
95 && case_read_READ_FMT_53_SC
,
98 extern DECODE
*m32rx_decode_vars
[];
101 for (i
= 0; m32rx_decode_vars
[i
] != 0; ++i
)
102 m32rx_decode_vars
[i
]->read
= labels
[i
];
104 #endif /* DEFINE_LABELS */
110 SWITCH (read
, decode
->read
)
113 CASE (read
, READ_ILLEGAL
) :
115 sim_engine_illegal_insn (current_cpu
, NULL_CIA
/*FIXME*/);
119 CASE (read
, READ_FMT_0_ADD
) : /* e.g. add $dr,$sr */
121 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_0_add.f
122 EXTRACT_FMT_0_ADD_VARS
/* f-op1 f-r1 f-op2 f-r2 */
123 EXTRACT_FMT_0_ADD_CODE
125 /* Fetch the input operands for the semantic handler. */
126 OPRND (dr
) = CPU (h_gr
[f_r1
]);
127 OPRND (sr
) = CPU (h_gr
[f_r2
]);
132 CASE (read
, READ_FMT_1_ADD3
) : /* e.g. add3 $dr,$sr,#$slo16 */
134 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_1_add3.f
135 EXTRACT_FMT_1_ADD3_VARS
/* f-op1 f-r1 f-op2 f-r2 f-simm16 */
136 EXTRACT_FMT_1_ADD3_CODE
138 /* Fetch the input operands for the semantic handler. */
139 OPRND (slo16
) = f_simm16
;
140 OPRND (sr
) = CPU (h_gr
[f_r2
]);
145 CASE (read
, READ_FMT_2_AND3
) : /* e.g. and3 $dr,$sr,#$uimm16 */
147 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_2_and3.f
148 EXTRACT_FMT_2_AND3_VARS
/* f-op1 f-r1 f-op2 f-r2 f-uimm16 */
149 EXTRACT_FMT_2_AND3_CODE
151 /* Fetch the input operands for the semantic handler. */
152 OPRND (sr
) = CPU (h_gr
[f_r2
]);
153 OPRND (uimm16
) = f_uimm16
;
158 CASE (read
, READ_FMT_3_OR3
) : /* e.g. or3 $dr,$sr,#$ulo16 */
160 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_3_or3.f
161 EXTRACT_FMT_3_OR3_VARS
/* f-op1 f-r1 f-op2 f-r2 f-uimm16 */
162 EXTRACT_FMT_3_OR3_CODE
164 /* Fetch the input operands for the semantic handler. */
165 OPRND (sr
) = CPU (h_gr
[f_r2
]);
166 OPRND (ulo16
) = f_uimm16
;
171 CASE (read
, READ_FMT_4_ADDI
) : /* e.g. addi $dr,#$simm8 */
173 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_4_addi.f
174 EXTRACT_FMT_4_ADDI_VARS
/* f-op1 f-r1 f-simm8 */
175 EXTRACT_FMT_4_ADDI_CODE
177 /* Fetch the input operands for the semantic handler. */
178 OPRND (dr
) = CPU (h_gr
[f_r1
]);
179 OPRND (simm8
) = f_simm8
;
184 CASE (read
, READ_FMT_5_ADDV3
) : /* e.g. addv3 $dr,$sr,#$simm16 */
186 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_5_addv3.f
187 EXTRACT_FMT_5_ADDV3_VARS
/* f-op1 f-r1 f-op2 f-r2 f-simm16 */
188 EXTRACT_FMT_5_ADDV3_CODE
190 /* Fetch the input operands for the semantic handler. */
191 OPRND (simm16
) = f_simm16
;
192 OPRND (sr
) = CPU (h_gr
[f_r2
]);
197 CASE (read
, READ_FMT_6_ADDX
) : /* e.g. addx $dr,$sr */
199 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_6_addx.f
200 EXTRACT_FMT_6_ADDX_VARS
/* f-op1 f-r1 f-op2 f-r2 */
201 EXTRACT_FMT_6_ADDX_CODE
203 /* Fetch the input operands for the semantic handler. */
204 OPRND (condbit
) = CPU (h_cond
);
205 OPRND (dr
) = CPU (h_gr
[f_r1
]);
206 OPRND (sr
) = CPU (h_gr
[f_r2
]);
211 CASE (read
, READ_FMT_7_BC8
) : /* e.g. bc $disp8 */
213 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_7_bc8.f
214 EXTRACT_FMT_7_BC8_VARS
/* f-op1 f-r1 f-disp8 */
215 EXTRACT_FMT_7_BC8_CODE
217 /* Fetch the input operands for the semantic handler. */
218 OPRND (condbit
) = CPU (h_cond
);
219 OPRND (disp8
) = f_disp8
;
224 CASE (read
, READ_FMT_8_BC24
) : /* e.g. bc $disp24 */
226 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_8_bc24.f
227 EXTRACT_FMT_8_BC24_VARS
/* f-op1 f-r1 f-disp24 */
228 EXTRACT_FMT_8_BC24_CODE
230 /* Fetch the input operands for the semantic handler. */
231 OPRND (condbit
) = CPU (h_cond
);
232 OPRND (disp24
) = f_disp24
;
237 CASE (read
, READ_FMT_9_BEQ
) : /* e.g. beq $src1,$src2,$disp16 */
239 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_9_beq.f
240 EXTRACT_FMT_9_BEQ_VARS
/* f-op1 f-r1 f-op2 f-r2 f-disp16 */
241 EXTRACT_FMT_9_BEQ_CODE
243 /* Fetch the input operands for the semantic handler. */
244 OPRND (disp16
) = f_disp16
;
245 OPRND (src1
) = CPU (h_gr
[f_r1
]);
246 OPRND (src2
) = CPU (h_gr
[f_r2
]);
251 CASE (read
, READ_FMT_10_BEQZ
) : /* e.g. beqz $src2,$disp16 */
253 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_10_beqz.f
254 EXTRACT_FMT_10_BEQZ_VARS
/* f-op1 f-r1 f-op2 f-r2 f-disp16 */
255 EXTRACT_FMT_10_BEQZ_CODE
257 /* Fetch the input operands for the semantic handler. */
258 OPRND (disp16
) = f_disp16
;
259 OPRND (src2
) = CPU (h_gr
[f_r2
]);
264 CASE (read
, READ_FMT_11_BL8
) : /* e.g. bl $disp8 */
266 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_11_bl8.f
267 EXTRACT_FMT_11_BL8_VARS
/* f-op1 f-r1 f-disp8 */
268 EXTRACT_FMT_11_BL8_CODE
270 /* Fetch the input operands for the semantic handler. */
271 OPRND (disp8
) = f_disp8
;
272 OPRND (pc
) = CPU (h_pc
);
277 CASE (read
, READ_FMT_12_BL24
) : /* e.g. bl $disp24 */
279 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_12_bl24.f
280 EXTRACT_FMT_12_BL24_VARS
/* f-op1 f-r1 f-disp24 */
281 EXTRACT_FMT_12_BL24_CODE
283 /* Fetch the input operands for the semantic handler. */
284 OPRND (disp24
) = f_disp24
;
285 OPRND (pc
) = CPU (h_pc
);
290 CASE (read
, READ_FMT_13_BCL8
) : /* e.g. bcl $disp8 */
292 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_13_bcl8.f
293 EXTRACT_FMT_13_BCL8_VARS
/* f-op1 f-r1 f-disp8 */
294 EXTRACT_FMT_13_BCL8_CODE
296 /* Fetch the input operands for the semantic handler. */
297 OPRND (condbit
) = CPU (h_cond
);
298 OPRND (disp8
) = f_disp8
;
299 OPRND (pc
) = CPU (h_pc
);
304 CASE (read
, READ_FMT_14_BCL24
) : /* e.g. bcl $disp24 */
306 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_14_bcl24.f
307 EXTRACT_FMT_14_BCL24_VARS
/* f-op1 f-r1 f-disp24 */
308 EXTRACT_FMT_14_BCL24_CODE
310 /* Fetch the input operands for the semantic handler. */
311 OPRND (condbit
) = CPU (h_cond
);
312 OPRND (disp24
) = f_disp24
;
313 OPRND (pc
) = CPU (h_pc
);
318 CASE (read
, READ_FMT_15_BRA8
) : /* e.g. bra $disp8 */
320 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_15_bra8.f
321 EXTRACT_FMT_15_BRA8_VARS
/* f-op1 f-r1 f-disp8 */
322 EXTRACT_FMT_15_BRA8_CODE
324 /* Fetch the input operands for the semantic handler. */
325 OPRND (disp8
) = f_disp8
;
330 CASE (read
, READ_FMT_16_BRA24
) : /* e.g. bra $disp24 */
332 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_16_bra24.f
333 EXTRACT_FMT_16_BRA24_VARS
/* f-op1 f-r1 f-disp24 */
334 EXTRACT_FMT_16_BRA24_CODE
336 /* Fetch the input operands for the semantic handler. */
337 OPRND (disp24
) = f_disp24
;
342 CASE (read
, READ_FMT_17_CMP
) : /* e.g. cmp $src1,$src2 */
344 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_17_cmp.f
345 EXTRACT_FMT_17_CMP_VARS
/* f-op1 f-r1 f-op2 f-r2 */
346 EXTRACT_FMT_17_CMP_CODE
348 /* Fetch the input operands for the semantic handler. */
349 OPRND (src1
) = CPU (h_gr
[f_r1
]);
350 OPRND (src2
) = CPU (h_gr
[f_r2
]);
355 CASE (read
, READ_FMT_18_CMPI
) : /* e.g. cmpi $src2,#$simm16 */
357 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_18_cmpi.f
358 EXTRACT_FMT_18_CMPI_VARS
/* f-op1 f-r1 f-op2 f-r2 f-simm16 */
359 EXTRACT_FMT_18_CMPI_CODE
361 /* Fetch the input operands for the semantic handler. */
362 OPRND (simm16
) = f_simm16
;
363 OPRND (src2
) = CPU (h_gr
[f_r2
]);
368 CASE (read
, READ_FMT_19_CMPUI
) : /* e.g. cmpui $src2,#$uimm16 */
370 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_19_cmpui.f
371 EXTRACT_FMT_19_CMPUI_VARS
/* f-op1 f-r1 f-op2 f-r2 f-uimm16 */
372 EXTRACT_FMT_19_CMPUI_CODE
374 /* Fetch the input operands for the semantic handler. */
375 OPRND (src2
) = CPU (h_gr
[f_r2
]);
376 OPRND (uimm16
) = f_uimm16
;
381 CASE (read
, READ_FMT_20_CMPZ
) : /* e.g. cmpz $src2 */
383 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_20_cmpz.f
384 EXTRACT_FMT_20_CMPZ_VARS
/* f-op1 f-r1 f-op2 f-r2 */
385 EXTRACT_FMT_20_CMPZ_CODE
387 /* Fetch the input operands for the semantic handler. */
388 OPRND (src2
) = CPU (h_gr
[f_r2
]);
393 CASE (read
, READ_FMT_21_DIV
) : /* e.g. div $dr,$sr */
395 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_21_div.f
396 EXTRACT_FMT_21_DIV_VARS
/* f-op1 f-r1 f-op2 f-r2 f-simm16 */
397 EXTRACT_FMT_21_DIV_CODE
399 /* Fetch the input operands for the semantic handler. */
400 OPRND (dr
) = CPU (h_gr
[f_r1
]);
401 OPRND (sr
) = CPU (h_gr
[f_r2
]);
406 CASE (read
, READ_FMT_22_JC
) : /* e.g. jc $sr */
408 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_22_jc.f
409 EXTRACT_FMT_22_JC_VARS
/* f-op1 f-r1 f-op2 f-r2 */
410 EXTRACT_FMT_22_JC_CODE
412 /* Fetch the input operands for the semantic handler. */
413 OPRND (condbit
) = CPU (h_cond
);
414 OPRND (sr
) = CPU (h_gr
[f_r2
]);
419 CASE (read
, READ_FMT_23_JL
) : /* e.g. jl $sr */
421 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_23_jl.f
422 EXTRACT_FMT_23_JL_VARS
/* f-op1 f-r1 f-op2 f-r2 */
423 EXTRACT_FMT_23_JL_CODE
425 /* Fetch the input operands for the semantic handler. */
426 OPRND (pc
) = CPU (h_pc
);
427 OPRND (sr
) = CPU (h_gr
[f_r2
]);
432 CASE (read
, READ_FMT_24_JMP
) : /* e.g. jmp $sr */
434 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_24_jmp.f
435 EXTRACT_FMT_24_JMP_VARS
/* f-op1 f-r1 f-op2 f-r2 */
436 EXTRACT_FMT_24_JMP_CODE
438 /* Fetch the input operands for the semantic handler. */
439 OPRND (sr
) = CPU (h_gr
[f_r2
]);
444 CASE (read
, READ_FMT_25_LD
) : /* e.g. ld $dr,@$sr */
446 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_25_ld.f
447 EXTRACT_FMT_25_LD_VARS
/* f-op1 f-r1 f-op2 f-r2 */
448 EXTRACT_FMT_25_LD_CODE
450 /* Fetch the input operands for the semantic handler. */
451 OPRND (h_memory_sr
) = GETMEMSI (current_cpu
, CPU (h_gr
[f_r2
]));
452 OPRND (sr
) = CPU (h_gr
[f_r2
]);
457 CASE (read
, READ_FMT_26_LD_D
) : /* e.g. ld $dr,@($slo16,$sr) */
459 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_26_ld_d.f
460 EXTRACT_FMT_26_LD_D_VARS
/* f-op1 f-r1 f-op2 f-r2 f-simm16 */
461 EXTRACT_FMT_26_LD_D_CODE
463 /* Fetch the input operands for the semantic handler. */
464 OPRND (h_memory_add_WI_sr_slo16
) = GETMEMSI (current_cpu
, ADDSI (CPU (h_gr
[f_r2
]), f_simm16
));
465 OPRND (slo16
) = f_simm16
;
466 OPRND (sr
) = CPU (h_gr
[f_r2
]);
471 CASE (read
, READ_FMT_27_LDB
) : /* e.g. ldb $dr,@$sr */
473 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_27_ldb.f
474 EXTRACT_FMT_27_LDB_VARS
/* f-op1 f-r1 f-op2 f-r2 */
475 EXTRACT_FMT_27_LDB_CODE
477 /* Fetch the input operands for the semantic handler. */
478 OPRND (h_memory_sr
) = GETMEMQI (current_cpu
, CPU (h_gr
[f_r2
]));
479 OPRND (sr
) = CPU (h_gr
[f_r2
]);
484 CASE (read
, READ_FMT_28_LDB_D
) : /* e.g. ldb $dr,@($slo16,$sr) */
486 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_28_ldb_d.f
487 EXTRACT_FMT_28_LDB_D_VARS
/* f-op1 f-r1 f-op2 f-r2 f-simm16 */
488 EXTRACT_FMT_28_LDB_D_CODE
490 /* Fetch the input operands for the semantic handler. */
491 OPRND (h_memory_add_WI_sr_slo16
) = GETMEMQI (current_cpu
, ADDSI (CPU (h_gr
[f_r2
]), f_simm16
));
492 OPRND (slo16
) = f_simm16
;
493 OPRND (sr
) = CPU (h_gr
[f_r2
]);
498 CASE (read
, READ_FMT_29_LDH
) : /* e.g. ldh $dr,@$sr */
500 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_29_ldh.f
501 EXTRACT_FMT_29_LDH_VARS
/* f-op1 f-r1 f-op2 f-r2 */
502 EXTRACT_FMT_29_LDH_CODE
504 /* Fetch the input operands for the semantic handler. */
505 OPRND (h_memory_sr
) = GETMEMHI (current_cpu
, CPU (h_gr
[f_r2
]));
506 OPRND (sr
) = CPU (h_gr
[f_r2
]);
511 CASE (read
, READ_FMT_30_LDH_D
) : /* e.g. ldh $dr,@($slo16,$sr) */
513 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_30_ldh_d.f
514 EXTRACT_FMT_30_LDH_D_VARS
/* f-op1 f-r1 f-op2 f-r2 f-simm16 */
515 EXTRACT_FMT_30_LDH_D_CODE
517 /* Fetch the input operands for the semantic handler. */
518 OPRND (h_memory_add_WI_sr_slo16
) = GETMEMHI (current_cpu
, ADDSI (CPU (h_gr
[f_r2
]), f_simm16
));
519 OPRND (slo16
) = f_simm16
;
520 OPRND (sr
) = CPU (h_gr
[f_r2
]);
525 CASE (read
, READ_FMT_31_LD24
) : /* e.g. ld24 $dr,#$uimm24 */
527 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_31_ld24.f
528 EXTRACT_FMT_31_LD24_VARS
/* f-op1 f-r1 f-uimm24 */
529 EXTRACT_FMT_31_LD24_CODE
531 /* Fetch the input operands for the semantic handler. */
532 OPRND (uimm24
) = f_uimm24
;
537 CASE (read
, READ_FMT_32_LDI8
) : /* e.g. ldi $dr,#$simm8 */
539 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_32_ldi8.f
540 EXTRACT_FMT_32_LDI8_VARS
/* f-op1 f-r1 f-simm8 */
541 EXTRACT_FMT_32_LDI8_CODE
543 /* Fetch the input operands for the semantic handler. */
544 OPRND (simm8
) = f_simm8
;
549 CASE (read
, READ_FMT_33_LDI16
) : /* e.g. ldi $dr,$slo16 */
551 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_33_ldi16.f
552 EXTRACT_FMT_33_LDI16_VARS
/* f-op1 f-r1 f-op2 f-r2 f-simm16 */
553 EXTRACT_FMT_33_LDI16_CODE
555 /* Fetch the input operands for the semantic handler. */
556 OPRND (slo16
) = f_simm16
;
561 CASE (read
, READ_FMT_34_MACHI_A
) : /* e.g. machi $src1,$src2,$acc */
563 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_34_machi_a.f
564 EXTRACT_FMT_34_MACHI_A_VARS
/* f-op1 f-r1 f-acc f-op23 f-r2 */
565 EXTRACT_FMT_34_MACHI_A_CODE
567 /* Fetch the input operands for the semantic handler. */
568 OPRND (acc
) = m32rx_h_accums_get (current_cpu
, f_acc
);
569 OPRND (src1
) = CPU (h_gr
[f_r1
]);
570 OPRND (src2
) = CPU (h_gr
[f_r2
]);
575 CASE (read
, READ_FMT_35_MULHI_A
) : /* e.g. mulhi $src1,$src2,$acc */
577 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_35_mulhi_a.f
578 EXTRACT_FMT_35_MULHI_A_VARS
/* f-op1 f-r1 f-acc f-op23 f-r2 */
579 EXTRACT_FMT_35_MULHI_A_CODE
581 /* Fetch the input operands for the semantic handler. */
582 OPRND (src1
) = CPU (h_gr
[f_r1
]);
583 OPRND (src2
) = CPU (h_gr
[f_r2
]);
588 CASE (read
, READ_FMT_36_MV
) : /* e.g. mv $dr,$sr */
590 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_36_mv.f
591 EXTRACT_FMT_36_MV_VARS
/* f-op1 f-r1 f-op2 f-r2 */
592 EXTRACT_FMT_36_MV_CODE
594 /* Fetch the input operands for the semantic handler. */
595 OPRND (sr
) = CPU (h_gr
[f_r2
]);
600 CASE (read
, READ_FMT_37_MVFACHI_A
) : /* e.g. mvfachi $dr,$accs */
602 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_37_mvfachi_a.f
603 EXTRACT_FMT_37_MVFACHI_A_VARS
/* f-op1 f-r1 f-op2 f-accs f-op3 */
604 EXTRACT_FMT_37_MVFACHI_A_CODE
606 /* Fetch the input operands for the semantic handler. */
607 OPRND (accs
) = m32rx_h_accums_get (current_cpu
, f_accs
);
612 CASE (read
, READ_FMT_38_MVFC
) : /* e.g. mvfc $dr,$scr */
614 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_38_mvfc.f
615 EXTRACT_FMT_38_MVFC_VARS
/* f-op1 f-r1 f-op2 f-r2 */
616 EXTRACT_FMT_38_MVFC_CODE
618 /* Fetch the input operands for the semantic handler. */
619 OPRND (scr
) = m32rx_h_cr_get (current_cpu
, f_r2
);
624 CASE (read
, READ_FMT_39_MVTACHI_A
) : /* e.g. mvtachi $src1,$accs */
626 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_39_mvtachi_a.f
627 EXTRACT_FMT_39_MVTACHI_A_VARS
/* f-op1 f-r1 f-op2 f-accs f-op3 */
628 EXTRACT_FMT_39_MVTACHI_A_CODE
630 /* Fetch the input operands for the semantic handler. */
631 OPRND (accs
) = m32rx_h_accums_get (current_cpu
, f_accs
);
632 OPRND (src1
) = CPU (h_gr
[f_r1
]);
637 CASE (read
, READ_FMT_40_MVTC
) : /* e.g. mvtc $sr,$dcr */
639 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_40_mvtc.f
640 EXTRACT_FMT_40_MVTC_VARS
/* f-op1 f-r1 f-op2 f-r2 */
641 EXTRACT_FMT_40_MVTC_CODE
643 /* Fetch the input operands for the semantic handler. */
644 OPRND (sr
) = CPU (h_gr
[f_r2
]);
649 CASE (read
, READ_FMT_41_NOP
) : /* e.g. nop */
651 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_41_nop.f
652 EXTRACT_FMT_41_NOP_VARS
/* f-op1 f-r1 f-op2 f-r2 */
653 EXTRACT_FMT_41_NOP_CODE
655 /* Fetch the input operands for the semantic handler. */
660 CASE (read
, READ_FMT_42_RAC_A
) : /* e.g. rac $accs */
662 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_42_rac_a.f
663 EXTRACT_FMT_42_RAC_A_VARS
/* f-op1 f-r1 f-op2 f-accs f-op3 */
664 EXTRACT_FMT_42_RAC_A_CODE
666 /* Fetch the input operands for the semantic handler. */
667 OPRND (accs
) = m32rx_h_accums_get (current_cpu
, f_accs
);
672 CASE (read
, READ_FMT_43_RTE
) : /* e.g. rte */
674 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_43_rte.f
675 EXTRACT_FMT_43_RTE_VARS
/* f-op1 f-r1 f-op2 f-r2 */
676 EXTRACT_FMT_43_RTE_CODE
678 /* Fetch the input operands for the semantic handler. */
679 OPRND (h_bcond_0
) = CPU (h_bcond
);
680 OPRND (h_bie_0
) = CPU (h_bie
);
681 OPRND (h_bpc_0
) = CPU (h_bpc
);
682 OPRND (h_bsm_0
) = CPU (h_bsm
);
687 CASE (read
, READ_FMT_44_SETH
) : /* e.g. seth $dr,#$hi16 */
689 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_44_seth.f
690 EXTRACT_FMT_44_SETH_VARS
/* f-op1 f-r1 f-op2 f-r2 f-hi16 */
691 EXTRACT_FMT_44_SETH_CODE
693 /* Fetch the input operands for the semantic handler. */
694 OPRND (hi16
) = f_hi16
;
699 CASE (read
, READ_FMT_45_SLLI
) : /* e.g. slli $dr,#$uimm5 */
701 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_45_slli.f
702 EXTRACT_FMT_45_SLLI_VARS
/* f-op1 f-r1 f-shift-op2 f-uimm5 */
703 EXTRACT_FMT_45_SLLI_CODE
705 /* Fetch the input operands for the semantic handler. */
706 OPRND (dr
) = CPU (h_gr
[f_r1
]);
707 OPRND (uimm5
) = f_uimm5
;
712 CASE (read
, READ_FMT_46_ST_D
) : /* e.g. st $src1,@($slo16,$src2) */
714 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_46_st_d.f
715 EXTRACT_FMT_46_ST_D_VARS
/* f-op1 f-r1 f-op2 f-r2 f-simm16 */
716 EXTRACT_FMT_46_ST_D_CODE
718 /* Fetch the input operands for the semantic handler. */
719 OPRND (slo16
) = f_simm16
;
720 OPRND (src1
) = CPU (h_gr
[f_r1
]);
721 OPRND (src2
) = CPU (h_gr
[f_r2
]);
726 CASE (read
, READ_FMT_47_TRAP
) : /* e.g. trap #$uimm4 */
728 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_47_trap.f
729 EXTRACT_FMT_47_TRAP_VARS
/* f-op1 f-r1 f-op2 f-uimm4 */
730 EXTRACT_FMT_47_TRAP_CODE
732 /* Fetch the input operands for the semantic handler. */
733 OPRND (uimm4
) = f_uimm4
;
738 CASE (read
, READ_FMT_48_SATB
) : /* e.g. satb $dr,$src2 */
740 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_48_satb.f
741 EXTRACT_FMT_48_SATB_VARS
/* f-op1 f-r1 f-op2 f-r2 f-uimm16 */
742 EXTRACT_FMT_48_SATB_CODE
744 /* Fetch the input operands for the semantic handler. */
745 OPRND (src2
) = CPU (h_gr
[f_r2
]);
750 CASE (read
, READ_FMT_49_SAT
) : /* e.g. sat $dr,$src2 */
752 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_49_sat.f
753 EXTRACT_FMT_49_SAT_VARS
/* f-op1 f-r1 f-op2 f-r2 f-uimm16 */
754 EXTRACT_FMT_49_SAT_CODE
756 /* Fetch the input operands for the semantic handler. */
757 OPRND (condbit
) = CPU (h_cond
);
758 OPRND (src2
) = CPU (h_gr
[f_r2
]);
763 CASE (read
, READ_FMT_50_SADD
) : /* e.g. sadd */
765 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_50_sadd.f
766 EXTRACT_FMT_50_SADD_VARS
/* f-op1 f-r1 f-op2 f-r2 */
767 EXTRACT_FMT_50_SADD_CODE
769 /* Fetch the input operands for the semantic handler. */
770 OPRND (h_accums_0
) = m32rx_h_accums_get (current_cpu
, 0);
771 OPRND (h_accums_1
) = m32rx_h_accums_get (current_cpu
, 1);
776 CASE (read
, READ_FMT_51_MACWU1
) : /* e.g. macwu1 $src1,$src2 */
778 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_51_macwu1.f
779 EXTRACT_FMT_51_MACWU1_VARS
/* f-op1 f-r1 f-op2 f-r2 */
780 EXTRACT_FMT_51_MACWU1_CODE
782 /* Fetch the input operands for the semantic handler. */
783 OPRND (h_accums_1
) = m32rx_h_accums_get (current_cpu
, 1);
784 OPRND (src1
) = CPU (h_gr
[f_r1
]);
785 OPRND (src2
) = CPU (h_gr
[f_r2
]);
790 CASE (read
, READ_FMT_52_MSBLO
) : /* e.g. msblo $src1,$src2 */
792 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_52_msblo.f
793 EXTRACT_FMT_52_MSBLO_VARS
/* f-op1 f-r1 f-op2 f-r2 */
794 EXTRACT_FMT_52_MSBLO_CODE
796 /* Fetch the input operands for the semantic handler. */
797 OPRND (accum
) = CPU (h_accum
);
798 OPRND (src1
) = CPU (h_gr
[f_r1
]);
799 OPRND (src2
) = CPU (h_gr
[f_r2
]);
804 CASE (read
, READ_FMT_53_SC
) : /* e.g. sc */
806 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_53_sc.f
807 EXTRACT_FMT_53_SC_VARS
/* f-op1 f-r1 f-op2 f-r2 */
808 EXTRACT_FMT_53_SC_CODE
810 /* Fetch the input operands for the semantic handler. */
811 OPRND (condbit
) = CPU (h_cond
);
817 ENDSWITCH (read
) /* End of read switch. */
820 #endif /* DEFINE_SWITCH */