1 /* Simulator instruction semantics for m32rx.
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.
24 #define WANT_CPU_M32RX
31 #if ! defined (SCACHE_P) || (defined (SCACHE_P) && WITH_SCACHE)
34 #define GET_ATTR(cpu, num, attr) CGEN_INSN_ATTR (abuf->opcode, CGEN_INSN_##attr)
36 /* Perform add: add $dr,$sr. */
38 SEM_FN_NAME (m32rx
,add
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
40 #define FLD(f) abuf->fields.fmt_0_add.f
41 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_0_add.f
42 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
43 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
44 CPU (h_gr
[f_r1
]) = ADDSI (OPRND (dr
), OPRND (sr
));
45 TRACE_RESULT (current_cpu
, "dr", 'x', OPRND (dr
));
46 #if WITH_PROFILE_MODEL_P
47 if (PROFILE_MODEL_P (current_cpu
))
49 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
50 m32rx_model_mark_set_h_gr (current_cpu
, abuf
);
51 m32rx_model_profile_insn (current_cpu
, abuf
);
59 /* Perform add3: add3 $dr,$sr,#$slo16. */
61 SEM_FN_NAME (m32rx
,add3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
63 #define FLD(f) abuf->fields.fmt_1_add3.f
64 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_1_add3.f
65 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
66 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
67 CPU (h_gr
[f_r1
]) = ADDSI (OPRND (sr
), OPRND (slo16
));
68 TRACE_RESULT (current_cpu
, "dr", 'x', OPRND (dr
));
69 #if WITH_PROFILE_MODEL_P
70 if (PROFILE_MODEL_P (current_cpu
))
72 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
73 m32rx_model_mark_set_h_gr (current_cpu
, abuf
);
74 m32rx_model_profile_insn (current_cpu
, abuf
);
82 /* Perform and: and $dr,$sr. */
84 SEM_FN_NAME (m32rx
,and) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
86 #define FLD(f) abuf->fields.fmt_0_add.f
87 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_0_add.f
88 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
89 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
90 CPU (h_gr
[f_r1
]) = ANDSI (OPRND (dr
), OPRND (sr
));
91 TRACE_RESULT (current_cpu
, "dr", 'x', OPRND (dr
));
92 #if WITH_PROFILE_MODEL_P
93 if (PROFILE_MODEL_P (current_cpu
))
95 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
96 m32rx_model_mark_set_h_gr (current_cpu
, abuf
);
97 m32rx_model_profile_insn (current_cpu
, abuf
);
105 /* Perform and3: and3 $dr,$sr,#$uimm16. */
107 SEM_FN_NAME (m32rx
,and3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
109 #define FLD(f) abuf->fields.fmt_2_and3.f
110 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_2_and3.f
111 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
112 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
113 CPU (h_gr
[f_r1
]) = ANDSI (OPRND (sr
), OPRND (uimm16
));
114 TRACE_RESULT (current_cpu
, "dr", 'x', OPRND (dr
));
115 #if WITH_PROFILE_MODEL_P
116 if (PROFILE_MODEL_P (current_cpu
))
118 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
119 m32rx_model_mark_set_h_gr (current_cpu
, abuf
);
120 m32rx_model_profile_insn (current_cpu
, abuf
);
128 /* Perform or: or $dr,$sr. */
130 SEM_FN_NAME (m32rx
,or) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
132 #define FLD(f) abuf->fields.fmt_0_add.f
133 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_0_add.f
134 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
135 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
136 CPU (h_gr
[f_r1
]) = ORSI (OPRND (dr
), OPRND (sr
));
137 TRACE_RESULT (current_cpu
, "dr", 'x', OPRND (dr
));
138 #if WITH_PROFILE_MODEL_P
139 if (PROFILE_MODEL_P (current_cpu
))
141 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
142 m32rx_model_mark_set_h_gr (current_cpu
, abuf
);
143 m32rx_model_profile_insn (current_cpu
, abuf
);
151 /* Perform or3: or3 $dr,$sr,#$ulo16. */
153 SEM_FN_NAME (m32rx
,or3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
155 #define FLD(f) abuf->fields.fmt_3_or3.f
156 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_3_or3.f
157 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
158 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
159 CPU (h_gr
[f_r1
]) = ORSI (OPRND (sr
), OPRND (ulo16
));
160 TRACE_RESULT (current_cpu
, "dr", 'x', OPRND (dr
));
161 #if WITH_PROFILE_MODEL_P
162 if (PROFILE_MODEL_P (current_cpu
))
164 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
165 m32rx_model_mark_set_h_gr (current_cpu
, abuf
);
166 m32rx_model_profile_insn (current_cpu
, abuf
);
174 /* Perform xor: xor $dr,$sr. */
176 SEM_FN_NAME (m32rx
,xor) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
178 #define FLD(f) abuf->fields.fmt_0_add.f
179 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_0_add.f
180 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
181 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
182 CPU (h_gr
[f_r1
]) = XORSI (OPRND (dr
), OPRND (sr
));
183 TRACE_RESULT (current_cpu
, "dr", 'x', OPRND (dr
));
184 #if WITH_PROFILE_MODEL_P
185 if (PROFILE_MODEL_P (current_cpu
))
187 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
188 m32rx_model_mark_set_h_gr (current_cpu
, abuf
);
189 m32rx_model_profile_insn (current_cpu
, abuf
);
197 /* Perform xor3: xor3 $dr,$sr,#$uimm16. */
199 SEM_FN_NAME (m32rx
,xor3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
201 #define FLD(f) abuf->fields.fmt_2_and3.f
202 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_2_and3.f
203 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
204 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
205 CPU (h_gr
[f_r1
]) = XORSI (OPRND (sr
), OPRND (uimm16
));
206 TRACE_RESULT (current_cpu
, "dr", 'x', OPRND (dr
));
207 #if WITH_PROFILE_MODEL_P
208 if (PROFILE_MODEL_P (current_cpu
))
210 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
211 m32rx_model_mark_set_h_gr (current_cpu
, abuf
);
212 m32rx_model_profile_insn (current_cpu
, abuf
);
220 /* Perform addi: addi $dr,#$simm8. */
222 SEM_FN_NAME (m32rx
,addi
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
224 #define FLD(f) abuf->fields.fmt_4_addi.f
225 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_4_addi.f
226 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
227 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
228 CPU (h_gr
[f_r1
]) = ADDSI (OPRND (dr
), OPRND (simm8
));
229 TRACE_RESULT (current_cpu
, "dr", 'x', OPRND (dr
));
230 #if WITH_PROFILE_MODEL_P
231 if (PROFILE_MODEL_P (current_cpu
))
233 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
234 m32rx_model_mark_set_h_gr (current_cpu
, abuf
);
235 m32rx_model_profile_insn (current_cpu
, abuf
);
243 /* Perform addv: addv $dr,$sr. */
245 SEM_FN_NAME (m32rx
,addv
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
247 #define FLD(f) abuf->fields.fmt_0_add.f
248 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_0_add.f
249 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
250 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
253 temp0
= ADDSI (OPRND (dr
), OPRND (sr
));
254 temp1
= ADDOFSI (OPRND (dr
), OPRND (sr
), 0);
255 CPU (h_gr
[f_r1
]) = temp0
;
256 TRACE_RESULT (current_cpu
, "dr", 'x', OPRND (dr
));
257 CPU (h_cond
) = temp1
;
258 TRACE_RESULT (current_cpu
, "condbit", 'x', OPRND (condbit
));
260 #if WITH_PROFILE_MODEL_P
261 if (PROFILE_MODEL_P (current_cpu
))
263 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
264 m32rx_model_mark_set_h_gr (current_cpu
, abuf
);
265 m32rx_model_profile_insn (current_cpu
, abuf
);
273 /* Perform addv3: addv3 $dr,$sr,#$simm16. */
275 SEM_FN_NAME (m32rx
,addv3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
277 #define FLD(f) abuf->fields.fmt_5_addv3.f
278 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_5_addv3.f
279 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
280 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
283 temp0
= ADDSI (OPRND (sr
), OPRND (simm16
));
284 temp1
= ADDOFSI (OPRND (sr
), OPRND (simm16
), 0);
285 CPU (h_gr
[f_r1
]) = temp0
;
286 TRACE_RESULT (current_cpu
, "dr", 'x', OPRND (dr
));
287 CPU (h_cond
) = temp1
;
288 TRACE_RESULT (current_cpu
, "condbit", 'x', OPRND (condbit
));
290 #if WITH_PROFILE_MODEL_P
291 if (PROFILE_MODEL_P (current_cpu
))
293 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
294 m32rx_model_mark_set_h_gr (current_cpu
, abuf
);
295 m32rx_model_profile_insn (current_cpu
, abuf
);
303 /* Perform addx: addx $dr,$sr. */
305 SEM_FN_NAME (m32rx
,addx
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
307 #define FLD(f) abuf->fields.fmt_6_addx.f
308 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_6_addx.f
309 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
310 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
313 temp0
= ADDCSI (OPRND (dr
), OPRND (sr
), OPRND (condbit
));
314 temp1
= ADDCFSI (OPRND (dr
), OPRND (sr
), OPRND (condbit
));
315 CPU (h_gr
[f_r1
]) = temp0
;
316 TRACE_RESULT (current_cpu
, "dr", 'x', OPRND (dr
));
317 CPU (h_cond
) = temp1
;
318 TRACE_RESULT (current_cpu
, "condbit", 'x', OPRND (condbit
));
320 #if WITH_PROFILE_MODEL_P
321 if (PROFILE_MODEL_P (current_cpu
))
323 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
324 m32rx_model_mark_set_h_gr (current_cpu
, abuf
);
325 m32rx_model_profile_insn (current_cpu
, abuf
);
333 /* Perform bc8: bc $disp8. */
335 SEM_FN_NAME (m32rx
,bc8
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
337 #define FLD(f) abuf->fields.fmt_7_bc8.f
338 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_7_bc8.f
339 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
340 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
342 if (OPRND (condbit
)) {
343 BRANCH_NEW_PC (current_cpu
, new_pc
, SEM_BRANCH_VIA_CACHE (sem_arg
, OPRND (disp8
)));
345 #if WITH_PROFILE_MODEL_P
346 if (PROFILE_MODEL_P (current_cpu
))
348 m32rx_model_profile_cti_insn (current_cpu
, abuf
, taken_p
);
356 /* Perform bc24: bc $disp24. */
358 SEM_FN_NAME (m32rx
,bc24
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
360 #define FLD(f) abuf->fields.fmt_8_bc24.f
361 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_8_bc24.f
362 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
363 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
365 if (OPRND (condbit
)) {
366 BRANCH_NEW_PC (current_cpu
, new_pc
, SEM_BRANCH_VIA_CACHE (sem_arg
, OPRND (disp24
)));
368 #if WITH_PROFILE_MODEL_P
369 if (PROFILE_MODEL_P (current_cpu
))
371 m32rx_model_profile_cti_insn (current_cpu
, abuf
, taken_p
);
379 /* Perform beq: beq $src1,$src2,$disp16. */
381 SEM_FN_NAME (m32rx
,beq
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
383 #define FLD(f) abuf->fields.fmt_9_beq.f
384 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_9_beq.f
385 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
386 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
388 if (EQSI (OPRND (src1
), OPRND (src2
))) {
389 BRANCH_NEW_PC (current_cpu
, new_pc
, SEM_BRANCH_VIA_CACHE (sem_arg
, OPRND (disp16
)));
391 #if WITH_PROFILE_MODEL_P
392 if (PROFILE_MODEL_P (current_cpu
))
394 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
395 m32rx_model_profile_cti_insn (current_cpu
, abuf
, taken_p
);
403 /* Perform beqz: beqz $src2,$disp16. */
405 SEM_FN_NAME (m32rx
,beqz
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
407 #define FLD(f) abuf->fields.fmt_10_beqz.f
408 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_10_beqz.f
409 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
410 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
412 if (EQSI (OPRND (src2
), 0)) {
413 BRANCH_NEW_PC (current_cpu
, new_pc
, SEM_BRANCH_VIA_CACHE (sem_arg
, OPRND (disp16
)));
415 #if WITH_PROFILE_MODEL_P
416 if (PROFILE_MODEL_P (current_cpu
))
418 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
419 m32rx_model_profile_cti_insn (current_cpu
, abuf
, taken_p
);
427 /* Perform bgez: bgez $src2,$disp16. */
429 SEM_FN_NAME (m32rx
,bgez
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
431 #define FLD(f) abuf->fields.fmt_10_beqz.f
432 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_10_beqz.f
433 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
434 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
436 if (GESI (OPRND (src2
), 0)) {
437 BRANCH_NEW_PC (current_cpu
, new_pc
, SEM_BRANCH_VIA_CACHE (sem_arg
, OPRND (disp16
)));
439 #if WITH_PROFILE_MODEL_P
440 if (PROFILE_MODEL_P (current_cpu
))
442 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
443 m32rx_model_profile_cti_insn (current_cpu
, abuf
, taken_p
);
451 /* Perform bgtz: bgtz $src2,$disp16. */
453 SEM_FN_NAME (m32rx
,bgtz
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
455 #define FLD(f) abuf->fields.fmt_10_beqz.f
456 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_10_beqz.f
457 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
458 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
460 if (GTSI (OPRND (src2
), 0)) {
461 BRANCH_NEW_PC (current_cpu
, new_pc
, SEM_BRANCH_VIA_CACHE (sem_arg
, OPRND (disp16
)));
463 #if WITH_PROFILE_MODEL_P
464 if (PROFILE_MODEL_P (current_cpu
))
466 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
467 m32rx_model_profile_cti_insn (current_cpu
, abuf
, taken_p
);
475 /* Perform blez: blez $src2,$disp16. */
477 SEM_FN_NAME (m32rx
,blez
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
479 #define FLD(f) abuf->fields.fmt_10_beqz.f
480 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_10_beqz.f
481 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
482 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
484 if (LESI (OPRND (src2
), 0)) {
485 BRANCH_NEW_PC (current_cpu
, new_pc
, SEM_BRANCH_VIA_CACHE (sem_arg
, OPRND (disp16
)));
487 #if WITH_PROFILE_MODEL_P
488 if (PROFILE_MODEL_P (current_cpu
))
490 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
491 m32rx_model_profile_cti_insn (current_cpu
, abuf
, taken_p
);
499 /* Perform bltz: bltz $src2,$disp16. */
501 SEM_FN_NAME (m32rx
,bltz
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
503 #define FLD(f) abuf->fields.fmt_10_beqz.f
504 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_10_beqz.f
505 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
506 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
508 if (LTSI (OPRND (src2
), 0)) {
509 BRANCH_NEW_PC (current_cpu
, new_pc
, SEM_BRANCH_VIA_CACHE (sem_arg
, OPRND (disp16
)));
511 #if WITH_PROFILE_MODEL_P
512 if (PROFILE_MODEL_P (current_cpu
))
514 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
515 m32rx_model_profile_cti_insn (current_cpu
, abuf
, taken_p
);
523 /* Perform bnez: bnez $src2,$disp16. */
525 SEM_FN_NAME (m32rx
,bnez
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
527 #define FLD(f) abuf->fields.fmt_10_beqz.f
528 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_10_beqz.f
529 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
530 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
532 if (NESI (OPRND (src2
), 0)) {
533 BRANCH_NEW_PC (current_cpu
, new_pc
, SEM_BRANCH_VIA_CACHE (sem_arg
, OPRND (disp16
)));
535 #if WITH_PROFILE_MODEL_P
536 if (PROFILE_MODEL_P (current_cpu
))
538 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
539 m32rx_model_profile_cti_insn (current_cpu
, abuf
, taken_p
);
547 /* Perform bl8: bl $disp8. */
549 SEM_FN_NAME (m32rx
,bl8
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
551 #define FLD(f) abuf->fields.fmt_11_bl8.f
552 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_11_bl8.f
553 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
554 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
557 CPU (h_gr
[14]) = ADDSI (ANDSI (OPRND (pc
), -4), 4);
558 TRACE_RESULT (current_cpu
, "h-gr", 'x', OPRND (h_gr
));
559 BRANCH_NEW_PC (current_cpu
, new_pc
, SEM_BRANCH_VIA_CACHE (sem_arg
, OPRND (disp8
)));
561 #if WITH_PROFILE_MODEL_P
562 if (PROFILE_MODEL_P (current_cpu
))
564 m32rx_model_profile_cti_insn (current_cpu
, abuf
, taken_p
);
572 /* Perform bl24: bl $disp24. */
574 SEM_FN_NAME (m32rx
,bl24
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
576 #define FLD(f) abuf->fields.fmt_12_bl24.f
577 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_12_bl24.f
578 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
579 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
582 CPU (h_gr
[14]) = ADDSI (OPRND (pc
), 4);
583 TRACE_RESULT (current_cpu
, "h-gr", 'x', OPRND (h_gr
));
584 BRANCH_NEW_PC (current_cpu
, new_pc
, SEM_BRANCH_VIA_CACHE (sem_arg
, OPRND (disp24
)));
586 #if WITH_PROFILE_MODEL_P
587 if (PROFILE_MODEL_P (current_cpu
))
589 m32rx_model_profile_cti_insn (current_cpu
, abuf
, taken_p
);
597 /* Perform bcl8: bcl $disp8. */
599 SEM_FN_NAME (m32rx
,bcl8
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
601 #define FLD(f) abuf->fields.fmt_13_bcl8.f
602 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_13_bcl8.f
603 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
604 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
606 if (OPRND (condbit
)) {
608 CPU (h_gr
[14]) = ADDSI (ANDSI (OPRND (pc
), -4), 4);
609 TRACE_RESULT (current_cpu
, "h-gr", 'x', OPRND (h_gr
));
610 BRANCH_NEW_PC (current_cpu
, new_pc
, SEM_BRANCH_VIA_CACHE (sem_arg
, OPRND (disp8
)));
613 #if WITH_PROFILE_MODEL_P
614 if (PROFILE_MODEL_P (current_cpu
))
616 m32rx_model_mark_set_h_gr (current_cpu
, abuf
);
617 m32rx_model_profile_cti_insn (current_cpu
, abuf
, taken_p
);
625 /* Perform bcl24: bcl $disp24. */
627 SEM_FN_NAME (m32rx
,bcl24
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
629 #define FLD(f) abuf->fields.fmt_14_bcl24.f
630 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_14_bcl24.f
631 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
632 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
634 if (OPRND (condbit
)) {
636 CPU (h_gr
[14]) = ADDSI (ANDSI (OPRND (pc
), -4), 4);
637 TRACE_RESULT (current_cpu
, "h-gr", 'x', OPRND (h_gr
));
638 BRANCH_NEW_PC (current_cpu
, new_pc
, SEM_BRANCH_VIA_CACHE (sem_arg
, OPRND (disp24
)));
641 #if WITH_PROFILE_MODEL_P
642 if (PROFILE_MODEL_P (current_cpu
))
644 m32rx_model_mark_set_h_gr (current_cpu
, abuf
);
645 m32rx_model_profile_cti_insn (current_cpu
, abuf
, taken_p
);
653 /* Perform bnc8: bnc $disp8. */
655 SEM_FN_NAME (m32rx
,bnc8
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
657 #define FLD(f) abuf->fields.fmt_7_bc8.f
658 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_7_bc8.f
659 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
660 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
662 if (NOTBI (OPRND (condbit
))) {
663 BRANCH_NEW_PC (current_cpu
, new_pc
, SEM_BRANCH_VIA_CACHE (sem_arg
, OPRND (disp8
)));
665 #if WITH_PROFILE_MODEL_P
666 if (PROFILE_MODEL_P (current_cpu
))
668 m32rx_model_profile_cti_insn (current_cpu
, abuf
, taken_p
);
676 /* Perform bnc24: bnc $disp24. */
678 SEM_FN_NAME (m32rx
,bnc24
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
680 #define FLD(f) abuf->fields.fmt_8_bc24.f
681 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_8_bc24.f
682 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
683 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
685 if (NOTBI (OPRND (condbit
))) {
686 BRANCH_NEW_PC (current_cpu
, new_pc
, SEM_BRANCH_VIA_CACHE (sem_arg
, OPRND (disp24
)));
688 #if WITH_PROFILE_MODEL_P
689 if (PROFILE_MODEL_P (current_cpu
))
691 m32rx_model_profile_cti_insn (current_cpu
, abuf
, taken_p
);
699 /* Perform bne: bne $src1,$src2,$disp16. */
701 SEM_FN_NAME (m32rx
,bne
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
703 #define FLD(f) abuf->fields.fmt_9_beq.f
704 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_9_beq.f
705 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
706 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
708 if (NESI (OPRND (src1
), OPRND (src2
))) {
709 BRANCH_NEW_PC (current_cpu
, new_pc
, SEM_BRANCH_VIA_CACHE (sem_arg
, OPRND (disp16
)));
711 #if WITH_PROFILE_MODEL_P
712 if (PROFILE_MODEL_P (current_cpu
))
714 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
715 m32rx_model_profile_cti_insn (current_cpu
, abuf
, taken_p
);
723 /* Perform bra8: bra $disp8. */
725 SEM_FN_NAME (m32rx
,bra8
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
727 #define FLD(f) abuf->fields.fmt_15_bra8.f
728 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_15_bra8.f
729 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
730 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
732 BRANCH_NEW_PC (current_cpu
, new_pc
, SEM_BRANCH_VIA_CACHE (sem_arg
, OPRND (disp8
)));
733 #if WITH_PROFILE_MODEL_P
734 if (PROFILE_MODEL_P (current_cpu
))
736 m32rx_model_profile_cti_insn (current_cpu
, abuf
, taken_p
);
744 /* Perform bra24: bra $disp24. */
746 SEM_FN_NAME (m32rx
,bra24
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
748 #define FLD(f) abuf->fields.fmt_16_bra24.f
749 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_16_bra24.f
750 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
751 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
753 BRANCH_NEW_PC (current_cpu
, new_pc
, SEM_BRANCH_VIA_CACHE (sem_arg
, OPRND (disp24
)));
754 #if WITH_PROFILE_MODEL_P
755 if (PROFILE_MODEL_P (current_cpu
))
757 m32rx_model_profile_cti_insn (current_cpu
, abuf
, taken_p
);
765 /* Perform bncl8: bncl $disp8. */
767 SEM_FN_NAME (m32rx
,bncl8
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
769 #define FLD(f) abuf->fields.fmt_13_bcl8.f
770 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_13_bcl8.f
771 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
772 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
774 if (NOTBI (OPRND (condbit
))) {
776 CPU (h_gr
[14]) = ADDSI (ANDSI (OPRND (pc
), -4), 4);
777 TRACE_RESULT (current_cpu
, "h-gr", 'x', OPRND (h_gr
));
778 BRANCH_NEW_PC (current_cpu
, new_pc
, SEM_BRANCH_VIA_CACHE (sem_arg
, OPRND (disp8
)));
781 #if WITH_PROFILE_MODEL_P
782 if (PROFILE_MODEL_P (current_cpu
))
784 m32rx_model_mark_set_h_gr (current_cpu
, abuf
);
785 m32rx_model_profile_cti_insn (current_cpu
, abuf
, taken_p
);
793 /* Perform bncl24: bncl $disp24. */
795 SEM_FN_NAME (m32rx
,bncl24
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
797 #define FLD(f) abuf->fields.fmt_14_bcl24.f
798 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_14_bcl24.f
799 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
800 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
802 if (NOTBI (OPRND (condbit
))) {
804 CPU (h_gr
[14]) = ADDSI (ANDSI (OPRND (pc
), -4), 4);
805 TRACE_RESULT (current_cpu
, "h-gr", 'x', OPRND (h_gr
));
806 BRANCH_NEW_PC (current_cpu
, new_pc
, SEM_BRANCH_VIA_CACHE (sem_arg
, OPRND (disp24
)));
809 #if WITH_PROFILE_MODEL_P
810 if (PROFILE_MODEL_P (current_cpu
))
812 m32rx_model_mark_set_h_gr (current_cpu
, abuf
);
813 m32rx_model_profile_cti_insn (current_cpu
, abuf
, taken_p
);
821 /* Perform cmp: cmp $src1,$src2. */
823 SEM_FN_NAME (m32rx
,cmp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
825 #define FLD(f) abuf->fields.fmt_17_cmp.f
826 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_17_cmp.f
827 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
828 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
829 CPU (h_cond
) = LTSI (OPRND (src1
), OPRND (src2
));
830 TRACE_RESULT (current_cpu
, "condbit", 'x', OPRND (condbit
));
831 #if WITH_PROFILE_MODEL_P
832 if (PROFILE_MODEL_P (current_cpu
))
834 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
835 m32rx_model_profile_insn (current_cpu
, abuf
);
843 /* Perform cmpi: cmpi $src2,#$simm16. */
845 SEM_FN_NAME (m32rx
,cmpi
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
847 #define FLD(f) abuf->fields.fmt_18_cmpi.f
848 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_18_cmpi.f
849 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
850 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
851 CPU (h_cond
) = LTSI (OPRND (src2
), OPRND (simm16
));
852 TRACE_RESULT (current_cpu
, "condbit", 'x', OPRND (condbit
));
853 #if WITH_PROFILE_MODEL_P
854 if (PROFILE_MODEL_P (current_cpu
))
856 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
857 m32rx_model_profile_insn (current_cpu
, abuf
);
865 /* Perform cmpu: cmpu $src1,$src2. */
867 SEM_FN_NAME (m32rx
,cmpu
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
869 #define FLD(f) abuf->fields.fmt_17_cmp.f
870 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_17_cmp.f
871 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
872 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
873 CPU (h_cond
) = LTUSI (OPRND (src1
), OPRND (src2
));
874 TRACE_RESULT (current_cpu
, "condbit", 'x', OPRND (condbit
));
875 #if WITH_PROFILE_MODEL_P
876 if (PROFILE_MODEL_P (current_cpu
))
878 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
879 m32rx_model_profile_insn (current_cpu
, abuf
);
887 /* Perform cmpui: cmpui $src2,#$uimm16. */
889 SEM_FN_NAME (m32rx
,cmpui
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
891 #define FLD(f) abuf->fields.fmt_19_cmpui.f
892 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_19_cmpui.f
893 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
894 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
895 CPU (h_cond
) = LTUSI (OPRND (src2
), OPRND (uimm16
));
896 TRACE_RESULT (current_cpu
, "condbit", 'x', OPRND (condbit
));
897 #if WITH_PROFILE_MODEL_P
898 if (PROFILE_MODEL_P (current_cpu
))
900 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
901 m32rx_model_profile_insn (current_cpu
, abuf
);
909 /* Perform cmpeq: cmpeq $src1,$src2. */
911 SEM_FN_NAME (m32rx
,cmpeq
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
913 #define FLD(f) abuf->fields.fmt_17_cmp.f
914 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_17_cmp.f
915 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
916 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
917 CPU (h_cond
) = EQSI (OPRND (src1
), OPRND (src2
));
918 TRACE_RESULT (current_cpu
, "condbit", 'x', OPRND (condbit
));
919 #if WITH_PROFILE_MODEL_P
920 if (PROFILE_MODEL_P (current_cpu
))
922 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
923 m32rx_model_profile_insn (current_cpu
, abuf
);
931 /* Perform cmpz: cmpz $src2. */
933 SEM_FN_NAME (m32rx
,cmpz
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
935 #define FLD(f) abuf->fields.fmt_20_cmpz.f
936 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_20_cmpz.f
937 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
938 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
939 CPU (h_cond
) = EQSI (OPRND (src2
), 0);
940 TRACE_RESULT (current_cpu
, "condbit", 'x', OPRND (condbit
));
941 #if WITH_PROFILE_MODEL_P
942 if (PROFILE_MODEL_P (current_cpu
))
944 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
945 m32rx_model_profile_insn (current_cpu
, abuf
);
953 /* Perform div: div $dr,$sr. */
955 SEM_FN_NAME (m32rx
,div
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
957 #define FLD(f) abuf->fields.fmt_21_div.f
958 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_21_div.f
959 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
960 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
961 if (NESI (OPRND (sr
), 0)) {
962 CPU (h_gr
[f_r1
]) = DIVSI (OPRND (dr
), OPRND (sr
));
963 TRACE_RESULT (current_cpu
, "dr", 'x', OPRND (dr
));
965 #if WITH_PROFILE_MODEL_P
966 if (PROFILE_MODEL_P (current_cpu
))
968 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
969 m32rx_model_mark_set_h_gr (current_cpu
, abuf
);
970 m32rx_model_profile_insn (current_cpu
, abuf
);
978 /* Perform divu: divu $dr,$sr. */
980 SEM_FN_NAME (m32rx
,divu
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
982 #define FLD(f) abuf->fields.fmt_21_div.f
983 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_21_div.f
984 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
985 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
986 if (NESI (OPRND (sr
), 0)) {
987 CPU (h_gr
[f_r1
]) = UDIVSI (OPRND (dr
), OPRND (sr
));
988 TRACE_RESULT (current_cpu
, "dr", 'x', OPRND (dr
));
990 #if WITH_PROFILE_MODEL_P
991 if (PROFILE_MODEL_P (current_cpu
))
993 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
994 m32rx_model_mark_set_h_gr (current_cpu
, abuf
);
995 m32rx_model_profile_insn (current_cpu
, abuf
);
1003 /* Perform rem: rem $dr,$sr. */
1005 SEM_FN_NAME (m32rx
,rem
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1007 #define FLD(f) abuf->fields.fmt_21_div.f
1008 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_21_div.f
1009 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1010 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1011 if (NESI (OPRND (sr
), 0)) {
1012 CPU (h_gr
[f_r1
]) = MODSI (OPRND (dr
), OPRND (sr
));
1013 TRACE_RESULT (current_cpu
, "dr", 'x', OPRND (dr
));
1015 #if WITH_PROFILE_MODEL_P
1016 if (PROFILE_MODEL_P (current_cpu
))
1018 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
1019 m32rx_model_mark_set_h_gr (current_cpu
, abuf
);
1020 m32rx_model_profile_insn (current_cpu
, abuf
);
1028 /* Perform remu: remu $dr,$sr. */
1030 SEM_FN_NAME (m32rx
,remu
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1032 #define FLD(f) abuf->fields.fmt_21_div.f
1033 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_21_div.f
1034 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1035 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1036 if (NESI (OPRND (sr
), 0)) {
1037 CPU (h_gr
[f_r1
]) = UMODSI (OPRND (dr
), OPRND (sr
));
1038 TRACE_RESULT (current_cpu
, "dr", 'x', OPRND (dr
));
1040 #if WITH_PROFILE_MODEL_P
1041 if (PROFILE_MODEL_P (current_cpu
))
1043 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
1044 m32rx_model_mark_set_h_gr (current_cpu
, abuf
);
1045 m32rx_model_profile_insn (current_cpu
, abuf
);
1053 /* Perform jc: jc $sr. */
1055 SEM_FN_NAME (m32rx
,jc
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1057 #define FLD(f) abuf->fields.fmt_22_jc.f
1058 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_22_jc.f
1059 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1060 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1062 if (OPRND (condbit
)) {
1063 BRANCH_NEW_PC (current_cpu
, new_pc
, SEM_BRANCH_VIA_ADDR (sem_arg
, ANDSI (OPRND (sr
), -4)));
1065 #if WITH_PROFILE_MODEL_P
1066 if (PROFILE_MODEL_P (current_cpu
))
1068 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
1069 m32rx_model_profile_cti_insn (current_cpu
, abuf
, taken_p
);
1077 /* Perform jnc: jnc $sr. */
1079 SEM_FN_NAME (m32rx
,jnc
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1081 #define FLD(f) abuf->fields.fmt_22_jc.f
1082 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_22_jc.f
1083 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1084 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1086 if (NOTBI (OPRND (condbit
))) {
1087 BRANCH_NEW_PC (current_cpu
, new_pc
, SEM_BRANCH_VIA_ADDR (sem_arg
, ANDSI (OPRND (sr
), -4)));
1089 #if WITH_PROFILE_MODEL_P
1090 if (PROFILE_MODEL_P (current_cpu
))
1092 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
1093 m32rx_model_profile_cti_insn (current_cpu
, abuf
, taken_p
);
1101 /* Perform jl: jl $sr. */
1103 SEM_FN_NAME (m32rx
,jl
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1105 #define FLD(f) abuf->fields.fmt_23_jl.f
1106 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_23_jl.f
1107 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1108 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1112 temp0
= ADDSI (ANDSI (OPRND (pc
), -4), 4);
1114 CPU (h_gr
[14]) = temp0
;
1115 TRACE_RESULT (current_cpu
, "h-gr", 'x', OPRND (h_gr
));
1116 BRANCH_NEW_PC (current_cpu
, new_pc
, SEM_BRANCH_VIA_ADDR (sem_arg
, temp1
));
1118 #if WITH_PROFILE_MODEL_P
1119 if (PROFILE_MODEL_P (current_cpu
))
1121 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
1122 m32rx_model_profile_cti_insn (current_cpu
, abuf
, taken_p
);
1130 /* Perform jmp: jmp $sr. */
1132 SEM_FN_NAME (m32rx
,jmp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1134 #define FLD(f) abuf->fields.fmt_24_jmp.f
1135 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_24_jmp.f
1136 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1137 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1139 BRANCH_NEW_PC (current_cpu
, new_pc
, SEM_BRANCH_VIA_ADDR (sem_arg
, OPRND (sr
)));
1140 #if WITH_PROFILE_MODEL_P
1141 if (PROFILE_MODEL_P (current_cpu
))
1143 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
1144 m32rx_model_profile_cti_insn (current_cpu
, abuf
, taken_p
);
1152 /* Perform ld: ld $dr,@$sr. */
1154 SEM_FN_NAME (m32rx
,ld
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1156 #define FLD(f) abuf->fields.fmt_25_ld.f
1157 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_25_ld.f
1158 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1159 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1160 CPU (h_gr
[f_r1
]) = OPRND (h_memory
);
1161 TRACE_RESULT (current_cpu
, "dr", 'x', OPRND (dr
));
1162 #if WITH_PROFILE_MODEL_P
1163 if (PROFILE_MODEL_P (current_cpu
))
1165 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
1166 m32rx_model_mark_set_h_gr (current_cpu
, abuf
);
1167 m32rx_model_profile_insn (current_cpu
, abuf
);
1175 /* Perform ld-d: ld $dr,@($slo16,$sr). */
1177 SEM_FN_NAME (m32rx
,ld_d
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1179 #define FLD(f) abuf->fields.fmt_26_ld_d.f
1180 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_26_ld_d.f
1181 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1182 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1183 CPU (h_gr
[f_r1
]) = OPRND (h_memory
);
1184 TRACE_RESULT (current_cpu
, "dr", 'x', OPRND (dr
));
1185 #if WITH_PROFILE_MODEL_P
1186 if (PROFILE_MODEL_P (current_cpu
))
1188 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
1189 m32rx_model_mark_set_h_gr (current_cpu
, abuf
);
1190 m32rx_model_profile_insn (current_cpu
, abuf
);
1198 /* Perform ldb: ldb $dr,@$sr. */
1200 SEM_FN_NAME (m32rx
,ldb
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1202 #define FLD(f) abuf->fields.fmt_27_ldb.f
1203 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_27_ldb.f
1204 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1205 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1206 CPU (h_gr
[f_r1
]) = EXTQISI (OPRND (h_memory
));
1207 TRACE_RESULT (current_cpu
, "dr", 'x', OPRND (dr
));
1208 #if WITH_PROFILE_MODEL_P
1209 if (PROFILE_MODEL_P (current_cpu
))
1211 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
1212 m32rx_model_mark_set_h_gr (current_cpu
, abuf
);
1213 m32rx_model_profile_insn (current_cpu
, abuf
);
1221 /* Perform ldb-d: ldb $dr,@($slo16,$sr). */
1223 SEM_FN_NAME (m32rx
,ldb_d
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1225 #define FLD(f) abuf->fields.fmt_28_ldb_d.f
1226 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_28_ldb_d.f
1227 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1228 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1229 CPU (h_gr
[f_r1
]) = EXTQISI (OPRND (h_memory
));
1230 TRACE_RESULT (current_cpu
, "dr", 'x', OPRND (dr
));
1231 #if WITH_PROFILE_MODEL_P
1232 if (PROFILE_MODEL_P (current_cpu
))
1234 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
1235 m32rx_model_mark_set_h_gr (current_cpu
, abuf
);
1236 m32rx_model_profile_insn (current_cpu
, abuf
);
1244 /* Perform ldh: ldh $dr,@$sr. */
1246 SEM_FN_NAME (m32rx
,ldh
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1248 #define FLD(f) abuf->fields.fmt_29_ldh.f
1249 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_29_ldh.f
1250 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1251 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1252 CPU (h_gr
[f_r1
]) = EXTHISI (OPRND (h_memory
));
1253 TRACE_RESULT (current_cpu
, "dr", 'x', OPRND (dr
));
1254 #if WITH_PROFILE_MODEL_P
1255 if (PROFILE_MODEL_P (current_cpu
))
1257 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
1258 m32rx_model_mark_set_h_gr (current_cpu
, abuf
);
1259 m32rx_model_profile_insn (current_cpu
, abuf
);
1267 /* Perform ldh-d: ldh $dr,@($slo16,$sr). */
1269 SEM_FN_NAME (m32rx
,ldh_d
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1271 #define FLD(f) abuf->fields.fmt_30_ldh_d.f
1272 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_30_ldh_d.f
1273 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1274 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1275 CPU (h_gr
[f_r1
]) = EXTHISI (OPRND (h_memory
));
1276 TRACE_RESULT (current_cpu
, "dr", 'x', OPRND (dr
));
1277 #if WITH_PROFILE_MODEL_P
1278 if (PROFILE_MODEL_P (current_cpu
))
1280 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
1281 m32rx_model_mark_set_h_gr (current_cpu
, abuf
);
1282 m32rx_model_profile_insn (current_cpu
, abuf
);
1290 /* Perform ldub: ldub $dr,@$sr. */
1292 SEM_FN_NAME (m32rx
,ldub
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1294 #define FLD(f) abuf->fields.fmt_27_ldb.f
1295 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_27_ldb.f
1296 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1297 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1298 CPU (h_gr
[f_r1
]) = ZEXTQISI (OPRND (h_memory
));
1299 TRACE_RESULT (current_cpu
, "dr", 'x', OPRND (dr
));
1300 #if WITH_PROFILE_MODEL_P
1301 if (PROFILE_MODEL_P (current_cpu
))
1303 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
1304 m32rx_model_mark_set_h_gr (current_cpu
, abuf
);
1305 m32rx_model_profile_insn (current_cpu
, abuf
);
1313 /* Perform ldub-d: ldub $dr,@($slo16,$sr). */
1315 SEM_FN_NAME (m32rx
,ldub_d
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1317 #define FLD(f) abuf->fields.fmt_28_ldb_d.f
1318 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_28_ldb_d.f
1319 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1320 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1321 CPU (h_gr
[f_r1
]) = ZEXTQISI (OPRND (h_memory
));
1322 TRACE_RESULT (current_cpu
, "dr", 'x', OPRND (dr
));
1323 #if WITH_PROFILE_MODEL_P
1324 if (PROFILE_MODEL_P (current_cpu
))
1326 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
1327 m32rx_model_mark_set_h_gr (current_cpu
, abuf
);
1328 m32rx_model_profile_insn (current_cpu
, abuf
);
1336 /* Perform lduh: lduh $dr,@$sr. */
1338 SEM_FN_NAME (m32rx
,lduh
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1340 #define FLD(f) abuf->fields.fmt_29_ldh.f
1341 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_29_ldh.f
1342 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1343 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1344 CPU (h_gr
[f_r1
]) = ZEXTHISI (OPRND (h_memory
));
1345 TRACE_RESULT (current_cpu
, "dr", 'x', OPRND (dr
));
1346 #if WITH_PROFILE_MODEL_P
1347 if (PROFILE_MODEL_P (current_cpu
))
1349 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
1350 m32rx_model_mark_set_h_gr (current_cpu
, abuf
);
1351 m32rx_model_profile_insn (current_cpu
, abuf
);
1359 /* Perform lduh-d: lduh $dr,@($slo16,$sr). */
1361 SEM_FN_NAME (m32rx
,lduh_d
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1363 #define FLD(f) abuf->fields.fmt_30_ldh_d.f
1364 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_30_ldh_d.f
1365 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1366 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1367 CPU (h_gr
[f_r1
]) = ZEXTHISI (OPRND (h_memory
));
1368 TRACE_RESULT (current_cpu
, "dr", 'x', OPRND (dr
));
1369 #if WITH_PROFILE_MODEL_P
1370 if (PROFILE_MODEL_P (current_cpu
))
1372 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
1373 m32rx_model_mark_set_h_gr (current_cpu
, abuf
);
1374 m32rx_model_profile_insn (current_cpu
, abuf
);
1382 /* Perform ld-plus: ld $dr,@$sr+. */
1384 SEM_FN_NAME (m32rx
,ld_plus
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1386 #define FLD(f) abuf->fields.fmt_25_ld.f
1387 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_25_ld.f
1388 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1389 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1392 temp0
= OPRND (h_memory
);
1393 temp1
= ADDSI (OPRND (sr
), 4);
1394 CPU (h_gr
[f_r1
]) = temp0
;
1395 TRACE_RESULT (current_cpu
, "dr", 'x', OPRND (dr
));
1396 CPU (h_gr
[f_r2
]) = temp1
;
1397 TRACE_RESULT (current_cpu
, "sr", 'x', OPRND (sr
));
1399 #if WITH_PROFILE_MODEL_P
1400 if (PROFILE_MODEL_P (current_cpu
))
1402 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
1403 m32rx_model_mark_set_h_gr (current_cpu
, abuf
);
1404 m32rx_model_profile_insn (current_cpu
, abuf
);
1412 /* Perform ld24: ld24 $dr,#$uimm24. */
1414 SEM_FN_NAME (m32rx
,ld24
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1416 #define FLD(f) abuf->fields.fmt_31_ld24.f
1417 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_31_ld24.f
1418 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1419 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1420 CPU (h_gr
[f_r1
]) = OPRND (uimm24
);
1421 TRACE_RESULT (current_cpu
, "dr", 'x', OPRND (dr
));
1422 #if WITH_PROFILE_MODEL_P
1423 if (PROFILE_MODEL_P (current_cpu
))
1425 m32rx_model_mark_set_h_gr (current_cpu
, abuf
);
1426 m32rx_model_profile_insn (current_cpu
, abuf
);
1434 /* Perform ldi8: ldi $dr,#$simm8. */
1436 SEM_FN_NAME (m32rx
,ldi8
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1438 #define FLD(f) abuf->fields.fmt_32_ldi8.f
1439 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_32_ldi8.f
1440 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1441 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1442 CPU (h_gr
[f_r1
]) = OPRND (simm8
);
1443 TRACE_RESULT (current_cpu
, "dr", 'x', OPRND (dr
));
1444 #if WITH_PROFILE_MODEL_P
1445 if (PROFILE_MODEL_P (current_cpu
))
1447 m32rx_model_mark_set_h_gr (current_cpu
, abuf
);
1448 m32rx_model_profile_insn (current_cpu
, abuf
);
1456 /* Perform ldi16: ldi $dr,$slo16. */
1458 SEM_FN_NAME (m32rx
,ldi16
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1460 #define FLD(f) abuf->fields.fmt_33_ldi16.f
1461 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_33_ldi16.f
1462 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1463 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1464 CPU (h_gr
[f_r1
]) = OPRND (slo16
);
1465 TRACE_RESULT (current_cpu
, "dr", 'x', OPRND (dr
));
1466 #if WITH_PROFILE_MODEL_P
1467 if (PROFILE_MODEL_P (current_cpu
))
1469 m32rx_model_mark_set_h_gr (current_cpu
, abuf
);
1470 m32rx_model_profile_insn (current_cpu
, abuf
);
1478 /* Perform lock: lock $dr,@$sr. */
1480 SEM_FN_NAME (m32rx
,lock
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1482 #define FLD(f) abuf->fields.fmt_0_add.f
1483 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_0_add.f
1484 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1485 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1486 do_lock (current_cpu
, OPRND (dr
), OPRND (sr
));
1487 #if WITH_PROFILE_MODEL_P
1488 if (PROFILE_MODEL_P (current_cpu
))
1490 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
1491 m32rx_model_mark_set_h_gr (current_cpu
, abuf
);
1492 m32rx_model_profile_insn (current_cpu
, abuf
);
1500 /* Perform machi: machi $src1,$src2. */
1502 SEM_FN_NAME (m32rx
,machi
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1504 #define FLD(f) abuf->fields.fmt_34_machi.f
1505 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_34_machi.f
1506 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1507 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1508 CPU (h_accum
) = SRADI (SLLDI (ADDDI (OPRND (accum
), MULDI (EXTSIDI (ANDSI (OPRND (src1
), 0xffff0000)), EXTHIDI (TRUNCSIHI (SRASI (OPRND (src2
), 16))))), 8), 8);
1509 TRACE_RESULT (current_cpu
, "accum", 'D', OPRND (accum
));
1510 #if WITH_PROFILE_MODEL_P
1511 if (PROFILE_MODEL_P (current_cpu
))
1513 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
1514 m32rx_model_profile_insn (current_cpu
, abuf
);
1522 /* Perform machi-a: machi $src1,$src2,$acc. */
1524 SEM_FN_NAME (m32rx
,machi_a
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1526 #define FLD(f) abuf->fields.fmt_35_machi_a.f
1527 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_35_machi_a.f
1528 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1529 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1530 m32rx_h_accums_set (current_cpu
, f_acc
, SRADI (SLLDI (ADDDI (OPRND (acc
), MULDI (EXTSIDI (ANDSI (OPRND (src1
), 0xffff0000)), EXTHIDI (TRUNCSIHI (SRASI (OPRND (src2
), 16))))), 8), 8));
1531 TRACE_RESULT (current_cpu
, "acc", 'D', OPRND (acc
));
1532 #if WITH_PROFILE_MODEL_P
1533 if (PROFILE_MODEL_P (current_cpu
))
1535 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
1536 m32rx_model_profile_insn (current_cpu
, abuf
);
1544 /* Perform maclo: maclo $src1,$src2. */
1546 SEM_FN_NAME (m32rx
,maclo
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1548 #define FLD(f) abuf->fields.fmt_34_machi.f
1549 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_34_machi.f
1550 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1551 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1552 CPU (h_accum
) = SRADI (SLLDI (ADDDI (OPRND (accum
), MULDI (EXTSIDI (SLLSI (OPRND (src1
), 16)), EXTHIDI (TRUNCSIHI (OPRND (src2
))))), 8), 8);
1553 TRACE_RESULT (current_cpu
, "accum", 'D', OPRND (accum
));
1554 #if WITH_PROFILE_MODEL_P
1555 if (PROFILE_MODEL_P (current_cpu
))
1557 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
1558 m32rx_model_profile_insn (current_cpu
, abuf
);
1566 /* Perform maclo-a: maclo $src1,$src2,$acc. */
1568 SEM_FN_NAME (m32rx
,maclo_a
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1570 #define FLD(f) abuf->fields.fmt_35_machi_a.f
1571 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_35_machi_a.f
1572 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1573 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1574 m32rx_h_accums_set (current_cpu
, f_acc
, SRADI (SLLDI (ADDDI (OPRND (acc
), MULDI (EXTSIDI (SLLSI (OPRND (src1
), 16)), EXTHIDI (TRUNCSIHI (OPRND (src2
))))), 8), 8));
1575 TRACE_RESULT (current_cpu
, "acc", 'D', OPRND (acc
));
1576 #if WITH_PROFILE_MODEL_P
1577 if (PROFILE_MODEL_P (current_cpu
))
1579 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
1580 m32rx_model_profile_insn (current_cpu
, abuf
);
1588 /* Perform macwhi: macwhi $src1,$src2. */
1590 SEM_FN_NAME (m32rx
,macwhi
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1592 #define FLD(f) abuf->fields.fmt_34_machi.f
1593 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_34_machi.f
1594 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1595 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1596 CPU (h_accum
) = SRADI (SLLDI (ADDDI (OPRND (accum
), MULDI (EXTSIDI (OPRND (src1
)), EXTHIDI (TRUNCSIHI (SRASI (OPRND (src2
), 16))))), 8), 8);
1597 TRACE_RESULT (current_cpu
, "accum", 'D', OPRND (accum
));
1598 #if WITH_PROFILE_MODEL_P
1599 if (PROFILE_MODEL_P (current_cpu
))
1601 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
1602 m32rx_model_profile_insn (current_cpu
, abuf
);
1610 /* Perform macwhi-a: macwhi $src1,$src2,$acc. */
1612 SEM_FN_NAME (m32rx
,macwhi_a
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1614 #define FLD(f) abuf->fields.fmt_35_machi_a.f
1615 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_35_machi_a.f
1616 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1617 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1618 m32rx_h_accums_set (current_cpu
, f_acc
, SRADI (SLLDI (ADDDI (OPRND (acc
), MULDI (EXTSIDI (OPRND (src1
)), EXTHIDI (TRUNCSIHI (SRASI (OPRND (src2
), 16))))), 8), 8));
1619 TRACE_RESULT (current_cpu
, "acc", 'D', OPRND (acc
));
1620 #if WITH_PROFILE_MODEL_P
1621 if (PROFILE_MODEL_P (current_cpu
))
1623 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
1624 m32rx_model_profile_insn (current_cpu
, abuf
);
1632 /* Perform macwlo: macwlo $src1,$src2. */
1634 SEM_FN_NAME (m32rx
,macwlo
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1636 #define FLD(f) abuf->fields.fmt_34_machi.f
1637 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_34_machi.f
1638 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1639 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1640 CPU (h_accum
) = SRADI (SLLDI (ADDDI (OPRND (accum
), MULDI (EXTSIDI (OPRND (src1
)), EXTHIDI (TRUNCSIHI (OPRND (src2
))))), 8), 8);
1641 TRACE_RESULT (current_cpu
, "accum", 'D', OPRND (accum
));
1642 #if WITH_PROFILE_MODEL_P
1643 if (PROFILE_MODEL_P (current_cpu
))
1645 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
1646 m32rx_model_profile_insn (current_cpu
, abuf
);
1654 /* Perform macwlo-a: macwlo $src1,$src2,$acc. */
1656 SEM_FN_NAME (m32rx
,macwlo_a
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1658 #define FLD(f) abuf->fields.fmt_35_machi_a.f
1659 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_35_machi_a.f
1660 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1661 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1662 m32rx_h_accums_set (current_cpu
, f_acc
, SRADI (SLLDI (ADDDI (OPRND (acc
), MULDI (EXTSIDI (OPRND (src1
)), EXTHIDI (TRUNCSIHI (OPRND (src2
))))), 8), 8));
1663 TRACE_RESULT (current_cpu
, "acc", 'D', OPRND (acc
));
1664 #if WITH_PROFILE_MODEL_P
1665 if (PROFILE_MODEL_P (current_cpu
))
1667 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
1668 m32rx_model_profile_insn (current_cpu
, abuf
);
1676 /* Perform mul: mul $dr,$sr. */
1678 SEM_FN_NAME (m32rx
,mul
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1680 #define FLD(f) abuf->fields.fmt_0_add.f
1681 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_0_add.f
1682 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1683 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1684 CPU (h_gr
[f_r1
]) = MULSI (OPRND (dr
), OPRND (sr
));
1685 TRACE_RESULT (current_cpu
, "dr", 'x', OPRND (dr
));
1686 #if WITH_PROFILE_MODEL_P
1687 if (PROFILE_MODEL_P (current_cpu
))
1689 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
1690 m32rx_model_mark_set_h_gr (current_cpu
, abuf
);
1691 m32rx_model_profile_insn (current_cpu
, abuf
);
1699 /* Perform mulhi: mulhi $src1,$src2. */
1701 SEM_FN_NAME (m32rx
,mulhi
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1703 #define FLD(f) abuf->fields.fmt_17_cmp.f
1704 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_17_cmp.f
1705 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1706 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1707 CPU (h_accum
) = SRADI (SLLDI (MULDI (EXTSIDI (ANDSI (OPRND (src1
), 0xffff0000)), EXTHIDI (TRUNCSIHI (SRASI (OPRND (src2
), 16)))), 16), 16);
1708 TRACE_RESULT (current_cpu
, "accum", 'D', OPRND (accum
));
1709 #if WITH_PROFILE_MODEL_P
1710 if (PROFILE_MODEL_P (current_cpu
))
1712 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
1713 m32rx_model_profile_insn (current_cpu
, abuf
);
1721 /* Perform mulhi-a: mulhi $src1,$src2,$acc. */
1723 SEM_FN_NAME (m32rx
,mulhi_a
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1725 #define FLD(f) abuf->fields.fmt_36_mulhi_a.f
1726 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_36_mulhi_a.f
1727 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1728 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1729 m32rx_h_accums_set (current_cpu
, f_acc
, SRADI (SLLDI (MULDI (EXTSIDI (ANDSI (OPRND (src1
), 0xffff0000)), EXTHIDI (TRUNCSIHI (SRASI (OPRND (src2
), 16)))), 16), 16));
1730 TRACE_RESULT (current_cpu
, "acc", 'D', OPRND (acc
));
1731 #if WITH_PROFILE_MODEL_P
1732 if (PROFILE_MODEL_P (current_cpu
))
1734 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
1735 m32rx_model_profile_insn (current_cpu
, abuf
);
1743 /* Perform mullo: mullo $src1,$src2. */
1745 SEM_FN_NAME (m32rx
,mullo
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1747 #define FLD(f) abuf->fields.fmt_17_cmp.f
1748 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_17_cmp.f
1749 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1750 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1751 CPU (h_accum
) = SRADI (SLLDI (MULDI (EXTSIDI (SLLSI (OPRND (src1
), 16)), EXTHIDI (TRUNCSIHI (OPRND (src2
)))), 16), 16);
1752 TRACE_RESULT (current_cpu
, "accum", 'D', OPRND (accum
));
1753 #if WITH_PROFILE_MODEL_P
1754 if (PROFILE_MODEL_P (current_cpu
))
1756 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
1757 m32rx_model_profile_insn (current_cpu
, abuf
);
1765 /* Perform mullo-a: mullo $src1,$src2,$acc. */
1767 SEM_FN_NAME (m32rx
,mullo_a
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1769 #define FLD(f) abuf->fields.fmt_36_mulhi_a.f
1770 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_36_mulhi_a.f
1771 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1772 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1773 m32rx_h_accums_set (current_cpu
, f_acc
, SRADI (SLLDI (MULDI (EXTSIDI (SLLSI (OPRND (src1
), 16)), EXTHIDI (TRUNCSIHI (OPRND (src2
)))), 16), 16));
1774 TRACE_RESULT (current_cpu
, "acc", 'D', OPRND (acc
));
1775 #if WITH_PROFILE_MODEL_P
1776 if (PROFILE_MODEL_P (current_cpu
))
1778 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
1779 m32rx_model_profile_insn (current_cpu
, abuf
);
1787 /* Perform mulwhi: mulwhi $src1,$src2. */
1789 SEM_FN_NAME (m32rx
,mulwhi
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1791 #define FLD(f) abuf->fields.fmt_17_cmp.f
1792 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_17_cmp.f
1793 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1794 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1795 CPU (h_accum
) = SRADI (SLLDI (MULDI (EXTSIDI (OPRND (src1
)), EXTHIDI (TRUNCSIHI (SRASI (OPRND (src2
), 16)))), 8), 8);
1796 TRACE_RESULT (current_cpu
, "accum", 'D', OPRND (accum
));
1797 #if WITH_PROFILE_MODEL_P
1798 if (PROFILE_MODEL_P (current_cpu
))
1800 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
1801 m32rx_model_profile_insn (current_cpu
, abuf
);
1809 /* Perform mulwhi-a: mulwhi $src1,$src2,$acc. */
1811 SEM_FN_NAME (m32rx
,mulwhi_a
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1813 #define FLD(f) abuf->fields.fmt_36_mulhi_a.f
1814 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_36_mulhi_a.f
1815 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1816 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1817 m32rx_h_accums_set (current_cpu
, f_acc
, SRADI (SLLDI (MULDI (EXTSIDI (OPRND (src1
)), EXTHIDI (TRUNCSIHI (SRASI (OPRND (src2
), 16)))), 8), 8));
1818 TRACE_RESULT (current_cpu
, "acc", 'D', OPRND (acc
));
1819 #if WITH_PROFILE_MODEL_P
1820 if (PROFILE_MODEL_P (current_cpu
))
1822 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
1823 m32rx_model_profile_insn (current_cpu
, abuf
);
1831 /* Perform mulwlo: mulwlo $src1,$src2. */
1833 SEM_FN_NAME (m32rx
,mulwlo
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1835 #define FLD(f) abuf->fields.fmt_17_cmp.f
1836 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_17_cmp.f
1837 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1838 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1839 CPU (h_accum
) = SRADI (SLLDI (MULDI (EXTSIDI (OPRND (src1
)), EXTHIDI (TRUNCSIHI (OPRND (src2
)))), 8), 8);
1840 TRACE_RESULT (current_cpu
, "accum", 'D', OPRND (accum
));
1841 #if WITH_PROFILE_MODEL_P
1842 if (PROFILE_MODEL_P (current_cpu
))
1844 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
1845 m32rx_model_profile_insn (current_cpu
, abuf
);
1853 /* Perform mulwlo-a: mulwlo $src1,$src2,$acc. */
1855 SEM_FN_NAME (m32rx
,mulwlo_a
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1857 #define FLD(f) abuf->fields.fmt_36_mulhi_a.f
1858 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_36_mulhi_a.f
1859 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1860 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1861 m32rx_h_accums_set (current_cpu
, f_acc
, SRADI (SLLDI (MULDI (EXTSIDI (OPRND (src1
)), EXTHIDI (TRUNCSIHI (OPRND (src2
)))), 8), 8));
1862 TRACE_RESULT (current_cpu
, "acc", 'D', OPRND (acc
));
1863 #if WITH_PROFILE_MODEL_P
1864 if (PROFILE_MODEL_P (current_cpu
))
1866 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
1867 m32rx_model_profile_insn (current_cpu
, abuf
);
1875 /* Perform mv: mv $dr,$sr. */
1877 SEM_FN_NAME (m32rx
,mv
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1879 #define FLD(f) abuf->fields.fmt_37_mv.f
1880 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_37_mv.f
1881 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1882 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1883 CPU (h_gr
[f_r1
]) = OPRND (sr
);
1884 TRACE_RESULT (current_cpu
, "dr", 'x', OPRND (dr
));
1885 #if WITH_PROFILE_MODEL_P
1886 if (PROFILE_MODEL_P (current_cpu
))
1888 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
1889 m32rx_model_mark_set_h_gr (current_cpu
, abuf
);
1890 m32rx_model_profile_insn (current_cpu
, abuf
);
1898 /* Perform mvfachi: mvfachi $dr. */
1900 SEM_FN_NAME (m32rx
,mvfachi
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1902 #define FLD(f) abuf->fields.fmt_38_mvfachi.f
1903 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_38_mvfachi.f
1904 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1905 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1906 CPU (h_gr
[f_r1
]) = TRUNCDISI (SRADI (OPRND (accum
), 32));
1907 TRACE_RESULT (current_cpu
, "dr", 'x', OPRND (dr
));
1908 #if WITH_PROFILE_MODEL_P
1909 if (PROFILE_MODEL_P (current_cpu
))
1911 m32rx_model_mark_set_h_gr (current_cpu
, abuf
);
1912 m32rx_model_profile_insn (current_cpu
, abuf
);
1920 /* Perform mvfachi-a: mvfachi $dr,$accs. */
1922 SEM_FN_NAME (m32rx
,mvfachi_a
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1924 #define FLD(f) abuf->fields.fmt_39_mvfachi_a.f
1925 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_39_mvfachi_a.f
1926 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1927 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1928 CPU (h_gr
[f_r1
]) = TRUNCDISI (SRADI (OPRND (accs
), 32));
1929 TRACE_RESULT (current_cpu
, "dr", 'x', OPRND (dr
));
1930 #if WITH_PROFILE_MODEL_P
1931 if (PROFILE_MODEL_P (current_cpu
))
1933 m32rx_model_mark_set_h_gr (current_cpu
, abuf
);
1934 m32rx_model_profile_insn (current_cpu
, abuf
);
1942 /* Perform mvfaclo: mvfaclo $dr. */
1944 SEM_FN_NAME (m32rx
,mvfaclo
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1946 #define FLD(f) abuf->fields.fmt_38_mvfachi.f
1947 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_38_mvfachi.f
1948 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1949 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1950 CPU (h_gr
[f_r1
]) = TRUNCDISI (OPRND (accum
));
1951 TRACE_RESULT (current_cpu
, "dr", 'x', OPRND (dr
));
1952 #if WITH_PROFILE_MODEL_P
1953 if (PROFILE_MODEL_P (current_cpu
))
1955 m32rx_model_mark_set_h_gr (current_cpu
, abuf
);
1956 m32rx_model_profile_insn (current_cpu
, abuf
);
1964 /* Perform mvfaclo-a: mvfaclo $dr,$accs. */
1966 SEM_FN_NAME (m32rx
,mvfaclo_a
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1968 #define FLD(f) abuf->fields.fmt_39_mvfachi_a.f
1969 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_39_mvfachi_a.f
1970 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1971 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1972 CPU (h_gr
[f_r1
]) = TRUNCDISI (OPRND (accs
));
1973 TRACE_RESULT (current_cpu
, "dr", 'x', OPRND (dr
));
1974 #if WITH_PROFILE_MODEL_P
1975 if (PROFILE_MODEL_P (current_cpu
))
1977 m32rx_model_mark_set_h_gr (current_cpu
, abuf
);
1978 m32rx_model_profile_insn (current_cpu
, abuf
);
1986 /* Perform mvfacmi: mvfacmi $dr. */
1988 SEM_FN_NAME (m32rx
,mvfacmi
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1990 #define FLD(f) abuf->fields.fmt_38_mvfachi.f
1991 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_38_mvfachi.f
1992 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1993 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
1994 CPU (h_gr
[f_r1
]) = TRUNCDISI (SRADI (OPRND (accum
), 16));
1995 TRACE_RESULT (current_cpu
, "dr", 'x', OPRND (dr
));
1996 #if WITH_PROFILE_MODEL_P
1997 if (PROFILE_MODEL_P (current_cpu
))
1999 m32rx_model_mark_set_h_gr (current_cpu
, abuf
);
2000 m32rx_model_profile_insn (current_cpu
, abuf
);
2008 /* Perform mvfacmi-a: mvfacmi $dr,$accs. */
2010 SEM_FN_NAME (m32rx
,mvfacmi_a
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2012 #define FLD(f) abuf->fields.fmt_39_mvfachi_a.f
2013 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_39_mvfachi_a.f
2014 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2015 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
2016 CPU (h_gr
[f_r1
]) = TRUNCDISI (SRADI (OPRND (accs
), 16));
2017 TRACE_RESULT (current_cpu
, "dr", 'x', OPRND (dr
));
2018 #if WITH_PROFILE_MODEL_P
2019 if (PROFILE_MODEL_P (current_cpu
))
2021 m32rx_model_mark_set_h_gr (current_cpu
, abuf
);
2022 m32rx_model_profile_insn (current_cpu
, abuf
);
2030 /* Perform mvfc: mvfc $dr,$scr. */
2032 SEM_FN_NAME (m32rx
,mvfc
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2034 #define FLD(f) abuf->fields.fmt_40_mvfc.f
2035 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_40_mvfc.f
2036 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2037 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
2038 CPU (h_gr
[f_r1
]) = OPRND (scr
);
2039 TRACE_RESULT (current_cpu
, "dr", 'x', OPRND (dr
));
2040 #if WITH_PROFILE_MODEL_P
2041 if (PROFILE_MODEL_P (current_cpu
))
2043 m32rx_model_mark_set_h_gr (current_cpu
, abuf
);
2044 m32rx_model_profile_insn (current_cpu
, abuf
);
2052 /* Perform mvtachi: mvtachi $src1. */
2054 SEM_FN_NAME (m32rx
,mvtachi
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2056 #define FLD(f) abuf->fields.fmt_41_mvtachi.f
2057 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_41_mvtachi.f
2058 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2059 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
2060 CPU (h_accum
) = ORDI (ANDDI (OPRND (accum
), MAKEDI (0, 0xffffffff)), SLLDI (EXTSIDI (OPRND (src1
)), 32));
2061 TRACE_RESULT (current_cpu
, "accum", 'D', OPRND (accum
));
2062 #if WITH_PROFILE_MODEL_P
2063 if (PROFILE_MODEL_P (current_cpu
))
2065 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
2066 m32rx_model_profile_insn (current_cpu
, abuf
);
2074 /* Perform mvtachi-a: mvtachi $src1,$accs. */
2076 SEM_FN_NAME (m32rx
,mvtachi_a
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2078 #define FLD(f) abuf->fields.fmt_42_mvtachi_a.f
2079 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_42_mvtachi_a.f
2080 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2081 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
2082 m32rx_h_accums_set (current_cpu
, f_accs
, ORDI (ANDDI (OPRND (accs
), MAKEDI (0, 0xffffffff)), SLLDI (EXTSIDI (OPRND (src1
)), 32)));
2083 TRACE_RESULT (current_cpu
, "accs", 'D', OPRND (accs
));
2084 #if WITH_PROFILE_MODEL_P
2085 if (PROFILE_MODEL_P (current_cpu
))
2087 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
2088 m32rx_model_profile_insn (current_cpu
, abuf
);
2096 /* Perform mvtaclo: mvtaclo $src1. */
2098 SEM_FN_NAME (m32rx
,mvtaclo
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2100 #define FLD(f) abuf->fields.fmt_41_mvtachi.f
2101 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_41_mvtachi.f
2102 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2103 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
2104 CPU (h_accum
) = ORDI (ANDDI (OPRND (accum
), MAKEDI (0xffffffff, 0)), EXTSIDI (OPRND (src1
)));
2105 TRACE_RESULT (current_cpu
, "accum", 'D', OPRND (accum
));
2106 #if WITH_PROFILE_MODEL_P
2107 if (PROFILE_MODEL_P (current_cpu
))
2109 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
2110 m32rx_model_profile_insn (current_cpu
, abuf
);
2118 /* Perform mvtaclo-a: mvtaclo $src1,$accs. */
2120 SEM_FN_NAME (m32rx
,mvtaclo_a
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2122 #define FLD(f) abuf->fields.fmt_42_mvtachi_a.f
2123 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_42_mvtachi_a.f
2124 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2125 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
2126 m32rx_h_accums_set (current_cpu
, f_accs
, ORDI (ANDDI (OPRND (accs
), MAKEDI (0xffffffff, 0)), EXTSIDI (OPRND (src1
))));
2127 TRACE_RESULT (current_cpu
, "accs", 'D', OPRND (accs
));
2128 #if WITH_PROFILE_MODEL_P
2129 if (PROFILE_MODEL_P (current_cpu
))
2131 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
2132 m32rx_model_profile_insn (current_cpu
, abuf
);
2140 /* Perform mvtc: mvtc $sr,$dcr. */
2142 SEM_FN_NAME (m32rx
,mvtc
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2144 #define FLD(f) abuf->fields.fmt_43_mvtc.f
2145 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_43_mvtc.f
2146 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2147 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
2148 m32rx_h_cr_set (current_cpu
, f_r1
, OPRND (sr
));
2149 TRACE_RESULT (current_cpu
, "dcr", 'x', OPRND (dcr
));
2150 #if WITH_PROFILE_MODEL_P
2151 if (PROFILE_MODEL_P (current_cpu
))
2153 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
2154 m32rx_model_profile_insn (current_cpu
, abuf
);
2162 /* Perform neg: neg $dr,$sr. */
2164 SEM_FN_NAME (m32rx
,neg
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2166 #define FLD(f) abuf->fields.fmt_37_mv.f
2167 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_37_mv.f
2168 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2169 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
2170 CPU (h_gr
[f_r1
]) = NEGSI (OPRND (sr
));
2171 TRACE_RESULT (current_cpu
, "dr", 'x', OPRND (dr
));
2172 #if WITH_PROFILE_MODEL_P
2173 if (PROFILE_MODEL_P (current_cpu
))
2175 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
2176 m32rx_model_mark_set_h_gr (current_cpu
, abuf
);
2177 m32rx_model_profile_insn (current_cpu
, abuf
);
2185 /* Perform nop: nop. */
2187 SEM_FN_NAME (m32rx
,nop
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2189 #define FLD(f) abuf->fields.fmt_44_nop.f
2190 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_44_nop.f
2191 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2192 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
2193 PROFILE_COUNT_FILLNOPS (current_cpu
, abuf
->addr
);
2194 #if WITH_PROFILE_MODEL_P
2195 if (PROFILE_MODEL_P (current_cpu
))
2197 m32rx_model_profile_insn (current_cpu
, abuf
);
2205 /* Perform not: not $dr,$sr. */
2207 SEM_FN_NAME (m32rx
,not) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2209 #define FLD(f) abuf->fields.fmt_37_mv.f
2210 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_37_mv.f
2211 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2212 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
2213 CPU (h_gr
[f_r1
]) = INVSI (OPRND (sr
));
2214 TRACE_RESULT (current_cpu
, "dr", 'x', OPRND (dr
));
2215 #if WITH_PROFILE_MODEL_P
2216 if (PROFILE_MODEL_P (current_cpu
))
2218 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
2219 m32rx_model_mark_set_h_gr (current_cpu
, abuf
);
2220 m32rx_model_profile_insn (current_cpu
, abuf
);
2228 /* Perform rac: rac. */
2230 SEM_FN_NAME (m32rx
,rac
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2232 #define FLD(f) abuf->fields.fmt_45_rac.f
2233 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_45_rac.f
2234 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2235 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
2238 tmp_tmp1
= ANDDI (OPRND (accum
), MAKEDI (16777215, 0xffffffff));
2239 if (ANDIFSI (GEDI (tmp_tmp1
, MAKEDI (16383, 0xffff8000)), LEDI (tmp_tmp1
, MAKEDI (8388607, 0xffffffff)))) {
2240 tmp_tmp1
= MAKEDI (16383, 0xffff8000);
2242 if (ANDIFSI (GEDI (tmp_tmp1
, MAKEDI (8388608, 0)), LEDI (tmp_tmp1
, MAKEDI (16760832, 0)))) {
2243 tmp_tmp1
= MAKEDI (16760832, 0);
2245 tmp_tmp1
= ANDDI (ADDDI (OPRND (accum
), MAKEDI (0, 16384)), MAKEDI (16777215, 0xffff8000));
2248 tmp_tmp1
= SLLDI (tmp_tmp1
, 1);
2249 CPU (h_accum
) = SRADI (SLLDI (tmp_tmp1
, 7), 7);
2250 TRACE_RESULT (current_cpu
, "accum", 'D', OPRND (accum
));
2252 #if WITH_PROFILE_MODEL_P
2253 if (PROFILE_MODEL_P (current_cpu
))
2255 m32rx_model_profile_insn (current_cpu
, abuf
);
2263 /* Perform rac-a: rac $accs. */
2265 SEM_FN_NAME (m32rx
,rac_a
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2267 #define FLD(f) abuf->fields.fmt_46_rac_a.f
2268 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_46_rac_a.f
2269 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2270 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
2273 tmp_tmp1
= ANDDI (OPRND (accs
), MAKEDI (16777215, 0xffffffff));
2274 if (ANDIFSI (GEDI (tmp_tmp1
, MAKEDI (16383, 0xffff8000)), LEDI (tmp_tmp1
, MAKEDI (8388607, 0xffffffff)))) {
2275 tmp_tmp1
= MAKEDI (16383, 0xffff8000);
2277 if (ANDIFSI (GEDI (tmp_tmp1
, MAKEDI (8388608, 0)), LEDI (tmp_tmp1
, MAKEDI (16760832, 0)))) {
2278 tmp_tmp1
= MAKEDI (16760832, 0);
2280 tmp_tmp1
= ANDDI (ADDDI (OPRND (accs
), MAKEDI (0, 16384)), MAKEDI (16777215, 0xffff8000));
2283 tmp_tmp1
= SLLDI (tmp_tmp1
, 1);
2284 m32rx_h_accums_set (current_cpu
, f_accs
, SRADI (SLLDI (tmp_tmp1
, 7), 7));
2285 TRACE_RESULT (current_cpu
, "accs", 'D', OPRND (accs
));
2287 #if WITH_PROFILE_MODEL_P
2288 if (PROFILE_MODEL_P (current_cpu
))
2290 m32rx_model_profile_insn (current_cpu
, abuf
);
2298 /* Perform rach: rach. */
2300 SEM_FN_NAME (m32rx
,rach
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2302 #define FLD(f) abuf->fields.fmt_45_rac.f
2303 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_45_rac.f
2304 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2305 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
2308 tmp_tmp1
= ANDDI (OPRND (accum
), MAKEDI (16777215, 0xffffffff));
2309 if (ANDIFSI (GEDI (tmp_tmp1
, MAKEDI (16383, 0x80000000)), LEDI (tmp_tmp1
, MAKEDI (8388607, 0xffffffff)))) {
2310 tmp_tmp1
= MAKEDI (16383, 0x80000000);
2312 if (ANDIFSI (GEDI (tmp_tmp1
, MAKEDI (8388608, 0)), LEDI (tmp_tmp1
, MAKEDI (16760832, 0)))) {
2313 tmp_tmp1
= MAKEDI (16760832, 0);
2315 tmp_tmp1
= ANDDI (ADDDI (OPRND (accum
), MAKEDI (0, 1073741824)), MAKEDI (0xffffffff, 0x80000000));
2318 tmp_tmp1
= SLLDI (tmp_tmp1
, 1);
2319 CPU (h_accum
) = SRADI (SLLDI (tmp_tmp1
, 7), 7);
2320 TRACE_RESULT (current_cpu
, "accum", 'D', OPRND (accum
));
2322 #if WITH_PROFILE_MODEL_P
2323 if (PROFILE_MODEL_P (current_cpu
))
2325 m32rx_model_profile_insn (current_cpu
, abuf
);
2333 /* Perform rach-a: rach $accs. */
2335 SEM_FN_NAME (m32rx
,rach_a
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2337 #define FLD(f) abuf->fields.fmt_46_rac_a.f
2338 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_46_rac_a.f
2339 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2340 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
2343 tmp_tmp1
= ANDDI (OPRND (accs
), MAKEDI (16777215, 0xffffffff));
2344 if (ANDIFSI (GEDI (tmp_tmp1
, MAKEDI (16383, 0x80000000)), LEDI (tmp_tmp1
, MAKEDI (8388607, 0xffffffff)))) {
2345 tmp_tmp1
= MAKEDI (16383, 0x80000000);
2347 if (ANDIFSI (GEDI (tmp_tmp1
, MAKEDI (8388608, 0)), LEDI (tmp_tmp1
, MAKEDI (16760832, 0)))) {
2348 tmp_tmp1
= MAKEDI (16760832, 0);
2350 tmp_tmp1
= ANDDI (ADDDI (OPRND (accs
), MAKEDI (0, 1073741824)), MAKEDI (0xffffffff, 0x80000000));
2353 tmp_tmp1
= SLLDI (tmp_tmp1
, 1);
2354 m32rx_h_accums_set (current_cpu
, f_accs
, SRADI (SLLDI (tmp_tmp1
, 7), 7));
2355 TRACE_RESULT (current_cpu
, "accs", 'D', OPRND (accs
));
2357 #if WITH_PROFILE_MODEL_P
2358 if (PROFILE_MODEL_P (current_cpu
))
2360 m32rx_model_profile_insn (current_cpu
, abuf
);
2368 /* Perform rte: rte. */
2370 SEM_FN_NAME (m32rx
,rte
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2372 #define FLD(f) abuf->fields.fmt_44_nop.f
2373 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_44_nop.f
2374 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2375 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
2378 CPU (h_sm
) = OPRND (h_bsm
);
2379 TRACE_RESULT (current_cpu
, "h-sm", 'x', OPRND (h_sm
));
2380 CPU (h_ie
) = OPRND (h_bie
);
2381 TRACE_RESULT (current_cpu
, "h-ie", 'x', OPRND (h_ie
));
2382 CPU (h_cond
) = OPRND (h_bcond
);
2383 TRACE_RESULT (current_cpu
, "condbit", 'x', OPRND (condbit
));
2384 BRANCH_NEW_PC (current_cpu
, new_pc
, SEM_BRANCH_VIA_ADDR (sem_arg
, OPRND (h_bpc
)));
2385 TRACE_RESULT (current_cpu
, "pc", 'x', OPRND (pc
));
2387 #if WITH_PROFILE_MODEL_P
2388 if (PROFILE_MODEL_P (current_cpu
))
2390 m32rx_model_profile_cti_insn (current_cpu
, abuf
, taken_p
);
2398 /* Perform seth: seth $dr,$hi16. */
2400 SEM_FN_NAME (m32rx
,seth
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2402 #define FLD(f) abuf->fields.fmt_47_seth.f
2403 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_47_seth.f
2404 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2405 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
2406 CPU (h_gr
[f_r1
]) = SLLSI (OPRND (hi16
), 16);
2407 TRACE_RESULT (current_cpu
, "dr", 'x', OPRND (dr
));
2408 #if WITH_PROFILE_MODEL_P
2409 if (PROFILE_MODEL_P (current_cpu
))
2411 m32rx_model_mark_set_h_gr (current_cpu
, abuf
);
2412 m32rx_model_profile_insn (current_cpu
, abuf
);
2420 /* Perform sll: sll $dr,$sr. */
2422 SEM_FN_NAME (m32rx
,sll
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2424 #define FLD(f) abuf->fields.fmt_0_add.f
2425 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_0_add.f
2426 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2427 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
2428 CPU (h_gr
[f_r1
]) = SLLSI (OPRND (dr
), ANDSI (OPRND (sr
), 31));
2429 TRACE_RESULT (current_cpu
, "dr", 'x', OPRND (dr
));
2430 #if WITH_PROFILE_MODEL_P
2431 if (PROFILE_MODEL_P (current_cpu
))
2433 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
2434 m32rx_model_mark_set_h_gr (current_cpu
, abuf
);
2435 m32rx_model_profile_insn (current_cpu
, abuf
);
2443 /* Perform sll3: sll3 $dr,$sr,#$simm16. */
2445 SEM_FN_NAME (m32rx
,sll3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2447 #define FLD(f) abuf->fields.fmt_5_addv3.f
2448 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_5_addv3.f
2449 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2450 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
2451 CPU (h_gr
[f_r1
]) = SLLSI (OPRND (sr
), ANDSI (OPRND (simm16
), 31));
2452 TRACE_RESULT (current_cpu
, "dr", 'x', OPRND (dr
));
2453 #if WITH_PROFILE_MODEL_P
2454 if (PROFILE_MODEL_P (current_cpu
))
2456 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
2457 m32rx_model_mark_set_h_gr (current_cpu
, abuf
);
2458 m32rx_model_profile_insn (current_cpu
, abuf
);
2466 /* Perform slli: slli $dr,#$uimm5. */
2468 SEM_FN_NAME (m32rx
,slli
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2470 #define FLD(f) abuf->fields.fmt_48_slli.f
2471 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_48_slli.f
2472 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2473 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
2474 CPU (h_gr
[f_r1
]) = SLLSI (OPRND (dr
), OPRND (uimm5
));
2475 TRACE_RESULT (current_cpu
, "dr", 'x', OPRND (dr
));
2476 #if WITH_PROFILE_MODEL_P
2477 if (PROFILE_MODEL_P (current_cpu
))
2479 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
2480 m32rx_model_mark_set_h_gr (current_cpu
, abuf
);
2481 m32rx_model_profile_insn (current_cpu
, abuf
);
2489 /* Perform sra: sra $dr,$sr. */
2491 SEM_FN_NAME (m32rx
,sra
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2493 #define FLD(f) abuf->fields.fmt_0_add.f
2494 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_0_add.f
2495 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2496 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
2497 CPU (h_gr
[f_r1
]) = SRASI (OPRND (dr
), ANDSI (OPRND (sr
), 31));
2498 TRACE_RESULT (current_cpu
, "dr", 'x', OPRND (dr
));
2499 #if WITH_PROFILE_MODEL_P
2500 if (PROFILE_MODEL_P (current_cpu
))
2502 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
2503 m32rx_model_mark_set_h_gr (current_cpu
, abuf
);
2504 m32rx_model_profile_insn (current_cpu
, abuf
);
2512 /* Perform sra3: sra3 $dr,$sr,#$simm16. */
2514 SEM_FN_NAME (m32rx
,sra3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2516 #define FLD(f) abuf->fields.fmt_5_addv3.f
2517 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_5_addv3.f
2518 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2519 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
2520 CPU (h_gr
[f_r1
]) = SRASI (OPRND (sr
), ANDSI (OPRND (simm16
), 31));
2521 TRACE_RESULT (current_cpu
, "dr", 'x', OPRND (dr
));
2522 #if WITH_PROFILE_MODEL_P
2523 if (PROFILE_MODEL_P (current_cpu
))
2525 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
2526 m32rx_model_mark_set_h_gr (current_cpu
, abuf
);
2527 m32rx_model_profile_insn (current_cpu
, abuf
);
2535 /* Perform srai: srai $dr,#$uimm5. */
2537 SEM_FN_NAME (m32rx
,srai
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2539 #define FLD(f) abuf->fields.fmt_48_slli.f
2540 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_48_slli.f
2541 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2542 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
2543 CPU (h_gr
[f_r1
]) = SRASI (OPRND (dr
), OPRND (uimm5
));
2544 TRACE_RESULT (current_cpu
, "dr", 'x', OPRND (dr
));
2545 #if WITH_PROFILE_MODEL_P
2546 if (PROFILE_MODEL_P (current_cpu
))
2548 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
2549 m32rx_model_mark_set_h_gr (current_cpu
, abuf
);
2550 m32rx_model_profile_insn (current_cpu
, abuf
);
2558 /* Perform srl: srl $dr,$sr. */
2560 SEM_FN_NAME (m32rx
,srl
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2562 #define FLD(f) abuf->fields.fmt_0_add.f
2563 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_0_add.f
2564 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2565 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
2566 CPU (h_gr
[f_r1
]) = SRLSI (OPRND (dr
), ANDSI (OPRND (sr
), 31));
2567 TRACE_RESULT (current_cpu
, "dr", 'x', OPRND (dr
));
2568 #if WITH_PROFILE_MODEL_P
2569 if (PROFILE_MODEL_P (current_cpu
))
2571 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
2572 m32rx_model_mark_set_h_gr (current_cpu
, abuf
);
2573 m32rx_model_profile_insn (current_cpu
, abuf
);
2581 /* Perform srl3: srl3 $dr,$sr,#$simm16. */
2583 SEM_FN_NAME (m32rx
,srl3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2585 #define FLD(f) abuf->fields.fmt_5_addv3.f
2586 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_5_addv3.f
2587 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2588 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
2589 CPU (h_gr
[f_r1
]) = SRLSI (OPRND (sr
), ANDSI (OPRND (simm16
), 31));
2590 TRACE_RESULT (current_cpu
, "dr", 'x', OPRND (dr
));
2591 #if WITH_PROFILE_MODEL_P
2592 if (PROFILE_MODEL_P (current_cpu
))
2594 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
2595 m32rx_model_mark_set_h_gr (current_cpu
, abuf
);
2596 m32rx_model_profile_insn (current_cpu
, abuf
);
2604 /* Perform srli: srli $dr,#$uimm5. */
2606 SEM_FN_NAME (m32rx
,srli
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2608 #define FLD(f) abuf->fields.fmt_48_slli.f
2609 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_48_slli.f
2610 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2611 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
2612 CPU (h_gr
[f_r1
]) = SRLSI (OPRND (dr
), OPRND (uimm5
));
2613 TRACE_RESULT (current_cpu
, "dr", 'x', OPRND (dr
));
2614 #if WITH_PROFILE_MODEL_P
2615 if (PROFILE_MODEL_P (current_cpu
))
2617 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
2618 m32rx_model_mark_set_h_gr (current_cpu
, abuf
);
2619 m32rx_model_profile_insn (current_cpu
, abuf
);
2627 /* Perform st: st $src1,@$src2. */
2629 SEM_FN_NAME (m32rx
,st
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2631 #define FLD(f) abuf->fields.fmt_17_cmp.f
2632 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_17_cmp.f
2633 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2634 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
2635 SETMEMSI (current_cpu
, OPRND (src2
), OPRND (src1
));
2636 TRACE_RESULT (current_cpu
, "h-memory", 'x', OPRND (h_memory
));
2637 #if WITH_PROFILE_MODEL_P
2638 if (PROFILE_MODEL_P (current_cpu
))
2640 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
2641 m32rx_model_profile_insn (current_cpu
, abuf
);
2649 /* Perform st-d: st $src1,@($slo16,$src2). */
2651 SEM_FN_NAME (m32rx
,st_d
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2653 #define FLD(f) abuf->fields.fmt_49_st_d.f
2654 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_49_st_d.f
2655 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2656 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
2657 SETMEMSI (current_cpu
, ADDSI (OPRND (src2
), OPRND (slo16
)), OPRND (src1
));
2658 TRACE_RESULT (current_cpu
, "h-memory", 'x', OPRND (h_memory
));
2659 #if WITH_PROFILE_MODEL_P
2660 if (PROFILE_MODEL_P (current_cpu
))
2662 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
2663 m32rx_model_profile_insn (current_cpu
, abuf
);
2671 /* Perform stb: stb $src1,@$src2. */
2673 SEM_FN_NAME (m32rx
,stb
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2675 #define FLD(f) abuf->fields.fmt_17_cmp.f
2676 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_17_cmp.f
2677 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2678 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
2679 SETMEMQI (current_cpu
, OPRND (src2
), OPRND (src1
));
2680 TRACE_RESULT (current_cpu
, "h-memory", 'x', OPRND (h_memory
));
2681 #if WITH_PROFILE_MODEL_P
2682 if (PROFILE_MODEL_P (current_cpu
))
2684 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
2685 m32rx_model_profile_insn (current_cpu
, abuf
);
2693 /* Perform stb-d: stb $src1,@($slo16,$src2). */
2695 SEM_FN_NAME (m32rx
,stb_d
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2697 #define FLD(f) abuf->fields.fmt_49_st_d.f
2698 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_49_st_d.f
2699 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2700 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
2701 SETMEMQI (current_cpu
, ADDSI (OPRND (src2
), OPRND (slo16
)), OPRND (src1
));
2702 TRACE_RESULT (current_cpu
, "h-memory", 'x', OPRND (h_memory
));
2703 #if WITH_PROFILE_MODEL_P
2704 if (PROFILE_MODEL_P (current_cpu
))
2706 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
2707 m32rx_model_profile_insn (current_cpu
, abuf
);
2715 /* Perform sth: sth $src1,@$src2. */
2717 SEM_FN_NAME (m32rx
,sth
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2719 #define FLD(f) abuf->fields.fmt_17_cmp.f
2720 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_17_cmp.f
2721 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2722 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
2723 SETMEMHI (current_cpu
, OPRND (src2
), OPRND (src1
));
2724 TRACE_RESULT (current_cpu
, "h-memory", 'x', OPRND (h_memory
));
2725 #if WITH_PROFILE_MODEL_P
2726 if (PROFILE_MODEL_P (current_cpu
))
2728 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
2729 m32rx_model_profile_insn (current_cpu
, abuf
);
2737 /* Perform sth-d: sth $src1,@($slo16,$src2). */
2739 SEM_FN_NAME (m32rx
,sth_d
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2741 #define FLD(f) abuf->fields.fmt_49_st_d.f
2742 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_49_st_d.f
2743 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2744 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
2745 SETMEMHI (current_cpu
, ADDSI (OPRND (src2
), OPRND (slo16
)), OPRND (src1
));
2746 TRACE_RESULT (current_cpu
, "h-memory", 'x', OPRND (h_memory
));
2747 #if WITH_PROFILE_MODEL_P
2748 if (PROFILE_MODEL_P (current_cpu
))
2750 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
2751 m32rx_model_profile_insn (current_cpu
, abuf
);
2759 /* Perform st-plus: st $src1,@+$src2. */
2761 SEM_FN_NAME (m32rx
,st_plus
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2763 #define FLD(f) abuf->fields.fmt_17_cmp.f
2764 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_17_cmp.f
2765 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2766 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
2768 CPU (h_gr
[f_r2
]) = ADDSI (OPRND (src2
), 4);
2769 TRACE_RESULT (current_cpu
, "src2", 'x', OPRND (src2
));
2770 SETMEMSI (current_cpu
, OPRND (src2
), OPRND (src1
));
2771 TRACE_RESULT (current_cpu
, "h-memory", 'x', OPRND (h_memory
));
2773 #if WITH_PROFILE_MODEL_P
2774 if (PROFILE_MODEL_P (current_cpu
))
2776 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
2777 m32rx_model_profile_insn (current_cpu
, abuf
);
2785 /* Perform st-minus: st $src1,@-$src2. */
2787 SEM_FN_NAME (m32rx
,st_minus
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2789 #define FLD(f) abuf->fields.fmt_17_cmp.f
2790 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_17_cmp.f
2791 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2792 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
2794 CPU (h_gr
[f_r2
]) = SUBSI (OPRND (src2
), 4);
2795 TRACE_RESULT (current_cpu
, "src2", 'x', OPRND (src2
));
2796 SETMEMSI (current_cpu
, OPRND (src2
), OPRND (src1
));
2797 TRACE_RESULT (current_cpu
, "h-memory", 'x', OPRND (h_memory
));
2799 #if WITH_PROFILE_MODEL_P
2800 if (PROFILE_MODEL_P (current_cpu
))
2802 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
2803 m32rx_model_profile_insn (current_cpu
, abuf
);
2811 /* Perform sub: sub $dr,$sr. */
2813 SEM_FN_NAME (m32rx
,sub
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2815 #define FLD(f) abuf->fields.fmt_0_add.f
2816 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_0_add.f
2817 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2818 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
2819 CPU (h_gr
[f_r1
]) = SUBSI (OPRND (dr
), OPRND (sr
));
2820 TRACE_RESULT (current_cpu
, "dr", 'x', OPRND (dr
));
2821 #if WITH_PROFILE_MODEL_P
2822 if (PROFILE_MODEL_P (current_cpu
))
2824 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
2825 m32rx_model_mark_set_h_gr (current_cpu
, abuf
);
2826 m32rx_model_profile_insn (current_cpu
, abuf
);
2834 /* Perform subv: subv $dr,$sr. */
2836 SEM_FN_NAME (m32rx
,subv
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2838 #define FLD(f) abuf->fields.fmt_0_add.f
2839 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_0_add.f
2840 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2841 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
2844 temp0
= SUBSI (OPRND (dr
), OPRND (sr
));
2845 temp1
= SUBOFSI (OPRND (dr
), OPRND (sr
), 0);
2846 CPU (h_gr
[f_r1
]) = temp0
;
2847 TRACE_RESULT (current_cpu
, "dr", 'x', OPRND (dr
));
2848 CPU (h_cond
) = temp1
;
2849 TRACE_RESULT (current_cpu
, "condbit", 'x', OPRND (condbit
));
2851 #if WITH_PROFILE_MODEL_P
2852 if (PROFILE_MODEL_P (current_cpu
))
2854 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
2855 m32rx_model_mark_set_h_gr (current_cpu
, abuf
);
2856 m32rx_model_profile_insn (current_cpu
, abuf
);
2864 /* Perform subx: subx $dr,$sr. */
2866 SEM_FN_NAME (m32rx
,subx
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2868 #define FLD(f) abuf->fields.fmt_6_addx.f
2869 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_6_addx.f
2870 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2871 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
2874 temp0
= SUBCSI (OPRND (dr
), OPRND (sr
), OPRND (condbit
));
2875 temp1
= SUBCFSI (OPRND (dr
), OPRND (sr
), OPRND (condbit
));
2876 CPU (h_gr
[f_r1
]) = temp0
;
2877 TRACE_RESULT (current_cpu
, "dr", 'x', OPRND (dr
));
2878 CPU (h_cond
) = temp1
;
2879 TRACE_RESULT (current_cpu
, "condbit", 'x', OPRND (condbit
));
2881 #if WITH_PROFILE_MODEL_P
2882 if (PROFILE_MODEL_P (current_cpu
))
2884 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
2885 m32rx_model_mark_set_h_gr (current_cpu
, abuf
);
2886 m32rx_model_profile_insn (current_cpu
, abuf
);
2894 /* Perform trap: trap #$uimm4. */
2896 SEM_FN_NAME (m32rx
,trap
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2898 #define FLD(f) abuf->fields.fmt_50_trap.f
2899 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_50_trap.f
2900 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2901 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
2903 do_trap (current_cpu
, OPRND (uimm4
));
2904 #if WITH_PROFILE_MODEL_P
2905 if (PROFILE_MODEL_P (current_cpu
))
2907 m32rx_model_profile_cti_insn (current_cpu
, abuf
, taken_p
);
2915 /* Perform unlock: unlock $src1,@$src2. */
2917 SEM_FN_NAME (m32rx
,unlock
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2919 #define FLD(f) abuf->fields.fmt_17_cmp.f
2920 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_17_cmp.f
2921 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2922 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
2923 do_unlock (current_cpu
, OPRND (src1
), OPRND (src2
));
2924 #if WITH_PROFILE_MODEL_P
2925 if (PROFILE_MODEL_P (current_cpu
))
2927 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
2928 m32rx_model_profile_insn (current_cpu
, abuf
);
2936 /* Perform satb: satb $dr,$src2. */
2938 SEM_FN_NAME (m32rx
,satb
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2940 #define FLD(f) abuf->fields.fmt_51_satb.f
2941 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_51_satb.f
2942 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2943 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
2944 CPU (h_gr
[f_r1
]) = (GESI (OPRND (src2
), 127)) ? (127) : (LESI (OPRND (src2
), -128)) ? (-128) : (OPRND (src2
));
2945 TRACE_RESULT (current_cpu
, "dr", 'x', OPRND (dr
));
2946 #if WITH_PROFILE_MODEL_P
2947 if (PROFILE_MODEL_P (current_cpu
))
2949 m32rx_model_mark_set_h_gr (current_cpu
, abuf
);
2950 m32rx_model_profile_insn (current_cpu
, abuf
);
2958 /* Perform sath: sath $dr,$src2. */
2960 SEM_FN_NAME (m32rx
,sath
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2962 #define FLD(f) abuf->fields.fmt_51_satb.f
2963 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_51_satb.f
2964 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2965 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
2966 CPU (h_gr
[f_r1
]) = (GESI (OPRND (src2
), 32767)) ? (32767) : (LESI (OPRND (src2
), -32768)) ? (-32768) : (OPRND (src2
));
2967 TRACE_RESULT (current_cpu
, "dr", 'x', OPRND (dr
));
2968 #if WITH_PROFILE_MODEL_P
2969 if (PROFILE_MODEL_P (current_cpu
))
2971 m32rx_model_mark_set_h_gr (current_cpu
, abuf
);
2972 m32rx_model_profile_insn (current_cpu
, abuf
);
2980 /* Perform sat: sat $dr,$src2. */
2982 SEM_FN_NAME (m32rx
,sat
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2984 #define FLD(f) abuf->fields.fmt_51_satb.f
2985 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_51_satb.f
2986 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2987 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
2988 CPU (h_gr
[f_r1
]) = (OPRND (condbit
)) ? ((LTSI (OPRND (src2
), 0)) ? (2147483647) : (0x80000000)) : (OPRND (src2
));
2989 TRACE_RESULT (current_cpu
, "dr", 'x', OPRND (dr
));
2990 #if WITH_PROFILE_MODEL_P
2991 if (PROFILE_MODEL_P (current_cpu
))
2993 m32rx_model_mark_set_h_gr (current_cpu
, abuf
);
2994 m32rx_model_profile_insn (current_cpu
, abuf
);
3002 /* Perform pcmpbz: pcmpbz $src2. */
3004 SEM_FN_NAME (m32rx
,pcmpbz
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3006 #define FLD(f) abuf->fields.fmt_52_pcmpbz.f
3007 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_52_pcmpbz.f
3008 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3009 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
3010 CPU (h_cond
) = (EQSI (ANDSI (OPRND (src2
), 255), 0)) ? (1) : (EQSI (ANDSI (OPRND (src2
), 65280), 0)) ? (1) : (EQSI (ANDSI (OPRND (src2
), 16711680), 0)) ? (1) : (EQSI (ANDSI (OPRND (src2
), 0xff000000), 0)) ? (1) : (0);
3011 TRACE_RESULT (current_cpu
, "condbit", 'x', OPRND (condbit
));
3012 #if WITH_PROFILE_MODEL_P
3013 if (PROFILE_MODEL_P (current_cpu
))
3015 m32rx_model_profile_insn (current_cpu
, abuf
);
3023 /* Perform sadd: sadd. */
3025 SEM_FN_NAME (m32rx
,sadd
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3027 #define FLD(f) abuf->fields.fmt_53_sadd.f
3028 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_53_sadd.f
3029 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3030 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
3031 m32rx_h_accums_set (current_cpu
, 0, ADDDI (SRADI (OPRND (h_accums
), 16), OPRND (h_accums
)));
3032 TRACE_RESULT (current_cpu
, "h-accums", 'D', OPRND (h_accums
));
3033 #if WITH_PROFILE_MODEL_P
3034 if (PROFILE_MODEL_P (current_cpu
))
3036 m32rx_model_profile_insn (current_cpu
, abuf
);
3044 /* Perform macwu1: macwu1 $src1,$src2. */
3046 SEM_FN_NAME (m32rx
,macwu1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3048 #define FLD(f) abuf->fields.fmt_54_macwu1.f
3049 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_54_macwu1.f
3050 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3051 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
3052 m32rx_h_accums_set (current_cpu
, 1, SRADI (SLLDI (ADDDI (OPRND (h_accums
), MULDI (EXTSIDI (OPRND (src1
)), EXTSIDI (ANDSI (OPRND (src2
), 65535)))), 8), 8));
3053 TRACE_RESULT (current_cpu
, "h-accums", 'D', OPRND (h_accums
));
3054 #if WITH_PROFILE_MODEL_P
3055 if (PROFILE_MODEL_P (current_cpu
))
3057 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
3058 m32rx_model_profile_insn (current_cpu
, abuf
);
3066 /* Perform msblo: msblo $src1,$src2. */
3068 SEM_FN_NAME (m32rx
,msblo
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3070 #define FLD(f) abuf->fields.fmt_34_machi.f
3071 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_34_machi.f
3072 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3073 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
3074 CPU (h_accum
) = SRADI (SLLDI (SUBDI (OPRND (accum
), SRADI (SLLDI (MULDI (EXTHIDI (TRUNCSIHI (OPRND (src1
))), EXTHIDI (TRUNCSIHI (OPRND (src2
)))), 32), 16)), 8), 8);
3075 TRACE_RESULT (current_cpu
, "accum", 'D', OPRND (accum
));
3076 #if WITH_PROFILE_MODEL_P
3077 if (PROFILE_MODEL_P (current_cpu
))
3079 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
3080 m32rx_model_profile_insn (current_cpu
, abuf
);
3088 /* Perform mulwu1: mulwu1 $src1,$src2. */
3090 SEM_FN_NAME (m32rx
,mulwu1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3092 #define FLD(f) abuf->fields.fmt_17_cmp.f
3093 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_17_cmp.f
3094 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3095 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
3096 m32rx_h_accums_set (current_cpu
, 1, SRADI (SLLDI (MULDI (EXTSIDI (OPRND (src1
)), EXTSIDI (ANDSI (OPRND (src2
), 65535))), 16), 16));
3097 TRACE_RESULT (current_cpu
, "h-accums", 'D', OPRND (h_accums
));
3098 #if WITH_PROFILE_MODEL_P
3099 if (PROFILE_MODEL_P (current_cpu
))
3101 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
3102 m32rx_model_profile_insn (current_cpu
, abuf
);
3110 /* Perform machl1: machl1 $src1,$src2. */
3112 SEM_FN_NAME (m32rx
,machl1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3114 #define FLD(f) abuf->fields.fmt_54_macwu1.f
3115 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_54_macwu1.f
3116 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3117 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
3118 m32rx_h_accums_set (current_cpu
, 1, SRADI (SLLDI (ADDDI (OPRND (h_accums
), SRADI (SLLDI (MULDI (EXTSIDI (SRASI (OPRND (src1
), 16)), EXTHIDI (TRUNCSIHI (OPRND (src2
)))), 32), 16)), 8), 8));
3119 TRACE_RESULT (current_cpu
, "h-accums", 'D', OPRND (h_accums
));
3120 #if WITH_PROFILE_MODEL_P
3121 if (PROFILE_MODEL_P (current_cpu
))
3123 m32rx_model_mark_get_h_gr (current_cpu
, abuf
);
3124 m32rx_model_profile_insn (current_cpu
, abuf
);
3132 /* Perform sc: sc. */
3134 SEM_FN_NAME (m32rx
,sc
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3136 #define FLD(f) abuf->fields.fmt_55_sc.f
3137 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_55_sc.f
3138 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3139 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
3140 if (OPRND (condbit
)) {
3142 TRACE_RESULT (current_cpu
, "abort-parallel-execution", 'x', OPRND (abort_parallel_execution
));
3144 #if WITH_PROFILE_MODEL_P
3145 if (PROFILE_MODEL_P (current_cpu
))
3147 m32rx_model_profile_insn (current_cpu
, abuf
);
3155 /* Perform snc: snc. */
3157 SEM_FN_NAME (m32rx
,snc
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3159 #define FLD(f) abuf->fields.fmt_55_sc.f
3160 #define OPRND(f) CPU_PAR_EXEC (current_cpu)->operands.fmt_55_sc.f
3161 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3162 CIA new_pc
= SEM_NEXT_PC (sem_arg
);
3163 if (NOTBI (OPRND (condbit
))) {
3165 TRACE_RESULT (current_cpu
, "abort-parallel-execution", 'x', OPRND (abort_parallel_execution
));
3167 #if WITH_PROFILE_MODEL_P
3168 if (PROFILE_MODEL_P (current_cpu
))
3170 m32rx_model_profile_insn (current_cpu
, abuf
);
3178 /* FIXME: Add "no return" attribute to illegal insn handlers.
3179 They all call longjmp. */
3182 SEM_FN_NAME (m32rx
,illegal
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3184 sim_engine_illegal_insn (current_cpu
, NULL_CIA
/*FIXME*/);
3188 #endif /* ! defined (SCACHE_P) || (defined (SCACHE_P) && WITH_SCACHE) */
This page took 0.103363 seconds and 5 git commands to generate.