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.
28 /* The labels have the case they have because the enum of insn types
29 is all uppercase and in the non-stdc case the fmt symbol is built
32 The order here must match the order in m32rx_decode_vars in decode.c. */
34 static void *labels
[] = {
35 && case_read_READ_ILLEGAL
,
36 && case_read_READ_FMT_0_ADD
,
37 && case_read_READ_FMT_1_ADD3
,
38 && case_read_READ_FMT_0_ADD
,
39 && case_read_READ_FMT_2_AND3
,
40 && case_read_READ_FMT_0_ADD
,
41 && case_read_READ_FMT_3_OR3
,
42 && case_read_READ_FMT_0_ADD
,
43 && case_read_READ_FMT_2_AND3
,
44 && case_read_READ_FMT_4_ADDI
,
45 && case_read_READ_FMT_0_ADD
,
46 && case_read_READ_FMT_5_ADDV3
,
47 && case_read_READ_FMT_6_ADDX
,
48 && case_read_READ_FMT_7_BC8
,
49 && case_read_READ_FMT_8_BC24
,
50 && case_read_READ_FMT_9_BEQ
,
51 && case_read_READ_FMT_10_BEQZ
,
52 && case_read_READ_FMT_10_BEQZ
,
53 && case_read_READ_FMT_10_BEQZ
,
54 && case_read_READ_FMT_10_BEQZ
,
55 && case_read_READ_FMT_10_BEQZ
,
56 && case_read_READ_FMT_10_BEQZ
,
57 && case_read_READ_FMT_11_BL8
,
58 && case_read_READ_FMT_12_BL24
,
59 && case_read_READ_FMT_13_BCL8
,
60 && case_read_READ_FMT_14_BCL24
,
61 && case_read_READ_FMT_7_BC8
,
62 && case_read_READ_FMT_8_BC24
,
63 && case_read_READ_FMT_9_BEQ
,
64 && case_read_READ_FMT_15_BRA8
,
65 && case_read_READ_FMT_16_BRA24
,
66 && case_read_READ_FMT_13_BCL8
,
67 && case_read_READ_FMT_14_BCL24
,
68 && case_read_READ_FMT_17_CMP
,
69 && case_read_READ_FMT_18_CMPI
,
70 && case_read_READ_FMT_17_CMP
,
71 && case_read_READ_FMT_19_CMPUI
,
72 && case_read_READ_FMT_17_CMP
,
73 && case_read_READ_FMT_20_CMPZ
,
74 && case_read_READ_FMT_21_DIV
,
75 && case_read_READ_FMT_21_DIV
,
76 && case_read_READ_FMT_21_DIV
,
77 && case_read_READ_FMT_21_DIV
,
78 && case_read_READ_FMT_21_DIV
,
79 && case_read_READ_FMT_22_JC
,
80 && case_read_READ_FMT_22_JC
,
81 && case_read_READ_FMT_23_JL
,
82 && case_read_READ_FMT_24_JMP
,
83 && case_read_READ_FMT_25_LD
,
84 && case_read_READ_FMT_26_LD_D
,
85 && case_read_READ_FMT_27_LDB
,
86 && case_read_READ_FMT_28_LDB_D
,
87 && case_read_READ_FMT_29_LDH
,
88 && case_read_READ_FMT_30_LDH_D
,
89 && case_read_READ_FMT_27_LDB
,
90 && case_read_READ_FMT_28_LDB_D
,
91 && case_read_READ_FMT_29_LDH
,
92 && case_read_READ_FMT_30_LDH_D
,
93 && case_read_READ_FMT_25_LD
,
94 && case_read_READ_FMT_31_LD24
,
95 && case_read_READ_FMT_32_LDI8
,
96 && case_read_READ_FMT_33_LDI16
,
97 && case_read_READ_FMT_0_ADD
,
98 && case_read_READ_FMT_34_MACHI_A
,
99 && case_read_READ_FMT_34_MACHI_A
,
100 && case_read_READ_FMT_0_ADD
,
101 && case_read_READ_FMT_35_MULHI_A
,
102 && case_read_READ_FMT_35_MULHI_A
,
103 && case_read_READ_FMT_36_MV
,
104 && case_read_READ_FMT_37_MVFACHI_A
,
105 && case_read_READ_FMT_37_MVFACHI_A
,
106 && case_read_READ_FMT_37_MVFACHI_A
,
107 && case_read_READ_FMT_38_MVFC
,
108 && case_read_READ_FMT_39_MVTACHI_A
,
109 && case_read_READ_FMT_39_MVTACHI_A
,
110 && case_read_READ_FMT_40_MVTC
,
111 && case_read_READ_FMT_36_MV
,
112 && case_read_READ_FMT_41_NOP
,
113 && case_read_READ_FMT_36_MV
,
114 && case_read_READ_FMT_42_RAC_D
,
115 && case_read_READ_FMT_43_RAC_DS
,
116 && case_read_READ_FMT_44_RAC_DSI
,
117 && case_read_READ_FMT_42_RAC_D
,
118 && case_read_READ_FMT_43_RAC_DS
,
119 && case_read_READ_FMT_44_RAC_DSI
,
120 && case_read_READ_FMT_45_RTE
,
121 && case_read_READ_FMT_46_SETH
,
122 && case_read_READ_FMT_0_ADD
,
123 && case_read_READ_FMT_5_ADDV3
,
124 && case_read_READ_FMT_47_SLLI
,
125 && case_read_READ_FMT_0_ADD
,
126 && case_read_READ_FMT_5_ADDV3
,
127 && case_read_READ_FMT_47_SLLI
,
128 && case_read_READ_FMT_0_ADD
,
129 && case_read_READ_FMT_5_ADDV3
,
130 && case_read_READ_FMT_47_SLLI
,
131 && case_read_READ_FMT_17_CMP
,
132 && case_read_READ_FMT_48_ST_D
,
133 && case_read_READ_FMT_17_CMP
,
134 && case_read_READ_FMT_48_ST_D
,
135 && case_read_READ_FMT_17_CMP
,
136 && case_read_READ_FMT_48_ST_D
,
137 && case_read_READ_FMT_17_CMP
,
138 && case_read_READ_FMT_17_CMP
,
139 && case_read_READ_FMT_0_ADD
,
140 && case_read_READ_FMT_0_ADD
,
141 && case_read_READ_FMT_6_ADDX
,
142 && case_read_READ_FMT_49_TRAP
,
143 && case_read_READ_FMT_17_CMP
,
144 && case_read_READ_FMT_50_SATB
,
145 && case_read_READ_FMT_50_SATB
,
146 && case_read_READ_FMT_51_SAT
,
147 && case_read_READ_FMT_20_CMPZ
,
148 && case_read_READ_FMT_52_SADD
,
149 && case_read_READ_FMT_53_MACWU1
,
150 && case_read_READ_FMT_54_MSBLO
,
151 && case_read_READ_FMT_17_CMP
,
152 && case_read_READ_FMT_53_MACWU1
,
153 && case_read_READ_FMT_55_SC
,
154 && case_read_READ_FMT_55_SC
,
157 extern DECODE
*m32rx_decode_vars
[];
160 for (i
= 0; m32rx_decode_vars
[i
] != 0; ++i
)
161 m32rx_decode_vars
[i
]->read
= labels
[i
];
163 #endif /* DEFINE_LABELS */
169 SWITCH (read
, decode
->read
)
172 CASE (read
, READ_ILLEGAL
) :
174 sim_engine_illegal_insn (current_cpu
, NULL_CIA
/*FIXME*/);
178 CASE (read
, READ_FMT_0_ADD
) : /* e.g. add $dr,$sr */
180 #define OPRND(f) par_exec->operands.fmt_0_add.f
181 EXTRACT_FMT_0_ADD_VARS
/* f-op1 f-r1 f-op2 f-r2 */
182 EXTRACT_FMT_0_ADD_CODE
184 /* Fetch the input operands for the semantic handler. */
185 OPRND (dr
) = CPU (h_gr
[f_r1
]);
186 OPRND (sr
) = CPU (h_gr
[f_r2
]);
191 CASE (read
, READ_FMT_1_ADD3
) : /* e.g. add3 $dr,$sr,#$slo16 */
193 #define OPRND(f) par_exec->operands.fmt_1_add3.f
194 EXTRACT_FMT_1_ADD3_VARS
/* f-op1 f-r1 f-op2 f-r2 f-simm16 */
195 EXTRACT_FMT_1_ADD3_CODE
197 /* Fetch the input operands for the semantic handler. */
198 OPRND (slo16
) = f_simm16
;
199 OPRND (sr
) = CPU (h_gr
[f_r2
]);
204 CASE (read
, READ_FMT_2_AND3
) : /* e.g. and3 $dr,$sr,#$uimm16 */
206 #define OPRND(f) par_exec->operands.fmt_2_and3.f
207 EXTRACT_FMT_2_AND3_VARS
/* f-op1 f-r1 f-op2 f-r2 f-uimm16 */
208 EXTRACT_FMT_2_AND3_CODE
210 /* Fetch the input operands for the semantic handler. */
211 OPRND (sr
) = CPU (h_gr
[f_r2
]);
212 OPRND (uimm16
) = f_uimm16
;
217 CASE (read
, READ_FMT_3_OR3
) : /* e.g. or3 $dr,$sr,#$ulo16 */
219 #define OPRND(f) par_exec->operands.fmt_3_or3.f
220 EXTRACT_FMT_3_OR3_VARS
/* f-op1 f-r1 f-op2 f-r2 f-uimm16 */
221 EXTRACT_FMT_3_OR3_CODE
223 /* Fetch the input operands for the semantic handler. */
224 OPRND (sr
) = CPU (h_gr
[f_r2
]);
225 OPRND (ulo16
) = f_uimm16
;
230 CASE (read
, READ_FMT_4_ADDI
) : /* e.g. addi $dr,#$simm8 */
232 #define OPRND(f) par_exec->operands.fmt_4_addi.f
233 EXTRACT_FMT_4_ADDI_VARS
/* f-op1 f-r1 f-simm8 */
234 EXTRACT_FMT_4_ADDI_CODE
236 /* Fetch the input operands for the semantic handler. */
237 OPRND (dr
) = CPU (h_gr
[f_r1
]);
238 OPRND (simm8
) = f_simm8
;
243 CASE (read
, READ_FMT_5_ADDV3
) : /* e.g. addv3 $dr,$sr,#$simm16 */
245 #define OPRND(f) par_exec->operands.fmt_5_addv3.f
246 EXTRACT_FMT_5_ADDV3_VARS
/* f-op1 f-r1 f-op2 f-r2 f-simm16 */
247 EXTRACT_FMT_5_ADDV3_CODE
249 /* Fetch the input operands for the semantic handler. */
250 OPRND (simm16
) = f_simm16
;
251 OPRND (sr
) = CPU (h_gr
[f_r2
]);
256 CASE (read
, READ_FMT_6_ADDX
) : /* e.g. addx $dr,$sr */
258 #define OPRND(f) par_exec->operands.fmt_6_addx.f
259 EXTRACT_FMT_6_ADDX_VARS
/* f-op1 f-r1 f-op2 f-r2 */
260 EXTRACT_FMT_6_ADDX_CODE
262 /* Fetch the input operands for the semantic handler. */
263 OPRND (condbit
) = CPU (h_cond
);
264 OPRND (dr
) = CPU (h_gr
[f_r1
]);
265 OPRND (sr
) = CPU (h_gr
[f_r2
]);
270 CASE (read
, READ_FMT_7_BC8
) : /* e.g. bc $disp8 */
272 #define OPRND(f) par_exec->operands.fmt_7_bc8.f
273 EXTRACT_FMT_7_BC8_VARS
/* f-op1 f-r1 f-disp8 */
274 EXTRACT_FMT_7_BC8_CODE
276 /* Fetch the input operands for the semantic handler. */
277 OPRND (condbit
) = CPU (h_cond
);
278 OPRND (disp8
) = f_disp8
;
283 CASE (read
, READ_FMT_8_BC24
) : /* e.g. bc $disp24 */
285 #define OPRND(f) par_exec->operands.fmt_8_bc24.f
286 EXTRACT_FMT_8_BC24_VARS
/* f-op1 f-r1 f-disp24 */
287 EXTRACT_FMT_8_BC24_CODE
289 /* Fetch the input operands for the semantic handler. */
290 OPRND (condbit
) = CPU (h_cond
);
291 OPRND (disp24
) = f_disp24
;
296 CASE (read
, READ_FMT_9_BEQ
) : /* e.g. beq $src1,$src2,$disp16 */
298 #define OPRND(f) par_exec->operands.fmt_9_beq.f
299 EXTRACT_FMT_9_BEQ_VARS
/* f-op1 f-r1 f-op2 f-r2 f-disp16 */
300 EXTRACT_FMT_9_BEQ_CODE
302 /* Fetch the input operands for the semantic handler. */
303 OPRND (disp16
) = f_disp16
;
304 OPRND (src1
) = CPU (h_gr
[f_r1
]);
305 OPRND (src2
) = CPU (h_gr
[f_r2
]);
310 CASE (read
, READ_FMT_10_BEQZ
) : /* e.g. beqz $src2,$disp16 */
312 #define OPRND(f) par_exec->operands.fmt_10_beqz.f
313 EXTRACT_FMT_10_BEQZ_VARS
/* f-op1 f-r1 f-op2 f-r2 f-disp16 */
314 EXTRACT_FMT_10_BEQZ_CODE
316 /* Fetch the input operands for the semantic handler. */
317 OPRND (disp16
) = f_disp16
;
318 OPRND (src2
) = CPU (h_gr
[f_r2
]);
323 CASE (read
, READ_FMT_11_BL8
) : /* e.g. bl $disp8 */
325 #define OPRND(f) par_exec->operands.fmt_11_bl8.f
326 EXTRACT_FMT_11_BL8_VARS
/* f-op1 f-r1 f-disp8 */
327 EXTRACT_FMT_11_BL8_CODE
329 /* Fetch the input operands for the semantic handler. */
330 OPRND (disp8
) = f_disp8
;
331 OPRND (pc
) = CPU (h_pc
);
336 CASE (read
, READ_FMT_12_BL24
) : /* e.g. bl $disp24 */
338 #define OPRND(f) par_exec->operands.fmt_12_bl24.f
339 EXTRACT_FMT_12_BL24_VARS
/* f-op1 f-r1 f-disp24 */
340 EXTRACT_FMT_12_BL24_CODE
342 /* Fetch the input operands for the semantic handler. */
343 OPRND (disp24
) = f_disp24
;
344 OPRND (pc
) = CPU (h_pc
);
349 CASE (read
, READ_FMT_13_BCL8
) : /* e.g. bcl $disp8 */
351 #define OPRND(f) par_exec->operands.fmt_13_bcl8.f
352 EXTRACT_FMT_13_BCL8_VARS
/* f-op1 f-r1 f-disp8 */
353 EXTRACT_FMT_13_BCL8_CODE
355 /* Fetch the input operands for the semantic handler. */
356 OPRND (condbit
) = CPU (h_cond
);
357 OPRND (disp8
) = f_disp8
;
358 OPRND (pc
) = CPU (h_pc
);
363 CASE (read
, READ_FMT_14_BCL24
) : /* e.g. bcl $disp24 */
365 #define OPRND(f) par_exec->operands.fmt_14_bcl24.f
366 EXTRACT_FMT_14_BCL24_VARS
/* f-op1 f-r1 f-disp24 */
367 EXTRACT_FMT_14_BCL24_CODE
369 /* Fetch the input operands for the semantic handler. */
370 OPRND (condbit
) = CPU (h_cond
);
371 OPRND (disp24
) = f_disp24
;
372 OPRND (pc
) = CPU (h_pc
);
377 CASE (read
, READ_FMT_15_BRA8
) : /* e.g. bra $disp8 */
379 #define OPRND(f) par_exec->operands.fmt_15_bra8.f
380 EXTRACT_FMT_15_BRA8_VARS
/* f-op1 f-r1 f-disp8 */
381 EXTRACT_FMT_15_BRA8_CODE
383 /* Fetch the input operands for the semantic handler. */
384 OPRND (disp8
) = f_disp8
;
389 CASE (read
, READ_FMT_16_BRA24
) : /* e.g. bra $disp24 */
391 #define OPRND(f) par_exec->operands.fmt_16_bra24.f
392 EXTRACT_FMT_16_BRA24_VARS
/* f-op1 f-r1 f-disp24 */
393 EXTRACT_FMT_16_BRA24_CODE
395 /* Fetch the input operands for the semantic handler. */
396 OPRND (disp24
) = f_disp24
;
401 CASE (read
, READ_FMT_17_CMP
) : /* e.g. cmp $src1,$src2 */
403 #define OPRND(f) par_exec->operands.fmt_17_cmp.f
404 EXTRACT_FMT_17_CMP_VARS
/* f-op1 f-r1 f-op2 f-r2 */
405 EXTRACT_FMT_17_CMP_CODE
407 /* Fetch the input operands for the semantic handler. */
408 OPRND (src1
) = CPU (h_gr
[f_r1
]);
409 OPRND (src2
) = CPU (h_gr
[f_r2
]);
414 CASE (read
, READ_FMT_18_CMPI
) : /* e.g. cmpi $src2,#$simm16 */
416 #define OPRND(f) par_exec->operands.fmt_18_cmpi.f
417 EXTRACT_FMT_18_CMPI_VARS
/* f-op1 f-r1 f-op2 f-r2 f-simm16 */
418 EXTRACT_FMT_18_CMPI_CODE
420 /* Fetch the input operands for the semantic handler. */
421 OPRND (simm16
) = f_simm16
;
422 OPRND (src2
) = CPU (h_gr
[f_r2
]);
427 CASE (read
, READ_FMT_19_CMPUI
) : /* e.g. cmpui $src2,#$uimm16 */
429 #define OPRND(f) par_exec->operands.fmt_19_cmpui.f
430 EXTRACT_FMT_19_CMPUI_VARS
/* f-op1 f-r1 f-op2 f-r2 f-uimm16 */
431 EXTRACT_FMT_19_CMPUI_CODE
433 /* Fetch the input operands for the semantic handler. */
434 OPRND (src2
) = CPU (h_gr
[f_r2
]);
435 OPRND (uimm16
) = f_uimm16
;
440 CASE (read
, READ_FMT_20_CMPZ
) : /* e.g. cmpz $src2 */
442 #define OPRND(f) par_exec->operands.fmt_20_cmpz.f
443 EXTRACT_FMT_20_CMPZ_VARS
/* f-op1 f-r1 f-op2 f-r2 */
444 EXTRACT_FMT_20_CMPZ_CODE
446 /* Fetch the input operands for the semantic handler. */
447 OPRND (src2
) = CPU (h_gr
[f_r2
]);
452 CASE (read
, READ_FMT_21_DIV
) : /* e.g. div $dr,$sr */
454 #define OPRND(f) par_exec->operands.fmt_21_div.f
455 EXTRACT_FMT_21_DIV_VARS
/* f-op1 f-r1 f-op2 f-r2 f-simm16 */
456 EXTRACT_FMT_21_DIV_CODE
458 /* Fetch the input operands for the semantic handler. */
459 OPRND (dr
) = CPU (h_gr
[f_r1
]);
460 OPRND (sr
) = CPU (h_gr
[f_r2
]);
465 CASE (read
, READ_FMT_22_JC
) : /* e.g. jc $sr */
467 #define OPRND(f) par_exec->operands.fmt_22_jc.f
468 EXTRACT_FMT_22_JC_VARS
/* f-op1 f-r1 f-op2 f-r2 */
469 EXTRACT_FMT_22_JC_CODE
471 /* Fetch the input operands for the semantic handler. */
472 OPRND (condbit
) = CPU (h_cond
);
473 OPRND (sr
) = CPU (h_gr
[f_r2
]);
478 CASE (read
, READ_FMT_23_JL
) : /* e.g. jl $sr */
480 #define OPRND(f) par_exec->operands.fmt_23_jl.f
481 EXTRACT_FMT_23_JL_VARS
/* f-op1 f-r1 f-op2 f-r2 */
482 EXTRACT_FMT_23_JL_CODE
484 /* Fetch the input operands for the semantic handler. */
485 OPRND (pc
) = CPU (h_pc
);
486 OPRND (sr
) = CPU (h_gr
[f_r2
]);
491 CASE (read
, READ_FMT_24_JMP
) : /* e.g. jmp $sr */
493 #define OPRND(f) par_exec->operands.fmt_24_jmp.f
494 EXTRACT_FMT_24_JMP_VARS
/* f-op1 f-r1 f-op2 f-r2 */
495 EXTRACT_FMT_24_JMP_CODE
497 /* Fetch the input operands for the semantic handler. */
498 OPRND (sr
) = CPU (h_gr
[f_r2
]);
503 CASE (read
, READ_FMT_25_LD
) : /* e.g. ld $dr,@$sr */
505 #define OPRND(f) par_exec->operands.fmt_25_ld.f
506 EXTRACT_FMT_25_LD_VARS
/* f-op1 f-r1 f-op2 f-r2 */
507 EXTRACT_FMT_25_LD_CODE
509 /* Fetch the input operands for the semantic handler. */
510 OPRND (h_memory_sr
) = GETMEMSI (current_cpu
, CPU (h_gr
[f_r2
]));
511 OPRND (sr
) = CPU (h_gr
[f_r2
]);
516 CASE (read
, READ_FMT_26_LD_D
) : /* e.g. ld $dr,@($slo16,$sr) */
518 #define OPRND(f) par_exec->operands.fmt_26_ld_d.f
519 EXTRACT_FMT_26_LD_D_VARS
/* f-op1 f-r1 f-op2 f-r2 f-simm16 */
520 EXTRACT_FMT_26_LD_D_CODE
522 /* Fetch the input operands for the semantic handler. */
523 OPRND (h_memory_add_WI_sr_slo16
) = GETMEMSI (current_cpu
, ADDSI (CPU (h_gr
[f_r2
]), f_simm16
));
524 OPRND (slo16
) = f_simm16
;
525 OPRND (sr
) = CPU (h_gr
[f_r2
]);
530 CASE (read
, READ_FMT_27_LDB
) : /* e.g. ldb $dr,@$sr */
532 #define OPRND(f) par_exec->operands.fmt_27_ldb.f
533 EXTRACT_FMT_27_LDB_VARS
/* f-op1 f-r1 f-op2 f-r2 */
534 EXTRACT_FMT_27_LDB_CODE
536 /* Fetch the input operands for the semantic handler. */
537 OPRND (h_memory_sr
) = GETMEMQI (current_cpu
, CPU (h_gr
[f_r2
]));
538 OPRND (sr
) = CPU (h_gr
[f_r2
]);
543 CASE (read
, READ_FMT_28_LDB_D
) : /* e.g. ldb $dr,@($slo16,$sr) */
545 #define OPRND(f) par_exec->operands.fmt_28_ldb_d.f
546 EXTRACT_FMT_28_LDB_D_VARS
/* f-op1 f-r1 f-op2 f-r2 f-simm16 */
547 EXTRACT_FMT_28_LDB_D_CODE
549 /* Fetch the input operands for the semantic handler. */
550 OPRND (h_memory_add_WI_sr_slo16
) = GETMEMQI (current_cpu
, ADDSI (CPU (h_gr
[f_r2
]), f_simm16
));
551 OPRND (slo16
) = f_simm16
;
552 OPRND (sr
) = CPU (h_gr
[f_r2
]);
557 CASE (read
, READ_FMT_29_LDH
) : /* e.g. ldh $dr,@$sr */
559 #define OPRND(f) par_exec->operands.fmt_29_ldh.f
560 EXTRACT_FMT_29_LDH_VARS
/* f-op1 f-r1 f-op2 f-r2 */
561 EXTRACT_FMT_29_LDH_CODE
563 /* Fetch the input operands for the semantic handler. */
564 OPRND (h_memory_sr
) = GETMEMHI (current_cpu
, CPU (h_gr
[f_r2
]));
565 OPRND (sr
) = CPU (h_gr
[f_r2
]);
570 CASE (read
, READ_FMT_30_LDH_D
) : /* e.g. ldh $dr,@($slo16,$sr) */
572 #define OPRND(f) par_exec->operands.fmt_30_ldh_d.f
573 EXTRACT_FMT_30_LDH_D_VARS
/* f-op1 f-r1 f-op2 f-r2 f-simm16 */
574 EXTRACT_FMT_30_LDH_D_CODE
576 /* Fetch the input operands for the semantic handler. */
577 OPRND (h_memory_add_WI_sr_slo16
) = GETMEMHI (current_cpu
, ADDSI (CPU (h_gr
[f_r2
]), f_simm16
));
578 OPRND (slo16
) = f_simm16
;
579 OPRND (sr
) = CPU (h_gr
[f_r2
]);
584 CASE (read
, READ_FMT_31_LD24
) : /* e.g. ld24 $dr,#$uimm24 */
586 #define OPRND(f) par_exec->operands.fmt_31_ld24.f
587 EXTRACT_FMT_31_LD24_VARS
/* f-op1 f-r1 f-uimm24 */
588 EXTRACT_FMT_31_LD24_CODE
590 /* Fetch the input operands for the semantic handler. */
591 OPRND (uimm24
) = f_uimm24
;
596 CASE (read
, READ_FMT_32_LDI8
) : /* e.g. ldi $dr,#$simm8 */
598 #define OPRND(f) par_exec->operands.fmt_32_ldi8.f
599 EXTRACT_FMT_32_LDI8_VARS
/* f-op1 f-r1 f-simm8 */
600 EXTRACT_FMT_32_LDI8_CODE
602 /* Fetch the input operands for the semantic handler. */
603 OPRND (simm8
) = f_simm8
;
608 CASE (read
, READ_FMT_33_LDI16
) : /* e.g. ldi $dr,$slo16 */
610 #define OPRND(f) par_exec->operands.fmt_33_ldi16.f
611 EXTRACT_FMT_33_LDI16_VARS
/* f-op1 f-r1 f-op2 f-r2 f-simm16 */
612 EXTRACT_FMT_33_LDI16_CODE
614 /* Fetch the input operands for the semantic handler. */
615 OPRND (slo16
) = f_simm16
;
620 CASE (read
, READ_FMT_34_MACHI_A
) : /* e.g. machi $src1,$src2,$acc */
622 #define OPRND(f) par_exec->operands.fmt_34_machi_a.f
623 EXTRACT_FMT_34_MACHI_A_VARS
/* f-op1 f-r1 f-acc f-op23 f-r2 */
624 EXTRACT_FMT_34_MACHI_A_CODE
626 /* Fetch the input operands for the semantic handler. */
627 OPRND (acc
) = m32rx_h_accums_get (current_cpu
, f_acc
);
628 OPRND (src1
) = CPU (h_gr
[f_r1
]);
629 OPRND (src2
) = CPU (h_gr
[f_r2
]);
634 CASE (read
, READ_FMT_35_MULHI_A
) : /* e.g. mulhi $src1,$src2,$acc */
636 #define OPRND(f) par_exec->operands.fmt_35_mulhi_a.f
637 EXTRACT_FMT_35_MULHI_A_VARS
/* f-op1 f-r1 f-acc f-op23 f-r2 */
638 EXTRACT_FMT_35_MULHI_A_CODE
640 /* Fetch the input operands for the semantic handler. */
641 OPRND (src1
) = CPU (h_gr
[f_r1
]);
642 OPRND (src2
) = CPU (h_gr
[f_r2
]);
647 CASE (read
, READ_FMT_36_MV
) : /* e.g. mv $dr,$sr */
649 #define OPRND(f) par_exec->operands.fmt_36_mv.f
650 EXTRACT_FMT_36_MV_VARS
/* f-op1 f-r1 f-op2 f-r2 */
651 EXTRACT_FMT_36_MV_CODE
653 /* Fetch the input operands for the semantic handler. */
654 OPRND (sr
) = CPU (h_gr
[f_r2
]);
659 CASE (read
, READ_FMT_37_MVFACHI_A
) : /* e.g. mvfachi $dr,$accs */
661 #define OPRND(f) par_exec->operands.fmt_37_mvfachi_a.f
662 EXTRACT_FMT_37_MVFACHI_A_VARS
/* f-op1 f-r1 f-op2 f-accs f-op3 */
663 EXTRACT_FMT_37_MVFACHI_A_CODE
665 /* Fetch the input operands for the semantic handler. */
666 OPRND (accs
) = m32rx_h_accums_get (current_cpu
, f_accs
);
671 CASE (read
, READ_FMT_38_MVFC
) : /* e.g. mvfc $dr,$scr */
673 #define OPRND(f) par_exec->operands.fmt_38_mvfc.f
674 EXTRACT_FMT_38_MVFC_VARS
/* f-op1 f-r1 f-op2 f-r2 */
675 EXTRACT_FMT_38_MVFC_CODE
677 /* Fetch the input operands for the semantic handler. */
678 OPRND (scr
) = m32rx_h_cr_get (current_cpu
, f_r2
);
683 CASE (read
, READ_FMT_39_MVTACHI_A
) : /* e.g. mvtachi $src1,$accs */
685 #define OPRND(f) par_exec->operands.fmt_39_mvtachi_a.f
686 EXTRACT_FMT_39_MVTACHI_A_VARS
/* f-op1 f-r1 f-op2 f-accs f-op3 */
687 EXTRACT_FMT_39_MVTACHI_A_CODE
689 /* Fetch the input operands for the semantic handler. */
690 OPRND (accs
) = m32rx_h_accums_get (current_cpu
, f_accs
);
691 OPRND (src1
) = CPU (h_gr
[f_r1
]);
696 CASE (read
, READ_FMT_40_MVTC
) : /* e.g. mvtc $sr,$dcr */
698 #define OPRND(f) par_exec->operands.fmt_40_mvtc.f
699 EXTRACT_FMT_40_MVTC_VARS
/* f-op1 f-r1 f-op2 f-r2 */
700 EXTRACT_FMT_40_MVTC_CODE
702 /* Fetch the input operands for the semantic handler. */
703 OPRND (sr
) = CPU (h_gr
[f_r2
]);
708 CASE (read
, READ_FMT_41_NOP
) : /* e.g. nop */
710 #define OPRND(f) par_exec->operands.fmt_41_nop.f
711 EXTRACT_FMT_41_NOP_VARS
/* f-op1 f-r1 f-op2 f-r2 */
712 EXTRACT_FMT_41_NOP_CODE
714 /* Fetch the input operands for the semantic handler. */
719 CASE (read
, READ_FMT_42_RAC_D
) : /* e.g. rac $accd */
721 #define OPRND(f) par_exec->operands.fmt_42_rac_d.f
722 EXTRACT_FMT_42_RAC_D_VARS
/* f-op1 f-accd f-bits67 f-op2 f-accs f-bit14 f-imm1 */
723 EXTRACT_FMT_42_RAC_D_CODE
725 /* Fetch the input operands for the semantic handler. */
726 OPRND (accum
) = CPU (h_accum
);
731 CASE (read
, READ_FMT_43_RAC_DS
) : /* e.g. rac $accd,$accs */
733 #define OPRND(f) par_exec->operands.fmt_43_rac_ds.f
734 EXTRACT_FMT_43_RAC_DS_VARS
/* f-op1 f-accd f-bits67 f-op2 f-accs f-bit14 f-imm1 */
735 EXTRACT_FMT_43_RAC_DS_CODE
737 /* Fetch the input operands for the semantic handler. */
738 OPRND (accs
) = m32rx_h_accums_get (current_cpu
, f_accs
);
743 CASE (read
, READ_FMT_44_RAC_DSI
) : /* e.g. rac $accd,$accs,#$imm1 */
745 #define OPRND(f) par_exec->operands.fmt_44_rac_dsi.f
746 EXTRACT_FMT_44_RAC_DSI_VARS
/* f-op1 f-accd f-bits67 f-op2 f-accs f-bit14 f-imm1 */
747 EXTRACT_FMT_44_RAC_DSI_CODE
749 /* Fetch the input operands for the semantic handler. */
750 OPRND (accs
) = m32rx_h_accums_get (current_cpu
, f_accs
);
751 OPRND (imm1
) = f_imm1
;
756 CASE (read
, READ_FMT_45_RTE
) : /* e.g. rte */
758 #define OPRND(f) par_exec->operands.fmt_45_rte.f
759 EXTRACT_FMT_45_RTE_VARS
/* f-op1 f-r1 f-op2 f-r2 */
760 EXTRACT_FMT_45_RTE_CODE
762 /* Fetch the input operands for the semantic handler. */
763 OPRND (h_bcond_0
) = CPU (h_bcond
);
764 OPRND (h_bie_0
) = CPU (h_bie
);
765 OPRND (h_bpc_0
) = CPU (h_bpc
);
766 OPRND (h_bsm_0
) = CPU (h_bsm
);
771 CASE (read
, READ_FMT_46_SETH
) : /* e.g. seth $dr,#$hi16 */
773 #define OPRND(f) par_exec->operands.fmt_46_seth.f
774 EXTRACT_FMT_46_SETH_VARS
/* f-op1 f-r1 f-op2 f-r2 f-hi16 */
775 EXTRACT_FMT_46_SETH_CODE
777 /* Fetch the input operands for the semantic handler. */
778 OPRND (hi16
) = f_hi16
;
783 CASE (read
, READ_FMT_47_SLLI
) : /* e.g. slli $dr,#$uimm5 */
785 #define OPRND(f) par_exec->operands.fmt_47_slli.f
786 EXTRACT_FMT_47_SLLI_VARS
/* f-op1 f-r1 f-shift-op2 f-uimm5 */
787 EXTRACT_FMT_47_SLLI_CODE
789 /* Fetch the input operands for the semantic handler. */
790 OPRND (dr
) = CPU (h_gr
[f_r1
]);
791 OPRND (uimm5
) = f_uimm5
;
796 CASE (read
, READ_FMT_48_ST_D
) : /* e.g. st $src1,@($slo16,$src2) */
798 #define OPRND(f) par_exec->operands.fmt_48_st_d.f
799 EXTRACT_FMT_48_ST_D_VARS
/* f-op1 f-r1 f-op2 f-r2 f-simm16 */
800 EXTRACT_FMT_48_ST_D_CODE
802 /* Fetch the input operands for the semantic handler. */
803 OPRND (slo16
) = f_simm16
;
804 OPRND (src1
) = CPU (h_gr
[f_r1
]);
805 OPRND (src2
) = CPU (h_gr
[f_r2
]);
810 CASE (read
, READ_FMT_49_TRAP
) : /* e.g. trap #$uimm4 */
812 #define OPRND(f) par_exec->operands.fmt_49_trap.f
813 EXTRACT_FMT_49_TRAP_VARS
/* f-op1 f-r1 f-op2 f-uimm4 */
814 EXTRACT_FMT_49_TRAP_CODE
816 /* Fetch the input operands for the semantic handler. */
817 OPRND (uimm4
) = f_uimm4
;
822 CASE (read
, READ_FMT_50_SATB
) : /* e.g. satb $dr,$src2 */
824 #define OPRND(f) par_exec->operands.fmt_50_satb.f
825 EXTRACT_FMT_50_SATB_VARS
/* f-op1 f-r1 f-op2 f-r2 f-uimm16 */
826 EXTRACT_FMT_50_SATB_CODE
828 /* Fetch the input operands for the semantic handler. */
829 OPRND (src2
) = CPU (h_gr
[f_r2
]);
834 CASE (read
, READ_FMT_51_SAT
) : /* e.g. sat $dr,$src2 */
836 #define OPRND(f) par_exec->operands.fmt_51_sat.f
837 EXTRACT_FMT_51_SAT_VARS
/* f-op1 f-r1 f-op2 f-r2 f-uimm16 */
838 EXTRACT_FMT_51_SAT_CODE
840 /* Fetch the input operands for the semantic handler. */
841 OPRND (condbit
) = CPU (h_cond
);
842 OPRND (src2
) = CPU (h_gr
[f_r2
]);
847 CASE (read
, READ_FMT_52_SADD
) : /* e.g. sadd */
849 #define OPRND(f) par_exec->operands.fmt_52_sadd.f
850 EXTRACT_FMT_52_SADD_VARS
/* f-op1 f-r1 f-op2 f-r2 */
851 EXTRACT_FMT_52_SADD_CODE
853 /* Fetch the input operands for the semantic handler. */
854 OPRND (h_accums_0
) = m32rx_h_accums_get (current_cpu
, 0);
855 OPRND (h_accums_1
) = m32rx_h_accums_get (current_cpu
, 1);
860 CASE (read
, READ_FMT_53_MACWU1
) : /* e.g. macwu1 $src1,$src2 */
862 #define OPRND(f) par_exec->operands.fmt_53_macwu1.f
863 EXTRACT_FMT_53_MACWU1_VARS
/* f-op1 f-r1 f-op2 f-r2 */
864 EXTRACT_FMT_53_MACWU1_CODE
866 /* Fetch the input operands for the semantic handler. */
867 OPRND (h_accums_1
) = m32rx_h_accums_get (current_cpu
, 1);
868 OPRND (src1
) = CPU (h_gr
[f_r1
]);
869 OPRND (src2
) = CPU (h_gr
[f_r2
]);
874 CASE (read
, READ_FMT_54_MSBLO
) : /* e.g. msblo $src1,$src2 */
876 #define OPRND(f) par_exec->operands.fmt_54_msblo.f
877 EXTRACT_FMT_54_MSBLO_VARS
/* f-op1 f-r1 f-op2 f-r2 */
878 EXTRACT_FMT_54_MSBLO_CODE
880 /* Fetch the input operands for the semantic handler. */
881 OPRND (accum
) = CPU (h_accum
);
882 OPRND (src1
) = CPU (h_gr
[f_r1
]);
883 OPRND (src2
) = CPU (h_gr
[f_r2
]);
888 CASE (read
, READ_FMT_55_SC
) : /* e.g. sc */
890 #define OPRND(f) par_exec->operands.fmt_55_sc.f
891 EXTRACT_FMT_55_SC_VARS
/* f-op1 f-r1 f-op2 f-r2 */
892 EXTRACT_FMT_55_SC_CODE
894 /* Fetch the input operands for the semantic handler. */
895 OPRND (condbit
) = CPU (h_cond
);
901 ENDSWITCH (read
) /* End of read switch. */
904 #endif /* DEFINE_SWITCH */