1 /* Simulator instruction semantics for or1k32bf.
3 THIS FILE IS MACHINE GENERATED WITH CGEN.
5 Copyright (C) 1996-2020 Free Software Foundation, Inc.
7 This file is part of the GNU simulators.
9 This file 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 3, or (at your option)
14 It is distributed in the hope that it will be useful, but WITHOUT
15 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
16 or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
17 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 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
25 #define WANT_CPU or1k32bf
26 #define WANT_CPU_OR1K32BF
33 #define GET_ATTR(cpu, num, attr) CGEN_ATTR_VALUE (NULL, abuf->idesc->attrs, CGEN_INSN_##attr)
35 /* This is used so that we can compile two copies of the semantic code,
36 one with full feature support and one without that runs fast(er).
37 FAST_P, when desired, is defined on the command line, -DFAST_P=1. */
39 #define SEM_FN_NAME(cpu,fn) XCONCAT3 (cpu,_semf_,fn)
40 #undef CGEN_TRACE_RESULT
41 #define CGEN_TRACE_RESULT(cpu, abuf, name, type, val)
43 #define SEM_FN_NAME(cpu,fn) XCONCAT3 (cpu,_sem_,fn)
46 /* x-invalid: --invalid-- */
49 SEM_FN_NAME (or1k32bf
,x_invalid
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
51 #define FLD(f) abuf->fields.sfmt_empty.f
52 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
53 int UNUSED written
= 0;
54 IADDR UNUSED pc
= abuf
->addr
;
55 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 0);
58 /* Update the recorded pc in the cpu state struct.
59 Only necessary for WITH_SCACHE case, but to avoid the
60 conditional compilation .... */
62 /* Virtual insns have zero size. Overwrite vpc with address of next insn
63 using the default-insn-bitsize spec. When executing insns in parallel
64 we may want to queue the fault and continue execution. */
65 vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
66 vpc
= sim_engine_invalid_insn (current_cpu
, pc
, vpc
);
73 /* x-after: --after-- */
76 SEM_FN_NAME (or1k32bf
,x_after
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
78 #define FLD(f) abuf->fields.sfmt_empty.f
79 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
80 int UNUSED written
= 0;
81 IADDR UNUSED pc
= abuf
->addr
;
82 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 0);
85 #if WITH_SCACHE_PBB_OR1K32BF
86 or1k32bf_pbb_after (current_cpu
, sem_arg
);
94 /* x-before: --before-- */
97 SEM_FN_NAME (or1k32bf
,x_before
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
99 #define FLD(f) abuf->fields.sfmt_empty.f
100 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
101 int UNUSED written
= 0;
102 IADDR UNUSED pc
= abuf
->addr
;
103 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 0);
106 #if WITH_SCACHE_PBB_OR1K32BF
107 or1k32bf_pbb_before (current_cpu
, sem_arg
);
115 /* x-cti-chain: --cti-chain-- */
118 SEM_FN_NAME (or1k32bf
,x_cti_chain
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
120 #define FLD(f) abuf->fields.sfmt_empty.f
121 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
122 int UNUSED written
= 0;
123 IADDR UNUSED pc
= abuf
->addr
;
124 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 0);
127 #if WITH_SCACHE_PBB_OR1K32BF
129 vpc
= or1k32bf_pbb_cti_chain (current_cpu
, sem_arg
,
130 pbb_br_type
, pbb_br_npc
);
133 /* FIXME: Allow provision of explicit ifmt spec in insn spec. */
134 vpc
= or1k32bf_pbb_cti_chain (current_cpu
, sem_arg
,
135 CPU_PBB_BR_TYPE (current_cpu
),
136 CPU_PBB_BR_NPC (current_cpu
));
145 /* x-chain: --chain-- */
148 SEM_FN_NAME (or1k32bf
,x_chain
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
150 #define FLD(f) abuf->fields.sfmt_empty.f
151 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
152 int UNUSED written
= 0;
153 IADDR UNUSED pc
= abuf
->addr
;
154 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 0);
157 #if WITH_SCACHE_PBB_OR1K32BF
158 vpc
= or1k32bf_pbb_chain (current_cpu
, sem_arg
);
169 /* x-begin: --begin-- */
172 SEM_FN_NAME (or1k32bf
,x_begin
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
174 #define FLD(f) abuf->fields.sfmt_empty.f
175 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
176 int UNUSED written
= 0;
177 IADDR UNUSED pc
= abuf
->addr
;
178 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 0);
181 #if WITH_SCACHE_PBB_OR1K32BF
182 #if defined DEFINE_SWITCH || defined FAST_P
183 /* In the switch case FAST_P is a constant, allowing several optimizations
184 in any called inline functions. */
185 vpc
= or1k32bf_pbb_begin (current_cpu
, FAST_P
);
187 #if 0 /* cgen engine can't handle dynamic fast/full switching yet. */
188 vpc
= or1k32bf_pbb_begin (current_cpu
, STATE_RUN_FAST_P (CPU_STATE (current_cpu
)));
190 vpc
= or1k32bf_pbb_begin (current_cpu
, 0);
200 /* l-j: l.j ${disp26} */
203 SEM_FN_NAME (or1k32bf
,l_j
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
205 #define FLD(f) abuf->fields.sfmt_l_j.f
206 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
207 int UNUSED written
= 0;
208 IADDR UNUSED pc
= abuf
->addr
;
210 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
215 USI opval
= FLD (i_disp26
);
216 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
217 CGEN_TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
220 if (GET_H_SYS_CPUCFGR_ND ()) {
222 SEM_SKIP_INSN (current_cpu
, sem_arg
, vpc
);
226 SEM_BRANCH_FINI (vpc
);
231 /* l-adrp: l.adrp $rD,${disp21} */
234 SEM_FN_NAME (or1k32bf
,l_adrp
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
236 #define FLD(f) abuf->fields.sfmt_l_adrp.f
237 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
238 int UNUSED written
= 0;
239 IADDR UNUSED pc
= abuf
->addr
;
240 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
243 USI opval
= FLD (i_disp21
);
244 SET_H_GPR (FLD (f_r1
), opval
);
245 CGEN_TRACE_RESULT (current_cpu
, abuf
, "gpr", 'x', opval
);
252 /* l-jal: l.jal ${disp26} */
255 SEM_FN_NAME (or1k32bf
,l_jal
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
257 #define FLD(f) abuf->fields.sfmt_l_j.f
258 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
259 int UNUSED written
= 0;
260 IADDR UNUSED pc
= abuf
->addr
;
262 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
266 USI opval
= ADDSI (pc
, ((GET_H_SYS_CPUCFGR_ND ()) ? (4) : (8)));
267 SET_H_GPR (((UINT
) 9), opval
);
268 CGEN_TRACE_RESULT (current_cpu
, abuf
, "gpr", 'x', opval
);
273 USI opval
= FLD (i_disp26
);
274 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
275 CGEN_TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
278 if (GET_H_SYS_CPUCFGR_ND ()) {
280 SEM_SKIP_INSN (current_cpu
, sem_arg
, vpc
);
285 SEM_BRANCH_FINI (vpc
);
293 SEM_FN_NAME (or1k32bf
,l_jr
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
295 #define FLD(f) abuf->fields.sfmt_l_sll.f
296 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
297 int UNUSED written
= 0;
298 IADDR UNUSED pc
= abuf
->addr
;
300 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
305 USI opval
= GET_H_GPR (FLD (f_r3
));
306 SEM_BRANCH_VIA_ADDR (current_cpu
, sem_arg
, opval
, vpc
);
307 CGEN_TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
310 if (GET_H_SYS_CPUCFGR_ND ()) {
312 SEM_SKIP_INSN (current_cpu
, sem_arg
, vpc
);
316 SEM_BRANCH_FINI (vpc
);
321 /* l-jalr: l.jalr $rB */
324 SEM_FN_NAME (or1k32bf
,l_jalr
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
326 #define FLD(f) abuf->fields.sfmt_l_sll.f
327 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
328 int UNUSED written
= 0;
329 IADDR UNUSED pc
= abuf
->addr
;
331 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
335 USI opval
= ADDSI (pc
, ((GET_H_SYS_CPUCFGR_ND ()) ? (4) : (8)));
336 SET_H_GPR (((UINT
) 9), opval
);
337 CGEN_TRACE_RESULT (current_cpu
, abuf
, "gpr", 'x', opval
);
342 USI opval
= GET_H_GPR (FLD (f_r3
));
343 SEM_BRANCH_VIA_ADDR (current_cpu
, sem_arg
, opval
, vpc
);
344 CGEN_TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
347 if (GET_H_SYS_CPUCFGR_ND ()) {
349 SEM_SKIP_INSN (current_cpu
, sem_arg
, vpc
);
354 SEM_BRANCH_FINI (vpc
);
359 /* l-bnf: l.bnf ${disp26} */
362 SEM_FN_NAME (or1k32bf
,l_bnf
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
364 #define FLD(f) abuf->fields.sfmt_l_j.f
365 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
366 int UNUSED written
= 0;
367 IADDR UNUSED pc
= abuf
->addr
;
369 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
372 if (NOTSI (GET_H_SYS_SR_F ())) {
375 USI opval
= FLD (i_disp26
);
376 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
378 CGEN_TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
382 if (GET_H_SYS_CPUCFGR_ND ()) {
385 USI opval
= ADDSI (pc
, 4);
386 SEM_BRANCH_VIA_ADDR (current_cpu
, sem_arg
, opval
, vpc
);
388 CGEN_TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
393 if (GET_H_SYS_CPUCFGR_ND ()) {
395 SEM_SKIP_INSN (current_cpu
, sem_arg
, vpc
);
399 abuf
->written
= written
;
400 SEM_BRANCH_FINI (vpc
);
405 /* l-bf: l.bf ${disp26} */
408 SEM_FN_NAME (or1k32bf
,l_bf
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
410 #define FLD(f) abuf->fields.sfmt_l_j.f
411 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
412 int UNUSED written
= 0;
413 IADDR UNUSED pc
= abuf
->addr
;
415 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
418 if (GET_H_SYS_SR_F ()) {
421 USI opval
= FLD (i_disp26
);
422 SEM_BRANCH_VIA_CACHE (current_cpu
, sem_arg
, opval
, vpc
);
424 CGEN_TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
428 if (GET_H_SYS_CPUCFGR_ND ()) {
431 USI opval
= ADDSI (pc
, 4);
432 SEM_BRANCH_VIA_ADDR (current_cpu
, sem_arg
, opval
, vpc
);
434 CGEN_TRACE_RESULT (current_cpu
, abuf
, "pc", 'x', opval
);
439 if (GET_H_SYS_CPUCFGR_ND ()) {
441 SEM_SKIP_INSN (current_cpu
, sem_arg
, vpc
);
445 abuf
->written
= written
;
446 SEM_BRANCH_FINI (vpc
);
451 /* l-trap: l.trap ${uimm16} */
454 SEM_FN_NAME (or1k32bf
,l_trap
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
456 #define FLD(f) abuf->fields.sfmt_empty.f
457 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
458 int UNUSED written
= 0;
459 IADDR UNUSED pc
= abuf
->addr
;
460 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
462 or1k32bf_exception (current_cpu
, pc
, EXCEPT_TRAP
);
468 /* l-sys: l.sys ${uimm16} */
471 SEM_FN_NAME (or1k32bf
,l_sys
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
473 #define FLD(f) abuf->fields.sfmt_empty.f
474 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
475 int UNUSED written
= 0;
476 IADDR UNUSED pc
= abuf
->addr
;
477 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
479 or1k32bf_exception (current_cpu
, pc
, EXCEPT_SYSCALL
);
485 /* l-msync: l.msync */
488 SEM_FN_NAME (or1k32bf
,l_msync
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
490 #define FLD(f) abuf->fields.sfmt_empty.f
491 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
492 int UNUSED written
= 0;
493 IADDR UNUSED pc
= abuf
->addr
;
494 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
502 /* l-psync: l.psync */
505 SEM_FN_NAME (or1k32bf
,l_psync
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
507 #define FLD(f) abuf->fields.sfmt_empty.f
508 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
509 int UNUSED written
= 0;
510 IADDR UNUSED pc
= abuf
->addr
;
511 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
519 /* l-csync: l.csync */
522 SEM_FN_NAME (or1k32bf
,l_csync
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
524 #define FLD(f) abuf->fields.sfmt_empty.f
525 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
526 int UNUSED written
= 0;
527 IADDR UNUSED pc
= abuf
->addr
;
528 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
539 SEM_FN_NAME (or1k32bf
,l_rfe
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
541 #define FLD(f) abuf->fields.sfmt_empty.f
542 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
543 int UNUSED written
= 0;
544 IADDR UNUSED pc
= abuf
->addr
;
545 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
547 or1k32bf_rfe (current_cpu
);
553 /* l-nop-imm: l.nop ${uimm16} */
556 SEM_FN_NAME (or1k32bf
,l_nop_imm
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
558 #define FLD(f) abuf->fields.sfmt_l_mfspr.f
559 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
560 int UNUSED written
= 0;
561 IADDR UNUSED pc
= abuf
->addr
;
562 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
564 or1k32bf_nop (current_cpu
, ZEXTSISI (FLD (f_uimm16
)));
570 /* l-movhi: l.movhi $rD,$uimm16 */
573 SEM_FN_NAME (or1k32bf
,l_movhi
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
575 #define FLD(f) abuf->fields.sfmt_l_mfspr.f
576 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
577 int UNUSED written
= 0;
578 IADDR UNUSED pc
= abuf
->addr
;
579 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
582 USI opval
= SLLSI (ZEXTSISI (FLD (f_uimm16
)), 16);
583 SET_H_GPR (FLD (f_r1
), opval
);
584 CGEN_TRACE_RESULT (current_cpu
, abuf
, "gpr", 'x', opval
);
591 /* l-macrc: l.macrc $rD */
594 SEM_FN_NAME (or1k32bf
,l_macrc
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
596 #define FLD(f) abuf->fields.sfmt_l_adrp.f
597 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
598 int UNUSED written
= 0;
599 IADDR UNUSED pc
= abuf
->addr
;
600 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
604 USI opval
= GET_H_MAC_MACLO ();
605 SET_H_GPR (FLD (f_r1
), opval
);
606 CGEN_TRACE_RESULT (current_cpu
, abuf
, "gpr", 'x', opval
);
610 SET_H_MAC_MACLO (opval
);
611 CGEN_TRACE_RESULT (current_cpu
, abuf
, "mac-maclo", 'x', opval
);
615 SET_H_MAC_MACHI (opval
);
616 CGEN_TRACE_RESULT (current_cpu
, abuf
, "mac-machi", 'x', opval
);
624 /* l-mfspr: l.mfspr $rD,$rA,${uimm16} */
627 SEM_FN_NAME (or1k32bf
,l_mfspr
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
629 #define FLD(f) abuf->fields.sfmt_l_mfspr.f
630 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
631 int UNUSED written
= 0;
632 IADDR UNUSED pc
= abuf
->addr
;
633 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
636 USI opval
= or1k32bf_mfspr (current_cpu
, ORSI (GET_H_GPR (FLD (f_r2
)), ZEXTSISI (FLD (f_uimm16
))));
637 SET_H_GPR (FLD (f_r1
), opval
);
638 CGEN_TRACE_RESULT (current_cpu
, abuf
, "gpr", 'x', opval
);
645 /* l-mtspr: l.mtspr $rA,$rB,${uimm16-split} */
648 SEM_FN_NAME (or1k32bf
,l_mtspr
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
650 #define FLD(f) abuf->fields.sfmt_l_mtspr.f
651 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
652 int UNUSED written
= 0;
653 IADDR UNUSED pc
= abuf
->addr
;
654 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
656 or1k32bf_mtspr (current_cpu
, ORSI (GET_H_GPR (FLD (f_r2
)), ZEXTSISI (FLD (f_uimm16_split
))), GET_H_GPR (FLD (f_r3
)));
662 /* l-lwz: l.lwz $rD,${simm16}($rA) */
665 SEM_FN_NAME (or1k32bf
,l_lwz
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
667 #define FLD(f) abuf->fields.sfmt_l_lwz.f
668 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
669 int UNUSED written
= 0;
670 IADDR UNUSED pc
= abuf
->addr
;
671 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
674 USI opval
= ZEXTSISI (GETMEMUSI (current_cpu
, pc
, or1k32bf_make_load_store_addr (current_cpu
, GET_H_GPR (FLD (f_r2
)), EXTSISI (FLD (f_simm16
)), 4)));
675 SET_H_GPR (FLD (f_r1
), opval
);
676 CGEN_TRACE_RESULT (current_cpu
, abuf
, "gpr", 'x', opval
);
683 /* l-lws: l.lws $rD,${simm16}($rA) */
686 SEM_FN_NAME (or1k32bf
,l_lws
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
688 #define FLD(f) abuf->fields.sfmt_l_lwz.f
689 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
690 int UNUSED written
= 0;
691 IADDR UNUSED pc
= abuf
->addr
;
692 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
695 SI opval
= EXTSISI (GETMEMSI (current_cpu
, pc
, or1k32bf_make_load_store_addr (current_cpu
, GET_H_GPR (FLD (f_r2
)), EXTSISI (FLD (f_simm16
)), 4)));
696 SET_H_GPR (FLD (f_r1
), opval
);
697 CGEN_TRACE_RESULT (current_cpu
, abuf
, "gpr", 'x', opval
);
704 /* l-lwa: l.lwa $rD,${simm16}($rA) */
707 SEM_FN_NAME (or1k32bf
,l_lwa
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
709 #define FLD(f) abuf->fields.sfmt_l_lwz.f
710 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
711 int UNUSED written
= 0;
712 IADDR UNUSED pc
= abuf
->addr
;
713 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
717 USI opval
= ZEXTSISI (GETMEMUSI (current_cpu
, pc
, or1k32bf_make_load_store_addr (current_cpu
, GET_H_GPR (FLD (f_r2
)), EXTSISI (FLD (f_simm16
)), 4)));
718 SET_H_GPR (FLD (f_r1
), opval
);
719 CGEN_TRACE_RESULT (current_cpu
, abuf
, "gpr", 'x', opval
);
723 CPU (h_atomic_reserve
) = opval
;
724 CGEN_TRACE_RESULT (current_cpu
, abuf
, "atomic-reserve", 'x', opval
);
727 SI opval
= or1k32bf_make_load_store_addr (current_cpu
, GET_H_GPR (FLD (f_r2
)), EXTSISI (FLD (f_simm16
)), 4);
728 CPU (h_atomic_address
) = opval
;
729 CGEN_TRACE_RESULT (current_cpu
, abuf
, "atomic-address", 'x', opval
);
737 /* l-lbz: l.lbz $rD,${simm16}($rA) */
740 SEM_FN_NAME (or1k32bf
,l_lbz
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
742 #define FLD(f) abuf->fields.sfmt_l_lwz.f
743 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
744 int UNUSED written
= 0;
745 IADDR UNUSED pc
= abuf
->addr
;
746 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
749 USI opval
= ZEXTQISI (GETMEMUQI (current_cpu
, pc
, or1k32bf_make_load_store_addr (current_cpu
, GET_H_GPR (FLD (f_r2
)), EXTSISI (FLD (f_simm16
)), 1)));
750 SET_H_GPR (FLD (f_r1
), opval
);
751 CGEN_TRACE_RESULT (current_cpu
, abuf
, "gpr", 'x', opval
);
758 /* l-lbs: l.lbs $rD,${simm16}($rA) */
761 SEM_FN_NAME (or1k32bf
,l_lbs
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
763 #define FLD(f) abuf->fields.sfmt_l_lwz.f
764 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
765 int UNUSED written
= 0;
766 IADDR UNUSED pc
= abuf
->addr
;
767 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
770 SI opval
= EXTQISI (GETMEMQI (current_cpu
, pc
, or1k32bf_make_load_store_addr (current_cpu
, GET_H_GPR (FLD (f_r2
)), EXTSISI (FLD (f_simm16
)), 1)));
771 SET_H_GPR (FLD (f_r1
), opval
);
772 CGEN_TRACE_RESULT (current_cpu
, abuf
, "gpr", 'x', opval
);
779 /* l-lhz: l.lhz $rD,${simm16}($rA) */
782 SEM_FN_NAME (or1k32bf
,l_lhz
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
784 #define FLD(f) abuf->fields.sfmt_l_lwz.f
785 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
786 int UNUSED written
= 0;
787 IADDR UNUSED pc
= abuf
->addr
;
788 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
791 USI opval
= ZEXTHISI (GETMEMUHI (current_cpu
, pc
, or1k32bf_make_load_store_addr (current_cpu
, GET_H_GPR (FLD (f_r2
)), EXTSISI (FLD (f_simm16
)), 2)));
792 SET_H_GPR (FLD (f_r1
), opval
);
793 CGEN_TRACE_RESULT (current_cpu
, abuf
, "gpr", 'x', opval
);
800 /* l-lhs: l.lhs $rD,${simm16}($rA) */
803 SEM_FN_NAME (or1k32bf
,l_lhs
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
805 #define FLD(f) abuf->fields.sfmt_l_lwz.f
806 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
807 int UNUSED written
= 0;
808 IADDR UNUSED pc
= abuf
->addr
;
809 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
812 SI opval
= EXTHISI (GETMEMHI (current_cpu
, pc
, or1k32bf_make_load_store_addr (current_cpu
, GET_H_GPR (FLD (f_r2
)), EXTSISI (FLD (f_simm16
)), 2)));
813 SET_H_GPR (FLD (f_r1
), opval
);
814 CGEN_TRACE_RESULT (current_cpu
, abuf
, "gpr", 'x', opval
);
821 /* l-sw: l.sw ${simm16-split}($rA),$rB */
824 SEM_FN_NAME (or1k32bf
,l_sw
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
826 #define FLD(f) abuf->fields.sfmt_l_sw.f
827 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
828 int UNUSED written
= 0;
829 IADDR UNUSED pc
= abuf
->addr
;
830 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
834 tmp_addr
= or1k32bf_make_load_store_addr (current_cpu
, GET_H_GPR (FLD (f_r2
)), EXTSISI (FLD (f_simm16_split
)), 4);
836 USI opval
= TRUNCSISI (GET_H_GPR (FLD (f_r3
)));
837 SETMEMUSI (current_cpu
, pc
, tmp_addr
, opval
);
838 CGEN_TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
840 if (EQSI (ANDSI (tmp_addr
, 268435452), CPU (h_atomic_address
))) {
843 CPU (h_atomic_reserve
) = opval
;
845 CGEN_TRACE_RESULT (current_cpu
, abuf
, "atomic-reserve", 'x', opval
);
850 abuf
->written
= written
;
855 /* l-sb: l.sb ${simm16-split}($rA),$rB */
858 SEM_FN_NAME (or1k32bf
,l_sb
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
860 #define FLD(f) abuf->fields.sfmt_l_sw.f
861 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
862 int UNUSED written
= 0;
863 IADDR UNUSED pc
= abuf
->addr
;
864 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
868 tmp_addr
= or1k32bf_make_load_store_addr (current_cpu
, GET_H_GPR (FLD (f_r2
)), EXTSISI (FLD (f_simm16_split
)), 1);
870 UQI opval
= TRUNCSIQI (GET_H_GPR (FLD (f_r3
)));
871 SETMEMUQI (current_cpu
, pc
, tmp_addr
, opval
);
872 CGEN_TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
874 if (EQSI (ANDSI (tmp_addr
, 268435452), CPU (h_atomic_address
))) {
877 CPU (h_atomic_reserve
) = opval
;
879 CGEN_TRACE_RESULT (current_cpu
, abuf
, "atomic-reserve", 'x', opval
);
884 abuf
->written
= written
;
889 /* l-sh: l.sh ${simm16-split}($rA),$rB */
892 SEM_FN_NAME (or1k32bf
,l_sh
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
894 #define FLD(f) abuf->fields.sfmt_l_sw.f
895 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
896 int UNUSED written
= 0;
897 IADDR UNUSED pc
= abuf
->addr
;
898 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
902 tmp_addr
= or1k32bf_make_load_store_addr (current_cpu
, GET_H_GPR (FLD (f_r2
)), EXTSISI (FLD (f_simm16_split
)), 2);
904 UHI opval
= TRUNCSIHI (GET_H_GPR (FLD (f_r3
)));
905 SETMEMUHI (current_cpu
, pc
, tmp_addr
, opval
);
906 CGEN_TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
908 if (EQSI (ANDSI (tmp_addr
, 268435452), CPU (h_atomic_address
))) {
911 CPU (h_atomic_reserve
) = opval
;
913 CGEN_TRACE_RESULT (current_cpu
, abuf
, "atomic-reserve", 'x', opval
);
918 abuf
->written
= written
;
923 /* l-swa: l.swa ${simm16-split}($rA),$rB */
926 SEM_FN_NAME (or1k32bf
,l_swa
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
928 #define FLD(f) abuf->fields.sfmt_l_sw.f
929 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
930 int UNUSED written
= 0;
931 IADDR UNUSED pc
= abuf
->addr
;
932 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
937 tmp_addr
= or1k32bf_make_load_store_addr (current_cpu
, GET_H_GPR (FLD (f_r2
)), EXTSISI (FLD (f_simm16_split
)), 4);
939 USI opval
= ANDBI (CPU (h_atomic_reserve
), EQSI (tmp_addr
, CPU (h_atomic_address
)));
940 SET_H_SYS_SR_F (opval
);
941 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-f", 'x', opval
);
943 if (GET_H_SYS_SR_F ()) {
945 USI opval
= TRUNCSISI (GET_H_GPR (FLD (f_r3
)));
946 SETMEMUSI (current_cpu
, pc
, tmp_addr
, opval
);
948 CGEN_TRACE_RESULT (current_cpu
, abuf
, "memory", 'x', opval
);
953 CPU (h_atomic_reserve
) = opval
;
954 CGEN_TRACE_RESULT (current_cpu
, abuf
, "atomic-reserve", 'x', opval
);
958 abuf
->written
= written
;
963 /* l-sll: l.sll $rD,$rA,$rB */
966 SEM_FN_NAME (or1k32bf
,l_sll
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
968 #define FLD(f) abuf->fields.sfmt_l_sll.f
969 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
970 int UNUSED written
= 0;
971 IADDR UNUSED pc
= abuf
->addr
;
972 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
975 USI opval
= SLLSI (GET_H_GPR (FLD (f_r2
)), GET_H_GPR (FLD (f_r3
)));
976 SET_H_GPR (FLD (f_r1
), opval
);
977 CGEN_TRACE_RESULT (current_cpu
, abuf
, "gpr", 'x', opval
);
984 /* l-slli: l.slli $rD,$rA,${uimm6} */
987 SEM_FN_NAME (or1k32bf
,l_slli
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
989 #define FLD(f) abuf->fields.sfmt_l_slli.f
990 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
991 int UNUSED written
= 0;
992 IADDR UNUSED pc
= abuf
->addr
;
993 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
996 USI opval
= SLLSI (GET_H_GPR (FLD (f_r2
)), FLD (f_uimm6
));
997 SET_H_GPR (FLD (f_r1
), opval
);
998 CGEN_TRACE_RESULT (current_cpu
, abuf
, "gpr", 'x', opval
);
1005 /* l-srl: l.srl $rD,$rA,$rB */
1008 SEM_FN_NAME (or1k32bf
,l_srl
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1010 #define FLD(f) abuf->fields.sfmt_l_sll.f
1011 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1012 int UNUSED written
= 0;
1013 IADDR UNUSED pc
= abuf
->addr
;
1014 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1017 USI opval
= SRLSI (GET_H_GPR (FLD (f_r2
)), GET_H_GPR (FLD (f_r3
)));
1018 SET_H_GPR (FLD (f_r1
), opval
);
1019 CGEN_TRACE_RESULT (current_cpu
, abuf
, "gpr", 'x', opval
);
1026 /* l-srli: l.srli $rD,$rA,${uimm6} */
1029 SEM_FN_NAME (or1k32bf
,l_srli
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1031 #define FLD(f) abuf->fields.sfmt_l_slli.f
1032 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1033 int UNUSED written
= 0;
1034 IADDR UNUSED pc
= abuf
->addr
;
1035 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1038 USI opval
= SRLSI (GET_H_GPR (FLD (f_r2
)), FLD (f_uimm6
));
1039 SET_H_GPR (FLD (f_r1
), opval
);
1040 CGEN_TRACE_RESULT (current_cpu
, abuf
, "gpr", 'x', opval
);
1047 /* l-sra: l.sra $rD,$rA,$rB */
1050 SEM_FN_NAME (or1k32bf
,l_sra
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1052 #define FLD(f) abuf->fields.sfmt_l_sll.f
1053 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1054 int UNUSED written
= 0;
1055 IADDR UNUSED pc
= abuf
->addr
;
1056 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1059 USI opval
= SRASI (GET_H_GPR (FLD (f_r2
)), GET_H_GPR (FLD (f_r3
)));
1060 SET_H_GPR (FLD (f_r1
), opval
);
1061 CGEN_TRACE_RESULT (current_cpu
, abuf
, "gpr", 'x', opval
);
1068 /* l-srai: l.srai $rD,$rA,${uimm6} */
1071 SEM_FN_NAME (or1k32bf
,l_srai
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1073 #define FLD(f) abuf->fields.sfmt_l_slli.f
1074 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1075 int UNUSED written
= 0;
1076 IADDR UNUSED pc
= abuf
->addr
;
1077 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1080 USI opval
= SRASI (GET_H_GPR (FLD (f_r2
)), FLD (f_uimm6
));
1081 SET_H_GPR (FLD (f_r1
), opval
);
1082 CGEN_TRACE_RESULT (current_cpu
, abuf
, "gpr", 'x', opval
);
1089 /* l-ror: l.ror $rD,$rA,$rB */
1092 SEM_FN_NAME (or1k32bf
,l_ror
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1094 #define FLD(f) abuf->fields.sfmt_l_sll.f
1095 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1096 int UNUSED written
= 0;
1097 IADDR UNUSED pc
= abuf
->addr
;
1098 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1101 USI opval
= RORSI (GET_H_GPR (FLD (f_r2
)), GET_H_GPR (FLD (f_r3
)));
1102 SET_H_GPR (FLD (f_r1
), opval
);
1103 CGEN_TRACE_RESULT (current_cpu
, abuf
, "gpr", 'x', opval
);
1110 /* l-rori: l.rori $rD,$rA,${uimm6} */
1113 SEM_FN_NAME (or1k32bf
,l_rori
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1115 #define FLD(f) abuf->fields.sfmt_l_slli.f
1116 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1117 int UNUSED written
= 0;
1118 IADDR UNUSED pc
= abuf
->addr
;
1119 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1122 USI opval
= RORSI (GET_H_GPR (FLD (f_r2
)), FLD (f_uimm6
));
1123 SET_H_GPR (FLD (f_r1
), opval
);
1124 CGEN_TRACE_RESULT (current_cpu
, abuf
, "gpr", 'x', opval
);
1131 /* l-and: l.and $rD,$rA,$rB */
1134 SEM_FN_NAME (or1k32bf
,l_and
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1136 #define FLD(f) abuf->fields.sfmt_l_sll.f
1137 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1138 int UNUSED written
= 0;
1139 IADDR UNUSED pc
= abuf
->addr
;
1140 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1143 USI opval
= ANDSI (GET_H_GPR (FLD (f_r2
)), GET_H_GPR (FLD (f_r3
)));
1144 SET_H_GPR (FLD (f_r1
), opval
);
1145 CGEN_TRACE_RESULT (current_cpu
, abuf
, "gpr", 'x', opval
);
1152 /* l-or: l.or $rD,$rA,$rB */
1155 SEM_FN_NAME (or1k32bf
,l_or
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1157 #define FLD(f) abuf->fields.sfmt_l_sll.f
1158 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1159 int UNUSED written
= 0;
1160 IADDR UNUSED pc
= abuf
->addr
;
1161 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1164 USI opval
= ORSI (GET_H_GPR (FLD (f_r2
)), GET_H_GPR (FLD (f_r3
)));
1165 SET_H_GPR (FLD (f_r1
), opval
);
1166 CGEN_TRACE_RESULT (current_cpu
, abuf
, "gpr", 'x', opval
);
1173 /* l-xor: l.xor $rD,$rA,$rB */
1176 SEM_FN_NAME (or1k32bf
,l_xor
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1178 #define FLD(f) abuf->fields.sfmt_l_sll.f
1179 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1180 int UNUSED written
= 0;
1181 IADDR UNUSED pc
= abuf
->addr
;
1182 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1185 USI opval
= XORSI (GET_H_GPR (FLD (f_r2
)), GET_H_GPR (FLD (f_r3
)));
1186 SET_H_GPR (FLD (f_r1
), opval
);
1187 CGEN_TRACE_RESULT (current_cpu
, abuf
, "gpr", 'x', opval
);
1194 /* l-add: l.add $rD,$rA,$rB */
1197 SEM_FN_NAME (or1k32bf
,l_add
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1199 #define FLD(f) abuf->fields.sfmt_l_sll.f
1200 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1201 int UNUSED written
= 0;
1202 IADDR UNUSED pc
= abuf
->addr
;
1203 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1208 BI opval
= ADDCFSI (GET_H_GPR (FLD (f_r2
)), GET_H_GPR (FLD (f_r3
)), 0);
1209 SET_H_SYS_SR_CY (opval
);
1210 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-cy", 'x', opval
);
1213 BI opval
= ADDOFSI (GET_H_GPR (FLD (f_r2
)), GET_H_GPR (FLD (f_r3
)), 0);
1214 SET_H_SYS_SR_OV (opval
);
1215 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-ov", 'x', opval
);
1218 USI opval
= ADDSI (GET_H_GPR (FLD (f_r2
)), GET_H_GPR (FLD (f_r3
)));
1219 SET_H_GPR (FLD (f_r1
), opval
);
1220 CGEN_TRACE_RESULT (current_cpu
, abuf
, "gpr", 'x', opval
);
1223 if (ANDIF (GET_H_SYS_SR_OV (), GET_H_SYS_SR_OVE ())) {
1224 or1k32bf_exception (current_cpu
, pc
, EXCEPT_RANGE
);
1232 /* l-sub: l.sub $rD,$rA,$rB */
1235 SEM_FN_NAME (or1k32bf
,l_sub
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1237 #define FLD(f) abuf->fields.sfmt_l_sll.f
1238 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1239 int UNUSED written
= 0;
1240 IADDR UNUSED pc
= abuf
->addr
;
1241 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1246 BI opval
= SUBCFSI (GET_H_GPR (FLD (f_r2
)), GET_H_GPR (FLD (f_r3
)), 0);
1247 SET_H_SYS_SR_CY (opval
);
1248 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-cy", 'x', opval
);
1251 BI opval
= SUBOFSI (GET_H_GPR (FLD (f_r2
)), GET_H_GPR (FLD (f_r3
)), 0);
1252 SET_H_SYS_SR_OV (opval
);
1253 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-ov", 'x', opval
);
1256 USI opval
= SUBSI (GET_H_GPR (FLD (f_r2
)), GET_H_GPR (FLD (f_r3
)));
1257 SET_H_GPR (FLD (f_r1
), opval
);
1258 CGEN_TRACE_RESULT (current_cpu
, abuf
, "gpr", 'x', opval
);
1261 if (ANDIF (GET_H_SYS_SR_OV (), GET_H_SYS_SR_OVE ())) {
1262 or1k32bf_exception (current_cpu
, pc
, EXCEPT_RANGE
);
1270 /* l-addc: l.addc $rD,$rA,$rB */
1273 SEM_FN_NAME (or1k32bf
,l_addc
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1275 #define FLD(f) abuf->fields.sfmt_l_sll.f
1276 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1277 int UNUSED written
= 0;
1278 IADDR UNUSED pc
= abuf
->addr
;
1279 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1283 BI tmp_tmp_sys_sr_cy
;
1284 tmp_tmp_sys_sr_cy
= GET_H_SYS_SR_CY ();
1286 BI opval
= ADDCFSI (GET_H_GPR (FLD (f_r2
)), GET_H_GPR (FLD (f_r3
)), tmp_tmp_sys_sr_cy
);
1287 SET_H_SYS_SR_CY (opval
);
1288 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-cy", 'x', opval
);
1291 BI opval
= ADDOFSI (GET_H_GPR (FLD (f_r2
)), GET_H_GPR (FLD (f_r3
)), tmp_tmp_sys_sr_cy
);
1292 SET_H_SYS_SR_OV (opval
);
1293 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-ov", 'x', opval
);
1296 USI opval
= ADDCSI (GET_H_GPR (FLD (f_r2
)), GET_H_GPR (FLD (f_r3
)), tmp_tmp_sys_sr_cy
);
1297 SET_H_GPR (FLD (f_r1
), opval
);
1298 CGEN_TRACE_RESULT (current_cpu
, abuf
, "gpr", 'x', opval
);
1301 if (ANDIF (GET_H_SYS_SR_OV (), GET_H_SYS_SR_OVE ())) {
1302 or1k32bf_exception (current_cpu
, pc
, EXCEPT_RANGE
);
1310 /* l-mul: l.mul $rD,$rA,$rB */
1313 SEM_FN_NAME (or1k32bf
,l_mul
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1315 #define FLD(f) abuf->fields.sfmt_l_sll.f
1316 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1317 int UNUSED written
= 0;
1318 IADDR UNUSED pc
= abuf
->addr
;
1319 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1324 BI opval
= MUL2OFSI (GET_H_GPR (FLD (f_r2
)), GET_H_GPR (FLD (f_r3
)));
1325 SET_H_SYS_SR_OV (opval
);
1326 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-ov", 'x', opval
);
1329 USI opval
= MULSI (GET_H_GPR (FLD (f_r2
)), GET_H_GPR (FLD (f_r3
)));
1330 SET_H_GPR (FLD (f_r1
), opval
);
1331 CGEN_TRACE_RESULT (current_cpu
, abuf
, "gpr", 'x', opval
);
1334 if (ANDIF (GET_H_SYS_SR_OV (), GET_H_SYS_SR_OVE ())) {
1335 or1k32bf_exception (current_cpu
, pc
, EXCEPT_RANGE
);
1343 /* l-muld: l.muld $rA,$rB */
1346 SEM_FN_NAME (or1k32bf
,l_muld
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1348 #define FLD(f) abuf->fields.sfmt_l_sll.f
1349 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1350 int UNUSED written
= 0;
1351 IADDR UNUSED pc
= abuf
->addr
;
1352 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1356 tmp_result
= MULDI (EXTSIDI (GET_H_GPR (FLD (f_r2
))), EXTSIDI (GET_H_GPR (FLD (f_r3
))));
1358 SI opval
= SUBWORDDISI (tmp_result
, 0);
1359 SET_H_MAC_MACHI (opval
);
1360 CGEN_TRACE_RESULT (current_cpu
, abuf
, "mac-machi", 'x', opval
);
1363 SI opval
= SUBWORDDISI (tmp_result
, 1);
1364 SET_H_MAC_MACLO (opval
);
1365 CGEN_TRACE_RESULT (current_cpu
, abuf
, "mac-maclo", 'x', opval
);
1373 /* l-mulu: l.mulu $rD,$rA,$rB */
1376 SEM_FN_NAME (or1k32bf
,l_mulu
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1378 #define FLD(f) abuf->fields.sfmt_l_sll.f
1379 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1380 int UNUSED written
= 0;
1381 IADDR UNUSED pc
= abuf
->addr
;
1382 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1387 BI opval
= MUL1OFSI (GET_H_GPR (FLD (f_r2
)), GET_H_GPR (FLD (f_r3
)));
1388 SET_H_SYS_SR_CY (opval
);
1389 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-cy", 'x', opval
);
1392 USI opval
= MULSI (GET_H_GPR (FLD (f_r2
)), GET_H_GPR (FLD (f_r3
)));
1393 SET_H_GPR (FLD (f_r1
), opval
);
1394 CGEN_TRACE_RESULT (current_cpu
, abuf
, "gpr", 'x', opval
);
1397 if (ANDIF (GET_H_SYS_SR_CY (), GET_H_SYS_SR_OVE ())) {
1398 or1k32bf_exception (current_cpu
, pc
, EXCEPT_RANGE
);
1406 /* l-muldu: l.muldu $rA,$rB */
1409 SEM_FN_NAME (or1k32bf
,l_muldu
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1411 #define FLD(f) abuf->fields.sfmt_l_sll.f
1412 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1413 int UNUSED written
= 0;
1414 IADDR UNUSED pc
= abuf
->addr
;
1415 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1419 tmp_result
= MULDI (ZEXTSIDI (GET_H_GPR (FLD (f_r2
))), ZEXTSIDI (GET_H_GPR (FLD (f_r3
))));
1421 SI opval
= SUBWORDDISI (tmp_result
, 0);
1422 SET_H_MAC_MACHI (opval
);
1423 CGEN_TRACE_RESULT (current_cpu
, abuf
, "mac-machi", 'x', opval
);
1426 SI opval
= SUBWORDDISI (tmp_result
, 1);
1427 SET_H_MAC_MACLO (opval
);
1428 CGEN_TRACE_RESULT (current_cpu
, abuf
, "mac-maclo", 'x', opval
);
1436 /* l-div: l.div $rD,$rA,$rB */
1439 SEM_FN_NAME (or1k32bf
,l_div
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1441 #define FLD(f) abuf->fields.sfmt_l_sll.f
1442 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1443 int UNUSED written
= 0;
1444 IADDR UNUSED pc
= abuf
->addr
;
1445 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1447 if (NESI (GET_H_GPR (FLD (f_r3
)), 0)) {
1451 SET_H_SYS_SR_OV (opval
);
1452 written
|= (1 << 5);
1453 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-ov", 'x', opval
);
1456 SI opval
= DIVSI (GET_H_GPR (FLD (f_r2
)), GET_H_GPR (FLD (f_r3
)));
1457 SET_H_GPR (FLD (f_r1
), opval
);
1458 written
|= (1 << 4);
1459 CGEN_TRACE_RESULT (current_cpu
, abuf
, "gpr", 'x', opval
);
1466 SET_H_SYS_SR_OV (opval
);
1467 written
|= (1 << 5);
1468 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-ov", 'x', opval
);
1470 if (GET_H_SYS_SR_OVE ()) {
1471 or1k32bf_exception (current_cpu
, pc
, EXCEPT_RANGE
);
1476 abuf
->written
= written
;
1481 /* l-divu: l.divu $rD,$rA,$rB */
1484 SEM_FN_NAME (or1k32bf
,l_divu
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1486 #define FLD(f) abuf->fields.sfmt_l_sll.f
1487 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1488 int UNUSED written
= 0;
1489 IADDR UNUSED pc
= abuf
->addr
;
1490 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1492 if (NESI (GET_H_GPR (FLD (f_r3
)), 0)) {
1496 SET_H_SYS_SR_CY (opval
);
1497 written
|= (1 << 5);
1498 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-cy", 'x', opval
);
1501 USI opval
= UDIVSI (GET_H_GPR (FLD (f_r2
)), GET_H_GPR (FLD (f_r3
)));
1502 SET_H_GPR (FLD (f_r1
), opval
);
1503 written
|= (1 << 4);
1504 CGEN_TRACE_RESULT (current_cpu
, abuf
, "gpr", 'x', opval
);
1511 SET_H_SYS_SR_CY (opval
);
1512 written
|= (1 << 5);
1513 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-cy", 'x', opval
);
1515 if (GET_H_SYS_SR_OVE ()) {
1516 or1k32bf_exception (current_cpu
, pc
, EXCEPT_RANGE
);
1521 abuf
->written
= written
;
1526 /* l-ff1: l.ff1 $rD,$rA */
1529 SEM_FN_NAME (or1k32bf
,l_ff1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1531 #define FLD(f) abuf->fields.sfmt_l_slli.f
1532 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1533 int UNUSED written
= 0;
1534 IADDR UNUSED pc
= abuf
->addr
;
1535 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1538 USI opval
= or1k32bf_ff1 (current_cpu
, GET_H_GPR (FLD (f_r2
)));
1539 SET_H_GPR (FLD (f_r1
), opval
);
1540 CGEN_TRACE_RESULT (current_cpu
, abuf
, "gpr", 'x', opval
);
1547 /* l-fl1: l.fl1 $rD,$rA */
1550 SEM_FN_NAME (or1k32bf
,l_fl1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1552 #define FLD(f) abuf->fields.sfmt_l_slli.f
1553 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1554 int UNUSED written
= 0;
1555 IADDR UNUSED pc
= abuf
->addr
;
1556 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1559 USI opval
= or1k32bf_fl1 (current_cpu
, GET_H_GPR (FLD (f_r2
)));
1560 SET_H_GPR (FLD (f_r1
), opval
);
1561 CGEN_TRACE_RESULT (current_cpu
, abuf
, "gpr", 'x', opval
);
1568 /* l-andi: l.andi $rD,$rA,$uimm16 */
1571 SEM_FN_NAME (or1k32bf
,l_andi
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1573 #define FLD(f) abuf->fields.sfmt_l_mfspr.f
1574 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1575 int UNUSED written
= 0;
1576 IADDR UNUSED pc
= abuf
->addr
;
1577 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1580 USI opval
= ANDSI (GET_H_GPR (FLD (f_r2
)), ZEXTSISI (FLD (f_uimm16
)));
1581 SET_H_GPR (FLD (f_r1
), opval
);
1582 CGEN_TRACE_RESULT (current_cpu
, abuf
, "gpr", 'x', opval
);
1589 /* l-ori: l.ori $rD,$rA,$uimm16 */
1592 SEM_FN_NAME (or1k32bf
,l_ori
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1594 #define FLD(f) abuf->fields.sfmt_l_mfspr.f
1595 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1596 int UNUSED written
= 0;
1597 IADDR UNUSED pc
= abuf
->addr
;
1598 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1601 USI opval
= ORSI (GET_H_GPR (FLD (f_r2
)), ZEXTSISI (FLD (f_uimm16
)));
1602 SET_H_GPR (FLD (f_r1
), opval
);
1603 CGEN_TRACE_RESULT (current_cpu
, abuf
, "gpr", 'x', opval
);
1610 /* l-xori: l.xori $rD,$rA,$simm16 */
1613 SEM_FN_NAME (or1k32bf
,l_xori
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1615 #define FLD(f) abuf->fields.sfmt_l_lwz.f
1616 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1617 int UNUSED written
= 0;
1618 IADDR UNUSED pc
= abuf
->addr
;
1619 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1622 USI opval
= XORSI (GET_H_GPR (FLD (f_r2
)), EXTSISI (FLD (f_simm16
)));
1623 SET_H_GPR (FLD (f_r1
), opval
);
1624 CGEN_TRACE_RESULT (current_cpu
, abuf
, "gpr", 'x', opval
);
1631 /* l-addi: l.addi $rD,$rA,$simm16 */
1634 SEM_FN_NAME (or1k32bf
,l_addi
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1636 #define FLD(f) abuf->fields.sfmt_l_lwz.f
1637 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1638 int UNUSED written
= 0;
1639 IADDR UNUSED pc
= abuf
->addr
;
1640 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1645 BI opval
= ADDCFSI (GET_H_GPR (FLD (f_r2
)), EXTSISI (FLD (f_simm16
)), 0);
1646 SET_H_SYS_SR_CY (opval
);
1647 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-cy", 'x', opval
);
1650 BI opval
= ADDOFSI (GET_H_GPR (FLD (f_r2
)), EXTSISI (FLD (f_simm16
)), 0);
1651 SET_H_SYS_SR_OV (opval
);
1652 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-ov", 'x', opval
);
1655 USI opval
= ADDSI (GET_H_GPR (FLD (f_r2
)), EXTSISI (FLD (f_simm16
)));
1656 SET_H_GPR (FLD (f_r1
), opval
);
1657 CGEN_TRACE_RESULT (current_cpu
, abuf
, "gpr", 'x', opval
);
1660 if (ANDIF (GET_H_SYS_SR_OV (), GET_H_SYS_SR_OVE ())) {
1661 or1k32bf_exception (current_cpu
, pc
, EXCEPT_RANGE
);
1669 /* l-addic: l.addic $rD,$rA,$simm16 */
1672 SEM_FN_NAME (or1k32bf
,l_addic
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1674 #define FLD(f) abuf->fields.sfmt_l_lwz.f
1675 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1676 int UNUSED written
= 0;
1677 IADDR UNUSED pc
= abuf
->addr
;
1678 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1682 BI tmp_tmp_sys_sr_cy
;
1683 tmp_tmp_sys_sr_cy
= GET_H_SYS_SR_CY ();
1685 BI opval
= ADDCFSI (GET_H_GPR (FLD (f_r2
)), EXTSISI (FLD (f_simm16
)), tmp_tmp_sys_sr_cy
);
1686 SET_H_SYS_SR_CY (opval
);
1687 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-cy", 'x', opval
);
1690 BI opval
= ADDOFSI (GET_H_GPR (FLD (f_r2
)), EXTSISI (FLD (f_simm16
)), tmp_tmp_sys_sr_cy
);
1691 SET_H_SYS_SR_OV (opval
);
1692 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-ov", 'x', opval
);
1695 SI opval
= ADDCSI (GET_H_GPR (FLD (f_r2
)), EXTSISI (FLD (f_simm16
)), tmp_tmp_sys_sr_cy
);
1696 SET_H_GPR (FLD (f_r1
), opval
);
1697 CGEN_TRACE_RESULT (current_cpu
, abuf
, "gpr", 'x', opval
);
1700 if (ANDIF (GET_H_SYS_SR_OV (), GET_H_SYS_SR_OVE ())) {
1701 or1k32bf_exception (current_cpu
, pc
, EXCEPT_RANGE
);
1709 /* l-muli: l.muli $rD,$rA,$simm16 */
1712 SEM_FN_NAME (or1k32bf
,l_muli
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1714 #define FLD(f) abuf->fields.sfmt_l_lwz.f
1715 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1716 int UNUSED written
= 0;
1717 IADDR UNUSED pc
= abuf
->addr
;
1718 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1723 USI opval
= MUL2OFSI (GET_H_GPR (FLD (f_r2
)), EXTSISI (FLD (f_simm16
)));
1724 SET_H_SYS_SR_OV (opval
);
1725 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-ov", 'x', opval
);
1728 USI opval
= MULSI (GET_H_GPR (FLD (f_r2
)), EXTSISI (FLD (f_simm16
)));
1729 SET_H_GPR (FLD (f_r1
), opval
);
1730 CGEN_TRACE_RESULT (current_cpu
, abuf
, "gpr", 'x', opval
);
1733 if (ANDIF (GET_H_SYS_SR_OV (), GET_H_SYS_SR_OVE ())) {
1734 or1k32bf_exception (current_cpu
, pc
, EXCEPT_RANGE
);
1742 /* l-exths: l.exths $rD,$rA */
1745 SEM_FN_NAME (or1k32bf
,l_exths
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1747 #define FLD(f) abuf->fields.sfmt_l_slli.f
1748 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1749 int UNUSED written
= 0;
1750 IADDR UNUSED pc
= abuf
->addr
;
1751 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1754 USI opval
= EXTHISI (TRUNCSIHI (GET_H_GPR (FLD (f_r2
))));
1755 SET_H_GPR (FLD (f_r1
), opval
);
1756 CGEN_TRACE_RESULT (current_cpu
, abuf
, "gpr", 'x', opval
);
1763 /* l-extbs: l.extbs $rD,$rA */
1766 SEM_FN_NAME (or1k32bf
,l_extbs
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1768 #define FLD(f) abuf->fields.sfmt_l_slli.f
1769 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1770 int UNUSED written
= 0;
1771 IADDR UNUSED pc
= abuf
->addr
;
1772 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1775 USI opval
= EXTQISI (TRUNCSIQI (GET_H_GPR (FLD (f_r2
))));
1776 SET_H_GPR (FLD (f_r1
), opval
);
1777 CGEN_TRACE_RESULT (current_cpu
, abuf
, "gpr", 'x', opval
);
1784 /* l-exthz: l.exthz $rD,$rA */
1787 SEM_FN_NAME (or1k32bf
,l_exthz
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1789 #define FLD(f) abuf->fields.sfmt_l_slli.f
1790 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1791 int UNUSED written
= 0;
1792 IADDR UNUSED pc
= abuf
->addr
;
1793 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1796 USI opval
= ZEXTHISI (TRUNCSIHI (GET_H_GPR (FLD (f_r2
))));
1797 SET_H_GPR (FLD (f_r1
), opval
);
1798 CGEN_TRACE_RESULT (current_cpu
, abuf
, "gpr", 'x', opval
);
1805 /* l-extbz: l.extbz $rD,$rA */
1808 SEM_FN_NAME (or1k32bf
,l_extbz
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1810 #define FLD(f) abuf->fields.sfmt_l_slli.f
1811 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1812 int UNUSED written
= 0;
1813 IADDR UNUSED pc
= abuf
->addr
;
1814 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1817 USI opval
= ZEXTQISI (TRUNCSIQI (GET_H_GPR (FLD (f_r2
))));
1818 SET_H_GPR (FLD (f_r1
), opval
);
1819 CGEN_TRACE_RESULT (current_cpu
, abuf
, "gpr", 'x', opval
);
1826 /* l-extws: l.extws $rD,$rA */
1829 SEM_FN_NAME (or1k32bf
,l_extws
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1831 #define FLD(f) abuf->fields.sfmt_l_slli.f
1832 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1833 int UNUSED written
= 0;
1834 IADDR UNUSED pc
= abuf
->addr
;
1835 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1838 USI opval
= EXTSISI (TRUNCSISI (GET_H_GPR (FLD (f_r2
))));
1839 SET_H_GPR (FLD (f_r1
), opval
);
1840 CGEN_TRACE_RESULT (current_cpu
, abuf
, "gpr", 'x', opval
);
1847 /* l-extwz: l.extwz $rD,$rA */
1850 SEM_FN_NAME (or1k32bf
,l_extwz
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1852 #define FLD(f) abuf->fields.sfmt_l_slli.f
1853 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1854 int UNUSED written
= 0;
1855 IADDR UNUSED pc
= abuf
->addr
;
1856 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1859 USI opval
= ZEXTSISI (TRUNCSISI (GET_H_GPR (FLD (f_r2
))));
1860 SET_H_GPR (FLD (f_r1
), opval
);
1861 CGEN_TRACE_RESULT (current_cpu
, abuf
, "gpr", 'x', opval
);
1868 /* l-cmov: l.cmov $rD,$rA,$rB */
1871 SEM_FN_NAME (or1k32bf
,l_cmov
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1873 #define FLD(f) abuf->fields.sfmt_l_sll.f
1874 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1875 int UNUSED written
= 0;
1876 IADDR UNUSED pc
= abuf
->addr
;
1877 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1879 if (GET_H_SYS_SR_F ()) {
1881 USI opval
= GET_H_GPR (FLD (f_r2
));
1882 SET_H_GPR (FLD (f_r1
), opval
);
1883 written
|= (1 << 3);
1884 CGEN_TRACE_RESULT (current_cpu
, abuf
, "gpr", 'x', opval
);
1888 USI opval
= GET_H_GPR (FLD (f_r3
));
1889 SET_H_GPR (FLD (f_r1
), opval
);
1890 written
|= (1 << 3);
1891 CGEN_TRACE_RESULT (current_cpu
, abuf
, "gpr", 'x', opval
);
1895 abuf
->written
= written
;
1900 /* l-sfgts: l.sfgts $rA,$rB */
1903 SEM_FN_NAME (or1k32bf
,l_sfgts
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1905 #define FLD(f) abuf->fields.sfmt_l_sll.f
1906 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1907 int UNUSED written
= 0;
1908 IADDR UNUSED pc
= abuf
->addr
;
1909 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1912 USI opval
= GTSI (GET_H_GPR (FLD (f_r2
)), GET_H_GPR (FLD (f_r3
)));
1913 SET_H_SYS_SR_F (opval
);
1914 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-f", 'x', opval
);
1921 /* l-sfgtsi: l.sfgtsi $rA,$simm16 */
1924 SEM_FN_NAME (or1k32bf
,l_sfgtsi
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1926 #define FLD(f) abuf->fields.sfmt_l_lwz.f
1927 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1928 int UNUSED written
= 0;
1929 IADDR UNUSED pc
= abuf
->addr
;
1930 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1933 USI opval
= GTSI (GET_H_GPR (FLD (f_r2
)), EXTSISI (FLD (f_simm16
)));
1934 SET_H_SYS_SR_F (opval
);
1935 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-f", 'x', opval
);
1942 /* l-sfgtu: l.sfgtu $rA,$rB */
1945 SEM_FN_NAME (or1k32bf
,l_sfgtu
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1947 #define FLD(f) abuf->fields.sfmt_l_sll.f
1948 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1949 int UNUSED written
= 0;
1950 IADDR UNUSED pc
= abuf
->addr
;
1951 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1954 USI opval
= GTUSI (GET_H_GPR (FLD (f_r2
)), GET_H_GPR (FLD (f_r3
)));
1955 SET_H_SYS_SR_F (opval
);
1956 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-f", 'x', opval
);
1963 /* l-sfgtui: l.sfgtui $rA,$simm16 */
1966 SEM_FN_NAME (or1k32bf
,l_sfgtui
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1968 #define FLD(f) abuf->fields.sfmt_l_lwz.f
1969 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1970 int UNUSED written
= 0;
1971 IADDR UNUSED pc
= abuf
->addr
;
1972 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1975 USI opval
= GTUSI (GET_H_GPR (FLD (f_r2
)), EXTSISI (FLD (f_simm16
)));
1976 SET_H_SYS_SR_F (opval
);
1977 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-f", 'x', opval
);
1984 /* l-sfges: l.sfges $rA,$rB */
1987 SEM_FN_NAME (or1k32bf
,l_sfges
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
1989 #define FLD(f) abuf->fields.sfmt_l_sll.f
1990 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
1991 int UNUSED written
= 0;
1992 IADDR UNUSED pc
= abuf
->addr
;
1993 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
1996 USI opval
= GESI (GET_H_GPR (FLD (f_r2
)), GET_H_GPR (FLD (f_r3
)));
1997 SET_H_SYS_SR_F (opval
);
1998 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-f", 'x', opval
);
2005 /* l-sfgesi: l.sfgesi $rA,$simm16 */
2008 SEM_FN_NAME (or1k32bf
,l_sfgesi
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2010 #define FLD(f) abuf->fields.sfmt_l_lwz.f
2011 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2012 int UNUSED written
= 0;
2013 IADDR UNUSED pc
= abuf
->addr
;
2014 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2017 USI opval
= GESI (GET_H_GPR (FLD (f_r2
)), EXTSISI (FLD (f_simm16
)));
2018 SET_H_SYS_SR_F (opval
);
2019 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-f", 'x', opval
);
2026 /* l-sfgeu: l.sfgeu $rA,$rB */
2029 SEM_FN_NAME (or1k32bf
,l_sfgeu
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2031 #define FLD(f) abuf->fields.sfmt_l_sll.f
2032 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2033 int UNUSED written
= 0;
2034 IADDR UNUSED pc
= abuf
->addr
;
2035 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2038 USI opval
= GEUSI (GET_H_GPR (FLD (f_r2
)), GET_H_GPR (FLD (f_r3
)));
2039 SET_H_SYS_SR_F (opval
);
2040 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-f", 'x', opval
);
2047 /* l-sfgeui: l.sfgeui $rA,$simm16 */
2050 SEM_FN_NAME (or1k32bf
,l_sfgeui
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2052 #define FLD(f) abuf->fields.sfmt_l_lwz.f
2053 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2054 int UNUSED written
= 0;
2055 IADDR UNUSED pc
= abuf
->addr
;
2056 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2059 USI opval
= GEUSI (GET_H_GPR (FLD (f_r2
)), EXTSISI (FLD (f_simm16
)));
2060 SET_H_SYS_SR_F (opval
);
2061 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-f", 'x', opval
);
2068 /* l-sflts: l.sflts $rA,$rB */
2071 SEM_FN_NAME (or1k32bf
,l_sflts
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2073 #define FLD(f) abuf->fields.sfmt_l_sll.f
2074 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2075 int UNUSED written
= 0;
2076 IADDR UNUSED pc
= abuf
->addr
;
2077 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2080 USI opval
= LTSI (GET_H_GPR (FLD (f_r2
)), GET_H_GPR (FLD (f_r3
)));
2081 SET_H_SYS_SR_F (opval
);
2082 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-f", 'x', opval
);
2089 /* l-sfltsi: l.sfltsi $rA,$simm16 */
2092 SEM_FN_NAME (or1k32bf
,l_sfltsi
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2094 #define FLD(f) abuf->fields.sfmt_l_lwz.f
2095 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2096 int UNUSED written
= 0;
2097 IADDR UNUSED pc
= abuf
->addr
;
2098 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2101 USI opval
= LTSI (GET_H_GPR (FLD (f_r2
)), EXTSISI (FLD (f_simm16
)));
2102 SET_H_SYS_SR_F (opval
);
2103 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-f", 'x', opval
);
2110 /* l-sfltu: l.sfltu $rA,$rB */
2113 SEM_FN_NAME (or1k32bf
,l_sfltu
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2115 #define FLD(f) abuf->fields.sfmt_l_sll.f
2116 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2117 int UNUSED written
= 0;
2118 IADDR UNUSED pc
= abuf
->addr
;
2119 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2122 USI opval
= LTUSI (GET_H_GPR (FLD (f_r2
)), GET_H_GPR (FLD (f_r3
)));
2123 SET_H_SYS_SR_F (opval
);
2124 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-f", 'x', opval
);
2131 /* l-sfltui: l.sfltui $rA,$simm16 */
2134 SEM_FN_NAME (or1k32bf
,l_sfltui
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2136 #define FLD(f) abuf->fields.sfmt_l_lwz.f
2137 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2138 int UNUSED written
= 0;
2139 IADDR UNUSED pc
= abuf
->addr
;
2140 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2143 USI opval
= LTUSI (GET_H_GPR (FLD (f_r2
)), EXTSISI (FLD (f_simm16
)));
2144 SET_H_SYS_SR_F (opval
);
2145 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-f", 'x', opval
);
2152 /* l-sfles: l.sfles $rA,$rB */
2155 SEM_FN_NAME (or1k32bf
,l_sfles
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2157 #define FLD(f) abuf->fields.sfmt_l_sll.f
2158 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2159 int UNUSED written
= 0;
2160 IADDR UNUSED pc
= abuf
->addr
;
2161 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2164 USI opval
= LESI (GET_H_GPR (FLD (f_r2
)), GET_H_GPR (FLD (f_r3
)));
2165 SET_H_SYS_SR_F (opval
);
2166 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-f", 'x', opval
);
2173 /* l-sflesi: l.sflesi $rA,$simm16 */
2176 SEM_FN_NAME (or1k32bf
,l_sflesi
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2178 #define FLD(f) abuf->fields.sfmt_l_lwz.f
2179 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2180 int UNUSED written
= 0;
2181 IADDR UNUSED pc
= abuf
->addr
;
2182 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2185 USI opval
= LESI (GET_H_GPR (FLD (f_r2
)), EXTSISI (FLD (f_simm16
)));
2186 SET_H_SYS_SR_F (opval
);
2187 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-f", 'x', opval
);
2194 /* l-sfleu: l.sfleu $rA,$rB */
2197 SEM_FN_NAME (or1k32bf
,l_sfleu
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2199 #define FLD(f) abuf->fields.sfmt_l_sll.f
2200 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2201 int UNUSED written
= 0;
2202 IADDR UNUSED pc
= abuf
->addr
;
2203 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2206 USI opval
= LEUSI (GET_H_GPR (FLD (f_r2
)), GET_H_GPR (FLD (f_r3
)));
2207 SET_H_SYS_SR_F (opval
);
2208 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-f", 'x', opval
);
2215 /* l-sfleui: l.sfleui $rA,$simm16 */
2218 SEM_FN_NAME (or1k32bf
,l_sfleui
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2220 #define FLD(f) abuf->fields.sfmt_l_lwz.f
2221 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2222 int UNUSED written
= 0;
2223 IADDR UNUSED pc
= abuf
->addr
;
2224 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2227 USI opval
= LEUSI (GET_H_GPR (FLD (f_r2
)), EXTSISI (FLD (f_simm16
)));
2228 SET_H_SYS_SR_F (opval
);
2229 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-f", 'x', opval
);
2236 /* l-sfeq: l.sfeq $rA,$rB */
2239 SEM_FN_NAME (or1k32bf
,l_sfeq
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2241 #define FLD(f) abuf->fields.sfmt_l_sll.f
2242 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2243 int UNUSED written
= 0;
2244 IADDR UNUSED pc
= abuf
->addr
;
2245 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2248 USI opval
= EQSI (GET_H_GPR (FLD (f_r2
)), GET_H_GPR (FLD (f_r3
)));
2249 SET_H_SYS_SR_F (opval
);
2250 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-f", 'x', opval
);
2257 /* l-sfeqi: l.sfeqi $rA,$simm16 */
2260 SEM_FN_NAME (or1k32bf
,l_sfeqi
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2262 #define FLD(f) abuf->fields.sfmt_l_lwz.f
2263 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2264 int UNUSED written
= 0;
2265 IADDR UNUSED pc
= abuf
->addr
;
2266 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2269 USI opval
= EQSI (GET_H_GPR (FLD (f_r2
)), EXTSISI (FLD (f_simm16
)));
2270 SET_H_SYS_SR_F (opval
);
2271 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-f", 'x', opval
);
2278 /* l-sfne: l.sfne $rA,$rB */
2281 SEM_FN_NAME (or1k32bf
,l_sfne
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2283 #define FLD(f) abuf->fields.sfmt_l_sll.f
2284 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2285 int UNUSED written
= 0;
2286 IADDR UNUSED pc
= abuf
->addr
;
2287 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2290 USI opval
= NESI (GET_H_GPR (FLD (f_r2
)), GET_H_GPR (FLD (f_r3
)));
2291 SET_H_SYS_SR_F (opval
);
2292 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-f", 'x', opval
);
2299 /* l-sfnei: l.sfnei $rA,$simm16 */
2302 SEM_FN_NAME (or1k32bf
,l_sfnei
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2304 #define FLD(f) abuf->fields.sfmt_l_lwz.f
2305 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2306 int UNUSED written
= 0;
2307 IADDR UNUSED pc
= abuf
->addr
;
2308 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2311 USI opval
= NESI (GET_H_GPR (FLD (f_r2
)), EXTSISI (FLD (f_simm16
)));
2312 SET_H_SYS_SR_F (opval
);
2313 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-f", 'x', opval
);
2320 /* l-mac: l.mac $rA,$rB */
2323 SEM_FN_NAME (or1k32bf
,l_mac
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2325 #define FLD(f) abuf->fields.sfmt_l_sll.f
2326 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2327 int UNUSED written
= 0;
2328 IADDR UNUSED pc
= abuf
->addr
;
2329 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2336 tmp_prod
= MULDI (EXTSIDI (GET_H_GPR (FLD (f_r2
))), EXTSIDI (GET_H_GPR (FLD (f_r3
))));
2337 tmp_mac
= JOINSIDI (GET_H_MAC_MACHI (), GET_H_MAC_MACLO ());
2338 tmp_result
= ADDDI (tmp_prod
, tmp_mac
);
2340 SI opval
= SUBWORDDISI (tmp_result
, 0);
2341 SET_H_MAC_MACHI (opval
);
2342 CGEN_TRACE_RESULT (current_cpu
, abuf
, "mac-machi", 'x', opval
);
2345 SI opval
= SUBWORDDISI (tmp_result
, 1);
2346 SET_H_MAC_MACLO (opval
);
2347 CGEN_TRACE_RESULT (current_cpu
, abuf
, "mac-maclo", 'x', opval
);
2350 BI opval
= ADDOFDI (tmp_prod
, tmp_mac
, 0);
2351 SET_H_SYS_SR_OV (opval
);
2352 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-ov", 'x', opval
);
2355 if (ANDIF (GET_H_SYS_SR_OV (), GET_H_SYS_SR_OVE ())) {
2356 or1k32bf_exception (current_cpu
, pc
, EXCEPT_RANGE
);
2364 /* l-maci: l.maci $rA,${simm16} */
2367 SEM_FN_NAME (or1k32bf
,l_maci
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2369 #define FLD(f) abuf->fields.sfmt_l_lwz.f
2370 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2371 int UNUSED written
= 0;
2372 IADDR UNUSED pc
= abuf
->addr
;
2373 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2380 tmp_prod
= MULDI (EXTSIDI (GET_H_GPR (FLD (f_r2
))), EXTSIDI (FLD (f_simm16
)));
2381 tmp_mac
= JOINSIDI (GET_H_MAC_MACHI (), GET_H_MAC_MACLO ());
2382 tmp_result
= ADDDI (tmp_mac
, tmp_prod
);
2384 SI opval
= SUBWORDDISI (tmp_result
, 0);
2385 SET_H_MAC_MACHI (opval
);
2386 CGEN_TRACE_RESULT (current_cpu
, abuf
, "mac-machi", 'x', opval
);
2389 SI opval
= SUBWORDDISI (tmp_result
, 1);
2390 SET_H_MAC_MACLO (opval
);
2391 CGEN_TRACE_RESULT (current_cpu
, abuf
, "mac-maclo", 'x', opval
);
2394 BI opval
= ADDOFDI (tmp_prod
, tmp_mac
, 0);
2395 SET_H_SYS_SR_OV (opval
);
2396 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-ov", 'x', opval
);
2399 if (ANDIF (GET_H_SYS_SR_OV (), GET_H_SYS_SR_OVE ())) {
2400 or1k32bf_exception (current_cpu
, pc
, EXCEPT_RANGE
);
2408 /* l-macu: l.macu $rA,$rB */
2411 SEM_FN_NAME (or1k32bf
,l_macu
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2413 #define FLD(f) abuf->fields.sfmt_l_sll.f
2414 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2415 int UNUSED written
= 0;
2416 IADDR UNUSED pc
= abuf
->addr
;
2417 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2424 tmp_prod
= MULDI (ZEXTSIDI (GET_H_GPR (FLD (f_r2
))), ZEXTSIDI (GET_H_GPR (FLD (f_r3
))));
2425 tmp_mac
= JOINSIDI (GET_H_MAC_MACHI (), GET_H_MAC_MACLO ());
2426 tmp_result
= ADDDI (tmp_prod
, tmp_mac
);
2428 SI opval
= SUBWORDDISI (tmp_result
, 0);
2429 SET_H_MAC_MACHI (opval
);
2430 CGEN_TRACE_RESULT (current_cpu
, abuf
, "mac-machi", 'x', opval
);
2433 SI opval
= SUBWORDDISI (tmp_result
, 1);
2434 SET_H_MAC_MACLO (opval
);
2435 CGEN_TRACE_RESULT (current_cpu
, abuf
, "mac-maclo", 'x', opval
);
2438 BI opval
= ADDCFDI (tmp_prod
, tmp_mac
, 0);
2439 SET_H_SYS_SR_CY (opval
);
2440 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-cy", 'x', opval
);
2443 if (ANDIF (GET_H_SYS_SR_CY (), GET_H_SYS_SR_OVE ())) {
2444 or1k32bf_exception (current_cpu
, pc
, EXCEPT_RANGE
);
2452 /* l-msb: l.msb $rA,$rB */
2455 SEM_FN_NAME (or1k32bf
,l_msb
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2457 #define FLD(f) abuf->fields.sfmt_l_sll.f
2458 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2459 int UNUSED written
= 0;
2460 IADDR UNUSED pc
= abuf
->addr
;
2461 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2468 tmp_prod
= MULDI (EXTSIDI (GET_H_GPR (FLD (f_r2
))), EXTSIDI (GET_H_GPR (FLD (f_r3
))));
2469 tmp_mac
= JOINSIDI (GET_H_MAC_MACHI (), GET_H_MAC_MACLO ());
2470 tmp_result
= SUBDI (tmp_mac
, tmp_prod
);
2472 SI opval
= SUBWORDDISI (tmp_result
, 0);
2473 SET_H_MAC_MACHI (opval
);
2474 CGEN_TRACE_RESULT (current_cpu
, abuf
, "mac-machi", 'x', opval
);
2477 SI opval
= SUBWORDDISI (tmp_result
, 1);
2478 SET_H_MAC_MACLO (opval
);
2479 CGEN_TRACE_RESULT (current_cpu
, abuf
, "mac-maclo", 'x', opval
);
2482 BI opval
= SUBOFDI (tmp_mac
, tmp_result
, 0);
2483 SET_H_SYS_SR_OV (opval
);
2484 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-ov", 'x', opval
);
2487 if (ANDIF (GET_H_SYS_SR_OV (), GET_H_SYS_SR_OVE ())) {
2488 or1k32bf_exception (current_cpu
, pc
, EXCEPT_RANGE
);
2496 /* l-msbu: l.msbu $rA,$rB */
2499 SEM_FN_NAME (or1k32bf
,l_msbu
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2501 #define FLD(f) abuf->fields.sfmt_l_sll.f
2502 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2503 int UNUSED written
= 0;
2504 IADDR UNUSED pc
= abuf
->addr
;
2505 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2512 tmp_prod
= MULDI (ZEXTSIDI (GET_H_GPR (FLD (f_r2
))), ZEXTSIDI (GET_H_GPR (FLD (f_r3
))));
2513 tmp_mac
= JOINSIDI (GET_H_MAC_MACHI (), GET_H_MAC_MACLO ());
2514 tmp_result
= SUBDI (tmp_mac
, tmp_prod
);
2516 SI opval
= SUBWORDDISI (tmp_result
, 0);
2517 SET_H_MAC_MACHI (opval
);
2518 CGEN_TRACE_RESULT (current_cpu
, abuf
, "mac-machi", 'x', opval
);
2521 SI opval
= SUBWORDDISI (tmp_result
, 1);
2522 SET_H_MAC_MACLO (opval
);
2523 CGEN_TRACE_RESULT (current_cpu
, abuf
, "mac-maclo", 'x', opval
);
2526 BI opval
= SUBCFDI (tmp_mac
, tmp_result
, 0);
2527 SET_H_SYS_SR_CY (opval
);
2528 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-cy", 'x', opval
);
2531 if (ANDIF (GET_H_SYS_SR_CY (), GET_H_SYS_SR_OVE ())) {
2532 or1k32bf_exception (current_cpu
, pc
, EXCEPT_RANGE
);
2540 /* l-cust1: l.cust1 */
2543 SEM_FN_NAME (or1k32bf
,l_cust1
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2545 #define FLD(f) abuf->fields.sfmt_empty.f
2546 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2547 int UNUSED written
= 0;
2548 IADDR UNUSED pc
= abuf
->addr
;
2549 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2557 /* l-cust2: l.cust2 */
2560 SEM_FN_NAME (or1k32bf
,l_cust2
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2562 #define FLD(f) abuf->fields.sfmt_empty.f
2563 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2564 int UNUSED written
= 0;
2565 IADDR UNUSED pc
= abuf
->addr
;
2566 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2574 /* l-cust3: l.cust3 */
2577 SEM_FN_NAME (or1k32bf
,l_cust3
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2579 #define FLD(f) abuf->fields.sfmt_empty.f
2580 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2581 int UNUSED written
= 0;
2582 IADDR UNUSED pc
= abuf
->addr
;
2583 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2591 /* l-cust4: l.cust4 */
2594 SEM_FN_NAME (or1k32bf
,l_cust4
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2596 #define FLD(f) abuf->fields.sfmt_empty.f
2597 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2598 int UNUSED written
= 0;
2599 IADDR UNUSED pc
= abuf
->addr
;
2600 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2608 /* l-cust5: l.cust5 */
2611 SEM_FN_NAME (or1k32bf
,l_cust5
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2613 #define FLD(f) abuf->fields.sfmt_empty.f
2614 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2615 int UNUSED written
= 0;
2616 IADDR UNUSED pc
= abuf
->addr
;
2617 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2625 /* l-cust6: l.cust6 */
2628 SEM_FN_NAME (or1k32bf
,l_cust6
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2630 #define FLD(f) abuf->fields.sfmt_empty.f
2631 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2632 int UNUSED written
= 0;
2633 IADDR UNUSED pc
= abuf
->addr
;
2634 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2642 /* l-cust7: l.cust7 */
2645 SEM_FN_NAME (or1k32bf
,l_cust7
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2647 #define FLD(f) abuf->fields.sfmt_empty.f
2648 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2649 int UNUSED written
= 0;
2650 IADDR UNUSED pc
= abuf
->addr
;
2651 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2659 /* l-cust8: l.cust8 */
2662 SEM_FN_NAME (or1k32bf
,l_cust8
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2664 #define FLD(f) abuf->fields.sfmt_empty.f
2665 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2666 int UNUSED written
= 0;
2667 IADDR UNUSED pc
= abuf
->addr
;
2668 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2676 /* lf-add-s: lf.add.s $rDSF,$rASF,$rBSF */
2679 SEM_FN_NAME (or1k32bf
,lf_add_s
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2681 #define FLD(f) abuf->fields.sfmt_l_sll.f
2682 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2683 int UNUSED written
= 0;
2684 IADDR UNUSED pc
= abuf
->addr
;
2685 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2688 SF opval
= CGEN_CPU_FPU (current_cpu
)->ops
->addsf (CGEN_CPU_FPU (current_cpu
), GET_H_FSR (FLD (f_r2
)), GET_H_FSR (FLD (f_r3
)));
2689 SET_H_FSR (FLD (f_r1
), opval
);
2690 CGEN_TRACE_RESULT (current_cpu
, abuf
, "fsr", 'f', opval
);
2697 /* lf-add-d32: lf.add.d $rDD32F,$rAD32F,$rBD32F */
2700 SEM_FN_NAME (or1k32bf
,lf_add_d32
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2702 #define FLD(f) abuf->fields.sfmt_lf_add_d32.f
2703 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2704 int UNUSED written
= 0;
2705 IADDR UNUSED pc
= abuf
->addr
;
2706 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2709 DF opval
= CGEN_CPU_FPU (current_cpu
)->ops
->adddf (CGEN_CPU_FPU (current_cpu
), GET_H_FD32R (FLD (f_rad32
)), GET_H_FD32R (FLD (f_rbd32
)));
2710 SET_H_FD32R (FLD (f_rdd32
), opval
);
2711 CGEN_TRACE_RESULT (current_cpu
, abuf
, "fd32r", 'f', opval
);
2718 /* lf-sub-s: lf.sub.s $rDSF,$rASF,$rBSF */
2721 SEM_FN_NAME (or1k32bf
,lf_sub_s
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2723 #define FLD(f) abuf->fields.sfmt_l_sll.f
2724 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2725 int UNUSED written
= 0;
2726 IADDR UNUSED pc
= abuf
->addr
;
2727 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2730 SF opval
= CGEN_CPU_FPU (current_cpu
)->ops
->subsf (CGEN_CPU_FPU (current_cpu
), GET_H_FSR (FLD (f_r2
)), GET_H_FSR (FLD (f_r3
)));
2731 SET_H_FSR (FLD (f_r1
), opval
);
2732 CGEN_TRACE_RESULT (current_cpu
, abuf
, "fsr", 'f', opval
);
2739 /* lf-sub-d32: lf.sub.d $rDD32F,$rAD32F,$rBD32F */
2742 SEM_FN_NAME (or1k32bf
,lf_sub_d32
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2744 #define FLD(f) abuf->fields.sfmt_lf_add_d32.f
2745 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2746 int UNUSED written
= 0;
2747 IADDR UNUSED pc
= abuf
->addr
;
2748 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2751 DF opval
= CGEN_CPU_FPU (current_cpu
)->ops
->subdf (CGEN_CPU_FPU (current_cpu
), GET_H_FD32R (FLD (f_rad32
)), GET_H_FD32R (FLD (f_rbd32
)));
2752 SET_H_FD32R (FLD (f_rdd32
), opval
);
2753 CGEN_TRACE_RESULT (current_cpu
, abuf
, "fd32r", 'f', opval
);
2760 /* lf-mul-s: lf.mul.s $rDSF,$rASF,$rBSF */
2763 SEM_FN_NAME (or1k32bf
,lf_mul_s
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2765 #define FLD(f) abuf->fields.sfmt_l_sll.f
2766 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2767 int UNUSED written
= 0;
2768 IADDR UNUSED pc
= abuf
->addr
;
2769 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2772 SF opval
= CGEN_CPU_FPU (current_cpu
)->ops
->mulsf (CGEN_CPU_FPU (current_cpu
), GET_H_FSR (FLD (f_r2
)), GET_H_FSR (FLD (f_r3
)));
2773 SET_H_FSR (FLD (f_r1
), opval
);
2774 CGEN_TRACE_RESULT (current_cpu
, abuf
, "fsr", 'f', opval
);
2781 /* lf-mul-d32: lf.mul.d $rDD32F,$rAD32F,$rBD32F */
2784 SEM_FN_NAME (or1k32bf
,lf_mul_d32
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2786 #define FLD(f) abuf->fields.sfmt_lf_add_d32.f
2787 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2788 int UNUSED written
= 0;
2789 IADDR UNUSED pc
= abuf
->addr
;
2790 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2793 DF opval
= CGEN_CPU_FPU (current_cpu
)->ops
->muldf (CGEN_CPU_FPU (current_cpu
), GET_H_FD32R (FLD (f_rad32
)), GET_H_FD32R (FLD (f_rbd32
)));
2794 SET_H_FD32R (FLD (f_rdd32
), opval
);
2795 CGEN_TRACE_RESULT (current_cpu
, abuf
, "fd32r", 'f', opval
);
2802 /* lf-div-s: lf.div.s $rDSF,$rASF,$rBSF */
2805 SEM_FN_NAME (or1k32bf
,lf_div_s
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2807 #define FLD(f) abuf->fields.sfmt_l_sll.f
2808 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2809 int UNUSED written
= 0;
2810 IADDR UNUSED pc
= abuf
->addr
;
2811 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2814 SF opval
= CGEN_CPU_FPU (current_cpu
)->ops
->divsf (CGEN_CPU_FPU (current_cpu
), GET_H_FSR (FLD (f_r2
)), GET_H_FSR (FLD (f_r3
)));
2815 SET_H_FSR (FLD (f_r1
), opval
);
2816 CGEN_TRACE_RESULT (current_cpu
, abuf
, "fsr", 'f', opval
);
2823 /* lf-div-d32: lf.div.d $rDD32F,$rAD32F,$rBD32F */
2826 SEM_FN_NAME (or1k32bf
,lf_div_d32
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2828 #define FLD(f) abuf->fields.sfmt_lf_add_d32.f
2829 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2830 int UNUSED written
= 0;
2831 IADDR UNUSED pc
= abuf
->addr
;
2832 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2835 DF opval
= CGEN_CPU_FPU (current_cpu
)->ops
->divdf (CGEN_CPU_FPU (current_cpu
), GET_H_FD32R (FLD (f_rad32
)), GET_H_FD32R (FLD (f_rbd32
)));
2836 SET_H_FD32R (FLD (f_rdd32
), opval
);
2837 CGEN_TRACE_RESULT (current_cpu
, abuf
, "fd32r", 'f', opval
);
2844 /* lf-rem-s: lf.rem.s $rDSF,$rASF,$rBSF */
2847 SEM_FN_NAME (or1k32bf
,lf_rem_s
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2849 #define FLD(f) abuf->fields.sfmt_l_sll.f
2850 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2851 int UNUSED written
= 0;
2852 IADDR UNUSED pc
= abuf
->addr
;
2853 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2856 SF opval
= CGEN_CPU_FPU (current_cpu
)->ops
->remsf (CGEN_CPU_FPU (current_cpu
), GET_H_FSR (FLD (f_r2
)), GET_H_FSR (FLD (f_r3
)));
2857 SET_H_FSR (FLD (f_r1
), opval
);
2858 CGEN_TRACE_RESULT (current_cpu
, abuf
, "fsr", 'f', opval
);
2865 /* lf-rem-d32: lf.rem.d $rDD32F,$rAD32F,$rBD32F */
2868 SEM_FN_NAME (or1k32bf
,lf_rem_d32
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2870 #define FLD(f) abuf->fields.sfmt_lf_add_d32.f
2871 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2872 int UNUSED written
= 0;
2873 IADDR UNUSED pc
= abuf
->addr
;
2874 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2877 DF opval
= CGEN_CPU_FPU (current_cpu
)->ops
->remdf (CGEN_CPU_FPU (current_cpu
), GET_H_FD32R (FLD (f_rad32
)), GET_H_FD32R (FLD (f_rbd32
)));
2878 SET_H_FD32R (FLD (f_rdd32
), opval
);
2879 CGEN_TRACE_RESULT (current_cpu
, abuf
, "fd32r", 'f', opval
);
2886 /* lf-itof-s: lf.itof.s $rDSF,$rA */
2889 SEM_FN_NAME (or1k32bf
,lf_itof_s
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2891 #define FLD(f) abuf->fields.sfmt_l_slli.f
2892 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2893 int UNUSED written
= 0;
2894 IADDR UNUSED pc
= abuf
->addr
;
2895 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2898 SF opval
= CGEN_CPU_FPU (current_cpu
)->ops
->floatsisf (CGEN_CPU_FPU (current_cpu
), (GET_H_SYS_FPCSR_RM () == 0) ? (1) : (GET_H_SYS_FPCSR_RM () == 1) ? (3) : (GET_H_SYS_FPCSR_RM () == 2) ? (4) : (5), TRUNCSISI (GET_H_GPR (FLD (f_r2
))));
2899 SET_H_FSR (FLD (f_r1
), opval
);
2900 CGEN_TRACE_RESULT (current_cpu
, abuf
, "fsr", 'f', opval
);
2907 /* lf-itof-d32: lf.itof.d $rDD32F,$rADI */
2910 SEM_FN_NAME (or1k32bf
,lf_itof_d32
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2912 #define FLD(f) abuf->fields.sfmt_lf_add_d32.f
2913 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2914 int UNUSED written
= 0;
2915 IADDR UNUSED pc
= abuf
->addr
;
2916 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2919 DF opval
= CGEN_CPU_FPU (current_cpu
)->ops
->floatdidf (CGEN_CPU_FPU (current_cpu
), (GET_H_SYS_FPCSR_RM () == 0) ? (1) : (GET_H_SYS_FPCSR_RM () == 1) ? (3) : (GET_H_SYS_FPCSR_RM () == 2) ? (4) : (5), GET_H_I64R (FLD (f_rad32
)));
2920 SET_H_FD32R (FLD (f_rdd32
), opval
);
2921 CGEN_TRACE_RESULT (current_cpu
, abuf
, "fd32r", 'f', opval
);
2928 /* lf-ftoi-s: lf.ftoi.s $rD,$rASF */
2931 SEM_FN_NAME (or1k32bf
,lf_ftoi_s
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2933 #define FLD(f) abuf->fields.sfmt_l_slli.f
2934 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2935 int UNUSED written
= 0;
2936 IADDR UNUSED pc
= abuf
->addr
;
2937 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2940 SI opval
= EXTSISI (CGEN_CPU_FPU (current_cpu
)->ops
->fixsfsi (CGEN_CPU_FPU (current_cpu
), (GET_H_SYS_FPCSR_RM () == 0) ? (1) : (GET_H_SYS_FPCSR_RM () == 1) ? (3) : (GET_H_SYS_FPCSR_RM () == 2) ? (4) : (5), GET_H_FSR (FLD (f_r2
))));
2941 SET_H_GPR (FLD (f_r1
), opval
);
2942 CGEN_TRACE_RESULT (current_cpu
, abuf
, "gpr", 'x', opval
);
2949 /* lf-ftoi-d32: lf.ftoi.d $rDDI,$rAD32F */
2952 SEM_FN_NAME (or1k32bf
,lf_ftoi_d32
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2954 #define FLD(f) abuf->fields.sfmt_lf_add_d32.f
2955 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2956 int UNUSED written
= 0;
2957 IADDR UNUSED pc
= abuf
->addr
;
2958 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2961 DI opval
= CGEN_CPU_FPU (current_cpu
)->ops
->fixdfdi (CGEN_CPU_FPU (current_cpu
), (GET_H_SYS_FPCSR_RM () == 0) ? (1) : (GET_H_SYS_FPCSR_RM () == 1) ? (3) : (GET_H_SYS_FPCSR_RM () == 2) ? (4) : (5), GET_H_FD32R (FLD (f_rad32
)));
2962 SET_H_I64R (FLD (f_rdd32
), opval
);
2963 CGEN_TRACE_RESULT (current_cpu
, abuf
, "i64r", 'D', opval
);
2970 /* lf-sfeq-s: lf.sfeq.s $rASF,$rBSF */
2973 SEM_FN_NAME (or1k32bf
,lf_sfeq_s
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2975 #define FLD(f) abuf->fields.sfmt_l_sll.f
2976 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2977 int UNUSED written
= 0;
2978 IADDR UNUSED pc
= abuf
->addr
;
2979 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
2982 BI opval
= CGEN_CPU_FPU (current_cpu
)->ops
->eqsf (CGEN_CPU_FPU (current_cpu
), GET_H_FSR (FLD (f_r2
)), GET_H_FSR (FLD (f_r3
)));
2983 SET_H_SYS_SR_F (opval
);
2984 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-f", 'x', opval
);
2991 /* lf-sfeq-d32: lf.sfeq.d $rAD32F,$rBD32F */
2994 SEM_FN_NAME (or1k32bf
,lf_sfeq_d32
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
2996 #define FLD(f) abuf->fields.sfmt_lf_add_d32.f
2997 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
2998 int UNUSED written
= 0;
2999 IADDR UNUSED pc
= abuf
->addr
;
3000 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3003 BI opval
= CGEN_CPU_FPU (current_cpu
)->ops
->eqdf (CGEN_CPU_FPU (current_cpu
), GET_H_FD32R (FLD (f_rad32
)), GET_H_FD32R (FLD (f_rbd32
)));
3004 SET_H_SYS_SR_F (opval
);
3005 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-f", 'x', opval
);
3012 /* lf-sfne-s: lf.sfne.s $rASF,$rBSF */
3015 SEM_FN_NAME (or1k32bf
,lf_sfne_s
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3017 #define FLD(f) abuf->fields.sfmt_l_sll.f
3018 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3019 int UNUSED written
= 0;
3020 IADDR UNUSED pc
= abuf
->addr
;
3021 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3024 BI opval
= CGEN_CPU_FPU (current_cpu
)->ops
->nesf (CGEN_CPU_FPU (current_cpu
), GET_H_FSR (FLD (f_r2
)), GET_H_FSR (FLD (f_r3
)));
3025 SET_H_SYS_SR_F (opval
);
3026 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-f", 'x', opval
);
3033 /* lf-sfne-d32: lf.sfne.d $rAD32F,$rBD32F */
3036 SEM_FN_NAME (or1k32bf
,lf_sfne_d32
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3038 #define FLD(f) abuf->fields.sfmt_lf_add_d32.f
3039 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3040 int UNUSED written
= 0;
3041 IADDR UNUSED pc
= abuf
->addr
;
3042 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3045 BI opval
= CGEN_CPU_FPU (current_cpu
)->ops
->nedf (CGEN_CPU_FPU (current_cpu
), GET_H_FD32R (FLD (f_rad32
)), GET_H_FD32R (FLD (f_rbd32
)));
3046 SET_H_SYS_SR_F (opval
);
3047 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-f", 'x', opval
);
3054 /* lf-sfge-s: lf.sfge.s $rASF,$rBSF */
3057 SEM_FN_NAME (or1k32bf
,lf_sfge_s
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3059 #define FLD(f) abuf->fields.sfmt_l_sll.f
3060 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3061 int UNUSED written
= 0;
3062 IADDR UNUSED pc
= abuf
->addr
;
3063 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3066 BI opval
= CGEN_CPU_FPU (current_cpu
)->ops
->gesf (CGEN_CPU_FPU (current_cpu
), GET_H_FSR (FLD (f_r2
)), GET_H_FSR (FLD (f_r3
)));
3067 SET_H_SYS_SR_F (opval
);
3068 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-f", 'x', opval
);
3075 /* lf-sfge-d32: lf.sfge.d $rAD32F,$rBD32F */
3078 SEM_FN_NAME (or1k32bf
,lf_sfge_d32
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3080 #define FLD(f) abuf->fields.sfmt_lf_add_d32.f
3081 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3082 int UNUSED written
= 0;
3083 IADDR UNUSED pc
= abuf
->addr
;
3084 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3087 BI opval
= CGEN_CPU_FPU (current_cpu
)->ops
->gedf (CGEN_CPU_FPU (current_cpu
), GET_H_FD32R (FLD (f_rad32
)), GET_H_FD32R (FLD (f_rbd32
)));
3088 SET_H_SYS_SR_F (opval
);
3089 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-f", 'x', opval
);
3096 /* lf-sfgt-s: lf.sfgt.s $rASF,$rBSF */
3099 SEM_FN_NAME (or1k32bf
,lf_sfgt_s
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3101 #define FLD(f) abuf->fields.sfmt_l_sll.f
3102 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3103 int UNUSED written
= 0;
3104 IADDR UNUSED pc
= abuf
->addr
;
3105 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3108 BI opval
= CGEN_CPU_FPU (current_cpu
)->ops
->gtsf (CGEN_CPU_FPU (current_cpu
), GET_H_FSR (FLD (f_r2
)), GET_H_FSR (FLD (f_r3
)));
3109 SET_H_SYS_SR_F (opval
);
3110 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-f", 'x', opval
);
3117 /* lf-sfgt-d32: lf.sfgt.d $rAD32F,$rBD32F */
3120 SEM_FN_NAME (or1k32bf
,lf_sfgt_d32
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3122 #define FLD(f) abuf->fields.sfmt_lf_add_d32.f
3123 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3124 int UNUSED written
= 0;
3125 IADDR UNUSED pc
= abuf
->addr
;
3126 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3129 BI opval
= CGEN_CPU_FPU (current_cpu
)->ops
->gtdf (CGEN_CPU_FPU (current_cpu
), GET_H_FD32R (FLD (f_rad32
)), GET_H_FD32R (FLD (f_rbd32
)));
3130 SET_H_SYS_SR_F (opval
);
3131 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-f", 'x', opval
);
3138 /* lf-sflt-s: lf.sflt.s $rASF,$rBSF */
3141 SEM_FN_NAME (or1k32bf
,lf_sflt_s
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3143 #define FLD(f) abuf->fields.sfmt_l_sll.f
3144 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3145 int UNUSED written
= 0;
3146 IADDR UNUSED pc
= abuf
->addr
;
3147 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3150 BI opval
= CGEN_CPU_FPU (current_cpu
)->ops
->ltsf (CGEN_CPU_FPU (current_cpu
), GET_H_FSR (FLD (f_r2
)), GET_H_FSR (FLD (f_r3
)));
3151 SET_H_SYS_SR_F (opval
);
3152 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-f", 'x', opval
);
3159 /* lf-sflt-d32: lf.sflt.d $rAD32F,$rBD32F */
3162 SEM_FN_NAME (or1k32bf
,lf_sflt_d32
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3164 #define FLD(f) abuf->fields.sfmt_lf_add_d32.f
3165 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3166 int UNUSED written
= 0;
3167 IADDR UNUSED pc
= abuf
->addr
;
3168 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3171 BI opval
= CGEN_CPU_FPU (current_cpu
)->ops
->ltdf (CGEN_CPU_FPU (current_cpu
), GET_H_FD32R (FLD (f_rad32
)), GET_H_FD32R (FLD (f_rbd32
)));
3172 SET_H_SYS_SR_F (opval
);
3173 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-f", 'x', opval
);
3180 /* lf-sfle-s: lf.sfle.s $rASF,$rBSF */
3183 SEM_FN_NAME (or1k32bf
,lf_sfle_s
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3185 #define FLD(f) abuf->fields.sfmt_l_sll.f
3186 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3187 int UNUSED written
= 0;
3188 IADDR UNUSED pc
= abuf
->addr
;
3189 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3192 BI opval
= CGEN_CPU_FPU (current_cpu
)->ops
->lesf (CGEN_CPU_FPU (current_cpu
), GET_H_FSR (FLD (f_r2
)), GET_H_FSR (FLD (f_r3
)));
3193 SET_H_SYS_SR_F (opval
);
3194 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-f", 'x', opval
);
3201 /* lf-sfle-d32: lf.sfle.d $rAD32F,$rBD32F */
3204 SEM_FN_NAME (or1k32bf
,lf_sfle_d32
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3206 #define FLD(f) abuf->fields.sfmt_lf_add_d32.f
3207 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3208 int UNUSED written
= 0;
3209 IADDR UNUSED pc
= abuf
->addr
;
3210 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3213 BI opval
= CGEN_CPU_FPU (current_cpu
)->ops
->ledf (CGEN_CPU_FPU (current_cpu
), GET_H_FD32R (FLD (f_rad32
)), GET_H_FD32R (FLD (f_rbd32
)));
3214 SET_H_SYS_SR_F (opval
);
3215 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-f", 'x', opval
);
3222 /* lf-sfueq-s: lf.sfueq.s $rASF,$rBSF */
3225 SEM_FN_NAME (or1k32bf
,lf_sfueq_s
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3227 #define FLD(f) abuf->fields.sfmt_l_sll.f
3228 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3229 int UNUSED written
= 0;
3230 IADDR UNUSED pc
= abuf
->addr
;
3231 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3234 BI opval
= ORBI (CGEN_CPU_FPU (current_cpu
)->ops
->unorderedsf (CGEN_CPU_FPU (current_cpu
), GET_H_FSR (FLD (f_r2
)), GET_H_FSR (FLD (f_r3
))), CGEN_CPU_FPU (current_cpu
)->ops
->eqsf (CGEN_CPU_FPU (current_cpu
), GET_H_FSR (FLD (f_r2
)), GET_H_FSR (FLD (f_r3
))));
3235 SET_H_SYS_SR_F (opval
);
3236 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-f", 'x', opval
);
3243 /* lf-sfueq-d32: lf.sfueq.d $rAD32F,$rBD32F */
3246 SEM_FN_NAME (or1k32bf
,lf_sfueq_d32
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3248 #define FLD(f) abuf->fields.sfmt_lf_add_d32.f
3249 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3250 int UNUSED written
= 0;
3251 IADDR UNUSED pc
= abuf
->addr
;
3252 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3255 BI opval
= ORBI (CGEN_CPU_FPU (current_cpu
)->ops
->unordereddf (CGEN_CPU_FPU (current_cpu
), GET_H_FD32R (FLD (f_rad32
)), GET_H_FD32R (FLD (f_rbd32
))), CGEN_CPU_FPU (current_cpu
)->ops
->eqdf (CGEN_CPU_FPU (current_cpu
), GET_H_FD32R (FLD (f_rad32
)), GET_H_FD32R (FLD (f_rbd32
))));
3256 SET_H_SYS_SR_F (opval
);
3257 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-f", 'x', opval
);
3264 /* lf-sfune-s: lf.sfune.s $rASF,$rBSF */
3267 SEM_FN_NAME (or1k32bf
,lf_sfune_s
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3269 #define FLD(f) abuf->fields.sfmt_l_sll.f
3270 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3271 int UNUSED written
= 0;
3272 IADDR UNUSED pc
= abuf
->addr
;
3273 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3276 BI opval
= ORBI (CGEN_CPU_FPU (current_cpu
)->ops
->unorderedsf (CGEN_CPU_FPU (current_cpu
), GET_H_FSR (FLD (f_r2
)), GET_H_FSR (FLD (f_r3
))), CGEN_CPU_FPU (current_cpu
)->ops
->nesf (CGEN_CPU_FPU (current_cpu
), GET_H_FSR (FLD (f_r2
)), GET_H_FSR (FLD (f_r3
))));
3277 SET_H_SYS_SR_F (opval
);
3278 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-f", 'x', opval
);
3285 /* lf-sfune-d32: lf.sfune.d $rAD32F,$rBD32F */
3288 SEM_FN_NAME (or1k32bf
,lf_sfune_d32
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3290 #define FLD(f) abuf->fields.sfmt_lf_add_d32.f
3291 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3292 int UNUSED written
= 0;
3293 IADDR UNUSED pc
= abuf
->addr
;
3294 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3297 BI opval
= ORBI (CGEN_CPU_FPU (current_cpu
)->ops
->unordereddf (CGEN_CPU_FPU (current_cpu
), GET_H_FD32R (FLD (f_rad32
)), GET_H_FD32R (FLD (f_rbd32
))), CGEN_CPU_FPU (current_cpu
)->ops
->nedf (CGEN_CPU_FPU (current_cpu
), GET_H_FD32R (FLD (f_rad32
)), GET_H_FD32R (FLD (f_rbd32
))));
3298 SET_H_SYS_SR_F (opval
);
3299 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-f", 'x', opval
);
3306 /* lf-sfugt-s: lf.sfugt.s $rASF,$rBSF */
3309 SEM_FN_NAME (or1k32bf
,lf_sfugt_s
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3311 #define FLD(f) abuf->fields.sfmt_l_sll.f
3312 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3313 int UNUSED written
= 0;
3314 IADDR UNUSED pc
= abuf
->addr
;
3315 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3318 BI opval
= ORBI (CGEN_CPU_FPU (current_cpu
)->ops
->unorderedsf (CGEN_CPU_FPU (current_cpu
), GET_H_FSR (FLD (f_r2
)), GET_H_FSR (FLD (f_r3
))), CGEN_CPU_FPU (current_cpu
)->ops
->gtsf (CGEN_CPU_FPU (current_cpu
), GET_H_FSR (FLD (f_r2
)), GET_H_FSR (FLD (f_r3
))));
3319 SET_H_SYS_SR_F (opval
);
3320 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-f", 'x', opval
);
3327 /* lf-sfugt-d32: lf.sfugt.d $rAD32F,$rBD32F */
3330 SEM_FN_NAME (or1k32bf
,lf_sfugt_d32
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3332 #define FLD(f) abuf->fields.sfmt_lf_add_d32.f
3333 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3334 int UNUSED written
= 0;
3335 IADDR UNUSED pc
= abuf
->addr
;
3336 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3339 BI opval
= ORBI (CGEN_CPU_FPU (current_cpu
)->ops
->unordereddf (CGEN_CPU_FPU (current_cpu
), GET_H_FD32R (FLD (f_rad32
)), GET_H_FD32R (FLD (f_rbd32
))), CGEN_CPU_FPU (current_cpu
)->ops
->gtdf (CGEN_CPU_FPU (current_cpu
), GET_H_FD32R (FLD (f_rad32
)), GET_H_FD32R (FLD (f_rbd32
))));
3340 SET_H_SYS_SR_F (opval
);
3341 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-f", 'x', opval
);
3348 /* lf-sfuge-s: lf.sfuge.s $rASF,$rBSF */
3351 SEM_FN_NAME (or1k32bf
,lf_sfuge_s
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3353 #define FLD(f) abuf->fields.sfmt_l_sll.f
3354 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3355 int UNUSED written
= 0;
3356 IADDR UNUSED pc
= abuf
->addr
;
3357 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3360 BI opval
= ORBI (CGEN_CPU_FPU (current_cpu
)->ops
->unorderedsf (CGEN_CPU_FPU (current_cpu
), GET_H_FSR (FLD (f_r2
)), GET_H_FSR (FLD (f_r3
))), CGEN_CPU_FPU (current_cpu
)->ops
->gesf (CGEN_CPU_FPU (current_cpu
), GET_H_FSR (FLD (f_r2
)), GET_H_FSR (FLD (f_r3
))));
3361 SET_H_SYS_SR_F (opval
);
3362 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-f", 'x', opval
);
3369 /* lf-sfuge-d32: lf.sfuge.d $rAD32F,$rBD32F */
3372 SEM_FN_NAME (or1k32bf
,lf_sfuge_d32
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3374 #define FLD(f) abuf->fields.sfmt_lf_add_d32.f
3375 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3376 int UNUSED written
= 0;
3377 IADDR UNUSED pc
= abuf
->addr
;
3378 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3381 BI opval
= ORBI (CGEN_CPU_FPU (current_cpu
)->ops
->unordereddf (CGEN_CPU_FPU (current_cpu
), GET_H_FD32R (FLD (f_rad32
)), GET_H_FD32R (FLD (f_rbd32
))), CGEN_CPU_FPU (current_cpu
)->ops
->gedf (CGEN_CPU_FPU (current_cpu
), GET_H_FD32R (FLD (f_rad32
)), GET_H_FD32R (FLD (f_rbd32
))));
3382 SET_H_SYS_SR_F (opval
);
3383 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-f", 'x', opval
);
3390 /* lf-sfult-s: lf.sfult.s $rASF,$rBSF */
3393 SEM_FN_NAME (or1k32bf
,lf_sfult_s
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3395 #define FLD(f) abuf->fields.sfmt_l_sll.f
3396 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3397 int UNUSED written
= 0;
3398 IADDR UNUSED pc
= abuf
->addr
;
3399 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3402 BI opval
= ORBI (CGEN_CPU_FPU (current_cpu
)->ops
->unorderedsf (CGEN_CPU_FPU (current_cpu
), GET_H_FSR (FLD (f_r2
)), GET_H_FSR (FLD (f_r3
))), CGEN_CPU_FPU (current_cpu
)->ops
->ltsf (CGEN_CPU_FPU (current_cpu
), GET_H_FSR (FLD (f_r2
)), GET_H_FSR (FLD (f_r3
))));
3403 SET_H_SYS_SR_F (opval
);
3404 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-f", 'x', opval
);
3411 /* lf-sfult-d32: lf.sfult.d $rAD32F,$rBD32F */
3414 SEM_FN_NAME (or1k32bf
,lf_sfult_d32
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3416 #define FLD(f) abuf->fields.sfmt_lf_add_d32.f
3417 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3418 int UNUSED written
= 0;
3419 IADDR UNUSED pc
= abuf
->addr
;
3420 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3423 BI opval
= ORBI (CGEN_CPU_FPU (current_cpu
)->ops
->unordereddf (CGEN_CPU_FPU (current_cpu
), GET_H_FD32R (FLD (f_rad32
)), GET_H_FD32R (FLD (f_rbd32
))), CGEN_CPU_FPU (current_cpu
)->ops
->ltdf (CGEN_CPU_FPU (current_cpu
), GET_H_FD32R (FLD (f_rad32
)), GET_H_FD32R (FLD (f_rbd32
))));
3424 SET_H_SYS_SR_F (opval
);
3425 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-f", 'x', opval
);
3432 /* lf-sfule-s: lf.sfule.s $rASF,$rBSF */
3435 SEM_FN_NAME (or1k32bf
,lf_sfule_s
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3437 #define FLD(f) abuf->fields.sfmt_l_sll.f
3438 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3439 int UNUSED written
= 0;
3440 IADDR UNUSED pc
= abuf
->addr
;
3441 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3444 BI opval
= ORBI (CGEN_CPU_FPU (current_cpu
)->ops
->unorderedsf (CGEN_CPU_FPU (current_cpu
), GET_H_FSR (FLD (f_r2
)), GET_H_FSR (FLD (f_r3
))), CGEN_CPU_FPU (current_cpu
)->ops
->lesf (CGEN_CPU_FPU (current_cpu
), GET_H_FSR (FLD (f_r2
)), GET_H_FSR (FLD (f_r3
))));
3445 SET_H_SYS_SR_F (opval
);
3446 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-f", 'x', opval
);
3453 /* lf-sfule-d32: lf.sfule.d $rAD32F,$rBD32F */
3456 SEM_FN_NAME (or1k32bf
,lf_sfule_d32
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3458 #define FLD(f) abuf->fields.sfmt_lf_add_d32.f
3459 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3460 int UNUSED written
= 0;
3461 IADDR UNUSED pc
= abuf
->addr
;
3462 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3465 BI opval
= ORBI (CGEN_CPU_FPU (current_cpu
)->ops
->unordereddf (CGEN_CPU_FPU (current_cpu
), GET_H_FD32R (FLD (f_rad32
)), GET_H_FD32R (FLD (f_rbd32
))), CGEN_CPU_FPU (current_cpu
)->ops
->ledf (CGEN_CPU_FPU (current_cpu
), GET_H_FD32R (FLD (f_rad32
)), GET_H_FD32R (FLD (f_rbd32
))));
3466 SET_H_SYS_SR_F (opval
);
3467 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-f", 'x', opval
);
3474 /* lf-sfun-s: lf.sfun.s $rASF,$rBSF */
3477 SEM_FN_NAME (or1k32bf
,lf_sfun_s
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3479 #define FLD(f) abuf->fields.sfmt_l_sll.f
3480 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3481 int UNUSED written
= 0;
3482 IADDR UNUSED pc
= abuf
->addr
;
3483 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3486 BI opval
= CGEN_CPU_FPU (current_cpu
)->ops
->unorderedsf (CGEN_CPU_FPU (current_cpu
), GET_H_FSR (FLD (f_r2
)), GET_H_FSR (FLD (f_r3
)));
3487 SET_H_SYS_SR_F (opval
);
3488 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-f", 'x', opval
);
3495 /* lf-sfun-d32: lf.sfun.d $rAD32F,$rBD32F */
3498 SEM_FN_NAME (or1k32bf
,lf_sfun_d32
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3500 #define FLD(f) abuf->fields.sfmt_lf_add_d32.f
3501 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3502 int UNUSED written
= 0;
3503 IADDR UNUSED pc
= abuf
->addr
;
3504 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3507 BI opval
= CGEN_CPU_FPU (current_cpu
)->ops
->unordereddf (CGEN_CPU_FPU (current_cpu
), GET_H_FD32R (FLD (f_rad32
)), GET_H_FD32R (FLD (f_rbd32
)));
3508 SET_H_SYS_SR_F (opval
);
3509 CGEN_TRACE_RESULT (current_cpu
, abuf
, "sys-sr-f", 'x', opval
);
3516 /* lf-madd-s: lf.madd.s $rDSF,$rASF,$rBSF */
3519 SEM_FN_NAME (or1k32bf
,lf_madd_s
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3521 #define FLD(f) abuf->fields.sfmt_l_sll.f
3522 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3523 int UNUSED written
= 0;
3524 IADDR UNUSED pc
= abuf
->addr
;
3525 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3528 SF opval
= CGEN_CPU_FPU (current_cpu
)->ops
->addsf (CGEN_CPU_FPU (current_cpu
), CGEN_CPU_FPU (current_cpu
)->ops
->mulsf (CGEN_CPU_FPU (current_cpu
), GET_H_FSR (FLD (f_r2
)), GET_H_FSR (FLD (f_r3
))), GET_H_FSR (FLD (f_r1
)));
3529 SET_H_FSR (FLD (f_r1
), opval
);
3530 CGEN_TRACE_RESULT (current_cpu
, abuf
, "fsr", 'f', opval
);
3537 /* lf-madd-d32: lf.madd.d $rDD32F,$rAD32F,$rBD32F */
3540 SEM_FN_NAME (or1k32bf
,lf_madd_d32
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3542 #define FLD(f) abuf->fields.sfmt_lf_add_d32.f
3543 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3544 int UNUSED written
= 0;
3545 IADDR UNUSED pc
= abuf
->addr
;
3546 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3549 DF opval
= CGEN_CPU_FPU (current_cpu
)->ops
->adddf (CGEN_CPU_FPU (current_cpu
), CGEN_CPU_FPU (current_cpu
)->ops
->muldf (CGEN_CPU_FPU (current_cpu
), GET_H_FD32R (FLD (f_rad32
)), GET_H_FD32R (FLD (f_rbd32
))), GET_H_FD32R (FLD (f_rdd32
)));
3550 SET_H_FD32R (FLD (f_rdd32
), opval
);
3551 CGEN_TRACE_RESULT (current_cpu
, abuf
, "fd32r", 'f', opval
);
3558 /* lf-cust1-s: lf.cust1.s $rASF,$rBSF */
3561 SEM_FN_NAME (or1k32bf
,lf_cust1_s
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3563 #define FLD(f) abuf->fields.sfmt_empty.f
3564 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3565 int UNUSED written
= 0;
3566 IADDR UNUSED pc
= abuf
->addr
;
3567 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3575 /* lf-cust1-d32: lf.cust1.d */
3578 SEM_FN_NAME (or1k32bf
,lf_cust1_d32
) (SIM_CPU
*current_cpu
, SEM_ARG sem_arg
)
3580 #define FLD(f) abuf->fields.sfmt_empty.f
3581 ARGBUF
*abuf
= SEM_ARGBUF (sem_arg
);
3582 int UNUSED written
= 0;
3583 IADDR UNUSED pc
= abuf
->addr
;
3584 SEM_PC vpc
= SEM_NEXT_VPC (sem_arg
, pc
, 4);
3592 /* Table of all semantic fns. */
3594 static const struct sem_fn_desc sem_fns
[] = {
3595 { OR1K32BF_INSN_X_INVALID
, SEM_FN_NAME (or1k32bf
,x_invalid
) },
3596 { OR1K32BF_INSN_X_AFTER
, SEM_FN_NAME (or1k32bf
,x_after
) },
3597 { OR1K32BF_INSN_X_BEFORE
, SEM_FN_NAME (or1k32bf
,x_before
) },
3598 { OR1K32BF_INSN_X_CTI_CHAIN
, SEM_FN_NAME (or1k32bf
,x_cti_chain
) },
3599 { OR1K32BF_INSN_X_CHAIN
, SEM_FN_NAME (or1k32bf
,x_chain
) },
3600 { OR1K32BF_INSN_X_BEGIN
, SEM_FN_NAME (or1k32bf
,x_begin
) },
3601 { OR1K32BF_INSN_L_J
, SEM_FN_NAME (or1k32bf
,l_j
) },
3602 { OR1K32BF_INSN_L_ADRP
, SEM_FN_NAME (or1k32bf
,l_adrp
) },
3603 { OR1K32BF_INSN_L_JAL
, SEM_FN_NAME (or1k32bf
,l_jal
) },
3604 { OR1K32BF_INSN_L_JR
, SEM_FN_NAME (or1k32bf
,l_jr
) },
3605 { OR1K32BF_INSN_L_JALR
, SEM_FN_NAME (or1k32bf
,l_jalr
) },
3606 { OR1K32BF_INSN_L_BNF
, SEM_FN_NAME (or1k32bf
,l_bnf
) },
3607 { OR1K32BF_INSN_L_BF
, SEM_FN_NAME (or1k32bf
,l_bf
) },
3608 { OR1K32BF_INSN_L_TRAP
, SEM_FN_NAME (or1k32bf
,l_trap
) },
3609 { OR1K32BF_INSN_L_SYS
, SEM_FN_NAME (or1k32bf
,l_sys
) },
3610 { OR1K32BF_INSN_L_MSYNC
, SEM_FN_NAME (or1k32bf
,l_msync
) },
3611 { OR1K32BF_INSN_L_PSYNC
, SEM_FN_NAME (or1k32bf
,l_psync
) },
3612 { OR1K32BF_INSN_L_CSYNC
, SEM_FN_NAME (or1k32bf
,l_csync
) },
3613 { OR1K32BF_INSN_L_RFE
, SEM_FN_NAME (or1k32bf
,l_rfe
) },
3614 { OR1K32BF_INSN_L_NOP_IMM
, SEM_FN_NAME (or1k32bf
,l_nop_imm
) },
3615 { OR1K32BF_INSN_L_MOVHI
, SEM_FN_NAME (or1k32bf
,l_movhi
) },
3616 { OR1K32BF_INSN_L_MACRC
, SEM_FN_NAME (or1k32bf
,l_macrc
) },
3617 { OR1K32BF_INSN_L_MFSPR
, SEM_FN_NAME (or1k32bf
,l_mfspr
) },
3618 { OR1K32BF_INSN_L_MTSPR
, SEM_FN_NAME (or1k32bf
,l_mtspr
) },
3619 { OR1K32BF_INSN_L_LWZ
, SEM_FN_NAME (or1k32bf
,l_lwz
) },
3620 { OR1K32BF_INSN_L_LWS
, SEM_FN_NAME (or1k32bf
,l_lws
) },
3621 { OR1K32BF_INSN_L_LWA
, SEM_FN_NAME (or1k32bf
,l_lwa
) },
3622 { OR1K32BF_INSN_L_LBZ
, SEM_FN_NAME (or1k32bf
,l_lbz
) },
3623 { OR1K32BF_INSN_L_LBS
, SEM_FN_NAME (or1k32bf
,l_lbs
) },
3624 { OR1K32BF_INSN_L_LHZ
, SEM_FN_NAME (or1k32bf
,l_lhz
) },
3625 { OR1K32BF_INSN_L_LHS
, SEM_FN_NAME (or1k32bf
,l_lhs
) },
3626 { OR1K32BF_INSN_L_SW
, SEM_FN_NAME (or1k32bf
,l_sw
) },
3627 { OR1K32BF_INSN_L_SB
, SEM_FN_NAME (or1k32bf
,l_sb
) },
3628 { OR1K32BF_INSN_L_SH
, SEM_FN_NAME (or1k32bf
,l_sh
) },
3629 { OR1K32BF_INSN_L_SWA
, SEM_FN_NAME (or1k32bf
,l_swa
) },
3630 { OR1K32BF_INSN_L_SLL
, SEM_FN_NAME (or1k32bf
,l_sll
) },
3631 { OR1K32BF_INSN_L_SLLI
, SEM_FN_NAME (or1k32bf
,l_slli
) },
3632 { OR1K32BF_INSN_L_SRL
, SEM_FN_NAME (or1k32bf
,l_srl
) },
3633 { OR1K32BF_INSN_L_SRLI
, SEM_FN_NAME (or1k32bf
,l_srli
) },
3634 { OR1K32BF_INSN_L_SRA
, SEM_FN_NAME (or1k32bf
,l_sra
) },
3635 { OR1K32BF_INSN_L_SRAI
, SEM_FN_NAME (or1k32bf
,l_srai
) },
3636 { OR1K32BF_INSN_L_ROR
, SEM_FN_NAME (or1k32bf
,l_ror
) },
3637 { OR1K32BF_INSN_L_RORI
, SEM_FN_NAME (or1k32bf
,l_rori
) },
3638 { OR1K32BF_INSN_L_AND
, SEM_FN_NAME (or1k32bf
,l_and
) },
3639 { OR1K32BF_INSN_L_OR
, SEM_FN_NAME (or1k32bf
,l_or
) },
3640 { OR1K32BF_INSN_L_XOR
, SEM_FN_NAME (or1k32bf
,l_xor
) },
3641 { OR1K32BF_INSN_L_ADD
, SEM_FN_NAME (or1k32bf
,l_add
) },
3642 { OR1K32BF_INSN_L_SUB
, SEM_FN_NAME (or1k32bf
,l_sub
) },
3643 { OR1K32BF_INSN_L_ADDC
, SEM_FN_NAME (or1k32bf
,l_addc
) },
3644 { OR1K32BF_INSN_L_MUL
, SEM_FN_NAME (or1k32bf
,l_mul
) },
3645 { OR1K32BF_INSN_L_MULD
, SEM_FN_NAME (or1k32bf
,l_muld
) },
3646 { OR1K32BF_INSN_L_MULU
, SEM_FN_NAME (or1k32bf
,l_mulu
) },
3647 { OR1K32BF_INSN_L_MULDU
, SEM_FN_NAME (or1k32bf
,l_muldu
) },
3648 { OR1K32BF_INSN_L_DIV
, SEM_FN_NAME (or1k32bf
,l_div
) },
3649 { OR1K32BF_INSN_L_DIVU
, SEM_FN_NAME (or1k32bf
,l_divu
) },
3650 { OR1K32BF_INSN_L_FF1
, SEM_FN_NAME (or1k32bf
,l_ff1
) },
3651 { OR1K32BF_INSN_L_FL1
, SEM_FN_NAME (or1k32bf
,l_fl1
) },
3652 { OR1K32BF_INSN_L_ANDI
, SEM_FN_NAME (or1k32bf
,l_andi
) },
3653 { OR1K32BF_INSN_L_ORI
, SEM_FN_NAME (or1k32bf
,l_ori
) },
3654 { OR1K32BF_INSN_L_XORI
, SEM_FN_NAME (or1k32bf
,l_xori
) },
3655 { OR1K32BF_INSN_L_ADDI
, SEM_FN_NAME (or1k32bf
,l_addi
) },
3656 { OR1K32BF_INSN_L_ADDIC
, SEM_FN_NAME (or1k32bf
,l_addic
) },
3657 { OR1K32BF_INSN_L_MULI
, SEM_FN_NAME (or1k32bf
,l_muli
) },
3658 { OR1K32BF_INSN_L_EXTHS
, SEM_FN_NAME (or1k32bf
,l_exths
) },
3659 { OR1K32BF_INSN_L_EXTBS
, SEM_FN_NAME (or1k32bf
,l_extbs
) },
3660 { OR1K32BF_INSN_L_EXTHZ
, SEM_FN_NAME (or1k32bf
,l_exthz
) },
3661 { OR1K32BF_INSN_L_EXTBZ
, SEM_FN_NAME (or1k32bf
,l_extbz
) },
3662 { OR1K32BF_INSN_L_EXTWS
, SEM_FN_NAME (or1k32bf
,l_extws
) },
3663 { OR1K32BF_INSN_L_EXTWZ
, SEM_FN_NAME (or1k32bf
,l_extwz
) },
3664 { OR1K32BF_INSN_L_CMOV
, SEM_FN_NAME (or1k32bf
,l_cmov
) },
3665 { OR1K32BF_INSN_L_SFGTS
, SEM_FN_NAME (or1k32bf
,l_sfgts
) },
3666 { OR1K32BF_INSN_L_SFGTSI
, SEM_FN_NAME (or1k32bf
,l_sfgtsi
) },
3667 { OR1K32BF_INSN_L_SFGTU
, SEM_FN_NAME (or1k32bf
,l_sfgtu
) },
3668 { OR1K32BF_INSN_L_SFGTUI
, SEM_FN_NAME (or1k32bf
,l_sfgtui
) },
3669 { OR1K32BF_INSN_L_SFGES
, SEM_FN_NAME (or1k32bf
,l_sfges
) },
3670 { OR1K32BF_INSN_L_SFGESI
, SEM_FN_NAME (or1k32bf
,l_sfgesi
) },
3671 { OR1K32BF_INSN_L_SFGEU
, SEM_FN_NAME (or1k32bf
,l_sfgeu
) },
3672 { OR1K32BF_INSN_L_SFGEUI
, SEM_FN_NAME (or1k32bf
,l_sfgeui
) },
3673 { OR1K32BF_INSN_L_SFLTS
, SEM_FN_NAME (or1k32bf
,l_sflts
) },
3674 { OR1K32BF_INSN_L_SFLTSI
, SEM_FN_NAME (or1k32bf
,l_sfltsi
) },
3675 { OR1K32BF_INSN_L_SFLTU
, SEM_FN_NAME (or1k32bf
,l_sfltu
) },
3676 { OR1K32BF_INSN_L_SFLTUI
, SEM_FN_NAME (or1k32bf
,l_sfltui
) },
3677 { OR1K32BF_INSN_L_SFLES
, SEM_FN_NAME (or1k32bf
,l_sfles
) },
3678 { OR1K32BF_INSN_L_SFLESI
, SEM_FN_NAME (or1k32bf
,l_sflesi
) },
3679 { OR1K32BF_INSN_L_SFLEU
, SEM_FN_NAME (or1k32bf
,l_sfleu
) },
3680 { OR1K32BF_INSN_L_SFLEUI
, SEM_FN_NAME (or1k32bf
,l_sfleui
) },
3681 { OR1K32BF_INSN_L_SFEQ
, SEM_FN_NAME (or1k32bf
,l_sfeq
) },
3682 { OR1K32BF_INSN_L_SFEQI
, SEM_FN_NAME (or1k32bf
,l_sfeqi
) },
3683 { OR1K32BF_INSN_L_SFNE
, SEM_FN_NAME (or1k32bf
,l_sfne
) },
3684 { OR1K32BF_INSN_L_SFNEI
, SEM_FN_NAME (or1k32bf
,l_sfnei
) },
3685 { OR1K32BF_INSN_L_MAC
, SEM_FN_NAME (or1k32bf
,l_mac
) },
3686 { OR1K32BF_INSN_L_MACI
, SEM_FN_NAME (or1k32bf
,l_maci
) },
3687 { OR1K32BF_INSN_L_MACU
, SEM_FN_NAME (or1k32bf
,l_macu
) },
3688 { OR1K32BF_INSN_L_MSB
, SEM_FN_NAME (or1k32bf
,l_msb
) },
3689 { OR1K32BF_INSN_L_MSBU
, SEM_FN_NAME (or1k32bf
,l_msbu
) },
3690 { OR1K32BF_INSN_L_CUST1
, SEM_FN_NAME (or1k32bf
,l_cust1
) },
3691 { OR1K32BF_INSN_L_CUST2
, SEM_FN_NAME (or1k32bf
,l_cust2
) },
3692 { OR1K32BF_INSN_L_CUST3
, SEM_FN_NAME (or1k32bf
,l_cust3
) },
3693 { OR1K32BF_INSN_L_CUST4
, SEM_FN_NAME (or1k32bf
,l_cust4
) },
3694 { OR1K32BF_INSN_L_CUST5
, SEM_FN_NAME (or1k32bf
,l_cust5
) },
3695 { OR1K32BF_INSN_L_CUST6
, SEM_FN_NAME (or1k32bf
,l_cust6
) },
3696 { OR1K32BF_INSN_L_CUST7
, SEM_FN_NAME (or1k32bf
,l_cust7
) },
3697 { OR1K32BF_INSN_L_CUST8
, SEM_FN_NAME (or1k32bf
,l_cust8
) },
3698 { OR1K32BF_INSN_LF_ADD_S
, SEM_FN_NAME (or1k32bf
,lf_add_s
) },
3699 { OR1K32BF_INSN_LF_ADD_D32
, SEM_FN_NAME (or1k32bf
,lf_add_d32
) },
3700 { OR1K32BF_INSN_LF_SUB_S
, SEM_FN_NAME (or1k32bf
,lf_sub_s
) },
3701 { OR1K32BF_INSN_LF_SUB_D32
, SEM_FN_NAME (or1k32bf
,lf_sub_d32
) },
3702 { OR1K32BF_INSN_LF_MUL_S
, SEM_FN_NAME (or1k32bf
,lf_mul_s
) },
3703 { OR1K32BF_INSN_LF_MUL_D32
, SEM_FN_NAME (or1k32bf
,lf_mul_d32
) },
3704 { OR1K32BF_INSN_LF_DIV_S
, SEM_FN_NAME (or1k32bf
,lf_div_s
) },
3705 { OR1K32BF_INSN_LF_DIV_D32
, SEM_FN_NAME (or1k32bf
,lf_div_d32
) },
3706 { OR1K32BF_INSN_LF_REM_S
, SEM_FN_NAME (or1k32bf
,lf_rem_s
) },
3707 { OR1K32BF_INSN_LF_REM_D32
, SEM_FN_NAME (or1k32bf
,lf_rem_d32
) },
3708 { OR1K32BF_INSN_LF_ITOF_S
, SEM_FN_NAME (or1k32bf
,lf_itof_s
) },
3709 { OR1K32BF_INSN_LF_ITOF_D32
, SEM_FN_NAME (or1k32bf
,lf_itof_d32
) },
3710 { OR1K32BF_INSN_LF_FTOI_S
, SEM_FN_NAME (or1k32bf
,lf_ftoi_s
) },
3711 { OR1K32BF_INSN_LF_FTOI_D32
, SEM_FN_NAME (or1k32bf
,lf_ftoi_d32
) },
3712 { OR1K32BF_INSN_LF_SFEQ_S
, SEM_FN_NAME (or1k32bf
,lf_sfeq_s
) },
3713 { OR1K32BF_INSN_LF_SFEQ_D32
, SEM_FN_NAME (or1k32bf
,lf_sfeq_d32
) },
3714 { OR1K32BF_INSN_LF_SFNE_S
, SEM_FN_NAME (or1k32bf
,lf_sfne_s
) },
3715 { OR1K32BF_INSN_LF_SFNE_D32
, SEM_FN_NAME (or1k32bf
,lf_sfne_d32
) },
3716 { OR1K32BF_INSN_LF_SFGE_S
, SEM_FN_NAME (or1k32bf
,lf_sfge_s
) },
3717 { OR1K32BF_INSN_LF_SFGE_D32
, SEM_FN_NAME (or1k32bf
,lf_sfge_d32
) },
3718 { OR1K32BF_INSN_LF_SFGT_S
, SEM_FN_NAME (or1k32bf
,lf_sfgt_s
) },
3719 { OR1K32BF_INSN_LF_SFGT_D32
, SEM_FN_NAME (or1k32bf
,lf_sfgt_d32
) },
3720 { OR1K32BF_INSN_LF_SFLT_S
, SEM_FN_NAME (or1k32bf
,lf_sflt_s
) },
3721 { OR1K32BF_INSN_LF_SFLT_D32
, SEM_FN_NAME (or1k32bf
,lf_sflt_d32
) },
3722 { OR1K32BF_INSN_LF_SFLE_S
, SEM_FN_NAME (or1k32bf
,lf_sfle_s
) },
3723 { OR1K32BF_INSN_LF_SFLE_D32
, SEM_FN_NAME (or1k32bf
,lf_sfle_d32
) },
3724 { OR1K32BF_INSN_LF_SFUEQ_S
, SEM_FN_NAME (or1k32bf
,lf_sfueq_s
) },
3725 { OR1K32BF_INSN_LF_SFUEQ_D32
, SEM_FN_NAME (or1k32bf
,lf_sfueq_d32
) },
3726 { OR1K32BF_INSN_LF_SFUNE_S
, SEM_FN_NAME (or1k32bf
,lf_sfune_s
) },
3727 { OR1K32BF_INSN_LF_SFUNE_D32
, SEM_FN_NAME (or1k32bf
,lf_sfune_d32
) },
3728 { OR1K32BF_INSN_LF_SFUGT_S
, SEM_FN_NAME (or1k32bf
,lf_sfugt_s
) },
3729 { OR1K32BF_INSN_LF_SFUGT_D32
, SEM_FN_NAME (or1k32bf
,lf_sfugt_d32
) },
3730 { OR1K32BF_INSN_LF_SFUGE_S
, SEM_FN_NAME (or1k32bf
,lf_sfuge_s
) },
3731 { OR1K32BF_INSN_LF_SFUGE_D32
, SEM_FN_NAME (or1k32bf
,lf_sfuge_d32
) },
3732 { OR1K32BF_INSN_LF_SFULT_S
, SEM_FN_NAME (or1k32bf
,lf_sfult_s
) },
3733 { OR1K32BF_INSN_LF_SFULT_D32
, SEM_FN_NAME (or1k32bf
,lf_sfult_d32
) },
3734 { OR1K32BF_INSN_LF_SFULE_S
, SEM_FN_NAME (or1k32bf
,lf_sfule_s
) },
3735 { OR1K32BF_INSN_LF_SFULE_D32
, SEM_FN_NAME (or1k32bf
,lf_sfule_d32
) },
3736 { OR1K32BF_INSN_LF_SFUN_S
, SEM_FN_NAME (or1k32bf
,lf_sfun_s
) },
3737 { OR1K32BF_INSN_LF_SFUN_D32
, SEM_FN_NAME (or1k32bf
,lf_sfun_d32
) },
3738 { OR1K32BF_INSN_LF_MADD_S
, SEM_FN_NAME (or1k32bf
,lf_madd_s
) },
3739 { OR1K32BF_INSN_LF_MADD_D32
, SEM_FN_NAME (or1k32bf
,lf_madd_d32
) },
3740 { OR1K32BF_INSN_LF_CUST1_S
, SEM_FN_NAME (or1k32bf
,lf_cust1_s
) },
3741 { OR1K32BF_INSN_LF_CUST1_D32
, SEM_FN_NAME (or1k32bf
,lf_cust1_d32
) },
3745 /* Add the semantic fns to IDESC_TABLE. */
3748 SEM_FN_NAME (or1k32bf
,init_idesc_table
) (SIM_CPU
*current_cpu
)
3750 IDESC
*idesc_table
= CPU_IDESC (current_cpu
);
3751 const struct sem_fn_desc
*sf
;
3752 int mach_num
= MACH_NUM (CPU_MACH (current_cpu
));
3754 for (sf
= &sem_fns
[0]; sf
->fn
!= 0; ++sf
)
3756 const CGEN_INSN
*insn
= idesc_table
[sf
->index
].idata
;
3757 int valid_p
= (CGEN_INSN_VIRTUAL_P (insn
)
3758 || CGEN_INSN_MACH_HAS_P (insn
, mach_num
));
3761 idesc_table
[sf
->index
].sem_fast
= sf
->fn
;
3763 idesc_table
[sf
->index
].sem_fast
= SEM_FN_NAME (or1k32bf
,x_invalid
);
3766 idesc_table
[sf
->index
].sem_full
= sf
->fn
;
3768 idesc_table
[sf
->index
].sem_full
= SEM_FN_NAME (or1k32bf
,x_invalid
);