PR32238, ld -r slowdown since 21401fc7bf
[binutils-gdb.git] / sim / frv / sem.c
blob55e6d7b5d6d705a3184ff46c9f72f79aaf423b04
1 /* Simulator instruction semantics for frvbf.
3 THIS FILE IS MACHINE GENERATED WITH CGEN.
5 Copyright (C) 1996-2024 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)
12 any later version.
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 frvbf
26 #define WANT_CPU_FRVBF
28 #include "sim-main.h"
29 #include "cgen-mem.h"
30 #include "cgen-ops.h"
32 #undef GET_ATTR
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. */
38 #if FAST_P
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)
42 #else
43 #define SEM_FN_NAME(cpu,fn) XCONCAT3 (cpu,_sem_,fn)
44 #endif
46 /* x-invalid: --invalid-- */
48 static SEM_PC
49 SEM_FN_NAME (frvbf,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 .... */
61 SET_H_PC (pc);
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);
69 return vpc;
70 #undef FLD
73 /* x-after: --after-- */
75 static SEM_PC
76 SEM_FN_NAME (frvbf,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_FRVBF
86 frvbf_pbb_after (current_cpu, sem_arg);
87 #endif
90 return vpc;
91 #undef FLD
94 /* x-before: --before-- */
96 static SEM_PC
97 SEM_FN_NAME (frvbf,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_FRVBF
107 frvbf_pbb_before (current_cpu, sem_arg);
108 #endif
111 return vpc;
112 #undef FLD
115 /* x-cti-chain: --cti-chain-- */
117 static SEM_PC
118 SEM_FN_NAME (frvbf,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_FRVBF
128 #ifdef DEFINE_SWITCH
129 vpc = frvbf_pbb_cti_chain (current_cpu, sem_arg,
130 pbb_br_type, pbb_br_npc);
131 BREAK (sem);
132 #else
133 /* FIXME: Allow provision of explicit ifmt spec in insn spec. */
134 vpc = frvbf_pbb_cti_chain (current_cpu, sem_arg,
135 CPU_PBB_BR_TYPE (current_cpu),
136 CPU_PBB_BR_NPC (current_cpu));
137 #endif
138 #endif
141 return vpc;
142 #undef FLD
145 /* x-chain: --chain-- */
147 static SEM_PC
148 SEM_FN_NAME (frvbf,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_FRVBF
158 vpc = frvbf_pbb_chain (current_cpu, sem_arg);
159 #ifdef DEFINE_SWITCH
160 BREAK (sem);
161 #endif
162 #endif
165 return vpc;
166 #undef FLD
169 /* x-begin: --begin-- */
171 static SEM_PC
172 SEM_FN_NAME (frvbf,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_FRVBF
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 = frvbf_pbb_begin (current_cpu, FAST_P);
186 #else
187 #if 0 /* cgen engine can't handle dynamic fast/full switching yet. */
188 vpc = frvbf_pbb_begin (current_cpu, STATE_RUN_FAST_P (CPU_STATE (current_cpu)));
189 #else
190 vpc = frvbf_pbb_begin (current_cpu, 0);
191 #endif
192 #endif
193 #endif
196 return vpc;
197 #undef FLD
200 /* add: add$pack $GRi,$GRj,$GRk */
202 static SEM_PC
203 SEM_FN_NAME (frvbf,add) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
205 #define FLD(f) abuf->fields.sfmt_addcc.f
206 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
207 int UNUSED written = 0;
208 IADDR UNUSED pc = abuf->addr;
209 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
212 SI opval = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
213 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
214 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
217 return vpc;
218 #undef FLD
221 /* sub: sub$pack $GRi,$GRj,$GRk */
223 static SEM_PC
224 SEM_FN_NAME (frvbf,sub) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
226 #define FLD(f) abuf->fields.sfmt_addcc.f
227 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
228 int UNUSED written = 0;
229 IADDR UNUSED pc = abuf->addr;
230 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
233 SI opval = SUBSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
234 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
235 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
238 return vpc;
239 #undef FLD
242 /* and: and$pack $GRi,$GRj,$GRk */
244 static SEM_PC
245 SEM_FN_NAME (frvbf,and) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
247 #define FLD(f) abuf->fields.sfmt_addcc.f
248 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
249 int UNUSED written = 0;
250 IADDR UNUSED pc = abuf->addr;
251 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
254 SI opval = ANDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
255 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
256 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
259 return vpc;
260 #undef FLD
263 /* or: or$pack $GRi,$GRj,$GRk */
265 static SEM_PC
266 SEM_FN_NAME (frvbf,or) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
268 #define FLD(f) abuf->fields.sfmt_addcc.f
269 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
270 int UNUSED written = 0;
271 IADDR UNUSED pc = abuf->addr;
272 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
275 SI opval = ORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
276 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
277 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
280 return vpc;
281 #undef FLD
284 /* xor: xor$pack $GRi,$GRj,$GRk */
286 static SEM_PC
287 SEM_FN_NAME (frvbf,xor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
289 #define FLD(f) abuf->fields.sfmt_addcc.f
290 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
291 int UNUSED written = 0;
292 IADDR UNUSED pc = abuf->addr;
293 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
296 SI opval = XORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
297 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
298 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
301 return vpc;
302 #undef FLD
305 /* not: not$pack $GRj,$GRk */
307 static SEM_PC
308 SEM_FN_NAME (frvbf,not) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
310 #define FLD(f) abuf->fields.sfmt_scutss.f
311 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
312 int UNUSED written = 0;
313 IADDR UNUSED pc = abuf->addr;
314 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
317 SI opval = INVSI (GET_H_GR (FLD (f_GRj)));
318 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
319 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
322 return vpc;
323 #undef FLD
326 /* sdiv: sdiv$pack $GRi,$GRj,$GRk */
328 static SEM_PC
329 SEM_FN_NAME (frvbf,sdiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
331 #define FLD(f) abuf->fields.sfmt_addcc.f
332 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
333 int UNUSED written = 0;
334 IADDR UNUSED pc = abuf->addr;
335 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
338 frvbf_signed_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_GRk), 0);
339 ; /*clobber*/
342 return vpc;
343 #undef FLD
346 /* nsdiv: nsdiv$pack $GRi,$GRj,$GRk */
348 static SEM_PC
349 SEM_FN_NAME (frvbf,nsdiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
351 #define FLD(f) abuf->fields.sfmt_addcc.f
352 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
353 int UNUSED written = 0;
354 IADDR UNUSED pc = abuf->addr;
355 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
358 frvbf_signed_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_GRk), 1);
359 ; /*clobber*/
362 return vpc;
363 #undef FLD
366 /* udiv: udiv$pack $GRi,$GRj,$GRk */
368 static SEM_PC
369 SEM_FN_NAME (frvbf,udiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
371 #define FLD(f) abuf->fields.sfmt_addcc.f
372 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
373 int UNUSED written = 0;
374 IADDR UNUSED pc = abuf->addr;
375 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
378 frvbf_unsigned_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_GRk), 0);
379 ; /*clobber*/
382 return vpc;
383 #undef FLD
386 /* nudiv: nudiv$pack $GRi,$GRj,$GRk */
388 static SEM_PC
389 SEM_FN_NAME (frvbf,nudiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
391 #define FLD(f) abuf->fields.sfmt_addcc.f
392 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
393 int UNUSED written = 0;
394 IADDR UNUSED pc = abuf->addr;
395 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
398 frvbf_unsigned_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_GRk), 1);
399 ; /*clobber*/
402 return vpc;
403 #undef FLD
406 /* smul: smul$pack $GRi,$GRj,$GRdoublek */
408 static SEM_PC
409 SEM_FN_NAME (frvbf,smul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
411 #define FLD(f) abuf->fields.sfmt_smulcc.f
412 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
413 int UNUSED written = 0;
414 IADDR UNUSED pc = abuf->addr;
415 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
418 DI opval = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))));
419 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
420 CGEN_TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
423 return vpc;
424 #undef FLD
427 /* umul: umul$pack $GRi,$GRj,$GRdoublek */
429 static SEM_PC
430 SEM_FN_NAME (frvbf,umul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
432 #define FLD(f) abuf->fields.sfmt_smulcc.f
433 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
434 int UNUSED written = 0;
435 IADDR UNUSED pc = abuf->addr;
436 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
439 DI opval = MULDI (ZEXTSIDI (GET_H_GR (FLD (f_GRi))), ZEXTSIDI (GET_H_GR (FLD (f_GRj))));
440 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
441 CGEN_TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
444 return vpc;
445 #undef FLD
448 /* smu: smu$pack $GRi,$GRj */
450 static SEM_PC
451 SEM_FN_NAME (frvbf,smu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
453 #define FLD(f) abuf->fields.sfmt_smass.f
454 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
455 int UNUSED written = 0;
456 IADDR UNUSED pc = abuf->addr;
457 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
460 DI opval = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))));
461 sim_queue_fn_di_write (current_cpu, frvbf_h_iacc0_set, ((UINT) 0), opval);
462 CGEN_TRACE_RESULT (current_cpu, abuf, "iacc0", 'D', opval);
465 return vpc;
466 #undef FLD
469 /* smass: smass$pack $GRi,$GRj */
471 static SEM_PC
472 SEM_FN_NAME (frvbf,smass) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
474 #define FLD(f) abuf->fields.sfmt_smass.f
475 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
476 int UNUSED written = 0;
477 IADDR UNUSED pc = abuf->addr;
478 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
481 DI opval = (ANDIF (ANDIF (GTDI (MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj)))), 0), GTDI (GET_H_IACC0 (((UINT) 0)), 0)), LTDI (SUBDI (MAKEDI (2147483647, 0xffffffff), MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))))), GET_H_IACC0 (((UINT) 0))))) ? (MAKEDI (2147483647, 0xffffffff)) : (ANDIF (ANDIF (LTDI (MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj)))), 0), LTDI (GET_H_IACC0 (((UINT) 0)), 0)), GTDI (SUBDI (MAKEDI (0x80000000, 0), MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))))), GET_H_IACC0 (((UINT) 0))))) ? (MAKEDI (0x80000000, 0)) : (ADDDI (GET_H_IACC0 (((UINT) 0)), MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))))));
482 sim_queue_fn_di_write (current_cpu, frvbf_h_iacc0_set, ((UINT) 0), opval);
483 CGEN_TRACE_RESULT (current_cpu, abuf, "iacc0", 'D', opval);
486 return vpc;
487 #undef FLD
490 /* smsss: smsss$pack $GRi,$GRj */
492 static SEM_PC
493 SEM_FN_NAME (frvbf,smsss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
495 #define FLD(f) abuf->fields.sfmt_smass.f
496 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
497 int UNUSED written = 0;
498 IADDR UNUSED pc = abuf->addr;
499 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
502 DI opval = (ANDIF (ANDIF (LTDI (MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj)))), 0), GTDI (GET_H_IACC0 (((UINT) 0)), 0)), LTDI (ADDDI (MAKEDI (2147483647, 0xffffffff), MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))))), GET_H_IACC0 (((UINT) 0))))) ? (MAKEDI (2147483647, 0xffffffff)) : (ANDIF (ANDIF (GTDI (MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj)))), 0), LTDI (GET_H_IACC0 (((UINT) 0)), 0)), GTDI (ADDDI (MAKEDI (0x80000000, 0), MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))))), GET_H_IACC0 (((UINT) 0))))) ? (MAKEDI (0x80000000, 0)) : (SUBDI (GET_H_IACC0 (((UINT) 0)), MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))))));
503 sim_queue_fn_di_write (current_cpu, frvbf_h_iacc0_set, ((UINT) 0), opval);
504 CGEN_TRACE_RESULT (current_cpu, abuf, "iacc0", 'D', opval);
507 return vpc;
508 #undef FLD
511 /* sll: sll$pack $GRi,$GRj,$GRk */
513 static SEM_PC
514 SEM_FN_NAME (frvbf,sll) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
516 #define FLD(f) abuf->fields.sfmt_addcc.f
517 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
518 int UNUSED written = 0;
519 IADDR UNUSED pc = abuf->addr;
520 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
523 SI opval = SLLSI (GET_H_GR (FLD (f_GRi)), ANDSI (GET_H_GR (FLD (f_GRj)), 31));
524 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
525 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
528 return vpc;
529 #undef FLD
532 /* srl: srl$pack $GRi,$GRj,$GRk */
534 static SEM_PC
535 SEM_FN_NAME (frvbf,srl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
537 #define FLD(f) abuf->fields.sfmt_addcc.f
538 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
539 int UNUSED written = 0;
540 IADDR UNUSED pc = abuf->addr;
541 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
544 SI opval = SRLSI (GET_H_GR (FLD (f_GRi)), ANDSI (GET_H_GR (FLD (f_GRj)), 31));
545 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
546 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
549 return vpc;
550 #undef FLD
553 /* sra: sra$pack $GRi,$GRj,$GRk */
555 static SEM_PC
556 SEM_FN_NAME (frvbf,sra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
558 #define FLD(f) abuf->fields.sfmt_addcc.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);
565 SI opval = SRASI (GET_H_GR (FLD (f_GRi)), ANDSI (GET_H_GR (FLD (f_GRj)), 31));
566 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
567 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
570 return vpc;
571 #undef FLD
574 /* slass: slass$pack $GRi,$GRj,$GRk */
576 static SEM_PC
577 SEM_FN_NAME (frvbf,slass) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
579 #define FLD(f) abuf->fields.sfmt_addcc.f
580 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
581 int UNUSED written = 0;
582 IADDR UNUSED pc = abuf->addr;
583 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
586 SI opval = frvbf_shift_left_arith_saturate (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
587 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
588 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
591 return vpc;
592 #undef FLD
595 /* scutss: scutss$pack $GRj,$GRk */
597 static SEM_PC
598 SEM_FN_NAME (frvbf,scutss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
600 #define FLD(f) abuf->fields.sfmt_scutss.f
601 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
602 int UNUSED written = 0;
603 IADDR UNUSED pc = abuf->addr;
604 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
607 SI opval = frvbf_iacc_cut (current_cpu, GET_H_IACC0 (((UINT) 0)), GET_H_GR (FLD (f_GRj)));
608 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
609 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
612 return vpc;
613 #undef FLD
616 /* scan: scan$pack $GRi,$GRj,$GRk */
618 static SEM_PC
619 SEM_FN_NAME (frvbf,scan) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
621 #define FLD(f) abuf->fields.sfmt_addcc.f
622 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
623 int UNUSED written = 0;
624 IADDR UNUSED pc = abuf->addr;
625 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
628 SI tmp_tmp1;
629 SI tmp_tmp2;
630 tmp_tmp1 = GET_H_GR (FLD (f_GRi));
631 tmp_tmp2 = SRASI (GET_H_GR (FLD (f_GRj)), 1);
633 SI opval = frvbf_scan_result (current_cpu, XORSI (tmp_tmp1, tmp_tmp2));
634 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
635 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
639 return vpc;
640 #undef FLD
643 /* cadd: cadd$pack $GRi,$GRj,$GRk,$CCi,$cond */
645 static SEM_PC
646 SEM_FN_NAME (frvbf,cadd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
648 #define FLD(f) abuf->fields.sfmt_cswap.f
649 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
650 int UNUSED written = 0;
651 IADDR UNUSED pc = abuf->addr;
652 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
654 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
656 SI opval = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
657 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
658 written |= (1 << 4);
659 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
663 abuf->written = written;
664 return vpc;
665 #undef FLD
668 /* csub: csub$pack $GRi,$GRj,$GRk,$CCi,$cond */
670 static SEM_PC
671 SEM_FN_NAME (frvbf,csub) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
673 #define FLD(f) abuf->fields.sfmt_cswap.f
674 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
675 int UNUSED written = 0;
676 IADDR UNUSED pc = abuf->addr;
677 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
679 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
681 SI opval = SUBSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
682 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
683 written |= (1 << 4);
684 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
688 abuf->written = written;
689 return vpc;
690 #undef FLD
693 /* cand: cand$pack $GRi,$GRj,$GRk,$CCi,$cond */
695 static SEM_PC
696 SEM_FN_NAME (frvbf,cand) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
698 #define FLD(f) abuf->fields.sfmt_cswap.f
699 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
700 int UNUSED written = 0;
701 IADDR UNUSED pc = abuf->addr;
702 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
704 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
706 SI opval = ANDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
707 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
708 written |= (1 << 4);
709 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
713 abuf->written = written;
714 return vpc;
715 #undef FLD
718 /* cor: cor$pack $GRi,$GRj,$GRk,$CCi,$cond */
720 static SEM_PC
721 SEM_FN_NAME (frvbf,cor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
723 #define FLD(f) abuf->fields.sfmt_cswap.f
724 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
725 int UNUSED written = 0;
726 IADDR UNUSED pc = abuf->addr;
727 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
729 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
731 SI opval = ORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
732 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
733 written |= (1 << 4);
734 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
738 abuf->written = written;
739 return vpc;
740 #undef FLD
743 /* cxor: cxor$pack $GRi,$GRj,$GRk,$CCi,$cond */
745 static SEM_PC
746 SEM_FN_NAME (frvbf,cxor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
748 #define FLD(f) abuf->fields.sfmt_cswap.f
749 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
750 int UNUSED written = 0;
751 IADDR UNUSED pc = abuf->addr;
752 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
754 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
756 SI opval = XORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
757 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
758 written |= (1 << 4);
759 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
763 abuf->written = written;
764 return vpc;
765 #undef FLD
768 /* cnot: cnot$pack $GRj,$GRk,$CCi,$cond */
770 static SEM_PC
771 SEM_FN_NAME (frvbf,cnot) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
773 #define FLD(f) abuf->fields.sfmt_cswap.f
774 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
775 int UNUSED written = 0;
776 IADDR UNUSED pc = abuf->addr;
777 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
779 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
781 SI opval = INVSI (GET_H_GR (FLD (f_GRj)));
782 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
783 written |= (1 << 3);
784 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
788 abuf->written = written;
789 return vpc;
790 #undef FLD
793 /* csmul: csmul$pack $GRi,$GRj,$GRdoublek,$CCi,$cond */
795 static SEM_PC
796 SEM_FN_NAME (frvbf,csmul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
798 #define FLD(f) abuf->fields.sfmt_clddu.f
799 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
800 int UNUSED written = 0;
801 IADDR UNUSED pc = abuf->addr;
802 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
804 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
806 DI opval = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))));
807 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
808 written |= (1 << 4);
809 CGEN_TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
813 abuf->written = written;
814 return vpc;
815 #undef FLD
818 /* csdiv: csdiv$pack $GRi,$GRj,$GRk,$CCi,$cond */
820 static SEM_PC
821 SEM_FN_NAME (frvbf,csdiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
823 #define FLD(f) abuf->fields.sfmt_cswap.f
824 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
825 int UNUSED written = 0;
826 IADDR UNUSED pc = abuf->addr;
827 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
829 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
831 frvbf_signed_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_GRk), 0);
832 ; /*clobber*/
836 abuf->written = written;
837 return vpc;
838 #undef FLD
841 /* cudiv: cudiv$pack $GRi,$GRj,$GRk,$CCi,$cond */
843 static SEM_PC
844 SEM_FN_NAME (frvbf,cudiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
846 #define FLD(f) abuf->fields.sfmt_cswap.f
847 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
848 int UNUSED written = 0;
849 IADDR UNUSED pc = abuf->addr;
850 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
852 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
854 frvbf_unsigned_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_GRk), 0);
855 ; /*clobber*/
859 abuf->written = written;
860 return vpc;
861 #undef FLD
864 /* csll: csll$pack $GRi,$GRj,$GRk,$CCi,$cond */
866 static SEM_PC
867 SEM_FN_NAME (frvbf,csll) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
869 #define FLD(f) abuf->fields.sfmt_cswap.f
870 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
871 int UNUSED written = 0;
872 IADDR UNUSED pc = abuf->addr;
873 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
875 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
877 SI opval = SLLSI (GET_H_GR (FLD (f_GRi)), ANDSI (GET_H_GR (FLD (f_GRj)), 31));
878 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
879 written |= (1 << 4);
880 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
884 abuf->written = written;
885 return vpc;
886 #undef FLD
889 /* csrl: csrl$pack $GRi,$GRj,$GRk,$CCi,$cond */
891 static SEM_PC
892 SEM_FN_NAME (frvbf,csrl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
894 #define FLD(f) abuf->fields.sfmt_cswap.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);
900 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
902 SI opval = SRLSI (GET_H_GR (FLD (f_GRi)), ANDSI (GET_H_GR (FLD (f_GRj)), 31));
903 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
904 written |= (1 << 4);
905 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
909 abuf->written = written;
910 return vpc;
911 #undef FLD
914 /* csra: csra$pack $GRi,$GRj,$GRk,$CCi,$cond */
916 static SEM_PC
917 SEM_FN_NAME (frvbf,csra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
919 #define FLD(f) abuf->fields.sfmt_cswap.f
920 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
921 int UNUSED written = 0;
922 IADDR UNUSED pc = abuf->addr;
923 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
925 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
927 SI opval = SRASI (GET_H_GR (FLD (f_GRi)), ANDSI (GET_H_GR (FLD (f_GRj)), 31));
928 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
929 written |= (1 << 4);
930 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
934 abuf->written = written;
935 return vpc;
936 #undef FLD
939 /* cscan: cscan$pack $GRi,$GRj,$GRk,$CCi,$cond */
941 static SEM_PC
942 SEM_FN_NAME (frvbf,cscan) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
944 #define FLD(f) abuf->fields.sfmt_cswap.f
945 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
946 int UNUSED written = 0;
947 IADDR UNUSED pc = abuf->addr;
948 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
950 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
952 SI tmp_tmp1;
953 SI tmp_tmp2;
954 tmp_tmp1 = GET_H_GR (FLD (f_GRi));
955 tmp_tmp2 = SRASI (GET_H_GR (FLD (f_GRj)), 1);
957 SI opval = frvbf_scan_result (current_cpu, XORSI (tmp_tmp1, tmp_tmp2));
958 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
959 written |= (1 << 4);
960 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
965 abuf->written = written;
966 return vpc;
967 #undef FLD
970 /* addcc: addcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
972 static SEM_PC
973 SEM_FN_NAME (frvbf,addcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
975 #define FLD(f) abuf->fields.sfmt_addcc.f
976 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
977 int UNUSED written = 0;
978 IADDR UNUSED pc = abuf->addr;
979 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
982 BI tmp_tmp;
983 QI tmp_cc;
984 SI tmp_result;
985 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
986 tmp_tmp = ADDOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
987 if (EQBI (tmp_tmp, 0)) {
988 tmp_cc = ANDQI (tmp_cc, 13);
989 } else {
990 tmp_cc = ORQI (tmp_cc, 2);
992 tmp_tmp = ADDCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
993 if (EQBI (tmp_tmp, 0)) {
994 tmp_cc = ANDQI (tmp_cc, 14);
995 } else {
996 tmp_cc = ORQI (tmp_cc, 1);
998 tmp_result = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
999 if (EQSI (tmp_result, 0)) {
1000 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1001 } else {
1002 if (LTSI (tmp_result, 0)) {
1003 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1004 } else {
1005 tmp_cc = ANDQI (tmp_cc, 3);
1009 SI opval = tmp_result;
1010 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1011 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1014 UQI opval = tmp_cc;
1015 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1016 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1020 return vpc;
1021 #undef FLD
1024 /* subcc: subcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1026 static SEM_PC
1027 SEM_FN_NAME (frvbf,subcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1029 #define FLD(f) abuf->fields.sfmt_addcc.f
1030 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1031 int UNUSED written = 0;
1032 IADDR UNUSED pc = abuf->addr;
1033 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1036 BI tmp_tmp;
1037 QI tmp_cc;
1038 SI tmp_result;
1039 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
1040 tmp_tmp = SUBOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
1041 if (EQBI (tmp_tmp, 0)) {
1042 tmp_cc = ANDQI (tmp_cc, 13);
1043 } else {
1044 tmp_cc = ORQI (tmp_cc, 2);
1046 tmp_tmp = SUBCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
1047 if (EQBI (tmp_tmp, 0)) {
1048 tmp_cc = ANDQI (tmp_cc, 14);
1049 } else {
1050 tmp_cc = ORQI (tmp_cc, 1);
1052 tmp_result = SUBSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1053 if (EQSI (tmp_result, 0)) {
1054 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1055 } else {
1056 if (LTSI (tmp_result, 0)) {
1057 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1058 } else {
1059 tmp_cc = ANDQI (tmp_cc, 3);
1063 SI opval = tmp_result;
1064 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1065 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1068 UQI opval = tmp_cc;
1069 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1070 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1074 return vpc;
1075 #undef FLD
1078 /* andcc: andcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1080 static SEM_PC
1081 SEM_FN_NAME (frvbf,andcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1083 #define FLD(f) abuf->fields.sfmt_addcc.f
1084 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1085 int UNUSED written = 0;
1086 IADDR UNUSED pc = abuf->addr;
1087 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1090 SI tmp_tmp;
1091 tmp_tmp = ANDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1093 SI opval = tmp_tmp;
1094 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1095 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1097 if (EQSI (tmp_tmp, 0)) {
1099 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 7), 4);
1100 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1101 written |= (1 << 4);
1102 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1104 } else {
1105 if (LTSI (tmp_tmp, 0)) {
1107 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 11), 8);
1108 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1109 written |= (1 << 4);
1110 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1112 } else {
1114 UQI opval = ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 3);
1115 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1116 written |= (1 << 4);
1117 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1123 abuf->written = written;
1124 return vpc;
1125 #undef FLD
1128 /* orcc: orcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1130 static SEM_PC
1131 SEM_FN_NAME (frvbf,orcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1133 #define FLD(f) abuf->fields.sfmt_addcc.f
1134 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1135 int UNUSED written = 0;
1136 IADDR UNUSED pc = abuf->addr;
1137 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1140 SI tmp_tmp;
1141 tmp_tmp = ORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1143 SI opval = tmp_tmp;
1144 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1145 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1147 if (EQSI (tmp_tmp, 0)) {
1149 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 7), 4);
1150 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1151 written |= (1 << 4);
1152 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1154 } else {
1155 if (LTSI (tmp_tmp, 0)) {
1157 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 11), 8);
1158 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1159 written |= (1 << 4);
1160 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1162 } else {
1164 UQI opval = ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 3);
1165 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1166 written |= (1 << 4);
1167 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1173 abuf->written = written;
1174 return vpc;
1175 #undef FLD
1178 /* xorcc: xorcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1180 static SEM_PC
1181 SEM_FN_NAME (frvbf,xorcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1183 #define FLD(f) abuf->fields.sfmt_addcc.f
1184 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1185 int UNUSED written = 0;
1186 IADDR UNUSED pc = abuf->addr;
1187 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1190 SI tmp_tmp;
1191 tmp_tmp = XORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1193 SI opval = tmp_tmp;
1194 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1195 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1197 if (EQSI (tmp_tmp, 0)) {
1199 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 7), 4);
1200 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1201 written |= (1 << 4);
1202 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1204 } else {
1205 if (LTSI (tmp_tmp, 0)) {
1207 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 11), 8);
1208 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1209 written |= (1 << 4);
1210 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1212 } else {
1214 UQI opval = ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 3);
1215 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1216 written |= (1 << 4);
1217 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1223 abuf->written = written;
1224 return vpc;
1225 #undef FLD
1228 /* sllcc: sllcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1230 static SEM_PC
1231 SEM_FN_NAME (frvbf,sllcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1233 #define FLD(f) abuf->fields.sfmt_addcc.f
1234 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1235 int UNUSED written = 0;
1236 IADDR UNUSED pc = abuf->addr;
1237 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1240 SI tmp_shift;
1241 SI tmp_tmp;
1242 QI tmp_cc;
1243 tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31);
1244 tmp_cc = frvbf_set_icc_for_shift_left (current_cpu, GET_H_GR (FLD (f_GRi)), tmp_shift, CPU (h_iccr[FLD (f_ICCi_1)]));
1245 tmp_tmp = SLLSI (GET_H_GR (FLD (f_GRi)), tmp_shift);
1247 SI opval = tmp_tmp;
1248 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1249 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1251 if (EQSI (tmp_tmp, 0)) {
1252 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1253 } else {
1254 if (LTSI (tmp_tmp, 0)) {
1255 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1256 } else {
1257 tmp_cc = ANDQI (tmp_cc, 3);
1261 UQI opval = tmp_cc;
1262 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1263 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1267 return vpc;
1268 #undef FLD
1271 /* srlcc: srlcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1273 static SEM_PC
1274 SEM_FN_NAME (frvbf,srlcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1276 #define FLD(f) abuf->fields.sfmt_addcc.f
1277 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1278 int UNUSED written = 0;
1279 IADDR UNUSED pc = abuf->addr;
1280 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1283 SI tmp_shift;
1284 SI tmp_tmp;
1285 QI tmp_cc;
1286 tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31);
1287 tmp_cc = frvbf_set_icc_for_shift_right (current_cpu, GET_H_GR (FLD (f_GRi)), tmp_shift, CPU (h_iccr[FLD (f_ICCi_1)]));
1288 tmp_tmp = SRLSI (GET_H_GR (FLD (f_GRi)), tmp_shift);
1290 SI opval = tmp_tmp;
1291 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1292 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1294 if (EQSI (tmp_tmp, 0)) {
1295 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1296 } else {
1297 if (LTSI (tmp_tmp, 0)) {
1298 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1299 } else {
1300 tmp_cc = ANDQI (tmp_cc, 3);
1304 UQI opval = tmp_cc;
1305 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1306 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1310 return vpc;
1311 #undef FLD
1314 /* sracc: sracc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1316 static SEM_PC
1317 SEM_FN_NAME (frvbf,sracc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1319 #define FLD(f) abuf->fields.sfmt_addcc.f
1320 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1321 int UNUSED written = 0;
1322 IADDR UNUSED pc = abuf->addr;
1323 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1326 SI tmp_shift;
1327 SI tmp_tmp;
1328 QI tmp_cc;
1329 tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31);
1330 tmp_cc = frvbf_set_icc_for_shift_right (current_cpu, GET_H_GR (FLD (f_GRi)), tmp_shift, CPU (h_iccr[FLD (f_ICCi_1)]));
1331 tmp_tmp = SRASI (GET_H_GR (FLD (f_GRi)), tmp_shift);
1333 SI opval = tmp_tmp;
1334 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1335 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1337 if (EQSI (tmp_tmp, 0)) {
1338 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1339 } else {
1340 if (LTSI (tmp_tmp, 0)) {
1341 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1342 } else {
1343 tmp_cc = ANDQI (tmp_cc, 3);
1347 UQI opval = tmp_cc;
1348 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1349 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1353 return vpc;
1354 #undef FLD
1357 /* smulcc: smulcc$pack $GRi,$GRj,$GRdoublek,$ICCi_1 */
1359 static SEM_PC
1360 SEM_FN_NAME (frvbf,smulcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1362 #define FLD(f) abuf->fields.sfmt_smulcc.f
1363 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1364 int UNUSED written = 0;
1365 IADDR UNUSED pc = abuf->addr;
1366 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1369 DI tmp_tmp;
1370 QI tmp_cc;
1371 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
1372 tmp_tmp = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))));
1373 if (EQDI (SRLDI (tmp_tmp, 63), 0)) {
1374 tmp_cc = ANDQI (tmp_cc, 7);
1375 } else {
1376 tmp_cc = ORQI (tmp_cc, 8);
1378 if (EQBI (EQDI (tmp_tmp, 0), 0)) {
1379 tmp_cc = ANDQI (tmp_cc, 11);
1380 } else {
1381 tmp_cc = ORQI (tmp_cc, 4);
1384 DI opval = tmp_tmp;
1385 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
1386 CGEN_TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
1389 UQI opval = tmp_cc;
1390 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1391 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1395 return vpc;
1396 #undef FLD
1399 /* umulcc: umulcc$pack $GRi,$GRj,$GRdoublek,$ICCi_1 */
1401 static SEM_PC
1402 SEM_FN_NAME (frvbf,umulcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1404 #define FLD(f) abuf->fields.sfmt_smulcc.f
1405 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1406 int UNUSED written = 0;
1407 IADDR UNUSED pc = abuf->addr;
1408 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1411 DI tmp_tmp;
1412 QI tmp_cc;
1413 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
1414 tmp_tmp = MULDI (ZEXTSIDI (GET_H_GR (FLD (f_GRi))), ZEXTSIDI (GET_H_GR (FLD (f_GRj))));
1415 if (EQDI (SRLDI (tmp_tmp, 63), 0)) {
1416 tmp_cc = ANDQI (tmp_cc, 7);
1417 } else {
1418 tmp_cc = ORQI (tmp_cc, 8);
1420 if (EQBI (EQDI (tmp_tmp, 0), 0)) {
1421 tmp_cc = ANDQI (tmp_cc, 11);
1422 } else {
1423 tmp_cc = ORQI (tmp_cc, 4);
1426 DI opval = tmp_tmp;
1427 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
1428 CGEN_TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
1431 UQI opval = tmp_cc;
1432 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1433 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1437 return vpc;
1438 #undef FLD
1441 /* caddcc: caddcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1443 static SEM_PC
1444 SEM_FN_NAME (frvbf,caddcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1446 #define FLD(f) abuf->fields.sfmt_caddcc.f
1447 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1448 int UNUSED written = 0;
1449 IADDR UNUSED pc = abuf->addr;
1450 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1452 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1454 BI tmp_tmp;
1455 QI tmp_cc;
1456 SI tmp_result;
1457 tmp_cc = CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]);
1458 tmp_tmp = ADDOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
1459 if (EQBI (tmp_tmp, 0)) {
1460 tmp_cc = ANDQI (tmp_cc, 13);
1461 } else {
1462 tmp_cc = ORQI (tmp_cc, 2);
1464 tmp_tmp = ADDCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
1465 if (EQBI (tmp_tmp, 0)) {
1466 tmp_cc = ANDQI (tmp_cc, 14);
1467 } else {
1468 tmp_cc = ORQI (tmp_cc, 1);
1470 tmp_result = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1471 if (EQSI (tmp_result, 0)) {
1472 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1473 } else {
1474 if (LTSI (tmp_result, 0)) {
1475 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1476 } else {
1477 tmp_cc = ANDQI (tmp_cc, 3);
1481 SI opval = tmp_result;
1482 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1483 written |= (1 << 6);
1484 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1487 UQI opval = tmp_cc;
1488 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
1489 written |= (1 << 7);
1490 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1495 abuf->written = written;
1496 return vpc;
1497 #undef FLD
1500 /* csubcc: csubcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1502 static SEM_PC
1503 SEM_FN_NAME (frvbf,csubcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1505 #define FLD(f) abuf->fields.sfmt_caddcc.f
1506 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1507 int UNUSED written = 0;
1508 IADDR UNUSED pc = abuf->addr;
1509 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1511 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1513 BI tmp_tmp;
1514 QI tmp_cc;
1515 SI tmp_result;
1516 tmp_cc = CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]);
1517 tmp_tmp = SUBOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
1518 if (EQBI (tmp_tmp, 0)) {
1519 tmp_cc = ANDQI (tmp_cc, 13);
1520 } else {
1521 tmp_cc = ORQI (tmp_cc, 2);
1523 tmp_tmp = SUBCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0);
1524 if (EQBI (tmp_tmp, 0)) {
1525 tmp_cc = ANDQI (tmp_cc, 14);
1526 } else {
1527 tmp_cc = ORQI (tmp_cc, 1);
1529 tmp_result = SUBSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1530 if (EQSI (tmp_result, 0)) {
1531 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1532 } else {
1533 if (LTSI (tmp_result, 0)) {
1534 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1535 } else {
1536 tmp_cc = ANDQI (tmp_cc, 3);
1540 SI opval = tmp_result;
1541 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1542 written |= (1 << 6);
1543 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1546 UQI opval = tmp_cc;
1547 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
1548 written |= (1 << 7);
1549 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1554 abuf->written = written;
1555 return vpc;
1556 #undef FLD
1559 /* csmulcc: csmulcc$pack $GRi,$GRj,$GRdoublek,$CCi,$cond */
1561 static SEM_PC
1562 SEM_FN_NAME (frvbf,csmulcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1564 #define FLD(f) abuf->fields.sfmt_csmulcc.f
1565 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1566 int UNUSED written = 0;
1567 IADDR UNUSED pc = abuf->addr;
1568 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1570 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1572 DI tmp_tmp;
1573 QI tmp_cc;
1574 tmp_cc = CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]);
1575 tmp_tmp = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (GET_H_GR (FLD (f_GRj))));
1576 if (EQDI (SRLDI (tmp_tmp, 63), 0)) {
1577 tmp_cc = ANDQI (tmp_cc, 7);
1578 } else {
1579 tmp_cc = ORQI (tmp_cc, 8);
1581 if (EQBI (EQDI (tmp_tmp, 0), 0)) {
1582 tmp_cc = ANDQI (tmp_cc, 11);
1583 } else {
1584 tmp_cc = ORQI (tmp_cc, 4);
1587 DI opval = tmp_tmp;
1588 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
1589 written |= (1 << 6);
1590 CGEN_TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
1593 UQI opval = tmp_cc;
1594 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
1595 written |= (1 << 7);
1596 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1601 abuf->written = written;
1602 return vpc;
1603 #undef FLD
1606 /* candcc: candcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1608 static SEM_PC
1609 SEM_FN_NAME (frvbf,candcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1611 #define FLD(f) abuf->fields.sfmt_caddcc.f
1612 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1613 int UNUSED written = 0;
1614 IADDR UNUSED pc = abuf->addr;
1615 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1617 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1619 SI tmp_tmp;
1620 tmp_tmp = ANDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1622 SI opval = tmp_tmp;
1623 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1624 written |= (1 << 6);
1625 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1627 if (EQSI (tmp_tmp, 0)) {
1629 UQI opval = ORQI (ANDQI (CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), 7), 4);
1630 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
1631 written |= (1 << 7);
1632 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1634 } else {
1635 if (LTSI (tmp_tmp, 0)) {
1637 UQI opval = ORQI (ANDQI (CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), 11), 8);
1638 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
1639 written |= (1 << 7);
1640 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1642 } else {
1644 UQI opval = ANDQI (CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), 3);
1645 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
1646 written |= (1 << 7);
1647 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1654 abuf->written = written;
1655 return vpc;
1656 #undef FLD
1659 /* corcc: corcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1661 static SEM_PC
1662 SEM_FN_NAME (frvbf,corcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1664 #define FLD(f) abuf->fields.sfmt_caddcc.f
1665 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1666 int UNUSED written = 0;
1667 IADDR UNUSED pc = abuf->addr;
1668 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1670 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1672 SI tmp_tmp;
1673 tmp_tmp = ORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1675 SI opval = tmp_tmp;
1676 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1677 written |= (1 << 6);
1678 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1680 if (EQSI (tmp_tmp, 0)) {
1682 UQI opval = ORQI (ANDQI (CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), 7), 4);
1683 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
1684 written |= (1 << 7);
1685 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1687 } else {
1688 if (LTSI (tmp_tmp, 0)) {
1690 UQI opval = ORQI (ANDQI (CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), 11), 8);
1691 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
1692 written |= (1 << 7);
1693 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1695 } else {
1697 UQI opval = ANDQI (CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), 3);
1698 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
1699 written |= (1 << 7);
1700 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1707 abuf->written = written;
1708 return vpc;
1709 #undef FLD
1712 /* cxorcc: cxorcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1714 static SEM_PC
1715 SEM_FN_NAME (frvbf,cxorcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1717 #define FLD(f) abuf->fields.sfmt_caddcc.f
1718 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1719 int UNUSED written = 0;
1720 IADDR UNUSED pc = abuf->addr;
1721 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1723 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1725 SI tmp_tmp;
1726 tmp_tmp = XORSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
1728 SI opval = tmp_tmp;
1729 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1730 written |= (1 << 6);
1731 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1733 if (EQSI (tmp_tmp, 0)) {
1735 UQI opval = ORQI (ANDQI (CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), 7), 4);
1736 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
1737 written |= (1 << 7);
1738 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1740 } else {
1741 if (LTSI (tmp_tmp, 0)) {
1743 UQI opval = ORQI (ANDQI (CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), 11), 8);
1744 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
1745 written |= (1 << 7);
1746 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1748 } else {
1750 UQI opval = ANDQI (CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), 3);
1751 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
1752 written |= (1 << 7);
1753 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1760 abuf->written = written;
1761 return vpc;
1762 #undef FLD
1765 /* csllcc: csllcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1767 static SEM_PC
1768 SEM_FN_NAME (frvbf,csllcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1770 #define FLD(f) abuf->fields.sfmt_caddcc.f
1771 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1772 int UNUSED written = 0;
1773 IADDR UNUSED pc = abuf->addr;
1774 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1776 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1778 SI tmp_shift;
1779 SI tmp_tmp;
1780 QI tmp_cc;
1781 tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31);
1782 tmp_cc = frvbf_set_icc_for_shift_left (current_cpu, GET_H_GR (FLD (f_GRi)), tmp_shift, CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]));
1783 tmp_tmp = SLLSI (GET_H_GR (FLD (f_GRi)), tmp_shift);
1785 SI opval = tmp_tmp;
1786 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1787 written |= (1 << 6);
1788 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1790 if (EQSI (tmp_tmp, 0)) {
1791 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1792 } else {
1793 if (LTSI (tmp_tmp, 0)) {
1794 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1795 } else {
1796 tmp_cc = ANDQI (tmp_cc, 3);
1800 UQI opval = tmp_cc;
1801 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
1802 written |= (1 << 7);
1803 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1808 abuf->written = written;
1809 return vpc;
1810 #undef FLD
1813 /* csrlcc: csrlcc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1815 static SEM_PC
1816 SEM_FN_NAME (frvbf,csrlcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1818 #define FLD(f) abuf->fields.sfmt_caddcc.f
1819 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1820 int UNUSED written = 0;
1821 IADDR UNUSED pc = abuf->addr;
1822 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1824 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1826 SI tmp_shift;
1827 SI tmp_tmp;
1828 QI tmp_cc;
1829 tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31);
1830 tmp_cc = frvbf_set_icc_for_shift_right (current_cpu, GET_H_GR (FLD (f_GRi)), tmp_shift, CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]));
1831 tmp_tmp = SRLSI (GET_H_GR (FLD (f_GRi)), tmp_shift);
1833 SI opval = tmp_tmp;
1834 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1835 written |= (1 << 6);
1836 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1838 if (EQSI (tmp_tmp, 0)) {
1839 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1840 } else {
1841 if (LTSI (tmp_tmp, 0)) {
1842 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1843 } else {
1844 tmp_cc = ANDQI (tmp_cc, 3);
1848 UQI opval = tmp_cc;
1849 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
1850 written |= (1 << 7);
1851 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1856 abuf->written = written;
1857 return vpc;
1858 #undef FLD
1861 /* csracc: csracc$pack $GRi,$GRj,$GRk,$CCi,$cond */
1863 static SEM_PC
1864 SEM_FN_NAME (frvbf,csracc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1866 #define FLD(f) abuf->fields.sfmt_caddcc.f
1867 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1868 int UNUSED written = 0;
1869 IADDR UNUSED pc = abuf->addr;
1870 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1872 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
1874 SI tmp_shift;
1875 SI tmp_tmp;
1876 QI tmp_cc;
1877 tmp_shift = ANDSI (GET_H_GR (FLD (f_GRj)), 31);
1878 tmp_cc = frvbf_set_icc_for_shift_right (current_cpu, GET_H_GR (FLD (f_GRi)), tmp_shift, CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]));
1879 tmp_tmp = SRASI (GET_H_GR (FLD (f_GRi)), tmp_shift);
1881 SI opval = tmp_tmp;
1882 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1883 written |= (1 << 6);
1884 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1886 if (EQSI (tmp_tmp, 0)) {
1887 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1888 } else {
1889 if (LTSI (tmp_tmp, 0)) {
1890 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1891 } else {
1892 tmp_cc = ANDQI (tmp_cc, 3);
1896 UQI opval = tmp_cc;
1897 sim_queue_qi_write (current_cpu, & CPU (h_iccr[ANDSI (FLD (f_CCi), 3)]), opval);
1898 written |= (1 << 7);
1899 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1904 abuf->written = written;
1905 return vpc;
1906 #undef FLD
1909 /* addx: addx$pack $GRi,$GRj,$GRk,$ICCi_1 */
1911 static SEM_PC
1912 SEM_FN_NAME (frvbf,addx) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1914 #define FLD(f) abuf->fields.sfmt_addcc.f
1915 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1916 int UNUSED written = 0;
1917 IADDR UNUSED pc = abuf->addr;
1918 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1921 SI opval = ADDCSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 1)));
1922 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1923 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1926 return vpc;
1927 #undef FLD
1930 /* subx: subx$pack $GRi,$GRj,$GRk,$ICCi_1 */
1932 static SEM_PC
1933 SEM_FN_NAME (frvbf,subx) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1935 #define FLD(f) abuf->fields.sfmt_addcc.f
1936 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1937 int UNUSED written = 0;
1938 IADDR UNUSED pc = abuf->addr;
1939 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1942 SI opval = SUBCSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 1)));
1943 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1944 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1947 return vpc;
1948 #undef FLD
1951 /* addxcc: addxcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
1953 static SEM_PC
1954 SEM_FN_NAME (frvbf,addxcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
1956 #define FLD(f) abuf->fields.sfmt_addcc.f
1957 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
1958 int UNUSED written = 0;
1959 IADDR UNUSED pc = abuf->addr;
1960 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
1963 SI tmp_tmp;
1964 QI tmp_cc;
1965 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
1966 tmp_tmp = ADDCSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1)));
1967 if (EQBI (ADDOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
1968 tmp_cc = ANDQI (tmp_cc, 13);
1969 } else {
1970 tmp_cc = ORQI (tmp_cc, 2);
1972 if (EQBI (ADDCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
1973 tmp_cc = ANDQI (tmp_cc, 14);
1974 } else {
1975 tmp_cc = ORQI (tmp_cc, 1);
1977 if (EQSI (tmp_tmp, 0)) {
1978 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
1979 } else {
1980 if (LTSI (tmp_tmp, 0)) {
1981 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
1982 } else {
1983 tmp_cc = ANDQI (tmp_cc, 3);
1987 SI opval = tmp_tmp;
1988 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
1989 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
1992 UQI opval = tmp_cc;
1993 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
1994 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
1998 return vpc;
1999 #undef FLD
2002 /* subxcc: subxcc$pack $GRi,$GRj,$GRk,$ICCi_1 */
2004 static SEM_PC
2005 SEM_FN_NAME (frvbf,subxcc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2007 #define FLD(f) abuf->fields.sfmt_addcc.f
2008 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2009 int UNUSED written = 0;
2010 IADDR UNUSED pc = abuf->addr;
2011 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2014 SI tmp_tmp;
2015 QI tmp_cc;
2016 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
2017 tmp_tmp = SUBCSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1)));
2018 if (EQBI (SUBOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
2019 tmp_cc = ANDQI (tmp_cc, 13);
2020 } else {
2021 tmp_cc = ORQI (tmp_cc, 2);
2023 if (EQBI (SUBCFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
2024 tmp_cc = ANDQI (tmp_cc, 14);
2025 } else {
2026 tmp_cc = ORQI (tmp_cc, 1);
2028 if (EQSI (tmp_tmp, 0)) {
2029 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2030 } else {
2031 if (LTSI (tmp_tmp, 0)) {
2032 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2033 } else {
2034 tmp_cc = ANDQI (tmp_cc, 3);
2038 SI opval = tmp_tmp;
2039 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2040 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2043 UQI opval = tmp_cc;
2044 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2045 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2049 return vpc;
2050 #undef FLD
2053 /* addss: addss$pack $GRi,$GRj,$GRk */
2055 static SEM_PC
2056 SEM_FN_NAME (frvbf,addss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2058 #define FLD(f) abuf->fields.sfmt_addcc.f
2059 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2060 int UNUSED written = 0;
2061 IADDR UNUSED pc = abuf->addr;
2062 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2066 SI opval = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
2067 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2068 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2070 if (ADDOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0)) {
2072 SI opval = (GTSI (GET_H_GR (FLD (f_GRi)), 0)) ? (2147483647) : (LTSI (GET_H_GR (FLD (f_GRi)), 0)) ? (0x80000000) : (0);
2073 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2074 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2079 return vpc;
2080 #undef FLD
2083 /* subss: subss$pack $GRi,$GRj,$GRk */
2085 static SEM_PC
2086 SEM_FN_NAME (frvbf,subss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2088 #define FLD(f) abuf->fields.sfmt_addcc.f
2089 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2090 int UNUSED written = 0;
2091 IADDR UNUSED pc = abuf->addr;
2092 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2096 SI opval = SUBSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
2097 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2098 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2100 if (SUBOFSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), 0)) {
2102 SI opval = (GTSI (GET_H_GR (FLD (f_GRi)), 0)) ? (2147483647) : (LTSI (GET_H_GR (FLD (f_GRi)), 0)) ? (0x80000000) : (0);
2103 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2104 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2109 return vpc;
2110 #undef FLD
2113 /* addi: addi$pack $GRi,$s12,$GRk */
2115 static SEM_PC
2116 SEM_FN_NAME (frvbf,addi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2118 #define FLD(f) abuf->fields.sfmt_swapi.f
2119 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2120 int UNUSED written = 0;
2121 IADDR UNUSED pc = abuf->addr;
2122 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2125 SI opval = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
2126 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2127 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2130 return vpc;
2131 #undef FLD
2134 /* subi: subi$pack $GRi,$s12,$GRk */
2136 static SEM_PC
2137 SEM_FN_NAME (frvbf,subi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2139 #define FLD(f) abuf->fields.sfmt_swapi.f
2140 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2141 int UNUSED written = 0;
2142 IADDR UNUSED pc = abuf->addr;
2143 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2146 SI opval = SUBSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
2147 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2148 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2151 return vpc;
2152 #undef FLD
2155 /* andi: andi$pack $GRi,$s12,$GRk */
2157 static SEM_PC
2158 SEM_FN_NAME (frvbf,andi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2160 #define FLD(f) abuf->fields.sfmt_swapi.f
2161 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2162 int UNUSED written = 0;
2163 IADDR UNUSED pc = abuf->addr;
2164 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2167 SI opval = ANDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
2168 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2169 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2172 return vpc;
2173 #undef FLD
2176 /* ori: ori$pack $GRi,$s12,$GRk */
2178 static SEM_PC
2179 SEM_FN_NAME (frvbf,ori) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2181 #define FLD(f) abuf->fields.sfmt_swapi.f
2182 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2183 int UNUSED written = 0;
2184 IADDR UNUSED pc = abuf->addr;
2185 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2188 SI opval = ORSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
2189 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2190 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2193 return vpc;
2194 #undef FLD
2197 /* xori: xori$pack $GRi,$s12,$GRk */
2199 static SEM_PC
2200 SEM_FN_NAME (frvbf,xori) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2202 #define FLD(f) abuf->fields.sfmt_swapi.f
2203 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2204 int UNUSED written = 0;
2205 IADDR UNUSED pc = abuf->addr;
2206 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2209 SI opval = XORSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
2210 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2211 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2214 return vpc;
2215 #undef FLD
2218 /* sdivi: sdivi$pack $GRi,$s12,$GRk */
2220 static SEM_PC
2221 SEM_FN_NAME (frvbf,sdivi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2223 #define FLD(f) abuf->fields.sfmt_swapi.f
2224 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2225 int UNUSED written = 0;
2226 IADDR UNUSED pc = abuf->addr;
2227 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2230 frvbf_signed_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), FLD (f_d12), FLD (f_GRk), 0);
2231 ; /*clobber*/
2234 return vpc;
2235 #undef FLD
2238 /* nsdivi: nsdivi$pack $GRi,$s12,$GRk */
2240 static SEM_PC
2241 SEM_FN_NAME (frvbf,nsdivi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2243 #define FLD(f) abuf->fields.sfmt_swapi.f
2244 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2245 int UNUSED written = 0;
2246 IADDR UNUSED pc = abuf->addr;
2247 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2250 frvbf_signed_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), FLD (f_d12), FLD (f_GRk), 1);
2251 ; /*clobber*/
2254 return vpc;
2255 #undef FLD
2258 /* udivi: udivi$pack $GRi,$s12,$GRk */
2260 static SEM_PC
2261 SEM_FN_NAME (frvbf,udivi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2263 #define FLD(f) abuf->fields.sfmt_swapi.f
2264 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2265 int UNUSED written = 0;
2266 IADDR UNUSED pc = abuf->addr;
2267 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2270 frvbf_unsigned_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), FLD (f_d12), FLD (f_GRk), 0);
2271 ; /*clobber*/
2274 return vpc;
2275 #undef FLD
2278 /* nudivi: nudivi$pack $GRi,$s12,$GRk */
2280 static SEM_PC
2281 SEM_FN_NAME (frvbf,nudivi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2283 #define FLD(f) abuf->fields.sfmt_swapi.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 frvbf_unsigned_integer_divide (current_cpu, GET_H_GR (FLD (f_GRi)), FLD (f_d12), FLD (f_GRk), 1);
2291 ; /*clobber*/
2294 return vpc;
2295 #undef FLD
2298 /* smuli: smuli$pack $GRi,$s12,$GRdoublek */
2300 static SEM_PC
2301 SEM_FN_NAME (frvbf,smuli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2303 #define FLD(f) abuf->fields.sfmt_smuli.f
2304 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2305 int UNUSED written = 0;
2306 IADDR UNUSED pc = abuf->addr;
2307 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2310 DI opval = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (FLD (f_d12)));
2311 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
2312 CGEN_TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
2315 return vpc;
2316 #undef FLD
2319 /* umuli: umuli$pack $GRi,$s12,$GRdoublek */
2321 static SEM_PC
2322 SEM_FN_NAME (frvbf,umuli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2324 #define FLD(f) abuf->fields.sfmt_smuli.f
2325 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2326 int UNUSED written = 0;
2327 IADDR UNUSED pc = abuf->addr;
2328 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2331 DI opval = MULDI (ZEXTSIDI (GET_H_GR (FLD (f_GRi))), ZEXTSIDI (FLD (f_d12)));
2332 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
2333 CGEN_TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
2336 return vpc;
2337 #undef FLD
2340 /* slli: slli$pack $GRi,$s12,$GRk */
2342 static SEM_PC
2343 SEM_FN_NAME (frvbf,slli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2345 #define FLD(f) abuf->fields.sfmt_swapi.f
2346 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2347 int UNUSED written = 0;
2348 IADDR UNUSED pc = abuf->addr;
2349 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2352 SI opval = SLLSI (GET_H_GR (FLD (f_GRi)), ANDSI (FLD (f_d12), 31));
2353 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2354 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2357 return vpc;
2358 #undef FLD
2361 /* srli: srli$pack $GRi,$s12,$GRk */
2363 static SEM_PC
2364 SEM_FN_NAME (frvbf,srli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2366 #define FLD(f) abuf->fields.sfmt_swapi.f
2367 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2368 int UNUSED written = 0;
2369 IADDR UNUSED pc = abuf->addr;
2370 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2373 SI opval = SRLSI (GET_H_GR (FLD (f_GRi)), ANDSI (FLD (f_d12), 31));
2374 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2375 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2378 return vpc;
2379 #undef FLD
2382 /* srai: srai$pack $GRi,$s12,$GRk */
2384 static SEM_PC
2385 SEM_FN_NAME (frvbf,srai) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2387 #define FLD(f) abuf->fields.sfmt_swapi.f
2388 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2389 int UNUSED written = 0;
2390 IADDR UNUSED pc = abuf->addr;
2391 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2394 SI opval = SRASI (GET_H_GR (FLD (f_GRi)), ANDSI (FLD (f_d12), 31));
2395 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2396 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2399 return vpc;
2400 #undef FLD
2403 /* scani: scani$pack $GRi,$s12,$GRk */
2405 static SEM_PC
2406 SEM_FN_NAME (frvbf,scani) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2408 #define FLD(f) abuf->fields.sfmt_swapi.f
2409 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2410 int UNUSED written = 0;
2411 IADDR UNUSED pc = abuf->addr;
2412 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2415 SI tmp_tmp1;
2416 SI tmp_tmp2;
2417 tmp_tmp1 = GET_H_GR (FLD (f_GRi));
2418 tmp_tmp2 = SRASI (FLD (f_d12), 1);
2420 SI opval = frvbf_scan_result (current_cpu, XORSI (tmp_tmp1, tmp_tmp2));
2421 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2422 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2426 return vpc;
2427 #undef FLD
2430 /* addicc: addicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2432 static SEM_PC
2433 SEM_FN_NAME (frvbf,addicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2435 #define FLD(f) abuf->fields.sfmt_addicc.f
2436 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2437 int UNUSED written = 0;
2438 IADDR UNUSED pc = abuf->addr;
2439 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2442 BI tmp_tmp;
2443 QI tmp_cc;
2444 SI tmp_result;
2445 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
2446 tmp_tmp = ADDOFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), 0);
2447 if (EQBI (tmp_tmp, 0)) {
2448 tmp_cc = ANDQI (tmp_cc, 13);
2449 } else {
2450 tmp_cc = ORQI (tmp_cc, 2);
2452 tmp_tmp = ADDCFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), 0);
2453 if (EQBI (tmp_tmp, 0)) {
2454 tmp_cc = ANDQI (tmp_cc, 14);
2455 } else {
2456 tmp_cc = ORQI (tmp_cc, 1);
2458 tmp_result = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10));
2459 if (EQSI (tmp_result, 0)) {
2460 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2461 } else {
2462 if (LTSI (tmp_result, 0)) {
2463 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2464 } else {
2465 tmp_cc = ANDQI (tmp_cc, 3);
2469 SI opval = tmp_result;
2470 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2471 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2474 UQI opval = tmp_cc;
2475 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2476 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2480 return vpc;
2481 #undef FLD
2484 /* subicc: subicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2486 static SEM_PC
2487 SEM_FN_NAME (frvbf,subicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2489 #define FLD(f) abuf->fields.sfmt_addicc.f
2490 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2491 int UNUSED written = 0;
2492 IADDR UNUSED pc = abuf->addr;
2493 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2496 BI tmp_tmp;
2497 QI tmp_cc;
2498 SI tmp_result;
2499 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
2500 tmp_tmp = SUBOFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), 0);
2501 if (EQBI (tmp_tmp, 0)) {
2502 tmp_cc = ANDQI (tmp_cc, 13);
2503 } else {
2504 tmp_cc = ORQI (tmp_cc, 2);
2506 tmp_tmp = SUBCFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), 0);
2507 if (EQBI (tmp_tmp, 0)) {
2508 tmp_cc = ANDQI (tmp_cc, 14);
2509 } else {
2510 tmp_cc = ORQI (tmp_cc, 1);
2512 tmp_result = SUBSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10));
2513 if (EQSI (tmp_result, 0)) {
2514 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2515 } else {
2516 if (LTSI (tmp_result, 0)) {
2517 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2518 } else {
2519 tmp_cc = ANDQI (tmp_cc, 3);
2523 SI opval = tmp_result;
2524 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2525 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2528 UQI opval = tmp_cc;
2529 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2530 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2534 return vpc;
2535 #undef FLD
2538 /* andicc: andicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2540 static SEM_PC
2541 SEM_FN_NAME (frvbf,andicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2543 #define FLD(f) abuf->fields.sfmt_addicc.f
2544 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2545 int UNUSED written = 0;
2546 IADDR UNUSED pc = abuf->addr;
2547 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2550 SI tmp_tmp;
2551 tmp_tmp = ANDSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10));
2553 SI opval = tmp_tmp;
2554 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2555 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2557 if (EQSI (tmp_tmp, 0)) {
2559 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 7), 4);
2560 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2561 written |= (1 << 4);
2562 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2564 } else {
2565 if (LTSI (tmp_tmp, 0)) {
2567 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 11), 8);
2568 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2569 written |= (1 << 4);
2570 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2572 } else {
2574 UQI opval = ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 3);
2575 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2576 written |= (1 << 4);
2577 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2583 abuf->written = written;
2584 return vpc;
2585 #undef FLD
2588 /* oricc: oricc$pack $GRi,$s10,$GRk,$ICCi_1 */
2590 static SEM_PC
2591 SEM_FN_NAME (frvbf,oricc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2593 #define FLD(f) abuf->fields.sfmt_addicc.f
2594 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2595 int UNUSED written = 0;
2596 IADDR UNUSED pc = abuf->addr;
2597 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2600 SI tmp_tmp;
2601 tmp_tmp = ORSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10));
2603 SI opval = tmp_tmp;
2604 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2605 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2607 if (EQSI (tmp_tmp, 0)) {
2609 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 7), 4);
2610 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2611 written |= (1 << 4);
2612 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2614 } else {
2615 if (LTSI (tmp_tmp, 0)) {
2617 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 11), 8);
2618 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2619 written |= (1 << 4);
2620 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2622 } else {
2624 UQI opval = ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 3);
2625 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2626 written |= (1 << 4);
2627 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2633 abuf->written = written;
2634 return vpc;
2635 #undef FLD
2638 /* xoricc: xoricc$pack $GRi,$s10,$GRk,$ICCi_1 */
2640 static SEM_PC
2641 SEM_FN_NAME (frvbf,xoricc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2643 #define FLD(f) abuf->fields.sfmt_addicc.f
2644 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2645 int UNUSED written = 0;
2646 IADDR UNUSED pc = abuf->addr;
2647 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2650 SI tmp_tmp;
2651 tmp_tmp = XORSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10));
2653 SI opval = tmp_tmp;
2654 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2655 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2657 if (EQSI (tmp_tmp, 0)) {
2659 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 7), 4);
2660 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2661 written |= (1 << 4);
2662 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2664 } else {
2665 if (LTSI (tmp_tmp, 0)) {
2667 UQI opval = ORQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 11), 8);
2668 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2669 written |= (1 << 4);
2670 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2672 } else {
2674 UQI opval = ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 3);
2675 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2676 written |= (1 << 4);
2677 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2683 abuf->written = written;
2684 return vpc;
2685 #undef FLD
2688 /* smulicc: smulicc$pack $GRi,$s10,$GRdoublek,$ICCi_1 */
2690 static SEM_PC
2691 SEM_FN_NAME (frvbf,smulicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2693 #define FLD(f) abuf->fields.sfmt_smulicc.f
2694 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2695 int UNUSED written = 0;
2696 IADDR UNUSED pc = abuf->addr;
2697 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2700 DI tmp_tmp;
2701 QI tmp_cc;
2702 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
2703 tmp_tmp = MULDI (EXTSIDI (GET_H_GR (FLD (f_GRi))), EXTSIDI (FLD (f_s10)));
2704 if (EQDI (SRLDI (tmp_tmp, 63), 0)) {
2705 tmp_cc = ANDQI (tmp_cc, 7);
2706 } else {
2707 tmp_cc = ORQI (tmp_cc, 8);
2709 if (EQBI (EQDI (tmp_tmp, 0), 0)) {
2710 tmp_cc = ANDQI (tmp_cc, 11);
2711 } else {
2712 tmp_cc = ORQI (tmp_cc, 4);
2715 DI opval = tmp_tmp;
2716 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
2717 CGEN_TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
2720 UQI opval = tmp_cc;
2721 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2722 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2726 return vpc;
2727 #undef FLD
2730 /* umulicc: umulicc$pack $GRi,$s10,$GRdoublek,$ICCi_1 */
2732 static SEM_PC
2733 SEM_FN_NAME (frvbf,umulicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2735 #define FLD(f) abuf->fields.sfmt_smulicc.f
2736 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2737 int UNUSED written = 0;
2738 IADDR UNUSED pc = abuf->addr;
2739 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2742 DI tmp_tmp;
2743 QI tmp_cc;
2744 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
2745 tmp_tmp = MULDI (ZEXTSIDI (GET_H_GR (FLD (f_GRi))), ZEXTSIDI (FLD (f_s10)));
2746 if (EQDI (SRLDI (tmp_tmp, 63), 0)) {
2747 tmp_cc = ANDQI (tmp_cc, 7);
2748 } else {
2749 tmp_cc = ORQI (tmp_cc, 8);
2751 if (EQBI (EQDI (tmp_tmp, 0), 0)) {
2752 tmp_cc = ANDQI (tmp_cc, 11);
2753 } else {
2754 tmp_cc = ORQI (tmp_cc, 4);
2757 DI opval = tmp_tmp;
2758 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
2759 CGEN_TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
2762 UQI opval = tmp_cc;
2763 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2764 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2768 return vpc;
2769 #undef FLD
2772 /* sllicc: sllicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2774 static SEM_PC
2775 SEM_FN_NAME (frvbf,sllicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2777 #define FLD(f) abuf->fields.sfmt_addicc.f
2778 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2779 int UNUSED written = 0;
2780 IADDR UNUSED pc = abuf->addr;
2781 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2784 SI tmp_shift;
2785 SI tmp_tmp;
2786 QI tmp_cc;
2787 tmp_shift = ANDSI (FLD (f_s10), 31);
2788 tmp_cc = frvbf_set_icc_for_shift_left (current_cpu, GET_H_GR (FLD (f_GRi)), tmp_shift, CPU (h_iccr[FLD (f_ICCi_1)]));
2789 tmp_tmp = SLLSI (GET_H_GR (FLD (f_GRi)), tmp_shift);
2791 SI opval = tmp_tmp;
2792 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2793 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2795 if (EQSI (tmp_tmp, 0)) {
2796 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2797 } else {
2798 if (LTSI (tmp_tmp, 0)) {
2799 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2800 } else {
2801 tmp_cc = ANDQI (tmp_cc, 3);
2805 UQI opval = tmp_cc;
2806 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2807 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2811 return vpc;
2812 #undef FLD
2815 /* srlicc: srlicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2817 static SEM_PC
2818 SEM_FN_NAME (frvbf,srlicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2820 #define FLD(f) abuf->fields.sfmt_addicc.f
2821 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2822 int UNUSED written = 0;
2823 IADDR UNUSED pc = abuf->addr;
2824 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2827 SI tmp_shift;
2828 SI tmp_tmp;
2829 QI tmp_cc;
2830 tmp_shift = ANDSI (FLD (f_s10), 31);
2831 tmp_cc = frvbf_set_icc_for_shift_right (current_cpu, GET_H_GR (FLD (f_GRi)), tmp_shift, CPU (h_iccr[FLD (f_ICCi_1)]));
2832 tmp_tmp = SRLSI (GET_H_GR (FLD (f_GRi)), tmp_shift);
2834 SI opval = tmp_tmp;
2835 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2836 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2838 if (EQSI (tmp_tmp, 0)) {
2839 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2840 } else {
2841 if (LTSI (tmp_tmp, 0)) {
2842 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2843 } else {
2844 tmp_cc = ANDQI (tmp_cc, 3);
2848 UQI opval = tmp_cc;
2849 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2850 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2854 return vpc;
2855 #undef FLD
2858 /* sraicc: sraicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2860 static SEM_PC
2861 SEM_FN_NAME (frvbf,sraicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2863 #define FLD(f) abuf->fields.sfmt_addicc.f
2864 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2865 int UNUSED written = 0;
2866 IADDR UNUSED pc = abuf->addr;
2867 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2870 SI tmp_shift;
2871 SI tmp_tmp;
2872 QI tmp_cc;
2873 tmp_shift = ANDSI (FLD (f_s10), 31);
2874 tmp_cc = frvbf_set_icc_for_shift_right (current_cpu, GET_H_GR (FLD (f_GRi)), tmp_shift, CPU (h_iccr[FLD (f_ICCi_1)]));
2875 tmp_tmp = SRASI (GET_H_GR (FLD (f_GRi)), tmp_shift);
2877 SI opval = tmp_tmp;
2878 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2879 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2881 if (EQSI (tmp_tmp, 0)) {
2882 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2883 } else {
2884 if (LTSI (tmp_tmp, 0)) {
2885 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2886 } else {
2887 tmp_cc = ANDQI (tmp_cc, 3);
2891 UQI opval = tmp_cc;
2892 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2893 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2897 return vpc;
2898 #undef FLD
2901 /* addxi: addxi$pack $GRi,$s10,$GRk,$ICCi_1 */
2903 static SEM_PC
2904 SEM_FN_NAME (frvbf,addxi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2906 #define FLD(f) abuf->fields.sfmt_addicc.f
2907 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2908 int UNUSED written = 0;
2909 IADDR UNUSED pc = abuf->addr;
2910 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2913 SI opval = ADDCSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 1)));
2914 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2915 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2918 return vpc;
2919 #undef FLD
2922 /* subxi: subxi$pack $GRi,$s10,$GRk,$ICCi_1 */
2924 static SEM_PC
2925 SEM_FN_NAME (frvbf,subxi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2927 #define FLD(f) abuf->fields.sfmt_addicc.f
2928 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2929 int UNUSED written = 0;
2930 IADDR UNUSED pc = abuf->addr;
2931 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2934 SI opval = SUBCSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_1)]), 1)));
2935 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2936 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2939 return vpc;
2940 #undef FLD
2943 /* addxicc: addxicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2945 static SEM_PC
2946 SEM_FN_NAME (frvbf,addxicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2948 #define FLD(f) abuf->fields.sfmt_addicc.f
2949 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
2950 int UNUSED written = 0;
2951 IADDR UNUSED pc = abuf->addr;
2952 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
2955 SI tmp_tmp;
2956 QI tmp_cc;
2957 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
2958 tmp_tmp = ADDCSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (tmp_cc, 1)));
2959 if (EQBI (ADDOFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
2960 tmp_cc = ANDQI (tmp_cc, 13);
2961 } else {
2962 tmp_cc = ORQI (tmp_cc, 2);
2964 if (EQBI (ADDCFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
2965 tmp_cc = ANDQI (tmp_cc, 14);
2966 } else {
2967 tmp_cc = ORQI (tmp_cc, 1);
2969 if (EQSI (tmp_tmp, 0)) {
2970 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
2971 } else {
2972 if (LTSI (tmp_tmp, 0)) {
2973 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
2974 } else {
2975 tmp_cc = ANDQI (tmp_cc, 3);
2979 SI opval = tmp_tmp;
2980 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
2981 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
2984 UQI opval = tmp_cc;
2985 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
2986 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
2990 return vpc;
2991 #undef FLD
2994 /* subxicc: subxicc$pack $GRi,$s10,$GRk,$ICCi_1 */
2996 static SEM_PC
2997 SEM_FN_NAME (frvbf,subxicc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
2999 #define FLD(f) abuf->fields.sfmt_addicc.f
3000 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3001 int UNUSED written = 0;
3002 IADDR UNUSED pc = abuf->addr;
3003 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3006 SI tmp_tmp;
3007 QI tmp_cc;
3008 tmp_cc = CPU (h_iccr[FLD (f_ICCi_1)]);
3009 tmp_tmp = SUBCSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (tmp_cc, 1)));
3010 if (EQBI (SUBOFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
3011 tmp_cc = ANDQI (tmp_cc, 13);
3012 } else {
3013 tmp_cc = ORQI (tmp_cc, 2);
3015 if (EQBI (SUBCFSI (GET_H_GR (FLD (f_GRi)), FLD (f_s10), TRUNCQIBI (ANDQI (tmp_cc, 1))), 0)) {
3016 tmp_cc = ANDQI (tmp_cc, 14);
3017 } else {
3018 tmp_cc = ORQI (tmp_cc, 1);
3020 if (EQSI (tmp_tmp, 0)) {
3021 tmp_cc = ORQI (ANDQI (tmp_cc, 7), 4);
3022 } else {
3023 if (LTSI (tmp_tmp, 0)) {
3024 tmp_cc = ORQI (ANDQI (tmp_cc, 11), 8);
3025 } else {
3026 tmp_cc = ANDQI (tmp_cc, 3);
3030 SI opval = tmp_tmp;
3031 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3032 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3035 UQI opval = tmp_cc;
3036 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
3037 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
3041 return vpc;
3042 #undef FLD
3045 /* cmpb: cmpb$pack $GRi,$GRj,$ICCi_1 */
3047 static SEM_PC
3048 SEM_FN_NAME (frvbf,cmpb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3050 #define FLD(f) abuf->fields.sfmt_smulcc.f
3051 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3052 int UNUSED written = 0;
3053 IADDR UNUSED pc = abuf->addr;
3054 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3057 QI tmp_cc;
3058 tmp_cc = 0;
3059 if (EQBI (EQSI (ANDSI (GET_H_GR (FLD (f_GRi)), 0xff000000), ANDSI (GET_H_GR (FLD (f_GRj)), 0xff000000)), 0)) {
3060 tmp_cc = ANDQI (tmp_cc, 7);
3061 } else {
3062 tmp_cc = ORQI (tmp_cc, 8);
3064 if (EQBI (EQSI (ANDSI (GET_H_GR (FLD (f_GRi)), 16711680), ANDSI (GET_H_GR (FLD (f_GRj)), 16711680)), 0)) {
3065 tmp_cc = ANDQI (tmp_cc, 11);
3066 } else {
3067 tmp_cc = ORQI (tmp_cc, 4);
3069 if (EQBI (EQSI (ANDSI (GET_H_GR (FLD (f_GRi)), 65280), ANDSI (GET_H_GR (FLD (f_GRj)), 65280)), 0)) {
3070 tmp_cc = ANDQI (tmp_cc, 13);
3071 } else {
3072 tmp_cc = ORQI (tmp_cc, 2);
3074 if (EQBI (EQSI (ANDSI (GET_H_GR (FLD (f_GRi)), 255), ANDSI (GET_H_GR (FLD (f_GRj)), 255)), 0)) {
3075 tmp_cc = ANDQI (tmp_cc, 14);
3076 } else {
3077 tmp_cc = ORQI (tmp_cc, 1);
3080 UQI opval = tmp_cc;
3081 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
3082 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
3086 return vpc;
3087 #undef FLD
3090 /* cmpba: cmpba$pack $GRi,$GRj,$ICCi_1 */
3092 static SEM_PC
3093 SEM_FN_NAME (frvbf,cmpba) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3095 #define FLD(f) abuf->fields.sfmt_smulcc.f
3096 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3097 int UNUSED written = 0;
3098 IADDR UNUSED pc = abuf->addr;
3099 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3102 QI tmp_cc;
3103 tmp_cc = 0;
3104 if (EQBI (ORIF (EQSI (ANDSI (GET_H_GR (FLD (f_GRi)), 0xff000000), ANDSI (GET_H_GR (FLD (f_GRj)), 0xff000000)), ORIF (EQSI (ANDSI (GET_H_GR (FLD (f_GRi)), 16711680), ANDSI (GET_H_GR (FLD (f_GRj)), 16711680)), ORIF (EQSI (ANDSI (GET_H_GR (FLD (f_GRi)), 65280), ANDSI (GET_H_GR (FLD (f_GRj)), 65280)), EQSI (ANDSI (GET_H_GR (FLD (f_GRi)), 255), ANDSI (GET_H_GR (FLD (f_GRj)), 255))))), 0)) {
3105 tmp_cc = ANDQI (tmp_cc, 14);
3106 } else {
3107 tmp_cc = ORQI (tmp_cc, 1);
3110 UQI opval = tmp_cc;
3111 sim_queue_qi_write (current_cpu, & CPU (h_iccr[FLD (f_ICCi_1)]), opval);
3112 CGEN_TRACE_RESULT (current_cpu, abuf, "iccr", 'x', opval);
3116 return vpc;
3117 #undef FLD
3120 /* setlo: setlo$pack $ulo16,$GRklo */
3122 static SEM_PC
3123 SEM_FN_NAME (frvbf,setlo) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3125 #define FLD(f) abuf->fields.sfmt_setlo.f
3126 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3127 int UNUSED written = 0;
3128 IADDR UNUSED pc = abuf->addr;
3129 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3132 UHI opval = FLD (f_u16);
3133 sim_queue_fn_hi_write (current_cpu, frvbf_h_gr_lo_set, FLD (f_GRk), opval);
3134 CGEN_TRACE_RESULT (current_cpu, abuf, "gr_lo", 'x', opval);
3137 return vpc;
3138 #undef FLD
3141 /* sethi: sethi$pack $uhi16,$GRkhi */
3143 static SEM_PC
3144 SEM_FN_NAME (frvbf,sethi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3146 #define FLD(f) abuf->fields.sfmt_sethi.f
3147 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3148 int UNUSED written = 0;
3149 IADDR UNUSED pc = abuf->addr;
3150 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3153 UHI opval = FLD (f_u16);
3154 sim_queue_fn_hi_write (current_cpu, frvbf_h_gr_hi_set, FLD (f_GRk), opval);
3155 CGEN_TRACE_RESULT (current_cpu, abuf, "gr_hi", 'x', opval);
3158 return vpc;
3159 #undef FLD
3162 /* setlos: setlos$pack $slo16,$GRk */
3164 static SEM_PC
3165 SEM_FN_NAME (frvbf,setlos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3167 #define FLD(f) abuf->fields.sfmt_setlos.f
3168 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3169 int UNUSED written = 0;
3170 IADDR UNUSED pc = abuf->addr;
3171 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3174 SI opval = FLD (f_s16);
3175 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3176 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3179 return vpc;
3180 #undef FLD
3183 /* ldsb: ldsb$pack @($GRi,$GRj),$GRk */
3185 static SEM_PC
3186 SEM_FN_NAME (frvbf,ldsb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3188 #define FLD(f) abuf->fields.sfmt_addcc.f
3189 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3190 int UNUSED written = 0;
3191 IADDR UNUSED pc = abuf->addr;
3192 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3195 SI opval = frvbf_read_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3196 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3197 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3200 return vpc;
3201 #undef FLD
3204 /* ldub: ldub$pack @($GRi,$GRj),$GRk */
3206 static SEM_PC
3207 SEM_FN_NAME (frvbf,ldub) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3209 #define FLD(f) abuf->fields.sfmt_addcc.f
3210 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3211 int UNUSED written = 0;
3212 IADDR UNUSED pc = abuf->addr;
3213 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3216 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3217 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3218 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3221 return vpc;
3222 #undef FLD
3225 /* ldsh: ldsh$pack @($GRi,$GRj),$GRk */
3227 static SEM_PC
3228 SEM_FN_NAME (frvbf,ldsh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3230 #define FLD(f) abuf->fields.sfmt_addcc.f
3231 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3232 int UNUSED written = 0;
3233 IADDR UNUSED pc = abuf->addr;
3234 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3237 SI opval = frvbf_read_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3238 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3239 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3242 return vpc;
3243 #undef FLD
3246 /* lduh: lduh$pack @($GRi,$GRj),$GRk */
3248 static SEM_PC
3249 SEM_FN_NAME (frvbf,lduh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3251 #define FLD(f) abuf->fields.sfmt_addcc.f
3252 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3253 int UNUSED written = 0;
3254 IADDR UNUSED pc = abuf->addr;
3255 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3258 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3259 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3260 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3263 return vpc;
3264 #undef FLD
3267 /* ld: ld$pack $ldann($GRi,$GRj),$GRk */
3269 static SEM_PC
3270 SEM_FN_NAME (frvbf,ld) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3272 #define FLD(f) abuf->fields.sfmt_addcc.f
3273 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3274 int UNUSED written = 0;
3275 IADDR UNUSED pc = abuf->addr;
3276 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3279 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3280 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3281 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3284 return vpc;
3285 #undef FLD
3288 /* ldbf: ldbf$pack @($GRi,$GRj),$FRintk */
3290 static SEM_PC
3291 SEM_FN_NAME (frvbf,ldbf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3293 #define FLD(f) abuf->fields.sfmt_cldbfu.f
3294 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3295 int UNUSED written = 0;
3296 IADDR UNUSED pc = abuf->addr;
3297 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3300 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3301 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
3302 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
3305 return vpc;
3306 #undef FLD
3309 /* ldhf: ldhf$pack @($GRi,$GRj),$FRintk */
3311 static SEM_PC
3312 SEM_FN_NAME (frvbf,ldhf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3314 #define FLD(f) abuf->fields.sfmt_cldbfu.f
3315 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3316 int UNUSED written = 0;
3317 IADDR UNUSED pc = abuf->addr;
3318 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3321 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3322 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
3323 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
3326 return vpc;
3327 #undef FLD
3330 /* ldf: ldf$pack @($GRi,$GRj),$FRintk */
3332 static SEM_PC
3333 SEM_FN_NAME (frvbf,ldf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3335 #define FLD(f) abuf->fields.sfmt_cldbfu.f
3336 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3337 int UNUSED written = 0;
3338 IADDR UNUSED pc = abuf->addr;
3339 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3342 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3343 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
3344 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
3347 return vpc;
3348 #undef FLD
3351 /* ldc: ldc$pack @($GRi,$GRj),$CPRk */
3353 static SEM_PC
3354 SEM_FN_NAME (frvbf,ldc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3356 #define FLD(f) abuf->fields.sfmt_ldcu.f
3357 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3358 int UNUSED written = 0;
3359 IADDR UNUSED pc = abuf->addr;
3360 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3363 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3364 sim_queue_si_write (current_cpu, & CPU (h_cpr[FLD (f_CPRk)]), opval);
3365 CGEN_TRACE_RESULT (current_cpu, abuf, "cpr", 'x', opval);
3368 return vpc;
3369 #undef FLD
3372 /* nldsb: nldsb$pack @($GRi,$GRj),$GRk */
3374 static SEM_PC
3375 SEM_FN_NAME (frvbf,nldsb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3377 #define FLD(f) abuf->fields.sfmt_addcc.f
3378 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3379 int UNUSED written = 0;
3380 IADDR UNUSED pc = abuf->addr;
3381 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3384 BI tmp_do_op;
3385 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 1, 0);
3386 if (tmp_do_op) {
3388 SI opval = frvbf_read_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3389 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3390 written |= (1 << 6);
3391 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3396 abuf->written = written;
3397 return vpc;
3398 #undef FLD
3401 /* nldub: nldub$pack @($GRi,$GRj),$GRk */
3403 static SEM_PC
3404 SEM_FN_NAME (frvbf,nldub) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3406 #define FLD(f) abuf->fields.sfmt_addcc.f
3407 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3408 int UNUSED written = 0;
3409 IADDR UNUSED pc = abuf->addr;
3410 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3413 BI tmp_do_op;
3414 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 0, 0);
3415 if (tmp_do_op) {
3417 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3418 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3419 written |= (1 << 6);
3420 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3425 abuf->written = written;
3426 return vpc;
3427 #undef FLD
3430 /* nldsh: nldsh$pack @($GRi,$GRj),$GRk */
3432 static SEM_PC
3433 SEM_FN_NAME (frvbf,nldsh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3435 #define FLD(f) abuf->fields.sfmt_addcc.f
3436 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3437 int UNUSED written = 0;
3438 IADDR UNUSED pc = abuf->addr;
3439 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3442 BI tmp_do_op;
3443 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 3, 0);
3444 if (tmp_do_op) {
3446 SI opval = frvbf_read_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3447 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3448 written |= (1 << 6);
3449 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3454 abuf->written = written;
3455 return vpc;
3456 #undef FLD
3459 /* nlduh: nlduh$pack @($GRi,$GRj),$GRk */
3461 static SEM_PC
3462 SEM_FN_NAME (frvbf,nlduh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3464 #define FLD(f) abuf->fields.sfmt_addcc.f
3465 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3466 int UNUSED written = 0;
3467 IADDR UNUSED pc = abuf->addr;
3468 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3471 BI tmp_do_op;
3472 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 2, 0);
3473 if (tmp_do_op) {
3475 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3476 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3477 written |= (1 << 6);
3478 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3483 abuf->written = written;
3484 return vpc;
3485 #undef FLD
3488 /* nld: nld$pack @($GRi,$GRj),$GRk */
3490 static SEM_PC
3491 SEM_FN_NAME (frvbf,nld) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3493 #define FLD(f) abuf->fields.sfmt_addcc.f
3494 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3495 int UNUSED written = 0;
3496 IADDR UNUSED pc = abuf->addr;
3497 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3500 BI tmp_do_op;
3501 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 4, 0);
3502 if (tmp_do_op) {
3504 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3505 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3506 written |= (1 << 6);
3507 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3512 abuf->written = written;
3513 return vpc;
3514 #undef FLD
3517 /* nldbf: nldbf$pack @($GRi,$GRj),$FRintk */
3519 static SEM_PC
3520 SEM_FN_NAME (frvbf,nldbf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3522 #define FLD(f) abuf->fields.sfmt_cldbfu.f
3523 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3524 int UNUSED written = 0;
3525 IADDR UNUSED pc = abuf->addr;
3526 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3529 BI tmp_do_op;
3530 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 0, 1);
3531 if (tmp_do_op) {
3533 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3534 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
3535 written |= (1 << 6);
3536 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
3541 abuf->written = written;
3542 return vpc;
3543 #undef FLD
3546 /* nldhf: nldhf$pack @($GRi,$GRj),$FRintk */
3548 static SEM_PC
3549 SEM_FN_NAME (frvbf,nldhf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3551 #define FLD(f) abuf->fields.sfmt_cldbfu.f
3552 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3553 int UNUSED written = 0;
3554 IADDR UNUSED pc = abuf->addr;
3555 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3558 BI tmp_do_op;
3559 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 2, 1);
3560 if (tmp_do_op) {
3562 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3563 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
3564 written |= (1 << 6);
3565 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
3570 abuf->written = written;
3571 return vpc;
3572 #undef FLD
3575 /* nldf: nldf$pack @($GRi,$GRj),$FRintk */
3577 static SEM_PC
3578 SEM_FN_NAME (frvbf,nldf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3580 #define FLD(f) abuf->fields.sfmt_cldbfu.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);
3587 BI tmp_do_op;
3588 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 4, 1);
3589 if (tmp_do_op) {
3591 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
3592 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
3593 written |= (1 << 6);
3594 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
3599 abuf->written = written;
3600 return vpc;
3601 #undef FLD
3604 /* ldd: ldd$pack $lddann($GRi,$GRj),$GRdoublek */
3606 static SEM_PC
3607 SEM_FN_NAME (frvbf,ldd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3609 #define FLD(f) abuf->fields.sfmt_smulcc.f
3610 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3611 int UNUSED written = 0;
3612 IADDR UNUSED pc = abuf->addr;
3613 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3616 SI tmp_address;
3617 if (NESI (FLD (f_GRk), 0)) {
3619 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3621 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
3622 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
3623 written |= (1 << 4);
3624 CGEN_TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
3630 abuf->written = written;
3631 return vpc;
3632 #undef FLD
3635 /* lddf: lddf$pack @($GRi,$GRj),$FRdoublek */
3637 static SEM_PC
3638 SEM_FN_NAME (frvbf,lddf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3640 #define FLD(f) abuf->fields.sfmt_clddfu.f
3641 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3642 int UNUSED written = 0;
3643 IADDR UNUSED pc = abuf->addr;
3644 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3647 SI tmp_address;
3649 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3651 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
3652 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
3653 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
3658 return vpc;
3659 #undef FLD
3662 /* lddc: lddc$pack @($GRi,$GRj),$CPRdoublek */
3664 static SEM_PC
3665 SEM_FN_NAME (frvbf,lddc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3667 #define FLD(f) abuf->fields.sfmt_lddcu.f
3668 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3669 int UNUSED written = 0;
3670 IADDR UNUSED pc = abuf->addr;
3671 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3674 SI tmp_address;
3676 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3678 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
3679 sim_queue_fn_di_write (current_cpu, frvbf_h_cpr_double_set, FLD (f_CPRk), opval);
3680 CGEN_TRACE_RESULT (current_cpu, abuf, "cpr_double", 'D', opval);
3685 return vpc;
3686 #undef FLD
3689 /* nldd: nldd$pack @($GRi,$GRj),$GRdoublek */
3691 static SEM_PC
3692 SEM_FN_NAME (frvbf,nldd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3694 #define FLD(f) abuf->fields.sfmt_smulcc.f
3695 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3696 int UNUSED written = 0;
3697 IADDR UNUSED pc = abuf->addr;
3698 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3701 SI tmp_address;
3703 BI tmp_do_op;
3704 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 5, 0);
3705 if (tmp_do_op) {
3706 if (NESI (FLD (f_GRk), 0)) {
3708 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3710 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
3711 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
3712 written |= (1 << 6);
3713 CGEN_TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
3721 abuf->written = written;
3722 return vpc;
3723 #undef FLD
3726 /* nlddf: nlddf$pack @($GRi,$GRj),$FRdoublek */
3728 static SEM_PC
3729 SEM_FN_NAME (frvbf,nlddf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3731 #define FLD(f) abuf->fields.sfmt_clddfu.f
3732 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3733 int UNUSED written = 0;
3734 IADDR UNUSED pc = abuf->addr;
3735 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3738 SI tmp_address;
3740 BI tmp_do_op;
3741 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 5, 1);
3742 if (tmp_do_op) {
3744 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3746 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
3747 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
3748 written |= (1 << 6);
3749 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
3756 abuf->written = written;
3757 return vpc;
3758 #undef FLD
3761 /* ldq: ldq$pack @($GRi,$GRj),$GRk */
3763 static SEM_PC
3764 SEM_FN_NAME (frvbf,ldq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3766 #define FLD(f) abuf->fields.sfmt_smulcc.f
3767 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3768 int UNUSED written = 0;
3769 IADDR UNUSED pc = abuf->addr;
3770 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3773 SI tmp_address;
3775 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3776 frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
3780 return vpc;
3781 #undef FLD
3784 /* ldqf: ldqf$pack @($GRi,$GRj),$FRintk */
3786 static SEM_PC
3787 SEM_FN_NAME (frvbf,ldqf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3789 #define FLD(f) abuf->fields.sfmt_cstdfu.f
3790 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3791 int UNUSED written = 0;
3792 IADDR UNUSED pc = abuf->addr;
3793 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3796 SI tmp_address;
3798 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3799 frvbf_load_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
3803 return vpc;
3804 #undef FLD
3807 /* ldqc: ldqc$pack @($GRi,$GRj),$CPRk */
3809 static SEM_PC
3810 SEM_FN_NAME (frvbf,ldqc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3812 #define FLD(f) abuf->fields.sfmt_stdcu.f
3813 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3814 int UNUSED written = 0;
3815 IADDR UNUSED pc = abuf->addr;
3816 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3819 SI tmp_address;
3821 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3822 frvbf_load_quad_CPR (current_cpu, pc, tmp_address, FLD (f_CPRk));
3826 return vpc;
3827 #undef FLD
3830 /* nldq: nldq$pack @($GRi,$GRj),$GRk */
3832 static SEM_PC
3833 SEM_FN_NAME (frvbf,nldq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3835 #define FLD(f) abuf->fields.sfmt_smulcc.f
3836 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3837 int UNUSED written = 0;
3838 IADDR UNUSED pc = abuf->addr;
3839 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3842 SI tmp_address;
3844 BI tmp_do_op;
3845 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 6, 0);
3846 if (tmp_do_op) {
3848 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3849 frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
3855 return vpc;
3856 #undef FLD
3859 /* nldqf: nldqf$pack @($GRi,$GRj),$FRintk */
3861 static SEM_PC
3862 SEM_FN_NAME (frvbf,nldqf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3864 #define FLD(f) abuf->fields.sfmt_cstdfu.f
3865 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3866 int UNUSED written = 0;
3867 IADDR UNUSED pc = abuf->addr;
3868 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3871 SI tmp_address;
3873 BI tmp_do_op;
3874 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 6, 1);
3875 if (tmp_do_op) {
3877 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3878 frvbf_load_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
3884 return vpc;
3885 #undef FLD
3888 /* ldsbu: ldsbu$pack @($GRi,$GRj),$GRk */
3890 static SEM_PC
3891 SEM_FN_NAME (frvbf,ldsbu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3893 #define FLD(f) abuf->fields.sfmt_cldsbu.f
3894 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3895 int UNUSED written = 0;
3896 IADDR UNUSED pc = abuf->addr;
3897 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3900 USI tmp_address;
3901 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3903 SI opval = frvbf_read_mem_QI (current_cpu, pc, tmp_address);
3904 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3905 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3907 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
3910 SI opval = tmp_address;
3911 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
3912 written |= (1 << 5);
3913 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3915 frvbf_force_update (current_cpu);
3920 abuf->written = written;
3921 return vpc;
3922 #undef FLD
3925 /* ldubu: ldubu$pack @($GRi,$GRj),$GRk */
3927 static SEM_PC
3928 SEM_FN_NAME (frvbf,ldubu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3930 #define FLD(f) abuf->fields.sfmt_cldsbu.f
3931 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3932 int UNUSED written = 0;
3933 IADDR UNUSED pc = abuf->addr;
3934 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3937 USI tmp_address;
3938 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3940 SI opval = frvbf_read_mem_UQI (current_cpu, pc, tmp_address);
3941 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3942 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3944 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
3947 SI opval = tmp_address;
3948 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
3949 written |= (1 << 5);
3950 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3952 frvbf_force_update (current_cpu);
3957 abuf->written = written;
3958 return vpc;
3959 #undef FLD
3962 /* ldshu: ldshu$pack @($GRi,$GRj),$GRk */
3964 static SEM_PC
3965 SEM_FN_NAME (frvbf,ldshu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
3967 #define FLD(f) abuf->fields.sfmt_cldsbu.f
3968 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
3969 int UNUSED written = 0;
3970 IADDR UNUSED pc = abuf->addr;
3971 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
3974 USI tmp_address;
3975 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
3977 SI opval = frvbf_read_mem_HI (current_cpu, pc, tmp_address);
3978 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
3979 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3981 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
3984 SI opval = tmp_address;
3985 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
3986 written |= (1 << 5);
3987 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
3989 frvbf_force_update (current_cpu);
3994 abuf->written = written;
3995 return vpc;
3996 #undef FLD
3999 /* lduhu: lduhu$pack @($GRi,$GRj),$GRk */
4001 static SEM_PC
4002 SEM_FN_NAME (frvbf,lduhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4004 #define FLD(f) abuf->fields.sfmt_cldsbu.f
4005 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4006 int UNUSED written = 0;
4007 IADDR UNUSED pc = abuf->addr;
4008 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4011 USI tmp_address;
4012 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4014 SI opval = frvbf_read_mem_UHI (current_cpu, pc, tmp_address);
4015 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4016 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4018 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4021 SI opval = tmp_address;
4022 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4023 written |= (1 << 5);
4024 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4026 frvbf_force_update (current_cpu);
4031 abuf->written = written;
4032 return vpc;
4033 #undef FLD
4036 /* ldu: ldu$pack @($GRi,$GRj),$GRk */
4038 static SEM_PC
4039 SEM_FN_NAME (frvbf,ldu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4041 #define FLD(f) abuf->fields.sfmt_cldsbu.f
4042 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4043 int UNUSED written = 0;
4044 IADDR UNUSED pc = abuf->addr;
4045 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4048 USI tmp_address;
4049 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4051 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
4052 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4053 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4055 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4058 SI opval = tmp_address;
4059 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4060 written |= (1 << 5);
4061 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4063 frvbf_force_update (current_cpu);
4068 abuf->written = written;
4069 return vpc;
4070 #undef FLD
4073 /* nldsbu: nldsbu$pack @($GRi,$GRj),$GRk */
4075 static SEM_PC
4076 SEM_FN_NAME (frvbf,nldsbu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4078 #define FLD(f) abuf->fields.sfmt_cldsbu.f
4079 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4080 int UNUSED written = 0;
4081 IADDR UNUSED pc = abuf->addr;
4082 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4085 BI tmp_do_op;
4086 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 1, 0);
4087 if (tmp_do_op) {
4089 USI tmp_address;
4090 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4092 SI opval = frvbf_read_mem_QI (current_cpu, pc, tmp_address);
4093 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4094 written |= (1 << 7);
4095 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4097 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4100 SI opval = tmp_address;
4101 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4102 written |= (1 << 6);
4103 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4105 frvbf_force_update (current_cpu);
4112 abuf->written = written;
4113 return vpc;
4114 #undef FLD
4117 /* nldubu: nldubu$pack @($GRi,$GRj),$GRk */
4119 static SEM_PC
4120 SEM_FN_NAME (frvbf,nldubu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4122 #define FLD(f) abuf->fields.sfmt_cldsbu.f
4123 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4124 int UNUSED written = 0;
4125 IADDR UNUSED pc = abuf->addr;
4126 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4129 BI tmp_do_op;
4130 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 0, 0);
4131 if (tmp_do_op) {
4133 USI tmp_address;
4134 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4136 SI opval = frvbf_read_mem_UQI (current_cpu, pc, tmp_address);
4137 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4138 written |= (1 << 7);
4139 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4141 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4144 SI opval = tmp_address;
4145 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4146 written |= (1 << 6);
4147 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4149 frvbf_force_update (current_cpu);
4156 abuf->written = written;
4157 return vpc;
4158 #undef FLD
4161 /* nldshu: nldshu$pack @($GRi,$GRj),$GRk */
4163 static SEM_PC
4164 SEM_FN_NAME (frvbf,nldshu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4166 #define FLD(f) abuf->fields.sfmt_cldsbu.f
4167 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4168 int UNUSED written = 0;
4169 IADDR UNUSED pc = abuf->addr;
4170 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4173 BI tmp_do_op;
4174 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 3, 0);
4175 if (tmp_do_op) {
4177 USI tmp_address;
4178 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4180 SI opval = frvbf_read_mem_HI (current_cpu, pc, tmp_address);
4181 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4182 written |= (1 << 7);
4183 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4185 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4188 SI opval = tmp_address;
4189 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4190 written |= (1 << 6);
4191 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4193 frvbf_force_update (current_cpu);
4200 abuf->written = written;
4201 return vpc;
4202 #undef FLD
4205 /* nlduhu: nlduhu$pack @($GRi,$GRj),$GRk */
4207 static SEM_PC
4208 SEM_FN_NAME (frvbf,nlduhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4210 #define FLD(f) abuf->fields.sfmt_cldsbu.f
4211 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4212 int UNUSED written = 0;
4213 IADDR UNUSED pc = abuf->addr;
4214 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4217 BI tmp_do_op;
4218 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 2, 0);
4219 if (tmp_do_op) {
4221 USI tmp_address;
4222 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4224 SI opval = frvbf_read_mem_UHI (current_cpu, pc, tmp_address);
4225 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4226 written |= (1 << 7);
4227 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4229 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4232 SI opval = tmp_address;
4233 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4234 written |= (1 << 6);
4235 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4237 frvbf_force_update (current_cpu);
4244 abuf->written = written;
4245 return vpc;
4246 #undef FLD
4249 /* nldu: nldu$pack @($GRi,$GRj),$GRk */
4251 static SEM_PC
4252 SEM_FN_NAME (frvbf,nldu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4254 #define FLD(f) abuf->fields.sfmt_cldsbu.f
4255 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4256 int UNUSED written = 0;
4257 IADDR UNUSED pc = abuf->addr;
4258 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4261 BI tmp_do_op;
4262 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 4, 0);
4263 if (tmp_do_op) {
4265 USI tmp_address;
4266 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4268 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
4269 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4270 written |= (1 << 7);
4271 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4273 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4276 SI opval = tmp_address;
4277 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4278 written |= (1 << 6);
4279 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4281 frvbf_force_update (current_cpu);
4288 abuf->written = written;
4289 return vpc;
4290 #undef FLD
4293 /* ldbfu: ldbfu$pack @($GRi,$GRj),$FRintk */
4295 static SEM_PC
4296 SEM_FN_NAME (frvbf,ldbfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4298 #define FLD(f) abuf->fields.sfmt_cldbfu.f
4299 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4300 int UNUSED written = 0;
4301 IADDR UNUSED pc = abuf->addr;
4302 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4305 USI tmp_address;
4306 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4308 SI opval = frvbf_read_mem_UQI (current_cpu, pc, tmp_address);
4309 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
4310 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
4313 SI opval = tmp_address;
4314 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4315 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4317 frvbf_force_update (current_cpu);
4320 return vpc;
4321 #undef FLD
4324 /* ldhfu: ldhfu$pack @($GRi,$GRj),$FRintk */
4326 static SEM_PC
4327 SEM_FN_NAME (frvbf,ldhfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4329 #define FLD(f) abuf->fields.sfmt_cldbfu.f
4330 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4331 int UNUSED written = 0;
4332 IADDR UNUSED pc = abuf->addr;
4333 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4336 USI tmp_address;
4337 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4339 SI opval = frvbf_read_mem_UHI (current_cpu, pc, tmp_address);
4340 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
4341 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
4344 SI opval = tmp_address;
4345 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4346 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4348 frvbf_force_update (current_cpu);
4351 return vpc;
4352 #undef FLD
4355 /* ldfu: ldfu$pack @($GRi,$GRj),$FRintk */
4357 static SEM_PC
4358 SEM_FN_NAME (frvbf,ldfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4360 #define FLD(f) abuf->fields.sfmt_cldbfu.f
4361 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4362 int UNUSED written = 0;
4363 IADDR UNUSED pc = abuf->addr;
4364 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4367 USI tmp_address;
4368 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4370 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
4371 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
4372 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
4375 SI opval = tmp_address;
4376 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4377 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4379 frvbf_force_update (current_cpu);
4382 return vpc;
4383 #undef FLD
4386 /* ldcu: ldcu$pack @($GRi,$GRj),$CPRk */
4388 static SEM_PC
4389 SEM_FN_NAME (frvbf,ldcu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4391 #define FLD(f) abuf->fields.sfmt_ldcu.f
4392 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4393 int UNUSED written = 0;
4394 IADDR UNUSED pc = abuf->addr;
4395 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4398 USI tmp_address;
4399 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4401 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
4402 sim_queue_si_write (current_cpu, & CPU (h_cpr[FLD (f_CPRk)]), opval);
4403 CGEN_TRACE_RESULT (current_cpu, abuf, "cpr", 'x', opval);
4406 SI opval = tmp_address;
4407 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4408 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4410 frvbf_force_update (current_cpu);
4413 return vpc;
4414 #undef FLD
4417 /* nldbfu: nldbfu$pack @($GRi,$GRj),$FRintk */
4419 static SEM_PC
4420 SEM_FN_NAME (frvbf,nldbfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4422 #define FLD(f) abuf->fields.sfmt_cldbfu.f
4423 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4424 int UNUSED written = 0;
4425 IADDR UNUSED pc = abuf->addr;
4426 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4429 BI tmp_do_op;
4430 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 0, 1);
4431 if (tmp_do_op) {
4433 USI tmp_address;
4434 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4436 SI opval = frvbf_read_mem_UQI (current_cpu, pc, tmp_address);
4437 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
4438 written |= (1 << 6);
4439 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
4442 SI opval = tmp_address;
4443 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4444 written |= (1 << 7);
4445 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4447 frvbf_force_update (current_cpu);
4452 abuf->written = written;
4453 return vpc;
4454 #undef FLD
4457 /* nldhfu: nldhfu$pack @($GRi,$GRj),$FRintk */
4459 static SEM_PC
4460 SEM_FN_NAME (frvbf,nldhfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4462 #define FLD(f) abuf->fields.sfmt_cldbfu.f
4463 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4464 int UNUSED written = 0;
4465 IADDR UNUSED pc = abuf->addr;
4466 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4469 BI tmp_do_op;
4470 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 2, 1);
4471 if (tmp_do_op) {
4473 USI tmp_address;
4474 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4476 SI opval = frvbf_read_mem_UHI (current_cpu, pc, tmp_address);
4477 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
4478 written |= (1 << 6);
4479 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
4482 SI opval = tmp_address;
4483 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4484 written |= (1 << 7);
4485 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4487 frvbf_force_update (current_cpu);
4492 abuf->written = written;
4493 return vpc;
4494 #undef FLD
4497 /* nldfu: nldfu$pack @($GRi,$GRj),$FRintk */
4499 static SEM_PC
4500 SEM_FN_NAME (frvbf,nldfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4502 #define FLD(f) abuf->fields.sfmt_cldbfu.f
4503 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4504 int UNUSED written = 0;
4505 IADDR UNUSED pc = abuf->addr;
4506 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4509 BI tmp_do_op;
4510 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 4, 1);
4511 if (tmp_do_op) {
4513 USI tmp_address;
4514 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4516 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
4517 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
4518 written |= (1 << 6);
4519 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
4522 SI opval = tmp_address;
4523 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4524 written |= (1 << 7);
4525 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4527 frvbf_force_update (current_cpu);
4532 abuf->written = written;
4533 return vpc;
4534 #undef FLD
4537 /* lddu: lddu$pack @($GRi,$GRj),$GRdoublek */
4539 static SEM_PC
4540 SEM_FN_NAME (frvbf,lddu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4542 #define FLD(f) abuf->fields.sfmt_clddu.f
4543 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4544 int UNUSED written = 0;
4545 IADDR UNUSED pc = abuf->addr;
4546 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4549 SI tmp_address;
4550 if (NESI (FLD (f_GRk), 0)) {
4552 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4554 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
4555 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
4556 written |= (1 << 5);
4557 CGEN_TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
4561 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4564 SI opval = tmp_address;
4565 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4566 written |= (1 << 6);
4567 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4569 frvbf_force_update (current_cpu);
4574 abuf->written = written;
4575 return vpc;
4576 #undef FLD
4579 /* nlddu: nlddu$pack @($GRi,$GRj),$GRdoublek */
4581 static SEM_PC
4582 SEM_FN_NAME (frvbf,nlddu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4584 #define FLD(f) abuf->fields.sfmt_clddu.f
4585 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4586 int UNUSED written = 0;
4587 IADDR UNUSED pc = abuf->addr;
4588 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4591 BI tmp_do_op;
4592 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 5, 0);
4593 if (tmp_do_op) {
4595 SI tmp_address;
4596 if (NESI (FLD (f_GRk), 0)) {
4598 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4600 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
4601 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
4602 written |= (1 << 6);
4603 CGEN_TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
4607 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4610 SI opval = tmp_address;
4611 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4612 written |= (1 << 7);
4613 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4615 frvbf_force_update (current_cpu);
4622 abuf->written = written;
4623 return vpc;
4624 #undef FLD
4627 /* lddfu: lddfu$pack @($GRi,$GRj),$FRdoublek */
4629 static SEM_PC
4630 SEM_FN_NAME (frvbf,lddfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4632 #define FLD(f) abuf->fields.sfmt_clddfu.f
4633 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4634 int UNUSED written = 0;
4635 IADDR UNUSED pc = abuf->addr;
4636 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4639 SI tmp_address;
4641 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4643 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
4644 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
4645 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
4649 SI opval = tmp_address;
4650 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4651 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4653 frvbf_force_update (current_cpu);
4656 return vpc;
4657 #undef FLD
4660 /* lddcu: lddcu$pack @($GRi,$GRj),$CPRdoublek */
4662 static SEM_PC
4663 SEM_FN_NAME (frvbf,lddcu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4665 #define FLD(f) abuf->fields.sfmt_lddcu.f
4666 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4667 int UNUSED written = 0;
4668 IADDR UNUSED pc = abuf->addr;
4669 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4672 SI tmp_address;
4674 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4676 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
4677 sim_queue_fn_di_write (current_cpu, frvbf_h_cpr_double_set, FLD (f_CPRk), opval);
4678 CGEN_TRACE_RESULT (current_cpu, abuf, "cpr_double", 'D', opval);
4682 SI opval = tmp_address;
4683 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4684 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4686 frvbf_force_update (current_cpu);
4689 return vpc;
4690 #undef FLD
4693 /* nlddfu: nlddfu$pack @($GRi,$GRj),$FRdoublek */
4695 static SEM_PC
4696 SEM_FN_NAME (frvbf,nlddfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4698 #define FLD(f) abuf->fields.sfmt_clddfu.f
4699 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4700 int UNUSED written = 0;
4701 IADDR UNUSED pc = abuf->addr;
4702 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4705 BI tmp_do_op;
4706 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 5, 1);
4707 if (tmp_do_op) {
4709 SI tmp_address;
4711 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4713 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
4714 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
4715 written |= (1 << 6);
4716 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
4720 SI opval = tmp_address;
4721 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4722 written |= (1 << 7);
4723 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4725 frvbf_force_update (current_cpu);
4730 abuf->written = written;
4731 return vpc;
4732 #undef FLD
4735 /* ldqu: ldqu$pack @($GRi,$GRj),$GRk */
4737 static SEM_PC
4738 SEM_FN_NAME (frvbf,ldqu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4740 #define FLD(f) abuf->fields.sfmt_cstdu.f
4741 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4742 int UNUSED written = 0;
4743 IADDR UNUSED pc = abuf->addr;
4744 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4747 SI tmp_address;
4749 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4750 frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
4752 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4755 SI opval = tmp_address;
4756 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4757 written |= (1 << 5);
4758 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4760 frvbf_force_update (current_cpu);
4765 abuf->written = written;
4766 return vpc;
4767 #undef FLD
4770 /* nldqu: nldqu$pack @($GRi,$GRj),$GRk */
4772 static SEM_PC
4773 SEM_FN_NAME (frvbf,nldqu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4775 #define FLD(f) abuf->fields.sfmt_cstdu.f
4776 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4777 int UNUSED written = 0;
4778 IADDR UNUSED pc = abuf->addr;
4779 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4782 BI tmp_do_op;
4783 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_GRk), 0, 6, 0);
4784 if (tmp_do_op) {
4786 SI tmp_address;
4788 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4789 frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
4791 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
4794 SI opval = tmp_address;
4795 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4796 written |= (1 << 6);
4797 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4799 frvbf_force_update (current_cpu);
4806 abuf->written = written;
4807 return vpc;
4808 #undef FLD
4811 /* ldqfu: ldqfu$pack @($GRi,$GRj),$FRintk */
4813 static SEM_PC
4814 SEM_FN_NAME (frvbf,ldqfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4816 #define FLD(f) abuf->fields.sfmt_cstdfu.f
4817 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4818 int UNUSED written = 0;
4819 IADDR UNUSED pc = abuf->addr;
4820 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4823 SI tmp_address;
4825 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4826 frvbf_load_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
4829 SI opval = tmp_address;
4830 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4831 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4833 frvbf_force_update (current_cpu);
4836 return vpc;
4837 #undef FLD
4840 /* ldqcu: ldqcu$pack @($GRi,$GRj),$CPRk */
4842 static SEM_PC
4843 SEM_FN_NAME (frvbf,ldqcu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4845 #define FLD(f) abuf->fields.sfmt_stdcu.f
4846 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4847 int UNUSED written = 0;
4848 IADDR UNUSED pc = abuf->addr;
4849 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4852 SI tmp_address;
4854 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4855 frvbf_load_quad_CPR (current_cpu, pc, tmp_address, FLD (f_CPRk));
4858 SI opval = tmp_address;
4859 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4860 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4862 frvbf_force_update (current_cpu);
4865 return vpc;
4866 #undef FLD
4869 /* nldqfu: nldqfu$pack @($GRi,$GRj),$FRintk */
4871 static SEM_PC
4872 SEM_FN_NAME (frvbf,nldqfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4874 #define FLD(f) abuf->fields.sfmt_cstdfu.f
4875 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4876 int UNUSED written = 0;
4877 IADDR UNUSED pc = abuf->addr;
4878 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4881 BI tmp_do_op;
4882 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), FLD (f_GRj), FLD (f_FRk), 0, 6, 1);
4883 if (tmp_do_op) {
4885 SI tmp_address;
4887 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
4888 frvbf_load_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
4891 SI opval = tmp_address;
4892 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
4893 written |= (1 << 6);
4894 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4896 frvbf_force_update (current_cpu);
4901 abuf->written = written;
4902 return vpc;
4903 #undef FLD
4906 /* ldsbi: ldsbi$pack @($GRi,$d12),$GRk */
4908 static SEM_PC
4909 SEM_FN_NAME (frvbf,ldsbi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4911 #define FLD(f) abuf->fields.sfmt_swapi.f
4912 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4913 int UNUSED written = 0;
4914 IADDR UNUSED pc = abuf->addr;
4915 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4918 SI opval = frvbf_read_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
4919 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4920 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4923 return vpc;
4924 #undef FLD
4927 /* ldshi: ldshi$pack @($GRi,$d12),$GRk */
4929 static SEM_PC
4930 SEM_FN_NAME (frvbf,ldshi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4932 #define FLD(f) abuf->fields.sfmt_swapi.f
4933 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4934 int UNUSED written = 0;
4935 IADDR UNUSED pc = abuf->addr;
4936 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4939 SI opval = frvbf_read_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
4940 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4941 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4944 return vpc;
4945 #undef FLD
4948 /* ldi: ldi$pack @($GRi,$d12),$GRk */
4950 static SEM_PC
4951 SEM_FN_NAME (frvbf,ldi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4953 #define FLD(f) abuf->fields.sfmt_swapi.f
4954 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4955 int UNUSED written = 0;
4956 IADDR UNUSED pc = abuf->addr;
4957 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4960 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
4961 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4962 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4965 return vpc;
4966 #undef FLD
4969 /* ldubi: ldubi$pack @($GRi,$d12),$GRk */
4971 static SEM_PC
4972 SEM_FN_NAME (frvbf,ldubi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4974 #define FLD(f) abuf->fields.sfmt_swapi.f
4975 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4976 int UNUSED written = 0;
4977 IADDR UNUSED pc = abuf->addr;
4978 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
4981 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
4982 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
4983 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
4986 return vpc;
4987 #undef FLD
4990 /* lduhi: lduhi$pack @($GRi,$d12),$GRk */
4992 static SEM_PC
4993 SEM_FN_NAME (frvbf,lduhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
4995 #define FLD(f) abuf->fields.sfmt_swapi.f
4996 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
4997 int UNUSED written = 0;
4998 IADDR UNUSED pc = abuf->addr;
4999 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5002 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5003 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
5004 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5007 return vpc;
5008 #undef FLD
5011 /* ldbfi: ldbfi$pack @($GRi,$d12),$FRintk */
5013 static SEM_PC
5014 SEM_FN_NAME (frvbf,ldbfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5016 #define FLD(f) abuf->fields.sfmt_ldbfi.f
5017 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5018 int UNUSED written = 0;
5019 IADDR UNUSED pc = abuf->addr;
5020 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5023 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5024 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
5025 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
5028 return vpc;
5029 #undef FLD
5032 /* ldhfi: ldhfi$pack @($GRi,$d12),$FRintk */
5034 static SEM_PC
5035 SEM_FN_NAME (frvbf,ldhfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5037 #define FLD(f) abuf->fields.sfmt_ldbfi.f
5038 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5039 int UNUSED written = 0;
5040 IADDR UNUSED pc = abuf->addr;
5041 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5044 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5045 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
5046 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
5049 return vpc;
5050 #undef FLD
5053 /* ldfi: ldfi$pack @($GRi,$d12),$FRintk */
5055 static SEM_PC
5056 SEM_FN_NAME (frvbf,ldfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5058 #define FLD(f) abuf->fields.sfmt_ldbfi.f
5059 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5060 int UNUSED written = 0;
5061 IADDR UNUSED pc = abuf->addr;
5062 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5065 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5066 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
5067 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
5070 return vpc;
5071 #undef FLD
5074 /* nldsbi: nldsbi$pack @($GRi,$d12),$GRk */
5076 static SEM_PC
5077 SEM_FN_NAME (frvbf,nldsbi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5079 #define FLD(f) abuf->fields.sfmt_swapi.f
5080 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5081 int UNUSED written = 0;
5082 IADDR UNUSED pc = abuf->addr;
5083 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5086 BI tmp_do_op;
5087 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_GRk), FLD (f_d12), 1, 0);
5088 if (tmp_do_op) {
5090 SI opval = frvbf_read_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5091 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
5092 written |= (1 << 5);
5093 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5098 abuf->written = written;
5099 return vpc;
5100 #undef FLD
5103 /* nldubi: nldubi$pack @($GRi,$d12),$GRk */
5105 static SEM_PC
5106 SEM_FN_NAME (frvbf,nldubi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5108 #define FLD(f) abuf->fields.sfmt_swapi.f
5109 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5110 int UNUSED written = 0;
5111 IADDR UNUSED pc = abuf->addr;
5112 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5115 BI tmp_do_op;
5116 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_GRk), FLD (f_d12), 0, 0);
5117 if (tmp_do_op) {
5119 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5120 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
5121 written |= (1 << 5);
5122 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5127 abuf->written = written;
5128 return vpc;
5129 #undef FLD
5132 /* nldshi: nldshi$pack @($GRi,$d12),$GRk */
5134 static SEM_PC
5135 SEM_FN_NAME (frvbf,nldshi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5137 #define FLD(f) abuf->fields.sfmt_swapi.f
5138 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5139 int UNUSED written = 0;
5140 IADDR UNUSED pc = abuf->addr;
5141 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5144 BI tmp_do_op;
5145 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_GRk), FLD (f_d12), 3, 0);
5146 if (tmp_do_op) {
5148 SI opval = frvbf_read_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5149 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
5150 written |= (1 << 5);
5151 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5156 abuf->written = written;
5157 return vpc;
5158 #undef FLD
5161 /* nlduhi: nlduhi$pack @($GRi,$d12),$GRk */
5163 static SEM_PC
5164 SEM_FN_NAME (frvbf,nlduhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5166 #define FLD(f) abuf->fields.sfmt_swapi.f
5167 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5168 int UNUSED written = 0;
5169 IADDR UNUSED pc = abuf->addr;
5170 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5173 BI tmp_do_op;
5174 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_GRk), FLD (f_d12), 2, 0);
5175 if (tmp_do_op) {
5177 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5178 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
5179 written |= (1 << 5);
5180 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5185 abuf->written = written;
5186 return vpc;
5187 #undef FLD
5190 /* nldi: nldi$pack @($GRi,$d12),$GRk */
5192 static SEM_PC
5193 SEM_FN_NAME (frvbf,nldi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5195 #define FLD(f) abuf->fields.sfmt_swapi.f
5196 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5197 int UNUSED written = 0;
5198 IADDR UNUSED pc = abuf->addr;
5199 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5202 BI tmp_do_op;
5203 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_GRk), FLD (f_d12), 4, 0);
5204 if (tmp_do_op) {
5206 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5207 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
5208 written |= (1 << 5);
5209 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5214 abuf->written = written;
5215 return vpc;
5216 #undef FLD
5219 /* nldbfi: nldbfi$pack @($GRi,$d12),$FRintk */
5221 static SEM_PC
5222 SEM_FN_NAME (frvbf,nldbfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5224 #define FLD(f) abuf->fields.sfmt_ldbfi.f
5225 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5226 int UNUSED written = 0;
5227 IADDR UNUSED pc = abuf->addr;
5228 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5231 BI tmp_do_op;
5232 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_FRk), FLD (f_d12), 0, 1);
5233 if (tmp_do_op) {
5235 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5236 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
5237 written |= (1 << 5);
5238 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
5243 abuf->written = written;
5244 return vpc;
5245 #undef FLD
5248 /* nldhfi: nldhfi$pack @($GRi,$d12),$FRintk */
5250 static SEM_PC
5251 SEM_FN_NAME (frvbf,nldhfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5253 #define FLD(f) abuf->fields.sfmt_ldbfi.f
5254 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5255 int UNUSED written = 0;
5256 IADDR UNUSED pc = abuf->addr;
5257 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5260 BI tmp_do_op;
5261 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_FRk), FLD (f_d12), 2, 1);
5262 if (tmp_do_op) {
5264 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5265 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
5266 written |= (1 << 5);
5267 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
5272 abuf->written = written;
5273 return vpc;
5274 #undef FLD
5277 /* nldfi: nldfi$pack @($GRi,$d12),$FRintk */
5279 static SEM_PC
5280 SEM_FN_NAME (frvbf,nldfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5282 #define FLD(f) abuf->fields.sfmt_ldbfi.f
5283 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5284 int UNUSED written = 0;
5285 IADDR UNUSED pc = abuf->addr;
5286 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5289 BI tmp_do_op;
5290 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_FRk), FLD (f_d12), 4, 1);
5291 if (tmp_do_op) {
5293 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)));
5294 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
5295 written |= (1 << 5);
5296 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
5301 abuf->written = written;
5302 return vpc;
5303 #undef FLD
5306 /* lddi: lddi$pack @($GRi,$d12),$GRdoublek */
5308 static SEM_PC
5309 SEM_FN_NAME (frvbf,lddi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5311 #define FLD(f) abuf->fields.sfmt_smuli.f
5312 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5313 int UNUSED written = 0;
5314 IADDR UNUSED pc = abuf->addr;
5315 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5318 SI tmp_address;
5319 if (NESI (FLD (f_GRk), 0)) {
5321 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5323 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
5324 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
5325 written |= (1 << 4);
5326 CGEN_TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
5332 abuf->written = written;
5333 return vpc;
5334 #undef FLD
5337 /* lddfi: lddfi$pack @($GRi,$d12),$FRdoublek */
5339 static SEM_PC
5340 SEM_FN_NAME (frvbf,lddfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5342 #define FLD(f) abuf->fields.sfmt_lddfi.f
5343 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5344 int UNUSED written = 0;
5345 IADDR UNUSED pc = abuf->addr;
5346 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5349 SI tmp_address;
5351 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5353 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
5354 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
5355 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
5360 return vpc;
5361 #undef FLD
5364 /* nlddi: nlddi$pack @($GRi,$d12),$GRdoublek */
5366 static SEM_PC
5367 SEM_FN_NAME (frvbf,nlddi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5369 #define FLD(f) abuf->fields.sfmt_smuli.f
5370 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5371 int UNUSED written = 0;
5372 IADDR UNUSED pc = abuf->addr;
5373 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5376 SI tmp_address;
5378 BI tmp_do_op;
5379 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_GRk), FLD (f_d12), 5, 0);
5380 if (tmp_do_op) {
5381 if (NESI (FLD (f_GRk), 0)) {
5383 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5385 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
5386 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
5387 written |= (1 << 5);
5388 CGEN_TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
5396 abuf->written = written;
5397 return vpc;
5398 #undef FLD
5401 /* nlddfi: nlddfi$pack @($GRi,$d12),$FRdoublek */
5403 static SEM_PC
5404 SEM_FN_NAME (frvbf,nlddfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5406 #define FLD(f) abuf->fields.sfmt_lddfi.f
5407 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5408 int UNUSED written = 0;
5409 IADDR UNUSED pc = abuf->addr;
5410 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5413 SI tmp_address;
5415 BI tmp_do_op;
5416 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_FRk), FLD (f_d12), 5, 1);
5417 if (tmp_do_op) {
5419 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5421 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
5422 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
5423 written |= (1 << 5);
5424 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
5431 abuf->written = written;
5432 return vpc;
5433 #undef FLD
5436 /* ldqi: ldqi$pack @($GRi,$d12),$GRk */
5438 static SEM_PC
5439 SEM_FN_NAME (frvbf,ldqi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5441 #define FLD(f) abuf->fields.sfmt_stdi.f
5442 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5443 int UNUSED written = 0;
5444 IADDR UNUSED pc = abuf->addr;
5445 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5448 SI tmp_address;
5450 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5451 frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
5455 return vpc;
5456 #undef FLD
5459 /* ldqfi: ldqfi$pack @($GRi,$d12),$FRintk */
5461 static SEM_PC
5462 SEM_FN_NAME (frvbf,ldqfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5464 #define FLD(f) abuf->fields.sfmt_stdfi.f
5465 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5466 int UNUSED written = 0;
5467 IADDR UNUSED pc = abuf->addr;
5468 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5471 SI tmp_address;
5473 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5474 frvbf_load_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
5478 return vpc;
5479 #undef FLD
5482 /* nldqfi: nldqfi$pack @($GRi,$d12),$FRintk */
5484 static SEM_PC
5485 SEM_FN_NAME (frvbf,nldqfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5487 #define FLD(f) abuf->fields.sfmt_stdfi.f
5488 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5489 int UNUSED written = 0;
5490 IADDR UNUSED pc = abuf->addr;
5491 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5494 SI tmp_address;
5496 BI tmp_do_op;
5497 tmp_do_op = frvbf_check_non_excepting_load (current_cpu, FLD (f_GRi), -1, FLD (f_FRk), FLD (f_d12), 6, 1);
5498 if (tmp_do_op) {
5500 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
5501 frvbf_load_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
5507 return vpc;
5508 #undef FLD
5511 /* stb: stb$pack $GRk,@($GRi,$GRj) */
5513 static SEM_PC
5514 SEM_FN_NAME (frvbf,stb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5516 #define FLD(f) abuf->fields.sfmt_cswap.f
5517 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5518 int UNUSED written = 0;
5519 IADDR UNUSED pc = abuf->addr;
5520 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5522 frvbf_write_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), GET_H_GR (FLD (f_GRk)));
5524 return vpc;
5525 #undef FLD
5528 /* sth: sth$pack $GRk,@($GRi,$GRj) */
5530 static SEM_PC
5531 SEM_FN_NAME (frvbf,sth) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5533 #define FLD(f) abuf->fields.sfmt_cswap.f
5534 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5535 int UNUSED written = 0;
5536 IADDR UNUSED pc = abuf->addr;
5537 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5539 frvbf_write_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), GET_H_GR (FLD (f_GRk)));
5541 return vpc;
5542 #undef FLD
5545 /* st: st$pack $GRk,@($GRi,$GRj) */
5547 static SEM_PC
5548 SEM_FN_NAME (frvbf,st) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5550 #define FLD(f) abuf->fields.sfmt_cswap.f
5551 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5552 int UNUSED written = 0;
5553 IADDR UNUSED pc = abuf->addr;
5554 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5556 frvbf_write_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), GET_H_GR (FLD (f_GRk)));
5558 return vpc;
5559 #undef FLD
5562 /* stbf: stbf$pack $FRintk,@($GRi,$GRj) */
5564 static SEM_PC
5565 SEM_FN_NAME (frvbf,stbf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5567 #define FLD(f) abuf->fields.sfmt_cstbfu.f
5568 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5569 int UNUSED written = 0;
5570 IADDR UNUSED pc = abuf->addr;
5571 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5573 frvbf_write_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), GET_H_FR_INT (FLD (f_FRk)));
5575 return vpc;
5576 #undef FLD
5579 /* sthf: sthf$pack $FRintk,@($GRi,$GRj) */
5581 static SEM_PC
5582 SEM_FN_NAME (frvbf,sthf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5584 #define FLD(f) abuf->fields.sfmt_cstbfu.f
5585 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5586 int UNUSED written = 0;
5587 IADDR UNUSED pc = abuf->addr;
5588 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5590 frvbf_write_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), GET_H_FR_INT (FLD (f_FRk)));
5592 return vpc;
5593 #undef FLD
5596 /* stf: stf$pack $FRintk,@($GRi,$GRj) */
5598 static SEM_PC
5599 SEM_FN_NAME (frvbf,stf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5601 #define FLD(f) abuf->fields.sfmt_cstbfu.f
5602 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5603 int UNUSED written = 0;
5604 IADDR UNUSED pc = abuf->addr;
5605 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5607 frvbf_write_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), GET_H_FR_INT (FLD (f_FRk)));
5609 return vpc;
5610 #undef FLD
5613 /* stc: stc$pack $CPRk,@($GRi,$GRj) */
5615 static SEM_PC
5616 SEM_FN_NAME (frvbf,stc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5618 #define FLD(f) abuf->fields.sfmt_stcu.f
5619 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5620 int UNUSED written = 0;
5621 IADDR UNUSED pc = abuf->addr;
5622 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5624 frvbf_write_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), CPU (h_cpr[FLD (f_CPRk)]));
5626 return vpc;
5627 #undef FLD
5630 /* std: std$pack $GRdoublek,@($GRi,$GRj) */
5632 static SEM_PC
5633 SEM_FN_NAME (frvbf,std) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5635 #define FLD(f) abuf->fields.sfmt_cstdu.f
5636 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5637 int UNUSED written = 0;
5638 IADDR UNUSED pc = abuf->addr;
5639 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5642 SI tmp_address;
5644 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5645 frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_GR_DOUBLE (FLD (f_GRk)));
5649 return vpc;
5650 #undef FLD
5653 /* stdf: stdf$pack $FRdoublek,@($GRi,$GRj) */
5655 static SEM_PC
5656 SEM_FN_NAME (frvbf,stdf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5658 #define FLD(f) abuf->fields.sfmt_cstdfu.f
5659 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5660 int UNUSED written = 0;
5661 IADDR UNUSED pc = abuf->addr;
5662 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5665 SI tmp_address;
5667 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5668 frvbf_write_mem_DF (current_cpu, pc, tmp_address, GET_H_FR_DOUBLE (FLD (f_FRk)));
5672 return vpc;
5673 #undef FLD
5676 /* stdc: stdc$pack $CPRdoublek,@($GRi,$GRj) */
5678 static SEM_PC
5679 SEM_FN_NAME (frvbf,stdc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5681 #define FLD(f) abuf->fields.sfmt_stdcu.f
5682 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5683 int UNUSED written = 0;
5684 IADDR UNUSED pc = abuf->addr;
5685 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5688 SI tmp_address;
5690 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5691 frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_CPR_DOUBLE (FLD (f_CPRk)));
5695 return vpc;
5696 #undef FLD
5699 /* stq: stq$pack $GRk,@($GRi,$GRj) */
5701 static SEM_PC
5702 SEM_FN_NAME (frvbf,stq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5704 #define FLD(f) abuf->fields.sfmt_smulcc.f
5705 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5706 int UNUSED written = 0;
5707 IADDR UNUSED pc = abuf->addr;
5708 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5711 SI tmp_address;
5713 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5714 frvbf_store_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
5718 return vpc;
5719 #undef FLD
5722 /* stqf: stqf$pack $FRintk,@($GRi,$GRj) */
5724 static SEM_PC
5725 SEM_FN_NAME (frvbf,stqf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5727 #define FLD(f) abuf->fields.sfmt_cstdfu.f
5728 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5729 int UNUSED written = 0;
5730 IADDR UNUSED pc = abuf->addr;
5731 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5734 SI tmp_address;
5736 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5737 frvbf_store_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
5741 return vpc;
5742 #undef FLD
5745 /* stqc: stqc$pack $CPRk,@($GRi,$GRj) */
5747 static SEM_PC
5748 SEM_FN_NAME (frvbf,stqc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5750 #define FLD(f) abuf->fields.sfmt_stdcu.f
5751 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5752 int UNUSED written = 0;
5753 IADDR UNUSED pc = abuf->addr;
5754 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5757 SI tmp_address;
5759 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5760 frvbf_store_quad_CPR (current_cpu, pc, tmp_address, FLD (f_CPRk));
5764 return vpc;
5765 #undef FLD
5768 /* stbu: stbu$pack $GRk,@($GRi,$GRj) */
5770 static SEM_PC
5771 SEM_FN_NAME (frvbf,stbu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5773 #define FLD(f) abuf->fields.sfmt_cstbu.f
5774 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5775 int UNUSED written = 0;
5776 IADDR UNUSED pc = abuf->addr;
5777 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5780 USI tmp_address;
5781 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5782 frvbf_write_mem_QI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
5784 SI opval = tmp_address;
5785 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5786 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5790 return vpc;
5791 #undef FLD
5794 /* sthu: sthu$pack $GRk,@($GRi,$GRj) */
5796 static SEM_PC
5797 SEM_FN_NAME (frvbf,sthu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5799 #define FLD(f) abuf->fields.sfmt_cstbu.f
5800 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5801 int UNUSED written = 0;
5802 IADDR UNUSED pc = abuf->addr;
5803 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5806 USI tmp_address;
5807 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5808 frvbf_write_mem_HI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
5810 SI opval = tmp_address;
5811 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5812 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5816 return vpc;
5817 #undef FLD
5820 /* stu: stu$pack $GRk,@($GRi,$GRj) */
5822 static SEM_PC
5823 SEM_FN_NAME (frvbf,stu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5825 #define FLD(f) abuf->fields.sfmt_cstbu.f
5826 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5827 int UNUSED written = 0;
5828 IADDR UNUSED pc = abuf->addr;
5829 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5832 USI tmp_address;
5833 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5834 frvbf_write_mem_WI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
5836 SI opval = tmp_address;
5837 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5838 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5842 return vpc;
5843 #undef FLD
5846 /* stbfu: stbfu$pack $FRintk,@($GRi,$GRj) */
5848 static SEM_PC
5849 SEM_FN_NAME (frvbf,stbfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5851 #define FLD(f) abuf->fields.sfmt_cstbfu.f
5852 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5853 int UNUSED written = 0;
5854 IADDR UNUSED pc = abuf->addr;
5855 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5858 USI tmp_address;
5859 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5860 frvbf_write_mem_QI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
5862 SI opval = tmp_address;
5863 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5864 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5868 return vpc;
5869 #undef FLD
5872 /* sthfu: sthfu$pack $FRintk,@($GRi,$GRj) */
5874 static SEM_PC
5875 SEM_FN_NAME (frvbf,sthfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5877 #define FLD(f) abuf->fields.sfmt_cstbfu.f
5878 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5879 int UNUSED written = 0;
5880 IADDR UNUSED pc = abuf->addr;
5881 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5884 USI tmp_address;
5885 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5886 frvbf_write_mem_HI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
5888 SI opval = tmp_address;
5889 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5890 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5894 return vpc;
5895 #undef FLD
5898 /* stfu: stfu$pack $FRintk,@($GRi,$GRj) */
5900 static SEM_PC
5901 SEM_FN_NAME (frvbf,stfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5903 #define FLD(f) abuf->fields.sfmt_cstbfu.f
5904 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5905 int UNUSED written = 0;
5906 IADDR UNUSED pc = abuf->addr;
5907 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5910 USI tmp_address;
5911 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5912 frvbf_write_mem_SI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
5914 SI opval = tmp_address;
5915 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5916 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5920 return vpc;
5921 #undef FLD
5924 /* stcu: stcu$pack $CPRk,@($GRi,$GRj) */
5926 static SEM_PC
5927 SEM_FN_NAME (frvbf,stcu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5929 #define FLD(f) abuf->fields.sfmt_stcu.f
5930 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5931 int UNUSED written = 0;
5932 IADDR UNUSED pc = abuf->addr;
5933 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5936 USI tmp_address;
5937 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5938 frvbf_write_mem_SI (current_cpu, pc, tmp_address, CPU (h_cpr[FLD (f_CPRk)]));
5940 SI opval = tmp_address;
5941 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5942 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5946 return vpc;
5947 #undef FLD
5950 /* stdu: stdu$pack $GRdoublek,@($GRi,$GRj) */
5952 static SEM_PC
5953 SEM_FN_NAME (frvbf,stdu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5955 #define FLD(f) abuf->fields.sfmt_cstdu.f
5956 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5957 int UNUSED written = 0;
5958 IADDR UNUSED pc = abuf->addr;
5959 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5962 SI tmp_address;
5964 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5965 frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_GR_DOUBLE (FLD (f_GRk)));
5968 SI opval = tmp_address;
5969 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5970 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
5974 return vpc;
5975 #undef FLD
5978 /* stdfu: stdfu$pack $FRdoublek,@($GRi,$GRj) */
5980 static SEM_PC
5981 SEM_FN_NAME (frvbf,stdfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
5983 #define FLD(f) abuf->fields.sfmt_cstdfu.f
5984 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
5985 int UNUSED written = 0;
5986 IADDR UNUSED pc = abuf->addr;
5987 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
5990 SI tmp_address;
5992 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
5993 frvbf_write_mem_DF (current_cpu, pc, tmp_address, GET_H_FR_DOUBLE (FLD (f_FRk)));
5996 SI opval = tmp_address;
5997 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
5998 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6002 return vpc;
6003 #undef FLD
6006 /* stdcu: stdcu$pack $CPRdoublek,@($GRi,$GRj) */
6008 static SEM_PC
6009 SEM_FN_NAME (frvbf,stdcu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6011 #define FLD(f) abuf->fields.sfmt_stdcu.f
6012 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6013 int UNUSED written = 0;
6014 IADDR UNUSED pc = abuf->addr;
6015 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6018 SI tmp_address;
6020 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6021 frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_CPR_DOUBLE (FLD (f_CPRk)));
6024 SI opval = tmp_address;
6025 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6026 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6030 return vpc;
6031 #undef FLD
6034 /* stqu: stqu$pack $GRk,@($GRi,$GRj) */
6036 static SEM_PC
6037 SEM_FN_NAME (frvbf,stqu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6039 #define FLD(f) abuf->fields.sfmt_cstdu.f
6040 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6041 int UNUSED written = 0;
6042 IADDR UNUSED pc = abuf->addr;
6043 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6046 SI tmp_address;
6048 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6049 frvbf_store_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
6052 SI opval = tmp_address;
6053 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6054 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6058 return vpc;
6059 #undef FLD
6062 /* stqfu: stqfu$pack $FRintk,@($GRi,$GRj) */
6064 static SEM_PC
6065 SEM_FN_NAME (frvbf,stqfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6067 #define FLD(f) abuf->fields.sfmt_cstdfu.f
6068 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6069 int UNUSED written = 0;
6070 IADDR UNUSED pc = abuf->addr;
6071 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6074 SI tmp_address;
6076 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6077 frvbf_store_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
6080 SI opval = tmp_address;
6081 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6082 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6086 return vpc;
6087 #undef FLD
6090 /* stqcu: stqcu$pack $CPRk,@($GRi,$GRj) */
6092 static SEM_PC
6093 SEM_FN_NAME (frvbf,stqcu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6095 #define FLD(f) abuf->fields.sfmt_stdcu.f
6096 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6097 int UNUSED written = 0;
6098 IADDR UNUSED pc = abuf->addr;
6099 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6102 SI tmp_address;
6104 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6105 frvbf_store_quad_CPR (current_cpu, pc, tmp_address, FLD (f_CPRk));
6108 SI opval = tmp_address;
6109 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6110 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6114 return vpc;
6115 #undef FLD
6118 /* cldsb: cldsb$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6120 static SEM_PC
6121 SEM_FN_NAME (frvbf,cldsb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6123 #define FLD(f) abuf->fields.sfmt_cswap.f
6124 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6125 int UNUSED written = 0;
6126 IADDR UNUSED pc = abuf->addr;
6127 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6129 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6131 SI opval = frvbf_read_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6132 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6133 written |= (1 << 5);
6134 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6138 abuf->written = written;
6139 return vpc;
6140 #undef FLD
6143 /* cldub: cldub$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6145 static SEM_PC
6146 SEM_FN_NAME (frvbf,cldub) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6148 #define FLD(f) abuf->fields.sfmt_cswap.f
6149 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6150 int UNUSED written = 0;
6151 IADDR UNUSED pc = abuf->addr;
6152 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6154 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6156 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6157 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6158 written |= (1 << 5);
6159 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6163 abuf->written = written;
6164 return vpc;
6165 #undef FLD
6168 /* cldsh: cldsh$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6170 static SEM_PC
6171 SEM_FN_NAME (frvbf,cldsh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6173 #define FLD(f) abuf->fields.sfmt_cswap.f
6174 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6175 int UNUSED written = 0;
6176 IADDR UNUSED pc = abuf->addr;
6177 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6179 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6181 SI opval = frvbf_read_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6182 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6183 written |= (1 << 5);
6184 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6188 abuf->written = written;
6189 return vpc;
6190 #undef FLD
6193 /* clduh: clduh$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6195 static SEM_PC
6196 SEM_FN_NAME (frvbf,clduh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6198 #define FLD(f) abuf->fields.sfmt_cswap.f
6199 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6200 int UNUSED written = 0;
6201 IADDR UNUSED pc = abuf->addr;
6202 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6204 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6206 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6207 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6208 written |= (1 << 5);
6209 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6213 abuf->written = written;
6214 return vpc;
6215 #undef FLD
6218 /* cld: cld$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6220 static SEM_PC
6221 SEM_FN_NAME (frvbf,cld) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6223 #define FLD(f) abuf->fields.sfmt_cswap.f
6224 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6225 int UNUSED written = 0;
6226 IADDR UNUSED pc = abuf->addr;
6227 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6229 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6231 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6232 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6233 written |= (1 << 5);
6234 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6238 abuf->written = written;
6239 return vpc;
6240 #undef FLD
6243 /* cldbf: cldbf$pack @($GRi,$GRj),$FRintk,$CCi,$cond */
6245 static SEM_PC
6246 SEM_FN_NAME (frvbf,cldbf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6248 #define FLD(f) abuf->fields.sfmt_cldbfu.f
6249 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6250 int UNUSED written = 0;
6251 IADDR UNUSED pc = abuf->addr;
6252 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6254 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6256 SI opval = frvbf_read_mem_UQI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6257 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
6258 written |= (1 << 5);
6259 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
6263 abuf->written = written;
6264 return vpc;
6265 #undef FLD
6268 /* cldhf: cldhf$pack @($GRi,$GRj),$FRintk,$CCi,$cond */
6270 static SEM_PC
6271 SEM_FN_NAME (frvbf,cldhf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6273 #define FLD(f) abuf->fields.sfmt_cldbfu.f
6274 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6275 int UNUSED written = 0;
6276 IADDR UNUSED pc = abuf->addr;
6277 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6279 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6281 SI opval = frvbf_read_mem_UHI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6282 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
6283 written |= (1 << 5);
6284 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
6288 abuf->written = written;
6289 return vpc;
6290 #undef FLD
6293 /* cldf: cldf$pack @($GRi,$GRj),$FRintk,$CCi,$cond */
6295 static SEM_PC
6296 SEM_FN_NAME (frvbf,cldf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6298 #define FLD(f) abuf->fields.sfmt_cldbfu.f
6299 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6300 int UNUSED written = 0;
6301 IADDR UNUSED pc = abuf->addr;
6302 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6304 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6306 SI opval = frvbf_read_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))));
6307 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
6308 written |= (1 << 5);
6309 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
6313 abuf->written = written;
6314 return vpc;
6315 #undef FLD
6318 /* cldd: cldd$pack @($GRi,$GRj),$GRdoublek,$CCi,$cond */
6320 static SEM_PC
6321 SEM_FN_NAME (frvbf,cldd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6323 #define FLD(f) abuf->fields.sfmt_clddu.f
6324 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6325 int UNUSED written = 0;
6326 IADDR UNUSED pc = abuf->addr;
6327 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6329 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6331 SI tmp_address;
6332 if (NESI (FLD (f_GRk), 0)) {
6334 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6336 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
6337 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
6338 written |= (1 << 6);
6339 CGEN_TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
6346 abuf->written = written;
6347 return vpc;
6348 #undef FLD
6351 /* clddf: clddf$pack @($GRi,$GRj),$FRdoublek,$CCi,$cond */
6353 static SEM_PC
6354 SEM_FN_NAME (frvbf,clddf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6356 #define FLD(f) abuf->fields.sfmt_clddfu.f
6357 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6358 int UNUSED written = 0;
6359 IADDR UNUSED pc = abuf->addr;
6360 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6362 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6364 SI tmp_address;
6366 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6368 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
6369 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
6370 written |= (1 << 5);
6371 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
6377 abuf->written = written;
6378 return vpc;
6379 #undef FLD
6382 /* cldq: cldq$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6384 static SEM_PC
6385 SEM_FN_NAME (frvbf,cldq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6387 #define FLD(f) abuf->fields.sfmt_cswap.f
6388 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6389 int UNUSED written = 0;
6390 IADDR UNUSED pc = abuf->addr;
6391 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6393 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6395 SI tmp_address;
6397 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6398 frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
6403 return vpc;
6404 #undef FLD
6407 /* cldsbu: cldsbu$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6409 static SEM_PC
6410 SEM_FN_NAME (frvbf,cldsbu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6412 #define FLD(f) abuf->fields.sfmt_cldsbu.f
6413 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6414 int UNUSED written = 0;
6415 IADDR UNUSED pc = abuf->addr;
6416 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6418 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6420 SI tmp_address;
6421 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6423 SI opval = frvbf_read_mem_QI (current_cpu, pc, tmp_address);
6424 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6425 written |= (1 << 8);
6426 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6428 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6430 SI opval = tmp_address;
6431 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6432 written |= (1 << 7);
6433 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6439 abuf->written = written;
6440 return vpc;
6441 #undef FLD
6444 /* cldubu: cldubu$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6446 static SEM_PC
6447 SEM_FN_NAME (frvbf,cldubu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6449 #define FLD(f) abuf->fields.sfmt_cldsbu.f
6450 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6451 int UNUSED written = 0;
6452 IADDR UNUSED pc = abuf->addr;
6453 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6455 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6457 SI tmp_address;
6458 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6460 SI opval = frvbf_read_mem_UQI (current_cpu, pc, tmp_address);
6461 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6462 written |= (1 << 8);
6463 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6465 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6467 SI opval = tmp_address;
6468 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6469 written |= (1 << 7);
6470 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6476 abuf->written = written;
6477 return vpc;
6478 #undef FLD
6481 /* cldshu: cldshu$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6483 static SEM_PC
6484 SEM_FN_NAME (frvbf,cldshu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6486 #define FLD(f) abuf->fields.sfmt_cldsbu.f
6487 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6488 int UNUSED written = 0;
6489 IADDR UNUSED pc = abuf->addr;
6490 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6492 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6494 SI tmp_address;
6495 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6497 SI opval = frvbf_read_mem_HI (current_cpu, pc, tmp_address);
6498 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6499 written |= (1 << 8);
6500 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6502 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6504 SI opval = tmp_address;
6505 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6506 written |= (1 << 7);
6507 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6513 abuf->written = written;
6514 return vpc;
6515 #undef FLD
6518 /* clduhu: clduhu$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6520 static SEM_PC
6521 SEM_FN_NAME (frvbf,clduhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6523 #define FLD(f) abuf->fields.sfmt_cldsbu.f
6524 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6525 int UNUSED written = 0;
6526 IADDR UNUSED pc = abuf->addr;
6527 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6529 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6531 SI tmp_address;
6532 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6534 SI opval = frvbf_read_mem_UHI (current_cpu, pc, tmp_address);
6535 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6536 written |= (1 << 8);
6537 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6539 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6541 SI opval = tmp_address;
6542 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6543 written |= (1 << 7);
6544 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6550 abuf->written = written;
6551 return vpc;
6552 #undef FLD
6555 /* cldu: cldu$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6557 static SEM_PC
6558 SEM_FN_NAME (frvbf,cldu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6560 #define FLD(f) abuf->fields.sfmt_cldsbu.f
6561 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6562 int UNUSED written = 0;
6563 IADDR UNUSED pc = abuf->addr;
6564 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6566 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6568 SI tmp_address;
6569 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6571 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
6572 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
6573 written |= (1 << 8);
6574 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6576 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6578 SI opval = tmp_address;
6579 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6580 written |= (1 << 7);
6581 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6587 abuf->written = written;
6588 return vpc;
6589 #undef FLD
6592 /* cldbfu: cldbfu$pack @($GRi,$GRj),$FRintk,$CCi,$cond */
6594 static SEM_PC
6595 SEM_FN_NAME (frvbf,cldbfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6597 #define FLD(f) abuf->fields.sfmt_cldbfu.f
6598 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6599 int UNUSED written = 0;
6600 IADDR UNUSED pc = abuf->addr;
6601 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6603 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6605 SI tmp_address;
6606 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6608 SI opval = frvbf_read_mem_UQI (current_cpu, pc, tmp_address);
6609 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
6610 written |= (1 << 5);
6611 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
6614 SI opval = tmp_address;
6615 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6616 written |= (1 << 6);
6617 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6622 abuf->written = written;
6623 return vpc;
6624 #undef FLD
6627 /* cldhfu: cldhfu$pack @($GRi,$GRj),$FRintk,$CCi,$cond */
6629 static SEM_PC
6630 SEM_FN_NAME (frvbf,cldhfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6632 #define FLD(f) abuf->fields.sfmt_cldbfu.f
6633 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6634 int UNUSED written = 0;
6635 IADDR UNUSED pc = abuf->addr;
6636 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6638 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6640 SI tmp_address;
6641 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6643 SI opval = frvbf_read_mem_UHI (current_cpu, pc, tmp_address);
6644 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
6645 written |= (1 << 5);
6646 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
6649 SI opval = tmp_address;
6650 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6651 written |= (1 << 6);
6652 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6657 abuf->written = written;
6658 return vpc;
6659 #undef FLD
6662 /* cldfu: cldfu$pack @($GRi,$GRj),$FRintk,$CCi,$cond */
6664 static SEM_PC
6665 SEM_FN_NAME (frvbf,cldfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6667 #define FLD(f) abuf->fields.sfmt_cldbfu.f
6668 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6669 int UNUSED written = 0;
6670 IADDR UNUSED pc = abuf->addr;
6671 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6673 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6675 SI tmp_address;
6676 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6678 SI opval = frvbf_read_mem_SI (current_cpu, pc, tmp_address);
6679 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
6680 written |= (1 << 5);
6681 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
6684 SI opval = tmp_address;
6685 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6686 written |= (1 << 6);
6687 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6692 abuf->written = written;
6693 return vpc;
6694 #undef FLD
6697 /* clddu: clddu$pack @($GRi,$GRj),$GRdoublek,$CCi,$cond */
6699 static SEM_PC
6700 SEM_FN_NAME (frvbf,clddu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6702 #define FLD(f) abuf->fields.sfmt_clddu.f
6703 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6704 int UNUSED written = 0;
6705 IADDR UNUSED pc = abuf->addr;
6706 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6708 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6710 SI tmp_address;
6711 if (NESI (FLD (f_GRk), 0)) {
6713 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6715 DI opval = frvbf_read_mem_DI (current_cpu, pc, tmp_address);
6716 sim_queue_fn_di_write (current_cpu, frvbf_h_gr_double_set, FLD (f_GRk), opval);
6717 written |= (1 << 7);
6718 CGEN_TRACE_RESULT (current_cpu, abuf, "gr_double", 'D', opval);
6722 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6724 SI opval = tmp_address;
6725 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6726 written |= (1 << 8);
6727 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6733 abuf->written = written;
6734 return vpc;
6735 #undef FLD
6738 /* clddfu: clddfu$pack @($GRi,$GRj),$FRdoublek,$CCi,$cond */
6740 static SEM_PC
6741 SEM_FN_NAME (frvbf,clddfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6743 #define FLD(f) abuf->fields.sfmt_clddfu.f
6744 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6745 int UNUSED written = 0;
6746 IADDR UNUSED pc = abuf->addr;
6747 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6749 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6751 SI tmp_address;
6753 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6755 DF opval = frvbf_read_mem_DF (current_cpu, pc, tmp_address);
6756 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
6757 written |= (1 << 5);
6758 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
6762 SI opval = tmp_address;
6763 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6764 written |= (1 << 6);
6765 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6770 abuf->written = written;
6771 return vpc;
6772 #undef FLD
6775 /* cldqu: cldqu$pack @($GRi,$GRj),$GRk,$CCi,$cond */
6777 static SEM_PC
6778 SEM_FN_NAME (frvbf,cldqu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6780 #define FLD(f) abuf->fields.sfmt_cstdu.f
6781 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6782 int UNUSED written = 0;
6783 IADDR UNUSED pc = abuf->addr;
6784 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6786 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6788 SI tmp_address;
6790 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6791 frvbf_load_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
6793 if (NESI (FLD (f_GRi), FLD (f_GRk))) {
6795 SI opval = tmp_address;
6796 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
6797 written |= (1 << 7);
6798 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
6804 abuf->written = written;
6805 return vpc;
6806 #undef FLD
6809 /* cstb: cstb$pack $GRk,@($GRi,$GRj),$CCi,$cond */
6811 static SEM_PC
6812 SEM_FN_NAME (frvbf,cstb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6814 #define FLD(f) abuf->fields.sfmt_cswap.f
6815 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6816 int UNUSED written = 0;
6817 IADDR UNUSED pc = abuf->addr;
6818 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6820 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6821 frvbf_write_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), GET_H_GR (FLD (f_GRk)));
6824 return vpc;
6825 #undef FLD
6828 /* csth: csth$pack $GRk,@($GRi,$GRj),$CCi,$cond */
6830 static SEM_PC
6831 SEM_FN_NAME (frvbf,csth) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6833 #define FLD(f) abuf->fields.sfmt_cswap.f
6834 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6835 int UNUSED written = 0;
6836 IADDR UNUSED pc = abuf->addr;
6837 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6839 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6840 frvbf_write_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), GET_H_GR (FLD (f_GRk)));
6843 return vpc;
6844 #undef FLD
6847 /* cst: cst$pack $GRk,@($GRi,$GRj),$CCi,$cond */
6849 static SEM_PC
6850 SEM_FN_NAME (frvbf,cst) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6852 #define FLD(f) abuf->fields.sfmt_cswap.f
6853 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6854 int UNUSED written = 0;
6855 IADDR UNUSED pc = abuf->addr;
6856 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6858 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6859 frvbf_write_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), GET_H_GR (FLD (f_GRk)));
6862 return vpc;
6863 #undef FLD
6866 /* cstbf: cstbf$pack $FRintk,@($GRi,$GRj),$CCi,$cond */
6868 static SEM_PC
6869 SEM_FN_NAME (frvbf,cstbf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6871 #define FLD(f) abuf->fields.sfmt_cstbfu.f
6872 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6873 int UNUSED written = 0;
6874 IADDR UNUSED pc = abuf->addr;
6875 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6877 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6878 frvbf_write_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), GET_H_FR_INT (FLD (f_FRk)));
6881 return vpc;
6882 #undef FLD
6885 /* csthf: csthf$pack $FRintk,@($GRi,$GRj),$CCi,$cond */
6887 static SEM_PC
6888 SEM_FN_NAME (frvbf,csthf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6890 #define FLD(f) abuf->fields.sfmt_cstbfu.f
6891 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6892 int UNUSED written = 0;
6893 IADDR UNUSED pc = abuf->addr;
6894 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6896 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6897 frvbf_write_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), GET_H_FR_INT (FLD (f_FRk)));
6900 return vpc;
6901 #undef FLD
6904 /* cstf: cstf$pack $FRintk,@($GRi,$GRj),$CCi,$cond */
6906 static SEM_PC
6907 SEM_FN_NAME (frvbf,cstf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6909 #define FLD(f) abuf->fields.sfmt_cstbfu.f
6910 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6911 int UNUSED written = 0;
6912 IADDR UNUSED pc = abuf->addr;
6913 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6915 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6916 frvbf_write_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), GET_H_FR_INT (FLD (f_FRk)));
6919 return vpc;
6920 #undef FLD
6923 /* cstd: cstd$pack $GRdoublek,@($GRi,$GRj),$CCi,$cond */
6925 static SEM_PC
6926 SEM_FN_NAME (frvbf,cstd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6928 #define FLD(f) abuf->fields.sfmt_cstdu.f
6929 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6930 int UNUSED written = 0;
6931 IADDR UNUSED pc = abuf->addr;
6932 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6934 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6936 SI tmp_address;
6938 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6939 frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_GR_DOUBLE (FLD (f_GRk)));
6944 return vpc;
6945 #undef FLD
6948 /* cstdf: cstdf$pack $FRdoublek,@($GRi,$GRj),$CCi,$cond */
6950 static SEM_PC
6951 SEM_FN_NAME (frvbf,cstdf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6953 #define FLD(f) abuf->fields.sfmt_cstdfu.f
6954 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6955 int UNUSED written = 0;
6956 IADDR UNUSED pc = abuf->addr;
6957 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6959 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6961 SI tmp_address;
6963 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6964 frvbf_write_mem_DF (current_cpu, pc, tmp_address, GET_H_FR_DOUBLE (FLD (f_FRk)));
6969 return vpc;
6970 #undef FLD
6973 /* cstq: cstq$pack $GRk,@($GRi,$GRj),$CCi,$cond */
6975 static SEM_PC
6976 SEM_FN_NAME (frvbf,cstq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
6978 #define FLD(f) abuf->fields.sfmt_cswap.f
6979 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
6980 int UNUSED written = 0;
6981 IADDR UNUSED pc = abuf->addr;
6982 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
6984 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
6986 SI tmp_address;
6988 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
6989 frvbf_store_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
6994 return vpc;
6995 #undef FLD
6998 /* cstbu: cstbu$pack $GRk,@($GRi,$GRj),$CCi,$cond */
7000 static SEM_PC
7001 SEM_FN_NAME (frvbf,cstbu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7003 #define FLD(f) abuf->fields.sfmt_cstbu.f
7004 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7005 int UNUSED written = 0;
7006 IADDR UNUSED pc = abuf->addr;
7007 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7009 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7011 SI tmp_address;
7012 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7013 frvbf_write_mem_QI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
7015 SI opval = tmp_address;
7016 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7017 written |= (1 << 6);
7018 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7023 abuf->written = written;
7024 return vpc;
7025 #undef FLD
7028 /* csthu: csthu$pack $GRk,@($GRi,$GRj),$CCi,$cond */
7030 static SEM_PC
7031 SEM_FN_NAME (frvbf,csthu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7033 #define FLD(f) abuf->fields.sfmt_cstbu.f
7034 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7035 int UNUSED written = 0;
7036 IADDR UNUSED pc = abuf->addr;
7037 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7039 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7041 SI tmp_address;
7042 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7043 frvbf_write_mem_HI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
7045 SI opval = tmp_address;
7046 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7047 written |= (1 << 6);
7048 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7053 abuf->written = written;
7054 return vpc;
7055 #undef FLD
7058 /* cstu: cstu$pack $GRk,@($GRi,$GRj),$CCi,$cond */
7060 static SEM_PC
7061 SEM_FN_NAME (frvbf,cstu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7063 #define FLD(f) abuf->fields.sfmt_cstbu.f
7064 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7065 int UNUSED written = 0;
7066 IADDR UNUSED pc = abuf->addr;
7067 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7069 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7071 SI tmp_address;
7072 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7073 frvbf_write_mem_SI (current_cpu, pc, tmp_address, GET_H_GR (FLD (f_GRk)));
7075 SI opval = tmp_address;
7076 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7077 written |= (1 << 6);
7078 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7083 abuf->written = written;
7084 return vpc;
7085 #undef FLD
7088 /* cstbfu: cstbfu$pack $FRintk,@($GRi,$GRj),$CCi,$cond */
7090 static SEM_PC
7091 SEM_FN_NAME (frvbf,cstbfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7093 #define FLD(f) abuf->fields.sfmt_cstbfu.f
7094 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7095 int UNUSED written = 0;
7096 IADDR UNUSED pc = abuf->addr;
7097 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7099 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7101 SI tmp_address;
7102 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7103 frvbf_write_mem_QI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
7105 SI opval = tmp_address;
7106 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7107 written |= (1 << 6);
7108 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7113 abuf->written = written;
7114 return vpc;
7115 #undef FLD
7118 /* csthfu: csthfu$pack $FRintk,@($GRi,$GRj),$CCi,$cond */
7120 static SEM_PC
7121 SEM_FN_NAME (frvbf,csthfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7123 #define FLD(f) abuf->fields.sfmt_cstbfu.f
7124 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7125 int UNUSED written = 0;
7126 IADDR UNUSED pc = abuf->addr;
7127 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7129 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7131 SI tmp_address;
7132 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7133 frvbf_write_mem_HI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
7135 SI opval = tmp_address;
7136 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7137 written |= (1 << 6);
7138 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7143 abuf->written = written;
7144 return vpc;
7145 #undef FLD
7148 /* cstfu: cstfu$pack $FRintk,@($GRi,$GRj),$CCi,$cond */
7150 static SEM_PC
7151 SEM_FN_NAME (frvbf,cstfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7153 #define FLD(f) abuf->fields.sfmt_cstbfu.f
7154 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7155 int UNUSED written = 0;
7156 IADDR UNUSED pc = abuf->addr;
7157 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7159 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7161 SI tmp_address;
7162 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7163 frvbf_write_mem_SI (current_cpu, pc, tmp_address, GET_H_FR_INT (FLD (f_FRk)));
7165 SI opval = tmp_address;
7166 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7167 written |= (1 << 6);
7168 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7173 abuf->written = written;
7174 return vpc;
7175 #undef FLD
7178 /* cstdu: cstdu$pack $GRdoublek,@($GRi,$GRj),$CCi,$cond */
7180 static SEM_PC
7181 SEM_FN_NAME (frvbf,cstdu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7183 #define FLD(f) abuf->fields.sfmt_cstdu.f
7184 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7185 int UNUSED written = 0;
7186 IADDR UNUSED pc = abuf->addr;
7187 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7189 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7191 SI tmp_address;
7193 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7194 frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_GR_DOUBLE (FLD (f_GRk)));
7197 SI opval = tmp_address;
7198 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7199 written |= (1 << 6);
7200 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7205 abuf->written = written;
7206 return vpc;
7207 #undef FLD
7210 /* cstdfu: cstdfu$pack $FRdoublek,@($GRi,$GRj),$CCi,$cond */
7212 static SEM_PC
7213 SEM_FN_NAME (frvbf,cstdfu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7215 #define FLD(f) abuf->fields.sfmt_cstdfu.f
7216 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7217 int UNUSED written = 0;
7218 IADDR UNUSED pc = abuf->addr;
7219 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7221 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7223 SI tmp_address;
7225 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7226 frvbf_write_mem_DF (current_cpu, pc, tmp_address, GET_H_FR_DOUBLE (FLD (f_FRk)));
7229 SI opval = tmp_address;
7230 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRi), opval);
7231 written |= (1 << 6);
7232 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7237 abuf->written = written;
7238 return vpc;
7239 #undef FLD
7242 /* stbi: stbi$pack $GRk,@($GRi,$d12) */
7244 static SEM_PC
7245 SEM_FN_NAME (frvbf,stbi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7247 #define FLD(f) abuf->fields.sfmt_swapi.f
7248 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7249 int UNUSED written = 0;
7250 IADDR UNUSED pc = abuf->addr;
7251 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7253 frvbf_write_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), GET_H_GR (FLD (f_GRk)));
7255 return vpc;
7256 #undef FLD
7259 /* sthi: sthi$pack $GRk,@($GRi,$d12) */
7261 static SEM_PC
7262 SEM_FN_NAME (frvbf,sthi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7264 #define FLD(f) abuf->fields.sfmt_swapi.f
7265 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7266 int UNUSED written = 0;
7267 IADDR UNUSED pc = abuf->addr;
7268 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7270 frvbf_write_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), GET_H_GR (FLD (f_GRk)));
7272 return vpc;
7273 #undef FLD
7276 /* sti: sti$pack $GRk,@($GRi,$d12) */
7278 static SEM_PC
7279 SEM_FN_NAME (frvbf,sti) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7281 #define FLD(f) abuf->fields.sfmt_swapi.f
7282 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7283 int UNUSED written = 0;
7284 IADDR UNUSED pc = abuf->addr;
7285 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7287 frvbf_write_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), GET_H_GR (FLD (f_GRk)));
7289 return vpc;
7290 #undef FLD
7293 /* stbfi: stbfi$pack $FRintk,@($GRi,$d12) */
7295 static SEM_PC
7296 SEM_FN_NAME (frvbf,stbfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7298 #define FLD(f) abuf->fields.sfmt_stbfi.f
7299 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7300 int UNUSED written = 0;
7301 IADDR UNUSED pc = abuf->addr;
7302 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7304 frvbf_write_mem_QI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), GET_H_FR_INT (FLD (f_FRk)));
7306 return vpc;
7307 #undef FLD
7310 /* sthfi: sthfi$pack $FRintk,@($GRi,$d12) */
7312 static SEM_PC
7313 SEM_FN_NAME (frvbf,sthfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7315 #define FLD(f) abuf->fields.sfmt_stbfi.f
7316 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7317 int UNUSED written = 0;
7318 IADDR UNUSED pc = abuf->addr;
7319 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7321 frvbf_write_mem_HI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), GET_H_FR_INT (FLD (f_FRk)));
7323 return vpc;
7324 #undef FLD
7327 /* stfi: stfi$pack $FRintk,@($GRi,$d12) */
7329 static SEM_PC
7330 SEM_FN_NAME (frvbf,stfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7332 #define FLD(f) abuf->fields.sfmt_stbfi.f
7333 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7334 int UNUSED written = 0;
7335 IADDR UNUSED pc = abuf->addr;
7336 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7338 frvbf_write_mem_SI (current_cpu, pc, ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), GET_H_FR_INT (FLD (f_FRk)));
7340 return vpc;
7341 #undef FLD
7344 /* stdi: stdi$pack $GRdoublek,@($GRi,$d12) */
7346 static SEM_PC
7347 SEM_FN_NAME (frvbf,stdi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7349 #define FLD(f) abuf->fields.sfmt_stdi.f
7350 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7351 int UNUSED written = 0;
7352 IADDR UNUSED pc = abuf->addr;
7353 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7356 SI tmp_address;
7358 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
7359 frvbf_write_mem_DI (current_cpu, pc, tmp_address, GET_H_GR_DOUBLE (FLD (f_GRk)));
7363 return vpc;
7364 #undef FLD
7367 /* stdfi: stdfi$pack $FRdoublek,@($GRi,$d12) */
7369 static SEM_PC
7370 SEM_FN_NAME (frvbf,stdfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7372 #define FLD(f) abuf->fields.sfmt_stdfi.f
7373 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7374 int UNUSED written = 0;
7375 IADDR UNUSED pc = abuf->addr;
7376 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7379 SI tmp_address;
7381 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
7382 frvbf_write_mem_DF (current_cpu, pc, tmp_address, GET_H_FR_DOUBLE (FLD (f_FRk)));
7386 return vpc;
7387 #undef FLD
7390 /* stqi: stqi$pack $GRk,@($GRi,$d12) */
7392 static SEM_PC
7393 SEM_FN_NAME (frvbf,stqi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7395 #define FLD(f) abuf->fields.sfmt_stdi.f
7396 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7397 int UNUSED written = 0;
7398 IADDR UNUSED pc = abuf->addr;
7399 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7402 SI tmp_address;
7404 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
7405 frvbf_store_quad_GR (current_cpu, pc, tmp_address, FLD (f_GRk));
7409 return vpc;
7410 #undef FLD
7413 /* stqfi: stqfi$pack $FRintk,@($GRi,$d12) */
7415 static SEM_PC
7416 SEM_FN_NAME (frvbf,stqfi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7418 #define FLD(f) abuf->fields.sfmt_stdfi.f
7419 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7420 int UNUSED written = 0;
7421 IADDR UNUSED pc = abuf->addr;
7422 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7425 SI tmp_address;
7427 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
7428 frvbf_store_quad_FRint (current_cpu, pc, tmp_address, FLD (f_FRk));
7432 return vpc;
7433 #undef FLD
7436 /* swap: swap$pack @($GRi,$GRj),$GRk */
7438 static SEM_PC
7439 SEM_FN_NAME (frvbf,swap) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7441 #define FLD(f) abuf->fields.sfmt_cswap.f
7442 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7443 int UNUSED written = 0;
7444 IADDR UNUSED pc = abuf->addr;
7445 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7448 SI tmp_tmp;
7449 SI tmp_address;
7450 tmp_tmp = GET_H_GR (FLD (f_GRk));
7451 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7452 frvbf_check_swap_address (current_cpu, tmp_address);
7454 SI opval = frvbf_read_mem_WI (current_cpu, pc, tmp_address);
7455 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
7456 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7458 frvbf_write_mem_WI (current_cpu, pc, tmp_address, tmp_tmp);
7461 return vpc;
7462 #undef FLD
7465 /* swapi: swapi$pack @($GRi,$d12),$GRk */
7467 static SEM_PC
7468 SEM_FN_NAME (frvbf,swapi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7470 #define FLD(f) abuf->fields.sfmt_swapi.f
7471 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7472 int UNUSED written = 0;
7473 IADDR UNUSED pc = abuf->addr;
7474 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7477 SI tmp_tmp;
7478 SI tmp_address;
7479 tmp_tmp = GET_H_GR (FLD (f_GRk));
7480 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12));
7481 frvbf_check_swap_address (current_cpu, tmp_address);
7483 SI opval = frvbf_read_mem_WI (current_cpu, pc, tmp_address);
7484 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
7485 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7487 frvbf_write_mem_WI (current_cpu, pc, tmp_address, tmp_tmp);
7490 return vpc;
7491 #undef FLD
7494 /* cswap: cswap$pack @($GRi,$GRj),$GRk,$CCi,$cond */
7496 static SEM_PC
7497 SEM_FN_NAME (frvbf,cswap) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7499 #define FLD(f) abuf->fields.sfmt_cswap.f
7500 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7501 int UNUSED written = 0;
7502 IADDR UNUSED pc = abuf->addr;
7503 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7505 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7507 SI tmp_tmp;
7508 SI tmp_address;
7509 tmp_tmp = GET_H_GR (FLD (f_GRk));
7510 tmp_address = ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
7511 frvbf_check_swap_address (current_cpu, tmp_address);
7513 SI opval = frvbf_read_mem_WI (current_cpu, pc, tmp_address);
7514 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRk), opval);
7515 written |= (1 << 6);
7516 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7518 frvbf_write_mem_WI (current_cpu, pc, tmp_address, tmp_tmp);
7522 abuf->written = written;
7523 return vpc;
7524 #undef FLD
7527 /* movgf: movgf$pack $GRj,$FRintk */
7529 static SEM_PC
7530 SEM_FN_NAME (frvbf,movgf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7532 #define FLD(f) abuf->fields.sfmt_cmovgfd.f
7533 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7534 int UNUSED written = 0;
7535 IADDR UNUSED pc = abuf->addr;
7536 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7539 SI opval = GET_H_GR (FLD (f_GRj));
7540 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7541 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7544 return vpc;
7545 #undef FLD
7548 /* movfg: movfg$pack $FRintk,$GRj */
7550 static SEM_PC
7551 SEM_FN_NAME (frvbf,movfg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7553 #define FLD(f) abuf->fields.sfmt_cmovfgd.f
7554 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7555 int UNUSED written = 0;
7556 IADDR UNUSED pc = abuf->addr;
7557 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7560 SI opval = GET_H_FR_INT (FLD (f_FRk));
7561 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRj), opval);
7562 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7565 return vpc;
7566 #undef FLD
7569 /* movgfd: movgfd$pack $GRj,$FRintk */
7571 static SEM_PC
7572 SEM_FN_NAME (frvbf,movgfd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7574 #define FLD(f) abuf->fields.sfmt_cmovgfd.f
7575 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7576 int UNUSED written = 0;
7577 IADDR UNUSED pc = abuf->addr;
7578 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7580 if (EQSI (FLD (f_GRj), 0)) {
7583 SI opval = 0;
7584 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7585 written |= (1 << 4);
7586 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7589 USI opval = 0;
7590 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 1), opval);
7591 written |= (1 << 5);
7592 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7595 } else {
7598 SI opval = GET_H_GR (FLD (f_GRj));
7599 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7600 written |= (1 << 4);
7601 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7604 USI opval = GET_H_GR (ADDSI (FLD (f_GRj), 1));
7605 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 1), opval);
7606 written |= (1 << 5);
7607 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7612 abuf->written = written;
7613 return vpc;
7614 #undef FLD
7617 /* movfgd: movfgd$pack $FRintk,$GRj */
7619 static SEM_PC
7620 SEM_FN_NAME (frvbf,movfgd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7622 #define FLD(f) abuf->fields.sfmt_cmovfgd.f
7623 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7624 int UNUSED written = 0;
7625 IADDR UNUSED pc = abuf->addr;
7626 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7628 if (NESI (FLD (f_GRj), 0)) {
7631 SI opval = GET_H_FR_INT (FLD (f_FRk));
7632 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRj), opval);
7633 written |= (1 << 4);
7634 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7637 USI opval = GET_H_FR_INT (ADDSI (FLD (f_FRk), 1));
7638 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, ADDSI (FLD (f_GRj), 1), opval);
7639 written |= (1 << 5);
7640 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7645 abuf->written = written;
7646 return vpc;
7647 #undef FLD
7650 /* movgfq: movgfq$pack $GRj,$FRintk */
7652 static SEM_PC
7653 SEM_FN_NAME (frvbf,movgfq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7655 #define FLD(f) abuf->fields.sfmt_movgfq.f
7656 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7657 int UNUSED written = 0;
7658 IADDR UNUSED pc = abuf->addr;
7659 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7661 if (EQSI (FLD (f_GRj), 0)) {
7664 SI opval = 0;
7665 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7666 written |= (1 << 6);
7667 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7670 USI opval = 0;
7671 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 1), opval);
7672 written |= (1 << 7);
7673 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7676 USI opval = 0;
7677 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 2), opval);
7678 written |= (1 << 8);
7679 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7682 USI opval = 0;
7683 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 3), opval);
7684 written |= (1 << 9);
7685 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7688 } else {
7691 SI opval = GET_H_GR (FLD (f_GRj));
7692 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7693 written |= (1 << 6);
7694 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7697 USI opval = GET_H_GR (ADDSI (FLD (f_GRj), 1));
7698 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 1), opval);
7699 written |= (1 << 7);
7700 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7703 USI opval = GET_H_GR (ADDSI (FLD (f_GRj), 2));
7704 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 2), opval);
7705 written |= (1 << 8);
7706 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7709 USI opval = GET_H_GR (ADDSI (FLD (f_GRj), 3));
7710 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 3), opval);
7711 written |= (1 << 9);
7712 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7717 abuf->written = written;
7718 return vpc;
7719 #undef FLD
7722 /* movfgq: movfgq$pack $FRintk,$GRj */
7724 static SEM_PC
7725 SEM_FN_NAME (frvbf,movfgq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7727 #define FLD(f) abuf->fields.sfmt_movfgq.f
7728 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7729 int UNUSED written = 0;
7730 IADDR UNUSED pc = abuf->addr;
7731 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7733 if (NESI (FLD (f_GRj), 0)) {
7736 SI opval = GET_H_FR_INT (FLD (f_FRk));
7737 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRj), opval);
7738 written |= (1 << 6);
7739 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7742 USI opval = GET_H_FR_INT (ADDSI (FLD (f_FRk), 1));
7743 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, ADDSI (FLD (f_GRj), 1), opval);
7744 written |= (1 << 7);
7745 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7748 USI opval = GET_H_FR_INT (ADDSI (FLD (f_FRk), 2));
7749 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, ADDSI (FLD (f_GRj), 2), opval);
7750 written |= (1 << 8);
7751 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7754 USI opval = GET_H_FR_INT (ADDSI (FLD (f_FRk), 3));
7755 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, ADDSI (FLD (f_GRj), 3), opval);
7756 written |= (1 << 9);
7757 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7762 abuf->written = written;
7763 return vpc;
7764 #undef FLD
7767 /* cmovgf: cmovgf$pack $GRj,$FRintk,$CCi,$cond */
7769 static SEM_PC
7770 SEM_FN_NAME (frvbf,cmovgf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7772 #define FLD(f) abuf->fields.sfmt_cmovgfd.f
7773 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7774 int UNUSED written = 0;
7775 IADDR UNUSED pc = abuf->addr;
7776 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7778 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7780 SI opval = GET_H_GR (FLD (f_GRj));
7781 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7782 written |= (1 << 3);
7783 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7787 abuf->written = written;
7788 return vpc;
7789 #undef FLD
7792 /* cmovfg: cmovfg$pack $FRintk,$GRj,$CCi,$cond */
7794 static SEM_PC
7795 SEM_FN_NAME (frvbf,cmovfg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7797 #define FLD(f) abuf->fields.sfmt_cmovfgd.f
7798 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7799 int UNUSED written = 0;
7800 IADDR UNUSED pc = abuf->addr;
7801 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7803 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7805 SI opval = GET_H_FR_INT (FLD (f_FRk));
7806 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRj), opval);
7807 written |= (1 << 3);
7808 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7812 abuf->written = written;
7813 return vpc;
7814 #undef FLD
7817 /* cmovgfd: cmovgfd$pack $GRj,$FRintk,$CCi,$cond */
7819 static SEM_PC
7820 SEM_FN_NAME (frvbf,cmovgfd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7822 #define FLD(f) abuf->fields.sfmt_cmovgfd.f
7823 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7824 int UNUSED written = 0;
7825 IADDR UNUSED pc = abuf->addr;
7826 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7828 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
7829 if (EQSI (FLD (f_GRj), 0)) {
7832 SI opval = 0;
7833 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7834 written |= (1 << 6);
7835 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7838 USI opval = 0;
7839 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 1), opval);
7840 written |= (1 << 7);
7841 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7844 } else {
7847 SI opval = GET_H_GR (FLD (f_GRj));
7848 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
7849 written |= (1 << 6);
7850 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7853 USI opval = GET_H_GR (ADDSI (FLD (f_GRj), 1));
7854 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 1), opval);
7855 written |= (1 << 7);
7856 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
7862 abuf->written = written;
7863 return vpc;
7864 #undef FLD
7867 /* cmovfgd: cmovfgd$pack $FRintk,$GRj,$CCi,$cond */
7869 static SEM_PC
7870 SEM_FN_NAME (frvbf,cmovfgd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7872 #define FLD(f) abuf->fields.sfmt_cmovfgd.f
7873 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7874 int UNUSED written = 0;
7875 IADDR UNUSED pc = abuf->addr;
7876 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7878 if (ANDIF (NESI (FLD (f_GRj), 0), EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2)))) {
7881 SI opval = GET_H_FR_INT (FLD (f_FRk));
7882 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRj), opval);
7883 written |= (1 << 6);
7884 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7887 USI opval = GET_H_FR_INT (ADDSI (FLD (f_FRk), 1));
7888 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, ADDSI (FLD (f_GRj), 1), opval);
7889 written |= (1 << 7);
7890 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7895 abuf->written = written;
7896 return vpc;
7897 #undef FLD
7900 /* movgs: movgs$pack $GRj,$spr */
7902 static SEM_PC
7903 SEM_FN_NAME (frvbf,movgs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7905 #define FLD(f) abuf->fields.sfmt_movgs.f
7906 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7907 int UNUSED written = 0;
7908 IADDR UNUSED pc = abuf->addr;
7909 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7912 USI opval = GET_H_GR (FLD (f_GRj));
7913 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, FLD (f_spr), opval);
7914 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
7917 return vpc;
7918 #undef FLD
7921 /* movsg: movsg$pack $spr,$GRj */
7923 static SEM_PC
7924 SEM_FN_NAME (frvbf,movsg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7926 #define FLD(f) abuf->fields.sfmt_movsg.f
7927 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7928 int UNUSED written = 0;
7929 IADDR UNUSED pc = abuf->addr;
7930 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7933 SI opval = GET_H_SPR (FLD (f_spr));
7934 sim_queue_fn_si_write (current_cpu, frvbf_h_gr_set, FLD (f_GRj), opval);
7935 CGEN_TRACE_RESULT (current_cpu, abuf, "gr", 'x', opval);
7938 return vpc;
7939 #undef FLD
7942 /* bra: bra$pack $hint_taken$label16 */
7944 static SEM_PC
7945 SEM_FN_NAME (frvbf,bra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7947 #define FLD(f) abuf->fields.sfmt_fbne.f
7948 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7949 int UNUSED written = 0;
7950 IADDR UNUSED pc = abuf->addr;
7951 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7954 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
7956 USI opval = FLD (i_label16);
7957 sim_queue_pc_write (current_cpu, opval);
7958 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
7962 return vpc;
7963 #undef FLD
7966 /* bno: bno$pack$hint_not_taken */
7968 static SEM_PC
7969 SEM_FN_NAME (frvbf,bno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7971 #define FLD(f) abuf->fields.sfmt_fbne.f
7972 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7973 int UNUSED written = 0;
7974 IADDR UNUSED pc = abuf->addr;
7975 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7977 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
7979 return vpc;
7980 #undef FLD
7983 /* beq: beq$pack $ICCi_2,$hint,$label16 */
7985 static SEM_PC
7986 SEM_FN_NAME (frvbf,beq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
7988 #define FLD(f) abuf->fields.sfmt_beq.f
7989 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
7990 int UNUSED written = 0;
7991 IADDR UNUSED pc = abuf->addr;
7992 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
7995 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
7996 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))) {
7998 USI opval = FLD (i_label16);
7999 sim_queue_pc_write (current_cpu, opval);
8000 written |= (1 << 3);
8001 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8006 abuf->written = written;
8007 return vpc;
8008 #undef FLD
8011 /* bne: bne$pack $ICCi_2,$hint,$label16 */
8013 static SEM_PC
8014 SEM_FN_NAME (frvbf,bne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8016 #define FLD(f) abuf->fields.sfmt_beq.f
8017 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8018 int UNUSED written = 0;
8019 IADDR UNUSED pc = abuf->addr;
8020 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8023 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8024 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
8026 USI opval = FLD (i_label16);
8027 sim_queue_pc_write (current_cpu, opval);
8028 written |= (1 << 3);
8029 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8034 abuf->written = written;
8035 return vpc;
8036 #undef FLD
8039 /* ble: ble$pack $ICCi_2,$hint,$label16 */
8041 static SEM_PC
8042 SEM_FN_NAME (frvbf,ble) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8044 #define FLD(f) abuf->fields.sfmt_beq.f
8045 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8046 int UNUSED written = 0;
8047 IADDR UNUSED pc = abuf->addr;
8048 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8051 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8052 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)), XORBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1))))) {
8054 USI opval = FLD (i_label16);
8055 sim_queue_pc_write (current_cpu, opval);
8056 written |= (1 << 3);
8057 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8062 abuf->written = written;
8063 return vpc;
8064 #undef FLD
8067 /* bgt: bgt$pack $ICCi_2,$hint,$label16 */
8069 static SEM_PC
8070 SEM_FN_NAME (frvbf,bgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8072 #define FLD(f) abuf->fields.sfmt_beq.f
8073 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8074 int UNUSED written = 0;
8075 IADDR UNUSED pc = abuf->addr;
8076 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8079 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8080 if (NOTBI (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)), XORBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1)))))) {
8082 USI opval = FLD (i_label16);
8083 sim_queue_pc_write (current_cpu, opval);
8084 written |= (1 << 3);
8085 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8090 abuf->written = written;
8091 return vpc;
8092 #undef FLD
8095 /* blt: blt$pack $ICCi_2,$hint,$label16 */
8097 static SEM_PC
8098 SEM_FN_NAME (frvbf,blt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8100 #define FLD(f) abuf->fields.sfmt_beq.f
8101 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8102 int UNUSED written = 0;
8103 IADDR UNUSED pc = abuf->addr;
8104 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8107 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8108 if (XORBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1)))) {
8110 USI opval = FLD (i_label16);
8111 sim_queue_pc_write (current_cpu, opval);
8112 written |= (1 << 3);
8113 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8118 abuf->written = written;
8119 return vpc;
8120 #undef FLD
8123 /* bge: bge$pack $ICCi_2,$hint,$label16 */
8125 static SEM_PC
8126 SEM_FN_NAME (frvbf,bge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8128 #define FLD(f) abuf->fields.sfmt_beq.f
8129 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8130 int UNUSED written = 0;
8131 IADDR UNUSED pc = abuf->addr;
8132 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8135 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8136 if (NOTBI (XORBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1))))) {
8138 USI opval = FLD (i_label16);
8139 sim_queue_pc_write (current_cpu, opval);
8140 written |= (1 << 3);
8141 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8146 abuf->written = written;
8147 return vpc;
8148 #undef FLD
8151 /* bls: bls$pack $ICCi_2,$hint,$label16 */
8153 static SEM_PC
8154 SEM_FN_NAME (frvbf,bls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8156 #define FLD(f) abuf->fields.sfmt_beq.f
8157 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8158 int UNUSED written = 0;
8159 IADDR UNUSED pc = abuf->addr;
8160 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8163 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8164 if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
8166 USI opval = FLD (i_label16);
8167 sim_queue_pc_write (current_cpu, opval);
8168 written |= (1 << 3);
8169 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8174 abuf->written = written;
8175 return vpc;
8176 #undef FLD
8179 /* bhi: bhi$pack $ICCi_2,$hint,$label16 */
8181 static SEM_PC
8182 SEM_FN_NAME (frvbf,bhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8184 #define FLD(f) abuf->fields.sfmt_beq.f
8185 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8186 int UNUSED written = 0;
8187 IADDR UNUSED pc = abuf->addr;
8188 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8191 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8192 if (NOTBI (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))))) {
8194 USI opval = FLD (i_label16);
8195 sim_queue_pc_write (current_cpu, opval);
8196 written |= (1 << 3);
8197 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8202 abuf->written = written;
8203 return vpc;
8204 #undef FLD
8207 /* bc: bc$pack $ICCi_2,$hint,$label16 */
8209 static SEM_PC
8210 SEM_FN_NAME (frvbf,bc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8212 #define FLD(f) abuf->fields.sfmt_beq.f
8213 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8214 int UNUSED written = 0;
8215 IADDR UNUSED pc = abuf->addr;
8216 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8219 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8220 if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1))) {
8222 USI opval = FLD (i_label16);
8223 sim_queue_pc_write (current_cpu, opval);
8224 written |= (1 << 3);
8225 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8230 abuf->written = written;
8231 return vpc;
8232 #undef FLD
8235 /* bnc: bnc$pack $ICCi_2,$hint,$label16 */
8237 static SEM_PC
8238 SEM_FN_NAME (frvbf,bnc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8240 #define FLD(f) abuf->fields.sfmt_beq.f
8241 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8242 int UNUSED written = 0;
8243 IADDR UNUSED pc = abuf->addr;
8244 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8247 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8248 if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)))) {
8250 USI opval = FLD (i_label16);
8251 sim_queue_pc_write (current_cpu, opval);
8252 written |= (1 << 3);
8253 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8258 abuf->written = written;
8259 return vpc;
8260 #undef FLD
8263 /* bn: bn$pack $ICCi_2,$hint,$label16 */
8265 static SEM_PC
8266 SEM_FN_NAME (frvbf,bn) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8268 #define FLD(f) abuf->fields.sfmt_beq.f
8269 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8270 int UNUSED written = 0;
8271 IADDR UNUSED pc = abuf->addr;
8272 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8275 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8276 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3))) {
8278 USI opval = FLD (i_label16);
8279 sim_queue_pc_write (current_cpu, opval);
8280 written |= (1 << 3);
8281 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8286 abuf->written = written;
8287 return vpc;
8288 #undef FLD
8291 /* bp: bp$pack $ICCi_2,$hint,$label16 */
8293 static SEM_PC
8294 SEM_FN_NAME (frvbf,bp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8296 #define FLD(f) abuf->fields.sfmt_beq.f
8297 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8298 int UNUSED written = 0;
8299 IADDR UNUSED pc = abuf->addr;
8300 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8303 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8304 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)))) {
8306 USI opval = FLD (i_label16);
8307 sim_queue_pc_write (current_cpu, opval);
8308 written |= (1 << 3);
8309 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8314 abuf->written = written;
8315 return vpc;
8316 #undef FLD
8319 /* bv: bv$pack $ICCi_2,$hint,$label16 */
8321 static SEM_PC
8322 SEM_FN_NAME (frvbf,bv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8324 #define FLD(f) abuf->fields.sfmt_beq.f
8325 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8326 int UNUSED written = 0;
8327 IADDR UNUSED pc = abuf->addr;
8328 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8331 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8332 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1))) {
8334 USI opval = FLD (i_label16);
8335 sim_queue_pc_write (current_cpu, opval);
8336 written |= (1 << 3);
8337 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8342 abuf->written = written;
8343 return vpc;
8344 #undef FLD
8347 /* bnv: bnv$pack $ICCi_2,$hint,$label16 */
8349 static SEM_PC
8350 SEM_FN_NAME (frvbf,bnv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8352 #define FLD(f) abuf->fields.sfmt_beq.f
8353 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8354 int UNUSED written = 0;
8355 IADDR UNUSED pc = abuf->addr;
8356 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8359 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8360 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1)))) {
8362 USI opval = FLD (i_label16);
8363 sim_queue_pc_write (current_cpu, opval);
8364 written |= (1 << 3);
8365 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8370 abuf->written = written;
8371 return vpc;
8372 #undef FLD
8375 /* fbra: fbra$pack $hint_taken$label16 */
8377 static SEM_PC
8378 SEM_FN_NAME (frvbf,fbra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8380 #define FLD(f) abuf->fields.sfmt_fbne.f
8381 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8382 int UNUSED written = 0;
8383 IADDR UNUSED pc = abuf->addr;
8384 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8387 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8389 USI opval = FLD (i_label16);
8390 sim_queue_pc_write (current_cpu, opval);
8391 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8395 return vpc;
8396 #undef FLD
8399 /* fbno: fbno$pack$hint_not_taken */
8401 static SEM_PC
8402 SEM_FN_NAME (frvbf,fbno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8404 #define FLD(f) abuf->fields.sfmt_fbne.f
8405 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8406 int UNUSED written = 0;
8407 IADDR UNUSED pc = abuf->addr;
8408 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8410 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8412 return vpc;
8413 #undef FLD
8416 /* fbne: fbne$pack $FCCi_2,$hint,$label16 */
8418 static SEM_PC
8419 SEM_FN_NAME (frvbf,fbne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8421 #define FLD(f) abuf->fields.sfmt_fbne.f
8422 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8423 int UNUSED written = 0;
8424 IADDR UNUSED pc = abuf->addr;
8425 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8428 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8429 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))))) {
8431 USI opval = FLD (i_label16);
8432 sim_queue_pc_write (current_cpu, opval);
8433 written |= (1 << 3);
8434 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8439 abuf->written = written;
8440 return vpc;
8441 #undef FLD
8444 /* fbeq: fbeq$pack $FCCi_2,$hint,$label16 */
8446 static SEM_PC
8447 SEM_FN_NAME (frvbf,fbeq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8449 #define FLD(f) abuf->fields.sfmt_fbne.f
8450 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8451 int UNUSED written = 0;
8452 IADDR UNUSED pc = abuf->addr;
8453 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8456 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8457 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3))) {
8459 USI opval = FLD (i_label16);
8460 sim_queue_pc_write (current_cpu, opval);
8461 written |= (1 << 3);
8462 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8467 abuf->written = written;
8468 return vpc;
8469 #undef FLD
8472 /* fblg: fblg$pack $FCCi_2,$hint,$label16 */
8474 static SEM_PC
8475 SEM_FN_NAME (frvbf,fblg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8477 #define FLD(f) abuf->fields.sfmt_fbne.f
8478 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8479 int UNUSED written = 0;
8480 IADDR UNUSED pc = abuf->addr;
8481 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8484 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8485 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)))) {
8487 USI opval = FLD (i_label16);
8488 sim_queue_pc_write (current_cpu, opval);
8489 written |= (1 << 3);
8490 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8495 abuf->written = written;
8496 return vpc;
8497 #undef FLD
8500 /* fbue: fbue$pack $FCCi_2,$hint,$label16 */
8502 static SEM_PC
8503 SEM_FN_NAME (frvbf,fbue) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8505 #define FLD(f) abuf->fields.sfmt_fbne.f
8506 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8507 int UNUSED written = 0;
8508 IADDR UNUSED pc = abuf->addr;
8509 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8512 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8513 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
8515 USI opval = FLD (i_label16);
8516 sim_queue_pc_write (current_cpu, opval);
8517 written |= (1 << 3);
8518 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8523 abuf->written = written;
8524 return vpc;
8525 #undef FLD
8528 /* fbul: fbul$pack $FCCi_2,$hint,$label16 */
8530 static SEM_PC
8531 SEM_FN_NAME (frvbf,fbul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8533 #define FLD(f) abuf->fields.sfmt_fbne.f
8534 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8535 int UNUSED written = 0;
8536 IADDR UNUSED pc = abuf->addr;
8537 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8540 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8541 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
8543 USI opval = FLD (i_label16);
8544 sim_queue_pc_write (current_cpu, opval);
8545 written |= (1 << 3);
8546 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8551 abuf->written = written;
8552 return vpc;
8553 #undef FLD
8556 /* fbge: fbge$pack $FCCi_2,$hint,$label16 */
8558 static SEM_PC
8559 SEM_FN_NAME (frvbf,fbge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8561 #define FLD(f) abuf->fields.sfmt_fbne.f
8562 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8563 int UNUSED written = 0;
8564 IADDR UNUSED pc = abuf->addr;
8565 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8568 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8569 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)))) {
8571 USI opval = FLD (i_label16);
8572 sim_queue_pc_write (current_cpu, opval);
8573 written |= (1 << 3);
8574 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8579 abuf->written = written;
8580 return vpc;
8581 #undef FLD
8584 /* fblt: fblt$pack $FCCi_2,$hint,$label16 */
8586 static SEM_PC
8587 SEM_FN_NAME (frvbf,fblt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8589 #define FLD(f) abuf->fields.sfmt_fbne.f
8590 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8591 int UNUSED written = 0;
8592 IADDR UNUSED pc = abuf->addr;
8593 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8596 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8597 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2))) {
8599 USI opval = FLD (i_label16);
8600 sim_queue_pc_write (current_cpu, opval);
8601 written |= (1 << 3);
8602 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8607 abuf->written = written;
8608 return vpc;
8609 #undef FLD
8612 /* fbuge: fbuge$pack $FCCi_2,$hint,$label16 */
8614 static SEM_PC
8615 SEM_FN_NAME (frvbf,fbuge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8617 #define FLD(f) abuf->fields.sfmt_fbne.f
8618 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8619 int UNUSED written = 0;
8620 IADDR UNUSED pc = abuf->addr;
8621 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8624 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8625 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))))) {
8627 USI opval = FLD (i_label16);
8628 sim_queue_pc_write (current_cpu, opval);
8629 written |= (1 << 3);
8630 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8635 abuf->written = written;
8636 return vpc;
8637 #undef FLD
8640 /* fbug: fbug$pack $FCCi_2,$hint,$label16 */
8642 static SEM_PC
8643 SEM_FN_NAME (frvbf,fbug) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8645 #define FLD(f) abuf->fields.sfmt_fbne.f
8646 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8647 int UNUSED written = 0;
8648 IADDR UNUSED pc = abuf->addr;
8649 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8652 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8653 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
8655 USI opval = FLD (i_label16);
8656 sim_queue_pc_write (current_cpu, opval);
8657 written |= (1 << 3);
8658 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8663 abuf->written = written;
8664 return vpc;
8665 #undef FLD
8668 /* fble: fble$pack $FCCi_2,$hint,$label16 */
8670 static SEM_PC
8671 SEM_FN_NAME (frvbf,fble) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8673 #define FLD(f) abuf->fields.sfmt_fbne.f
8674 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8675 int UNUSED written = 0;
8676 IADDR UNUSED pc = abuf->addr;
8677 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8680 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8681 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)))) {
8683 USI opval = FLD (i_label16);
8684 sim_queue_pc_write (current_cpu, opval);
8685 written |= (1 << 3);
8686 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8691 abuf->written = written;
8692 return vpc;
8693 #undef FLD
8696 /* fbgt: fbgt$pack $FCCi_2,$hint,$label16 */
8698 static SEM_PC
8699 SEM_FN_NAME (frvbf,fbgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8701 #define FLD(f) abuf->fields.sfmt_fbne.f
8702 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8703 int UNUSED written = 0;
8704 IADDR UNUSED pc = abuf->addr;
8705 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8708 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8709 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1))) {
8711 USI opval = FLD (i_label16);
8712 sim_queue_pc_write (current_cpu, opval);
8713 written |= (1 << 3);
8714 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8719 abuf->written = written;
8720 return vpc;
8721 #undef FLD
8724 /* fbule: fbule$pack $FCCi_2,$hint,$label16 */
8726 static SEM_PC
8727 SEM_FN_NAME (frvbf,fbule) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8729 #define FLD(f) abuf->fields.sfmt_fbne.f
8730 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8731 int UNUSED written = 0;
8732 IADDR UNUSED pc = abuf->addr;
8733 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8736 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8737 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))))) {
8739 USI opval = FLD (i_label16);
8740 sim_queue_pc_write (current_cpu, opval);
8741 written |= (1 << 3);
8742 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8747 abuf->written = written;
8748 return vpc;
8749 #undef FLD
8752 /* fbu: fbu$pack $FCCi_2,$hint,$label16 */
8754 static SEM_PC
8755 SEM_FN_NAME (frvbf,fbu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8757 #define FLD(f) abuf->fields.sfmt_fbne.f
8758 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8759 int UNUSED written = 0;
8760 IADDR UNUSED pc = abuf->addr;
8761 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8764 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8765 if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))) {
8767 USI opval = FLD (i_label16);
8768 sim_queue_pc_write (current_cpu, opval);
8769 written |= (1 << 3);
8770 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8775 abuf->written = written;
8776 return vpc;
8777 #undef FLD
8780 /* fbo: fbo$pack $FCCi_2,$hint,$label16 */
8782 static SEM_PC
8783 SEM_FN_NAME (frvbf,fbo) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8785 #define FLD(f) abuf->fields.sfmt_fbne.f
8786 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8787 int UNUSED written = 0;
8788 IADDR UNUSED pc = abuf->addr;
8789 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8792 frvbf_model_branch (current_cpu, FLD (i_label16), FLD (f_hint));
8793 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1))))) {
8795 USI opval = FLD (i_label16);
8796 sim_queue_pc_write (current_cpu, opval);
8797 written |= (1 << 3);
8798 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8803 abuf->written = written;
8804 return vpc;
8805 #undef FLD
8808 /* bctrlr: bctrlr$pack $ccond,$hint */
8810 static SEM_PC
8811 SEM_FN_NAME (frvbf,bctrlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8813 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
8814 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8815 int UNUSED written = 0;
8816 IADDR UNUSED pc = abuf->addr;
8817 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8820 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
8822 SI tmp_tmp;
8823 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
8825 USI opval = tmp_tmp;
8826 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
8827 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
8829 if (EQSI (FLD (f_ccond), 0)) {
8830 if (NESI (tmp_tmp, 0)) {
8832 USI opval = GET_H_SPR (((UINT) 272));
8833 sim_queue_pc_write (current_cpu, opval);
8834 written |= (1 << 5);
8835 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8838 } else {
8839 if (EQSI (tmp_tmp, 0)) {
8841 USI opval = GET_H_SPR (((UINT) 272));
8842 sim_queue_pc_write (current_cpu, opval);
8843 written |= (1 << 5);
8844 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8851 abuf->written = written;
8852 return vpc;
8853 #undef FLD
8856 /* bralr: bralr$pack$hint_taken */
8858 static SEM_PC
8859 SEM_FN_NAME (frvbf,bralr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8861 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
8862 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8863 int UNUSED written = 0;
8864 IADDR UNUSED pc = abuf->addr;
8865 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8868 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
8870 USI opval = GET_H_SPR (((UINT) 272));
8871 sim_queue_pc_write (current_cpu, opval);
8872 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8876 return vpc;
8877 #undef FLD
8880 /* bnolr: bnolr$pack$hint_not_taken */
8882 static SEM_PC
8883 SEM_FN_NAME (frvbf,bnolr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8885 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
8886 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8887 int UNUSED written = 0;
8888 IADDR UNUSED pc = abuf->addr;
8889 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8891 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
8893 return vpc;
8894 #undef FLD
8897 /* beqlr: beqlr$pack $ICCi_2,$hint */
8899 static SEM_PC
8900 SEM_FN_NAME (frvbf,beqlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8902 #define FLD(f) abuf->fields.sfmt_bceqlr.f
8903 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8904 int UNUSED written = 0;
8905 IADDR UNUSED pc = abuf->addr;
8906 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8909 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
8910 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))) {
8912 USI opval = GET_H_SPR (((UINT) 272));
8913 sim_queue_pc_write (current_cpu, opval);
8914 written |= (1 << 3);
8915 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8920 abuf->written = written;
8921 return vpc;
8922 #undef FLD
8925 /* bnelr: bnelr$pack $ICCi_2,$hint */
8927 static SEM_PC
8928 SEM_FN_NAME (frvbf,bnelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8930 #define FLD(f) abuf->fields.sfmt_bceqlr.f
8931 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8932 int UNUSED written = 0;
8933 IADDR UNUSED pc = abuf->addr;
8934 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8937 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
8938 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
8940 USI opval = GET_H_SPR (((UINT) 272));
8941 sim_queue_pc_write (current_cpu, opval);
8942 written |= (1 << 3);
8943 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8948 abuf->written = written;
8949 return vpc;
8950 #undef FLD
8953 /* blelr: blelr$pack $ICCi_2,$hint */
8955 static SEM_PC
8956 SEM_FN_NAME (frvbf,blelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8958 #define FLD(f) abuf->fields.sfmt_bceqlr.f
8959 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8960 int UNUSED written = 0;
8961 IADDR UNUSED pc = abuf->addr;
8962 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8965 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
8966 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)), XORBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1))))) {
8968 USI opval = GET_H_SPR (((UINT) 272));
8969 sim_queue_pc_write (current_cpu, opval);
8970 written |= (1 << 3);
8971 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
8976 abuf->written = written;
8977 return vpc;
8978 #undef FLD
8981 /* bgtlr: bgtlr$pack $ICCi_2,$hint */
8983 static SEM_PC
8984 SEM_FN_NAME (frvbf,bgtlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
8986 #define FLD(f) abuf->fields.sfmt_bceqlr.f
8987 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
8988 int UNUSED written = 0;
8989 IADDR UNUSED pc = abuf->addr;
8990 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
8993 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
8994 if (NOTBI (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)), XORBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1)))))) {
8996 USI opval = GET_H_SPR (((UINT) 272));
8997 sim_queue_pc_write (current_cpu, opval);
8998 written |= (1 << 3);
8999 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9004 abuf->written = written;
9005 return vpc;
9006 #undef FLD
9009 /* bltlr: bltlr$pack $ICCi_2,$hint */
9011 static SEM_PC
9012 SEM_FN_NAME (frvbf,bltlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9014 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9015 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9016 int UNUSED written = 0;
9017 IADDR UNUSED pc = abuf->addr;
9018 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9021 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9022 if (XORBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1)))) {
9024 USI opval = GET_H_SPR (((UINT) 272));
9025 sim_queue_pc_write (current_cpu, opval);
9026 written |= (1 << 3);
9027 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9032 abuf->written = written;
9033 return vpc;
9034 #undef FLD
9037 /* bgelr: bgelr$pack $ICCi_2,$hint */
9039 static SEM_PC
9040 SEM_FN_NAME (frvbf,bgelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9042 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9043 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9044 int UNUSED written = 0;
9045 IADDR UNUSED pc = abuf->addr;
9046 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9049 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9050 if (NOTBI (XORBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1))))) {
9052 USI opval = GET_H_SPR (((UINT) 272));
9053 sim_queue_pc_write (current_cpu, opval);
9054 written |= (1 << 3);
9055 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9060 abuf->written = written;
9061 return vpc;
9062 #undef FLD
9065 /* blslr: blslr$pack $ICCi_2,$hint */
9067 static SEM_PC
9068 SEM_FN_NAME (frvbf,blslr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9070 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9071 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9072 int UNUSED written = 0;
9073 IADDR UNUSED pc = abuf->addr;
9074 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9077 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9078 if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
9080 USI opval = GET_H_SPR (((UINT) 272));
9081 sim_queue_pc_write (current_cpu, opval);
9082 written |= (1 << 3);
9083 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9088 abuf->written = written;
9089 return vpc;
9090 #undef FLD
9093 /* bhilr: bhilr$pack $ICCi_2,$hint */
9095 static SEM_PC
9096 SEM_FN_NAME (frvbf,bhilr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9098 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9099 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9100 int UNUSED written = 0;
9101 IADDR UNUSED pc = abuf->addr;
9102 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9105 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9106 if (NOTBI (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))))) {
9108 USI opval = GET_H_SPR (((UINT) 272));
9109 sim_queue_pc_write (current_cpu, opval);
9110 written |= (1 << 3);
9111 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9116 abuf->written = written;
9117 return vpc;
9118 #undef FLD
9121 /* bclr: bclr$pack $ICCi_2,$hint */
9123 static SEM_PC
9124 SEM_FN_NAME (frvbf,bclr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9126 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9127 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9128 int UNUSED written = 0;
9129 IADDR UNUSED pc = abuf->addr;
9130 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9133 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9134 if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1))) {
9136 USI opval = GET_H_SPR (((UINT) 272));
9137 sim_queue_pc_write (current_cpu, opval);
9138 written |= (1 << 3);
9139 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9144 abuf->written = written;
9145 return vpc;
9146 #undef FLD
9149 /* bnclr: bnclr$pack $ICCi_2,$hint */
9151 static SEM_PC
9152 SEM_FN_NAME (frvbf,bnclr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9154 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9155 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9156 int UNUSED written = 0;
9157 IADDR UNUSED pc = abuf->addr;
9158 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9161 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9162 if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)))) {
9164 USI opval = GET_H_SPR (((UINT) 272));
9165 sim_queue_pc_write (current_cpu, opval);
9166 written |= (1 << 3);
9167 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9172 abuf->written = written;
9173 return vpc;
9174 #undef FLD
9177 /* bnlr: bnlr$pack $ICCi_2,$hint */
9179 static SEM_PC
9180 SEM_FN_NAME (frvbf,bnlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9182 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9183 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9184 int UNUSED written = 0;
9185 IADDR UNUSED pc = abuf->addr;
9186 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9189 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9190 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3))) {
9192 USI opval = GET_H_SPR (((UINT) 272));
9193 sim_queue_pc_write (current_cpu, opval);
9194 written |= (1 << 3);
9195 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9200 abuf->written = written;
9201 return vpc;
9202 #undef FLD
9205 /* bplr: bplr$pack $ICCi_2,$hint */
9207 static SEM_PC
9208 SEM_FN_NAME (frvbf,bplr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9210 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9211 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9212 int UNUSED written = 0;
9213 IADDR UNUSED pc = abuf->addr;
9214 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9217 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9218 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)))) {
9220 USI opval = GET_H_SPR (((UINT) 272));
9221 sim_queue_pc_write (current_cpu, opval);
9222 written |= (1 << 3);
9223 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9228 abuf->written = written;
9229 return vpc;
9230 #undef FLD
9233 /* bvlr: bvlr$pack $ICCi_2,$hint */
9235 static SEM_PC
9236 SEM_FN_NAME (frvbf,bvlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9238 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9239 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9240 int UNUSED written = 0;
9241 IADDR UNUSED pc = abuf->addr;
9242 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9245 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9246 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1))) {
9248 USI opval = GET_H_SPR (((UINT) 272));
9249 sim_queue_pc_write (current_cpu, opval);
9250 written |= (1 << 3);
9251 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9256 abuf->written = written;
9257 return vpc;
9258 #undef FLD
9261 /* bnvlr: bnvlr$pack $ICCi_2,$hint */
9263 static SEM_PC
9264 SEM_FN_NAME (frvbf,bnvlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9266 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9267 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9268 int UNUSED written = 0;
9269 IADDR UNUSED pc = abuf->addr;
9270 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9273 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9274 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1)))) {
9276 USI opval = GET_H_SPR (((UINT) 272));
9277 sim_queue_pc_write (current_cpu, opval);
9278 written |= (1 << 3);
9279 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9284 abuf->written = written;
9285 return vpc;
9286 #undef FLD
9289 /* fbralr: fbralr$pack$hint_taken */
9291 static SEM_PC
9292 SEM_FN_NAME (frvbf,fbralr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9294 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9295 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9296 int UNUSED written = 0;
9297 IADDR UNUSED pc = abuf->addr;
9298 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9301 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9303 USI opval = GET_H_SPR (((UINT) 272));
9304 sim_queue_pc_write (current_cpu, opval);
9305 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9309 return vpc;
9310 #undef FLD
9313 /* fbnolr: fbnolr$pack$hint_not_taken */
9315 static SEM_PC
9316 SEM_FN_NAME (frvbf,fbnolr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9318 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9319 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9320 int UNUSED written = 0;
9321 IADDR UNUSED pc = abuf->addr;
9322 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9324 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9326 return vpc;
9327 #undef FLD
9330 /* fbeqlr: fbeqlr$pack $FCCi_2,$hint */
9332 static SEM_PC
9333 SEM_FN_NAME (frvbf,fbeqlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9335 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9336 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9337 int UNUSED written = 0;
9338 IADDR UNUSED pc = abuf->addr;
9339 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9342 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9343 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3))) {
9345 USI opval = GET_H_SPR (((UINT) 272));
9346 sim_queue_pc_write (current_cpu, opval);
9347 written |= (1 << 3);
9348 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9353 abuf->written = written;
9354 return vpc;
9355 #undef FLD
9358 /* fbnelr: fbnelr$pack $FCCi_2,$hint */
9360 static SEM_PC
9361 SEM_FN_NAME (frvbf,fbnelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9363 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9364 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9365 int UNUSED written = 0;
9366 IADDR UNUSED pc = abuf->addr;
9367 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9370 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9371 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))))) {
9373 USI opval = GET_H_SPR (((UINT) 272));
9374 sim_queue_pc_write (current_cpu, opval);
9375 written |= (1 << 3);
9376 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9381 abuf->written = written;
9382 return vpc;
9383 #undef FLD
9386 /* fblglr: fblglr$pack $FCCi_2,$hint */
9388 static SEM_PC
9389 SEM_FN_NAME (frvbf,fblglr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9391 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9392 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9393 int UNUSED written = 0;
9394 IADDR UNUSED pc = abuf->addr;
9395 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9398 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9399 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)))) {
9401 USI opval = GET_H_SPR (((UINT) 272));
9402 sim_queue_pc_write (current_cpu, opval);
9403 written |= (1 << 3);
9404 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9409 abuf->written = written;
9410 return vpc;
9411 #undef FLD
9414 /* fbuelr: fbuelr$pack $FCCi_2,$hint */
9416 static SEM_PC
9417 SEM_FN_NAME (frvbf,fbuelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9419 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9420 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9421 int UNUSED written = 0;
9422 IADDR UNUSED pc = abuf->addr;
9423 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9426 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9427 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
9429 USI opval = GET_H_SPR (((UINT) 272));
9430 sim_queue_pc_write (current_cpu, opval);
9431 written |= (1 << 3);
9432 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9437 abuf->written = written;
9438 return vpc;
9439 #undef FLD
9442 /* fbullr: fbullr$pack $FCCi_2,$hint */
9444 static SEM_PC
9445 SEM_FN_NAME (frvbf,fbullr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9447 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9448 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9449 int UNUSED written = 0;
9450 IADDR UNUSED pc = abuf->addr;
9451 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9454 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9455 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
9457 USI opval = GET_H_SPR (((UINT) 272));
9458 sim_queue_pc_write (current_cpu, opval);
9459 written |= (1 << 3);
9460 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9465 abuf->written = written;
9466 return vpc;
9467 #undef FLD
9470 /* fbgelr: fbgelr$pack $FCCi_2,$hint */
9472 static SEM_PC
9473 SEM_FN_NAME (frvbf,fbgelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9475 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9476 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9477 int UNUSED written = 0;
9478 IADDR UNUSED pc = abuf->addr;
9479 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9482 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9483 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)))) {
9485 USI opval = GET_H_SPR (((UINT) 272));
9486 sim_queue_pc_write (current_cpu, opval);
9487 written |= (1 << 3);
9488 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9493 abuf->written = written;
9494 return vpc;
9495 #undef FLD
9498 /* fbltlr: fbltlr$pack $FCCi_2,$hint */
9500 static SEM_PC
9501 SEM_FN_NAME (frvbf,fbltlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9503 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9504 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9505 int UNUSED written = 0;
9506 IADDR UNUSED pc = abuf->addr;
9507 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9510 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9511 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2))) {
9513 USI opval = GET_H_SPR (((UINT) 272));
9514 sim_queue_pc_write (current_cpu, opval);
9515 written |= (1 << 3);
9516 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9521 abuf->written = written;
9522 return vpc;
9523 #undef FLD
9526 /* fbugelr: fbugelr$pack $FCCi_2,$hint */
9528 static SEM_PC
9529 SEM_FN_NAME (frvbf,fbugelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9531 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9532 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9533 int UNUSED written = 0;
9534 IADDR UNUSED pc = abuf->addr;
9535 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9538 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9539 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))))) {
9541 USI opval = GET_H_SPR (((UINT) 272));
9542 sim_queue_pc_write (current_cpu, opval);
9543 written |= (1 << 3);
9544 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9549 abuf->written = written;
9550 return vpc;
9551 #undef FLD
9554 /* fbuglr: fbuglr$pack $FCCi_2,$hint */
9556 static SEM_PC
9557 SEM_FN_NAME (frvbf,fbuglr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9559 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9560 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9561 int UNUSED written = 0;
9562 IADDR UNUSED pc = abuf->addr;
9563 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9566 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9567 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
9569 USI opval = GET_H_SPR (((UINT) 272));
9570 sim_queue_pc_write (current_cpu, opval);
9571 written |= (1 << 3);
9572 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9577 abuf->written = written;
9578 return vpc;
9579 #undef FLD
9582 /* fblelr: fblelr$pack $FCCi_2,$hint */
9584 static SEM_PC
9585 SEM_FN_NAME (frvbf,fblelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9587 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9588 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9589 int UNUSED written = 0;
9590 IADDR UNUSED pc = abuf->addr;
9591 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9594 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9595 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)))) {
9597 USI opval = GET_H_SPR (((UINT) 272));
9598 sim_queue_pc_write (current_cpu, opval);
9599 written |= (1 << 3);
9600 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9605 abuf->written = written;
9606 return vpc;
9607 #undef FLD
9610 /* fbgtlr: fbgtlr$pack $FCCi_2,$hint */
9612 static SEM_PC
9613 SEM_FN_NAME (frvbf,fbgtlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9615 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9616 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9617 int UNUSED written = 0;
9618 IADDR UNUSED pc = abuf->addr;
9619 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9622 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9623 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1))) {
9625 USI opval = GET_H_SPR (((UINT) 272));
9626 sim_queue_pc_write (current_cpu, opval);
9627 written |= (1 << 3);
9628 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9633 abuf->written = written;
9634 return vpc;
9635 #undef FLD
9638 /* fbulelr: fbulelr$pack $FCCi_2,$hint */
9640 static SEM_PC
9641 SEM_FN_NAME (frvbf,fbulelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9643 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9644 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9645 int UNUSED written = 0;
9646 IADDR UNUSED pc = abuf->addr;
9647 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9650 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9651 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))))) {
9653 USI opval = GET_H_SPR (((UINT) 272));
9654 sim_queue_pc_write (current_cpu, opval);
9655 written |= (1 << 3);
9656 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9661 abuf->written = written;
9662 return vpc;
9663 #undef FLD
9666 /* fbulr: fbulr$pack $FCCi_2,$hint */
9668 static SEM_PC
9669 SEM_FN_NAME (frvbf,fbulr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9671 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9672 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9673 int UNUSED written = 0;
9674 IADDR UNUSED pc = abuf->addr;
9675 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9678 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9679 if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))) {
9681 USI opval = GET_H_SPR (((UINT) 272));
9682 sim_queue_pc_write (current_cpu, opval);
9683 written |= (1 << 3);
9684 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9689 abuf->written = written;
9690 return vpc;
9691 #undef FLD
9694 /* fbolr: fbolr$pack $FCCi_2,$hint */
9696 static SEM_PC
9697 SEM_FN_NAME (frvbf,fbolr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9699 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9700 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9701 int UNUSED written = 0;
9702 IADDR UNUSED pc = abuf->addr;
9703 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9706 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9707 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1))))) {
9709 USI opval = GET_H_SPR (((UINT) 272));
9710 sim_queue_pc_write (current_cpu, opval);
9711 written |= (1 << 3);
9712 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9717 abuf->written = written;
9718 return vpc;
9719 #undef FLD
9722 /* bcralr: bcralr$pack $ccond$hint_taken */
9724 static SEM_PC
9725 SEM_FN_NAME (frvbf,bcralr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9727 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9728 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9729 int UNUSED written = 0;
9730 IADDR UNUSED pc = abuf->addr;
9731 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9734 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9736 SI tmp_tmp;
9737 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
9739 USI opval = tmp_tmp;
9740 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
9741 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
9743 if (EQSI (FLD (f_ccond), 0)) {
9744 if (NESI (tmp_tmp, 0)) {
9746 USI opval = GET_H_SPR (((UINT) 272));
9747 sim_queue_pc_write (current_cpu, opval);
9748 written |= (1 << 5);
9749 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9752 } else {
9753 if (EQSI (tmp_tmp, 0)) {
9755 USI opval = GET_H_SPR (((UINT) 272));
9756 sim_queue_pc_write (current_cpu, opval);
9757 written |= (1 << 5);
9758 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9765 abuf->written = written;
9766 return vpc;
9767 #undef FLD
9770 /* bcnolr: bcnolr$pack$hint_not_taken */
9772 static SEM_PC
9773 SEM_FN_NAME (frvbf,bcnolr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9775 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
9776 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9777 int UNUSED written = 0;
9778 IADDR UNUSED pc = abuf->addr;
9779 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9782 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9784 SI tmp_tmp;
9785 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
9787 USI opval = tmp_tmp;
9788 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
9789 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
9791 ((void) 0); /*nop*/
9795 return vpc;
9796 #undef FLD
9799 /* bceqlr: bceqlr$pack $ICCi_2,$ccond,$hint */
9801 static SEM_PC
9802 SEM_FN_NAME (frvbf,bceqlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9804 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9805 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9806 int UNUSED written = 0;
9807 IADDR UNUSED pc = abuf->addr;
9808 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9811 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9813 SI tmp_tmp;
9814 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
9816 USI opval = tmp_tmp;
9817 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
9818 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
9820 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))) {
9821 if (EQSI (FLD (f_ccond), 0)) {
9822 if (NESI (tmp_tmp, 0)) {
9824 USI opval = GET_H_SPR (((UINT) 272));
9825 sim_queue_pc_write (current_cpu, opval);
9826 written |= (1 << 6);
9827 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9830 } else {
9831 if (EQSI (tmp_tmp, 0)) {
9833 USI opval = GET_H_SPR (((UINT) 272));
9834 sim_queue_pc_write (current_cpu, opval);
9835 written |= (1 << 6);
9836 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9844 abuf->written = written;
9845 return vpc;
9846 #undef FLD
9849 /* bcnelr: bcnelr$pack $ICCi_2,$ccond,$hint */
9851 static SEM_PC
9852 SEM_FN_NAME (frvbf,bcnelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9854 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9855 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9856 int UNUSED written = 0;
9857 IADDR UNUSED pc = abuf->addr;
9858 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9861 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9863 SI tmp_tmp;
9864 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
9866 USI opval = tmp_tmp;
9867 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
9868 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
9870 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
9871 if (EQSI (FLD (f_ccond), 0)) {
9872 if (NESI (tmp_tmp, 0)) {
9874 USI opval = GET_H_SPR (((UINT) 272));
9875 sim_queue_pc_write (current_cpu, opval);
9876 written |= (1 << 6);
9877 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9880 } else {
9881 if (EQSI (tmp_tmp, 0)) {
9883 USI opval = GET_H_SPR (((UINT) 272));
9884 sim_queue_pc_write (current_cpu, opval);
9885 written |= (1 << 6);
9886 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9894 abuf->written = written;
9895 return vpc;
9896 #undef FLD
9899 /* bclelr: bclelr$pack $ICCi_2,$ccond,$hint */
9901 static SEM_PC
9902 SEM_FN_NAME (frvbf,bclelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9904 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9905 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9906 int UNUSED written = 0;
9907 IADDR UNUSED pc = abuf->addr;
9908 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9911 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9913 SI tmp_tmp;
9914 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
9916 USI opval = tmp_tmp;
9917 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
9918 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
9920 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)), XORBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1))))) {
9921 if (EQSI (FLD (f_ccond), 0)) {
9922 if (NESI (tmp_tmp, 0)) {
9924 USI opval = GET_H_SPR (((UINT) 272));
9925 sim_queue_pc_write (current_cpu, opval);
9926 written |= (1 << 6);
9927 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9930 } else {
9931 if (EQSI (tmp_tmp, 0)) {
9933 USI opval = GET_H_SPR (((UINT) 272));
9934 sim_queue_pc_write (current_cpu, opval);
9935 written |= (1 << 6);
9936 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9944 abuf->written = written;
9945 return vpc;
9946 #undef FLD
9949 /* bcgtlr: bcgtlr$pack $ICCi_2,$ccond,$hint */
9951 static SEM_PC
9952 SEM_FN_NAME (frvbf,bcgtlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
9954 #define FLD(f) abuf->fields.sfmt_bceqlr.f
9955 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
9956 int UNUSED written = 0;
9957 IADDR UNUSED pc = abuf->addr;
9958 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
9961 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
9963 SI tmp_tmp;
9964 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
9966 USI opval = tmp_tmp;
9967 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
9968 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
9970 if (NOTBI (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)), XORBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1)))))) {
9971 if (EQSI (FLD (f_ccond), 0)) {
9972 if (NESI (tmp_tmp, 0)) {
9974 USI opval = GET_H_SPR (((UINT) 272));
9975 sim_queue_pc_write (current_cpu, opval);
9976 written |= (1 << 6);
9977 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9980 } else {
9981 if (EQSI (tmp_tmp, 0)) {
9983 USI opval = GET_H_SPR (((UINT) 272));
9984 sim_queue_pc_write (current_cpu, opval);
9985 written |= (1 << 6);
9986 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
9994 abuf->written = written;
9995 return vpc;
9996 #undef FLD
9999 /* bcltlr: bcltlr$pack $ICCi_2,$ccond,$hint */
10001 static SEM_PC
10002 SEM_FN_NAME (frvbf,bcltlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10004 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10005 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10006 int UNUSED written = 0;
10007 IADDR UNUSED pc = abuf->addr;
10008 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10011 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10013 SI tmp_tmp;
10014 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10016 USI opval = tmp_tmp;
10017 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10018 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10020 if (XORBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1)))) {
10021 if (EQSI (FLD (f_ccond), 0)) {
10022 if (NESI (tmp_tmp, 0)) {
10024 USI opval = GET_H_SPR (((UINT) 272));
10025 sim_queue_pc_write (current_cpu, opval);
10026 written |= (1 << 6);
10027 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10030 } else {
10031 if (EQSI (tmp_tmp, 0)) {
10033 USI opval = GET_H_SPR (((UINT) 272));
10034 sim_queue_pc_write (current_cpu, opval);
10035 written |= (1 << 6);
10036 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10044 abuf->written = written;
10045 return vpc;
10046 #undef FLD
10049 /* bcgelr: bcgelr$pack $ICCi_2,$ccond,$hint */
10051 static SEM_PC
10052 SEM_FN_NAME (frvbf,bcgelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10054 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10055 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10056 int UNUSED written = 0;
10057 IADDR UNUSED pc = abuf->addr;
10058 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10061 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10063 SI tmp_tmp;
10064 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10066 USI opval = tmp_tmp;
10067 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10068 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10070 if (NOTBI (XORBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1))))) {
10071 if (EQSI (FLD (f_ccond), 0)) {
10072 if (NESI (tmp_tmp, 0)) {
10074 USI opval = GET_H_SPR (((UINT) 272));
10075 sim_queue_pc_write (current_cpu, opval);
10076 written |= (1 << 6);
10077 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10080 } else {
10081 if (EQSI (tmp_tmp, 0)) {
10083 USI opval = GET_H_SPR (((UINT) 272));
10084 sim_queue_pc_write (current_cpu, opval);
10085 written |= (1 << 6);
10086 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10094 abuf->written = written;
10095 return vpc;
10096 #undef FLD
10099 /* bclslr: bclslr$pack $ICCi_2,$ccond,$hint */
10101 static SEM_PC
10102 SEM_FN_NAME (frvbf,bclslr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10104 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10105 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10106 int UNUSED written = 0;
10107 IADDR UNUSED pc = abuf->addr;
10108 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10111 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10113 SI tmp_tmp;
10114 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10116 USI opval = tmp_tmp;
10117 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10118 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10120 if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
10121 if (EQSI (FLD (f_ccond), 0)) {
10122 if (NESI (tmp_tmp, 0)) {
10124 USI opval = GET_H_SPR (((UINT) 272));
10125 sim_queue_pc_write (current_cpu, opval);
10126 written |= (1 << 6);
10127 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10130 } else {
10131 if (EQSI (tmp_tmp, 0)) {
10133 USI opval = GET_H_SPR (((UINT) 272));
10134 sim_queue_pc_write (current_cpu, opval);
10135 written |= (1 << 6);
10136 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10144 abuf->written = written;
10145 return vpc;
10146 #undef FLD
10149 /* bchilr: bchilr$pack $ICCi_2,$ccond,$hint */
10151 static SEM_PC
10152 SEM_FN_NAME (frvbf,bchilr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10154 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10155 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10156 int UNUSED written = 0;
10157 IADDR UNUSED pc = abuf->addr;
10158 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10161 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10163 SI tmp_tmp;
10164 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10166 USI opval = tmp_tmp;
10167 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10168 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10170 if (NOTBI (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))))) {
10171 if (EQSI (FLD (f_ccond), 0)) {
10172 if (NESI (tmp_tmp, 0)) {
10174 USI opval = GET_H_SPR (((UINT) 272));
10175 sim_queue_pc_write (current_cpu, opval);
10176 written |= (1 << 6);
10177 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10180 } else {
10181 if (EQSI (tmp_tmp, 0)) {
10183 USI opval = GET_H_SPR (((UINT) 272));
10184 sim_queue_pc_write (current_cpu, opval);
10185 written |= (1 << 6);
10186 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10194 abuf->written = written;
10195 return vpc;
10196 #undef FLD
10199 /* bcclr: bcclr$pack $ICCi_2,$ccond,$hint */
10201 static SEM_PC
10202 SEM_FN_NAME (frvbf,bcclr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10204 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10205 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10206 int UNUSED written = 0;
10207 IADDR UNUSED pc = abuf->addr;
10208 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10211 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10213 SI tmp_tmp;
10214 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10216 USI opval = tmp_tmp;
10217 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10218 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10220 if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1))) {
10221 if (EQSI (FLD (f_ccond), 0)) {
10222 if (NESI (tmp_tmp, 0)) {
10224 USI opval = GET_H_SPR (((UINT) 272));
10225 sim_queue_pc_write (current_cpu, opval);
10226 written |= (1 << 6);
10227 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10230 } else {
10231 if (EQSI (tmp_tmp, 0)) {
10233 USI opval = GET_H_SPR (((UINT) 272));
10234 sim_queue_pc_write (current_cpu, opval);
10235 written |= (1 << 6);
10236 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10244 abuf->written = written;
10245 return vpc;
10246 #undef FLD
10249 /* bcnclr: bcnclr$pack $ICCi_2,$ccond,$hint */
10251 static SEM_PC
10252 SEM_FN_NAME (frvbf,bcnclr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10254 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10255 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10256 int UNUSED written = 0;
10257 IADDR UNUSED pc = abuf->addr;
10258 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10261 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10263 SI tmp_tmp;
10264 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10266 USI opval = tmp_tmp;
10267 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10268 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10270 if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)))) {
10271 if (EQSI (FLD (f_ccond), 0)) {
10272 if (NESI (tmp_tmp, 0)) {
10274 USI opval = GET_H_SPR (((UINT) 272));
10275 sim_queue_pc_write (current_cpu, opval);
10276 written |= (1 << 6);
10277 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10280 } else {
10281 if (EQSI (tmp_tmp, 0)) {
10283 USI opval = GET_H_SPR (((UINT) 272));
10284 sim_queue_pc_write (current_cpu, opval);
10285 written |= (1 << 6);
10286 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10294 abuf->written = written;
10295 return vpc;
10296 #undef FLD
10299 /* bcnlr: bcnlr$pack $ICCi_2,$ccond,$hint */
10301 static SEM_PC
10302 SEM_FN_NAME (frvbf,bcnlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10304 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10305 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10306 int UNUSED written = 0;
10307 IADDR UNUSED pc = abuf->addr;
10308 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10311 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10313 SI tmp_tmp;
10314 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10316 USI opval = tmp_tmp;
10317 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10318 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10320 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3))) {
10321 if (EQSI (FLD (f_ccond), 0)) {
10322 if (NESI (tmp_tmp, 0)) {
10324 USI opval = GET_H_SPR (((UINT) 272));
10325 sim_queue_pc_write (current_cpu, opval);
10326 written |= (1 << 6);
10327 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10330 } else {
10331 if (EQSI (tmp_tmp, 0)) {
10333 USI opval = GET_H_SPR (((UINT) 272));
10334 sim_queue_pc_write (current_cpu, opval);
10335 written |= (1 << 6);
10336 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10344 abuf->written = written;
10345 return vpc;
10346 #undef FLD
10349 /* bcplr: bcplr$pack $ICCi_2,$ccond,$hint */
10351 static SEM_PC
10352 SEM_FN_NAME (frvbf,bcplr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10354 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10355 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10356 int UNUSED written = 0;
10357 IADDR UNUSED pc = abuf->addr;
10358 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10361 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10363 SI tmp_tmp;
10364 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10366 USI opval = tmp_tmp;
10367 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10368 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10370 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)))) {
10371 if (EQSI (FLD (f_ccond), 0)) {
10372 if (NESI (tmp_tmp, 0)) {
10374 USI opval = GET_H_SPR (((UINT) 272));
10375 sim_queue_pc_write (current_cpu, opval);
10376 written |= (1 << 6);
10377 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10380 } else {
10381 if (EQSI (tmp_tmp, 0)) {
10383 USI opval = GET_H_SPR (((UINT) 272));
10384 sim_queue_pc_write (current_cpu, opval);
10385 written |= (1 << 6);
10386 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10394 abuf->written = written;
10395 return vpc;
10396 #undef FLD
10399 /* bcvlr: bcvlr$pack $ICCi_2,$ccond,$hint */
10401 static SEM_PC
10402 SEM_FN_NAME (frvbf,bcvlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10404 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10405 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10406 int UNUSED written = 0;
10407 IADDR UNUSED pc = abuf->addr;
10408 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10411 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10413 SI tmp_tmp;
10414 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10416 USI opval = tmp_tmp;
10417 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10418 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10420 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1))) {
10421 if (EQSI (FLD (f_ccond), 0)) {
10422 if (NESI (tmp_tmp, 0)) {
10424 USI opval = GET_H_SPR (((UINT) 272));
10425 sim_queue_pc_write (current_cpu, opval);
10426 written |= (1 << 6);
10427 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10430 } else {
10431 if (EQSI (tmp_tmp, 0)) {
10433 USI opval = GET_H_SPR (((UINT) 272));
10434 sim_queue_pc_write (current_cpu, opval);
10435 written |= (1 << 6);
10436 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10444 abuf->written = written;
10445 return vpc;
10446 #undef FLD
10449 /* bcnvlr: bcnvlr$pack $ICCi_2,$ccond,$hint */
10451 static SEM_PC
10452 SEM_FN_NAME (frvbf,bcnvlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10454 #define FLD(f) abuf->fields.sfmt_bceqlr.f
10455 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10456 int UNUSED written = 0;
10457 IADDR UNUSED pc = abuf->addr;
10458 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10461 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10463 SI tmp_tmp;
10464 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10466 USI opval = tmp_tmp;
10467 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10468 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10470 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1)))) {
10471 if (EQSI (FLD (f_ccond), 0)) {
10472 if (NESI (tmp_tmp, 0)) {
10474 USI opval = GET_H_SPR (((UINT) 272));
10475 sim_queue_pc_write (current_cpu, opval);
10476 written |= (1 << 6);
10477 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10480 } else {
10481 if (EQSI (tmp_tmp, 0)) {
10483 USI opval = GET_H_SPR (((UINT) 272));
10484 sim_queue_pc_write (current_cpu, opval);
10485 written |= (1 << 6);
10486 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10494 abuf->written = written;
10495 return vpc;
10496 #undef FLD
10499 /* fcbralr: fcbralr$pack $ccond$hint_taken */
10501 static SEM_PC
10502 SEM_FN_NAME (frvbf,fcbralr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10504 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10505 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10506 int UNUSED written = 0;
10507 IADDR UNUSED pc = abuf->addr;
10508 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10511 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10513 SI tmp_tmp;
10514 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10516 USI opval = tmp_tmp;
10517 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10518 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10520 if (EQSI (FLD (f_ccond), 0)) {
10521 if (NESI (tmp_tmp, 0)) {
10523 USI opval = GET_H_SPR (((UINT) 272));
10524 sim_queue_pc_write (current_cpu, opval);
10525 written |= (1 << 5);
10526 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10529 } else {
10530 if (EQSI (tmp_tmp, 0)) {
10532 USI opval = GET_H_SPR (((UINT) 272));
10533 sim_queue_pc_write (current_cpu, opval);
10534 written |= (1 << 5);
10535 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10542 abuf->written = written;
10543 return vpc;
10544 #undef FLD
10547 /* fcbnolr: fcbnolr$pack$hint_not_taken */
10549 static SEM_PC
10550 SEM_FN_NAME (frvbf,fcbnolr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10552 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10553 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10554 int UNUSED written = 0;
10555 IADDR UNUSED pc = abuf->addr;
10556 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10559 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10561 SI tmp_tmp;
10562 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10564 USI opval = tmp_tmp;
10565 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10566 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10568 ((void) 0); /*nop*/
10572 return vpc;
10573 #undef FLD
10576 /* fcbeqlr: fcbeqlr$pack $FCCi_2,$ccond,$hint */
10578 static SEM_PC
10579 SEM_FN_NAME (frvbf,fcbeqlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10581 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10582 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10583 int UNUSED written = 0;
10584 IADDR UNUSED pc = abuf->addr;
10585 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10588 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10590 SI tmp_tmp;
10591 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10593 USI opval = tmp_tmp;
10594 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10595 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10597 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3))) {
10598 if (EQSI (FLD (f_ccond), 0)) {
10599 if (NESI (tmp_tmp, 0)) {
10601 USI opval = GET_H_SPR (((UINT) 272));
10602 sim_queue_pc_write (current_cpu, opval);
10603 written |= (1 << 6);
10604 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10607 } else {
10608 if (EQSI (tmp_tmp, 0)) {
10610 USI opval = GET_H_SPR (((UINT) 272));
10611 sim_queue_pc_write (current_cpu, opval);
10612 written |= (1 << 6);
10613 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10621 abuf->written = written;
10622 return vpc;
10623 #undef FLD
10626 /* fcbnelr: fcbnelr$pack $FCCi_2,$ccond,$hint */
10628 static SEM_PC
10629 SEM_FN_NAME (frvbf,fcbnelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10631 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10632 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10633 int UNUSED written = 0;
10634 IADDR UNUSED pc = abuf->addr;
10635 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10638 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10640 SI tmp_tmp;
10641 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10643 USI opval = tmp_tmp;
10644 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10645 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10647 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))))) {
10648 if (EQSI (FLD (f_ccond), 0)) {
10649 if (NESI (tmp_tmp, 0)) {
10651 USI opval = GET_H_SPR (((UINT) 272));
10652 sim_queue_pc_write (current_cpu, opval);
10653 written |= (1 << 6);
10654 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10657 } else {
10658 if (EQSI (tmp_tmp, 0)) {
10660 USI opval = GET_H_SPR (((UINT) 272));
10661 sim_queue_pc_write (current_cpu, opval);
10662 written |= (1 << 6);
10663 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10671 abuf->written = written;
10672 return vpc;
10673 #undef FLD
10676 /* fcblglr: fcblglr$pack $FCCi_2,$ccond,$hint */
10678 static SEM_PC
10679 SEM_FN_NAME (frvbf,fcblglr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10681 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10682 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10683 int UNUSED written = 0;
10684 IADDR UNUSED pc = abuf->addr;
10685 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10688 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10690 SI tmp_tmp;
10691 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10693 USI opval = tmp_tmp;
10694 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10695 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10697 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)))) {
10698 if (EQSI (FLD (f_ccond), 0)) {
10699 if (NESI (tmp_tmp, 0)) {
10701 USI opval = GET_H_SPR (((UINT) 272));
10702 sim_queue_pc_write (current_cpu, opval);
10703 written |= (1 << 6);
10704 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10707 } else {
10708 if (EQSI (tmp_tmp, 0)) {
10710 USI opval = GET_H_SPR (((UINT) 272));
10711 sim_queue_pc_write (current_cpu, opval);
10712 written |= (1 << 6);
10713 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10721 abuf->written = written;
10722 return vpc;
10723 #undef FLD
10726 /* fcbuelr: fcbuelr$pack $FCCi_2,$ccond,$hint */
10728 static SEM_PC
10729 SEM_FN_NAME (frvbf,fcbuelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10731 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10732 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10733 int UNUSED written = 0;
10734 IADDR UNUSED pc = abuf->addr;
10735 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10738 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10740 SI tmp_tmp;
10741 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10743 USI opval = tmp_tmp;
10744 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10745 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10747 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
10748 if (EQSI (FLD (f_ccond), 0)) {
10749 if (NESI (tmp_tmp, 0)) {
10751 USI opval = GET_H_SPR (((UINT) 272));
10752 sim_queue_pc_write (current_cpu, opval);
10753 written |= (1 << 6);
10754 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10757 } else {
10758 if (EQSI (tmp_tmp, 0)) {
10760 USI opval = GET_H_SPR (((UINT) 272));
10761 sim_queue_pc_write (current_cpu, opval);
10762 written |= (1 << 6);
10763 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10771 abuf->written = written;
10772 return vpc;
10773 #undef FLD
10776 /* fcbullr: fcbullr$pack $FCCi_2,$ccond,$hint */
10778 static SEM_PC
10779 SEM_FN_NAME (frvbf,fcbullr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10781 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10782 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10783 int UNUSED written = 0;
10784 IADDR UNUSED pc = abuf->addr;
10785 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10788 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10790 SI tmp_tmp;
10791 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10793 USI opval = tmp_tmp;
10794 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10795 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10797 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
10798 if (EQSI (FLD (f_ccond), 0)) {
10799 if (NESI (tmp_tmp, 0)) {
10801 USI opval = GET_H_SPR (((UINT) 272));
10802 sim_queue_pc_write (current_cpu, opval);
10803 written |= (1 << 6);
10804 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10807 } else {
10808 if (EQSI (tmp_tmp, 0)) {
10810 USI opval = GET_H_SPR (((UINT) 272));
10811 sim_queue_pc_write (current_cpu, opval);
10812 written |= (1 << 6);
10813 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10821 abuf->written = written;
10822 return vpc;
10823 #undef FLD
10826 /* fcbgelr: fcbgelr$pack $FCCi_2,$ccond,$hint */
10828 static SEM_PC
10829 SEM_FN_NAME (frvbf,fcbgelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10831 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10832 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10833 int UNUSED written = 0;
10834 IADDR UNUSED pc = abuf->addr;
10835 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10838 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10840 SI tmp_tmp;
10841 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10843 USI opval = tmp_tmp;
10844 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10845 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10847 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)))) {
10848 if (EQSI (FLD (f_ccond), 0)) {
10849 if (NESI (tmp_tmp, 0)) {
10851 USI opval = GET_H_SPR (((UINT) 272));
10852 sim_queue_pc_write (current_cpu, opval);
10853 written |= (1 << 6);
10854 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10857 } else {
10858 if (EQSI (tmp_tmp, 0)) {
10860 USI opval = GET_H_SPR (((UINT) 272));
10861 sim_queue_pc_write (current_cpu, opval);
10862 written |= (1 << 6);
10863 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10871 abuf->written = written;
10872 return vpc;
10873 #undef FLD
10876 /* fcbltlr: fcbltlr$pack $FCCi_2,$ccond,$hint */
10878 static SEM_PC
10879 SEM_FN_NAME (frvbf,fcbltlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10881 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10882 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10883 int UNUSED written = 0;
10884 IADDR UNUSED pc = abuf->addr;
10885 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10888 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10890 SI tmp_tmp;
10891 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10893 USI opval = tmp_tmp;
10894 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10895 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10897 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2))) {
10898 if (EQSI (FLD (f_ccond), 0)) {
10899 if (NESI (tmp_tmp, 0)) {
10901 USI opval = GET_H_SPR (((UINT) 272));
10902 sim_queue_pc_write (current_cpu, opval);
10903 written |= (1 << 6);
10904 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10907 } else {
10908 if (EQSI (tmp_tmp, 0)) {
10910 USI opval = GET_H_SPR (((UINT) 272));
10911 sim_queue_pc_write (current_cpu, opval);
10912 written |= (1 << 6);
10913 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10921 abuf->written = written;
10922 return vpc;
10923 #undef FLD
10926 /* fcbugelr: fcbugelr$pack $FCCi_2,$ccond,$hint */
10928 static SEM_PC
10929 SEM_FN_NAME (frvbf,fcbugelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10931 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10932 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10933 int UNUSED written = 0;
10934 IADDR UNUSED pc = abuf->addr;
10935 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10938 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10940 SI tmp_tmp;
10941 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10943 USI opval = tmp_tmp;
10944 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10945 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10947 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))))) {
10948 if (EQSI (FLD (f_ccond), 0)) {
10949 if (NESI (tmp_tmp, 0)) {
10951 USI opval = GET_H_SPR (((UINT) 272));
10952 sim_queue_pc_write (current_cpu, opval);
10953 written |= (1 << 6);
10954 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10957 } else {
10958 if (EQSI (tmp_tmp, 0)) {
10960 USI opval = GET_H_SPR (((UINT) 272));
10961 sim_queue_pc_write (current_cpu, opval);
10962 written |= (1 << 6);
10963 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
10971 abuf->written = written;
10972 return vpc;
10973 #undef FLD
10976 /* fcbuglr: fcbuglr$pack $FCCi_2,$ccond,$hint */
10978 static SEM_PC
10979 SEM_FN_NAME (frvbf,fcbuglr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
10981 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
10982 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
10983 int UNUSED written = 0;
10984 IADDR UNUSED pc = abuf->addr;
10985 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
10988 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
10990 SI tmp_tmp;
10991 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
10993 USI opval = tmp_tmp;
10994 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
10995 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
10997 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
10998 if (EQSI (FLD (f_ccond), 0)) {
10999 if (NESI (tmp_tmp, 0)) {
11001 USI opval = GET_H_SPR (((UINT) 272));
11002 sim_queue_pc_write (current_cpu, opval);
11003 written |= (1 << 6);
11004 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11007 } else {
11008 if (EQSI (tmp_tmp, 0)) {
11010 USI opval = GET_H_SPR (((UINT) 272));
11011 sim_queue_pc_write (current_cpu, opval);
11012 written |= (1 << 6);
11013 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11021 abuf->written = written;
11022 return vpc;
11023 #undef FLD
11026 /* fcblelr: fcblelr$pack $FCCi_2,$ccond,$hint */
11028 static SEM_PC
11029 SEM_FN_NAME (frvbf,fcblelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11031 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
11032 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11033 int UNUSED written = 0;
11034 IADDR UNUSED pc = abuf->addr;
11035 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11038 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
11040 SI tmp_tmp;
11041 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
11043 USI opval = tmp_tmp;
11044 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
11045 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
11047 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)))) {
11048 if (EQSI (FLD (f_ccond), 0)) {
11049 if (NESI (tmp_tmp, 0)) {
11051 USI opval = GET_H_SPR (((UINT) 272));
11052 sim_queue_pc_write (current_cpu, opval);
11053 written |= (1 << 6);
11054 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11057 } else {
11058 if (EQSI (tmp_tmp, 0)) {
11060 USI opval = GET_H_SPR (((UINT) 272));
11061 sim_queue_pc_write (current_cpu, opval);
11062 written |= (1 << 6);
11063 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11071 abuf->written = written;
11072 return vpc;
11073 #undef FLD
11076 /* fcbgtlr: fcbgtlr$pack $FCCi_2,$ccond,$hint */
11078 static SEM_PC
11079 SEM_FN_NAME (frvbf,fcbgtlr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11081 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
11082 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11083 int UNUSED written = 0;
11084 IADDR UNUSED pc = abuf->addr;
11085 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11088 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
11090 SI tmp_tmp;
11091 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
11093 USI opval = tmp_tmp;
11094 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
11095 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
11097 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1))) {
11098 if (EQSI (FLD (f_ccond), 0)) {
11099 if (NESI (tmp_tmp, 0)) {
11101 USI opval = GET_H_SPR (((UINT) 272));
11102 sim_queue_pc_write (current_cpu, opval);
11103 written |= (1 << 6);
11104 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11107 } else {
11108 if (EQSI (tmp_tmp, 0)) {
11110 USI opval = GET_H_SPR (((UINT) 272));
11111 sim_queue_pc_write (current_cpu, opval);
11112 written |= (1 << 6);
11113 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11121 abuf->written = written;
11122 return vpc;
11123 #undef FLD
11126 /* fcbulelr: fcbulelr$pack $FCCi_2,$ccond,$hint */
11128 static SEM_PC
11129 SEM_FN_NAME (frvbf,fcbulelr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11131 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
11132 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11133 int UNUSED written = 0;
11134 IADDR UNUSED pc = abuf->addr;
11135 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11138 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
11140 SI tmp_tmp;
11141 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
11143 USI opval = tmp_tmp;
11144 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
11145 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
11147 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))))) {
11148 if (EQSI (FLD (f_ccond), 0)) {
11149 if (NESI (tmp_tmp, 0)) {
11151 USI opval = GET_H_SPR (((UINT) 272));
11152 sim_queue_pc_write (current_cpu, opval);
11153 written |= (1 << 6);
11154 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11157 } else {
11158 if (EQSI (tmp_tmp, 0)) {
11160 USI opval = GET_H_SPR (((UINT) 272));
11161 sim_queue_pc_write (current_cpu, opval);
11162 written |= (1 << 6);
11163 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11171 abuf->written = written;
11172 return vpc;
11173 #undef FLD
11176 /* fcbulr: fcbulr$pack $FCCi_2,$ccond,$hint */
11178 static SEM_PC
11179 SEM_FN_NAME (frvbf,fcbulr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11181 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
11182 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11183 int UNUSED written = 0;
11184 IADDR UNUSED pc = abuf->addr;
11185 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11188 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
11190 SI tmp_tmp;
11191 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
11193 USI opval = tmp_tmp;
11194 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
11195 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
11197 if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))) {
11198 if (EQSI (FLD (f_ccond), 0)) {
11199 if (NESI (tmp_tmp, 0)) {
11201 USI opval = GET_H_SPR (((UINT) 272));
11202 sim_queue_pc_write (current_cpu, opval);
11203 written |= (1 << 6);
11204 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11207 } else {
11208 if (EQSI (tmp_tmp, 0)) {
11210 USI opval = GET_H_SPR (((UINT) 272));
11211 sim_queue_pc_write (current_cpu, opval);
11212 written |= (1 << 6);
11213 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11221 abuf->written = written;
11222 return vpc;
11223 #undef FLD
11226 /* fcbolr: fcbolr$pack $FCCi_2,$ccond,$hint */
11228 static SEM_PC
11229 SEM_FN_NAME (frvbf,fcbolr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11231 #define FLD(f) abuf->fields.sfmt_fcbeqlr.f
11232 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11233 int UNUSED written = 0;
11234 IADDR UNUSED pc = abuf->addr;
11235 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11238 frvbf_model_branch (current_cpu, GET_H_SPR (((UINT) 272)), FLD (f_hint));
11240 SI tmp_tmp;
11241 tmp_tmp = SUBSI (GET_H_SPR (((UINT) 273)), 1);
11243 USI opval = tmp_tmp;
11244 sim_queue_fn_si_write (current_cpu, frvbf_h_spr_set, ((UINT) 273), opval);
11245 CGEN_TRACE_RESULT (current_cpu, abuf, "spr", 'x', opval);
11247 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1))))) {
11248 if (EQSI (FLD (f_ccond), 0)) {
11249 if (NESI (tmp_tmp, 0)) {
11251 USI opval = GET_H_SPR (((UINT) 272));
11252 sim_queue_pc_write (current_cpu, opval);
11253 written |= (1 << 6);
11254 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11257 } else {
11258 if (EQSI (tmp_tmp, 0)) {
11260 USI opval = GET_H_SPR (((UINT) 272));
11261 sim_queue_pc_write (current_cpu, opval);
11262 written |= (1 << 6);
11263 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11271 abuf->written = written;
11272 return vpc;
11273 #undef FLD
11276 /* jmpl: jmpl$pack @($GRi,$GRj) */
11278 static SEM_PC
11279 SEM_FN_NAME (frvbf,jmpl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11281 #define FLD(f) abuf->fields.sfmt_cjmpl.f
11282 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11283 int UNUSED written = 0;
11284 IADDR UNUSED pc = abuf->addr;
11285 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11288 if (EQSI (FLD (f_LI), 1)) {
11289 frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
11292 USI opval = ANDSI (ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0xfffffffc);
11293 sim_queue_pc_write (current_cpu, opval);
11294 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11296 frvbf_model_branch (current_cpu, pc, 2);
11299 return vpc;
11300 #undef FLD
11303 /* calll: calll$pack $callann($GRi,$GRj) */
11305 static SEM_PC
11306 SEM_FN_NAME (frvbf,calll) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11308 #define FLD(f) abuf->fields.sfmt_cjmpl.f
11309 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11310 int UNUSED written = 0;
11311 IADDR UNUSED pc = abuf->addr;
11312 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11315 if (EQSI (FLD (f_LI), 1)) {
11316 frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
11319 USI opval = ANDSI (ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0xfffffffc);
11320 sim_queue_pc_write (current_cpu, opval);
11321 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11323 frvbf_model_branch (current_cpu, pc, 2);
11326 return vpc;
11327 #undef FLD
11330 /* jmpil: jmpil$pack @($GRi,$s12) */
11332 static SEM_PC
11333 SEM_FN_NAME (frvbf,jmpil) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11335 #define FLD(f) abuf->fields.sfmt_jmpil.f
11336 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11337 int UNUSED written = 0;
11338 IADDR UNUSED pc = abuf->addr;
11339 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11342 if (EQSI (FLD (f_LI), 1)) {
11343 frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
11346 USI opval = ANDSI (ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), 0xfffffffc);
11347 sim_queue_pc_write (current_cpu, opval);
11348 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11350 frvbf_model_branch (current_cpu, pc, 2);
11353 return vpc;
11354 #undef FLD
11357 /* callil: callil$pack @($GRi,$s12) */
11359 static SEM_PC
11360 SEM_FN_NAME (frvbf,callil) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11362 #define FLD(f) abuf->fields.sfmt_jmpil.f
11363 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11364 int UNUSED written = 0;
11365 IADDR UNUSED pc = abuf->addr;
11366 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11369 if (EQSI (FLD (f_LI), 1)) {
11370 frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
11373 USI opval = ANDSI (ADDSI (GET_H_GR (FLD (f_GRi)), FLD (f_d12)), 0xfffffffc);
11374 sim_queue_pc_write (current_cpu, opval);
11375 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11377 frvbf_model_branch (current_cpu, pc, 2);
11380 return vpc;
11381 #undef FLD
11384 /* call: call$pack $label24 */
11386 static SEM_PC
11387 SEM_FN_NAME (frvbf,call) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11389 #define FLD(f) abuf->fields.sfmt_call.f
11390 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11391 int UNUSED written = 0;
11392 IADDR UNUSED pc = abuf->addr;
11393 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11396 frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
11398 USI opval = FLD (i_label24);
11399 sim_queue_pc_write (current_cpu, opval);
11400 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11402 frvbf_model_branch (current_cpu, pc, 2);
11405 return vpc;
11406 #undef FLD
11409 /* rett: rett$pack $debug */
11411 static SEM_PC
11412 SEM_FN_NAME (frvbf,rett) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11414 #define FLD(f) abuf->fields.sfmt_rett.f
11415 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11416 int UNUSED written = 0;
11417 IADDR UNUSED pc = abuf->addr;
11418 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11422 USI opval = frv_rett (current_cpu, pc, FLD (f_debug));
11423 sim_queue_pc_write (current_cpu, opval);
11424 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
11426 frvbf_model_branch (current_cpu, pc, 2);
11429 return vpc;
11430 #undef FLD
11433 /* rei: rei$pack $eir */
11435 static SEM_PC
11436 SEM_FN_NAME (frvbf,rei) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11438 #define FLD(f) abuf->fields.sfmt_empty.f
11439 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11440 int UNUSED written = 0;
11441 IADDR UNUSED pc = abuf->addr;
11442 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11444 ((void) 0); /*nop*/
11446 return vpc;
11447 #undef FLD
11450 /* tra: tra$pack $GRi,$GRj */
11452 static SEM_PC
11453 SEM_FN_NAME (frvbf,tra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11455 #define FLD(f) abuf->fields.sfmt_ftne.f
11456 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11457 int UNUSED written = 0;
11458 IADDR UNUSED pc = abuf->addr;
11459 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11462 ; /*clobber*/
11463 ; /*clobber*/
11464 ; /*clobber*/
11465 ; /*clobber*/
11466 if (NEBI (CPU (h_psr_esr), 0)) {
11468 ; /*clobber*/
11469 ; /*clobber*/
11470 ; /*clobber*/
11471 ; /*clobber*/
11474 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11477 abuf->written = written;
11478 return vpc;
11479 #undef FLD
11482 /* tno: tno$pack */
11484 static SEM_PC
11485 SEM_FN_NAME (frvbf,tno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11487 #define FLD(f) abuf->fields.sfmt_empty.f
11488 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11489 int UNUSED written = 0;
11490 IADDR UNUSED pc = abuf->addr;
11491 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11493 ((void) 0); /*nop*/
11495 return vpc;
11496 #undef FLD
11499 /* teq: teq$pack $ICCi_2,$GRi,$GRj */
11501 static SEM_PC
11502 SEM_FN_NAME (frvbf,teq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11504 #define FLD(f) abuf->fields.sfmt_teq.f
11505 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11506 int UNUSED written = 0;
11507 IADDR UNUSED pc = abuf->addr;
11508 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11510 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))) {
11512 ; /*clobber*/
11513 ; /*clobber*/
11514 ; /*clobber*/
11515 ; /*clobber*/
11516 if (NEBI (CPU (h_psr_esr), 0)) {
11518 ; /*clobber*/
11519 ; /*clobber*/
11520 ; /*clobber*/
11521 ; /*clobber*/
11524 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11528 abuf->written = written;
11529 return vpc;
11530 #undef FLD
11533 /* tne: tne$pack $ICCi_2,$GRi,$GRj */
11535 static SEM_PC
11536 SEM_FN_NAME (frvbf,tne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11538 #define FLD(f) abuf->fields.sfmt_teq.f
11539 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11540 int UNUSED written = 0;
11541 IADDR UNUSED pc = abuf->addr;
11542 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11544 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
11546 ; /*clobber*/
11547 ; /*clobber*/
11548 ; /*clobber*/
11549 ; /*clobber*/
11550 if (NEBI (CPU (h_psr_esr), 0)) {
11552 ; /*clobber*/
11553 ; /*clobber*/
11554 ; /*clobber*/
11555 ; /*clobber*/
11558 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11562 abuf->written = written;
11563 return vpc;
11564 #undef FLD
11567 /* tle: tle$pack $ICCi_2,$GRi,$GRj */
11569 static SEM_PC
11570 SEM_FN_NAME (frvbf,tle) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11572 #define FLD(f) abuf->fields.sfmt_teq.f
11573 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11574 int UNUSED written = 0;
11575 IADDR UNUSED pc = abuf->addr;
11576 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11578 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)), XORBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1))))) {
11580 ; /*clobber*/
11581 ; /*clobber*/
11582 ; /*clobber*/
11583 ; /*clobber*/
11584 if (NEBI (CPU (h_psr_esr), 0)) {
11586 ; /*clobber*/
11587 ; /*clobber*/
11588 ; /*clobber*/
11589 ; /*clobber*/
11592 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11596 abuf->written = written;
11597 return vpc;
11598 #undef FLD
11601 /* tgt: tgt$pack $ICCi_2,$GRi,$GRj */
11603 static SEM_PC
11604 SEM_FN_NAME (frvbf,tgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11606 #define FLD(f) abuf->fields.sfmt_teq.f
11607 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11608 int UNUSED written = 0;
11609 IADDR UNUSED pc = abuf->addr;
11610 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11612 if (NOTBI (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)), XORBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1)))))) {
11614 ; /*clobber*/
11615 ; /*clobber*/
11616 ; /*clobber*/
11617 ; /*clobber*/
11618 if (NEBI (CPU (h_psr_esr), 0)) {
11620 ; /*clobber*/
11621 ; /*clobber*/
11622 ; /*clobber*/
11623 ; /*clobber*/
11626 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11630 abuf->written = written;
11631 return vpc;
11632 #undef FLD
11635 /* tlt: tlt$pack $ICCi_2,$GRi,$GRj */
11637 static SEM_PC
11638 SEM_FN_NAME (frvbf,tlt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11640 #define FLD(f) abuf->fields.sfmt_teq.f
11641 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11642 int UNUSED written = 0;
11643 IADDR UNUSED pc = abuf->addr;
11644 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11646 if (XORBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1)))) {
11648 ; /*clobber*/
11649 ; /*clobber*/
11650 ; /*clobber*/
11651 ; /*clobber*/
11652 if (NEBI (CPU (h_psr_esr), 0)) {
11654 ; /*clobber*/
11655 ; /*clobber*/
11656 ; /*clobber*/
11657 ; /*clobber*/
11660 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11664 abuf->written = written;
11665 return vpc;
11666 #undef FLD
11669 /* tge: tge$pack $ICCi_2,$GRi,$GRj */
11671 static SEM_PC
11672 SEM_FN_NAME (frvbf,tge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11674 #define FLD(f) abuf->fields.sfmt_teq.f
11675 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11676 int UNUSED written = 0;
11677 IADDR UNUSED pc = abuf->addr;
11678 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11680 if (NOTBI (XORBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1))))) {
11682 ; /*clobber*/
11683 ; /*clobber*/
11684 ; /*clobber*/
11685 ; /*clobber*/
11686 if (NEBI (CPU (h_psr_esr), 0)) {
11688 ; /*clobber*/
11689 ; /*clobber*/
11690 ; /*clobber*/
11691 ; /*clobber*/
11694 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11698 abuf->written = written;
11699 return vpc;
11700 #undef FLD
11703 /* tls: tls$pack $ICCi_2,$GRi,$GRj */
11705 static SEM_PC
11706 SEM_FN_NAME (frvbf,tls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11708 #define FLD(f) abuf->fields.sfmt_teq.f
11709 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11710 int UNUSED written = 0;
11711 IADDR UNUSED pc = abuf->addr;
11712 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11714 if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
11716 ; /*clobber*/
11717 ; /*clobber*/
11718 ; /*clobber*/
11719 ; /*clobber*/
11720 if (NEBI (CPU (h_psr_esr), 0)) {
11722 ; /*clobber*/
11723 ; /*clobber*/
11724 ; /*clobber*/
11725 ; /*clobber*/
11728 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11732 abuf->written = written;
11733 return vpc;
11734 #undef FLD
11737 /* thi: thi$pack $ICCi_2,$GRi,$GRj */
11739 static SEM_PC
11740 SEM_FN_NAME (frvbf,thi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11742 #define FLD(f) abuf->fields.sfmt_teq.f
11743 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11744 int UNUSED written = 0;
11745 IADDR UNUSED pc = abuf->addr;
11746 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11748 if (NOTBI (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))))) {
11750 ; /*clobber*/
11751 ; /*clobber*/
11752 ; /*clobber*/
11753 ; /*clobber*/
11754 if (NEBI (CPU (h_psr_esr), 0)) {
11756 ; /*clobber*/
11757 ; /*clobber*/
11758 ; /*clobber*/
11759 ; /*clobber*/
11762 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11766 abuf->written = written;
11767 return vpc;
11768 #undef FLD
11771 /* tc: tc$pack $ICCi_2,$GRi,$GRj */
11773 static SEM_PC
11774 SEM_FN_NAME (frvbf,tc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11776 #define FLD(f) abuf->fields.sfmt_teq.f
11777 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11778 int UNUSED written = 0;
11779 IADDR UNUSED pc = abuf->addr;
11780 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11782 if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1))) {
11784 ; /*clobber*/
11785 ; /*clobber*/
11786 ; /*clobber*/
11787 ; /*clobber*/
11788 if (NEBI (CPU (h_psr_esr), 0)) {
11790 ; /*clobber*/
11791 ; /*clobber*/
11792 ; /*clobber*/
11793 ; /*clobber*/
11796 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11800 abuf->written = written;
11801 return vpc;
11802 #undef FLD
11805 /* tnc: tnc$pack $ICCi_2,$GRi,$GRj */
11807 static SEM_PC
11808 SEM_FN_NAME (frvbf,tnc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11810 #define FLD(f) abuf->fields.sfmt_teq.f
11811 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11812 int UNUSED written = 0;
11813 IADDR UNUSED pc = abuf->addr;
11814 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11816 if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)))) {
11818 ; /*clobber*/
11819 ; /*clobber*/
11820 ; /*clobber*/
11821 ; /*clobber*/
11822 if (NEBI (CPU (h_psr_esr), 0)) {
11824 ; /*clobber*/
11825 ; /*clobber*/
11826 ; /*clobber*/
11827 ; /*clobber*/
11830 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11834 abuf->written = written;
11835 return vpc;
11836 #undef FLD
11839 /* tn: tn$pack $ICCi_2,$GRi,$GRj */
11841 static SEM_PC
11842 SEM_FN_NAME (frvbf,tn) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11844 #define FLD(f) abuf->fields.sfmt_teq.f
11845 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11846 int UNUSED written = 0;
11847 IADDR UNUSED pc = abuf->addr;
11848 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11850 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3))) {
11852 ; /*clobber*/
11853 ; /*clobber*/
11854 ; /*clobber*/
11855 ; /*clobber*/
11856 if (NEBI (CPU (h_psr_esr), 0)) {
11858 ; /*clobber*/
11859 ; /*clobber*/
11860 ; /*clobber*/
11861 ; /*clobber*/
11864 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11868 abuf->written = written;
11869 return vpc;
11870 #undef FLD
11873 /* tp: tp$pack $ICCi_2,$GRi,$GRj */
11875 static SEM_PC
11876 SEM_FN_NAME (frvbf,tp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11878 #define FLD(f) abuf->fields.sfmt_teq.f
11879 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11880 int UNUSED written = 0;
11881 IADDR UNUSED pc = abuf->addr;
11882 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11884 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)))) {
11886 ; /*clobber*/
11887 ; /*clobber*/
11888 ; /*clobber*/
11889 ; /*clobber*/
11890 if (NEBI (CPU (h_psr_esr), 0)) {
11892 ; /*clobber*/
11893 ; /*clobber*/
11894 ; /*clobber*/
11895 ; /*clobber*/
11898 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11902 abuf->written = written;
11903 return vpc;
11904 #undef FLD
11907 /* tv: tv$pack $ICCi_2,$GRi,$GRj */
11909 static SEM_PC
11910 SEM_FN_NAME (frvbf,tv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11912 #define FLD(f) abuf->fields.sfmt_teq.f
11913 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11914 int UNUSED written = 0;
11915 IADDR UNUSED pc = abuf->addr;
11916 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11918 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1))) {
11920 ; /*clobber*/
11921 ; /*clobber*/
11922 ; /*clobber*/
11923 ; /*clobber*/
11924 if (NEBI (CPU (h_psr_esr), 0)) {
11926 ; /*clobber*/
11927 ; /*clobber*/
11928 ; /*clobber*/
11929 ; /*clobber*/
11932 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11936 abuf->written = written;
11937 return vpc;
11938 #undef FLD
11941 /* tnv: tnv$pack $ICCi_2,$GRi,$GRj */
11943 static SEM_PC
11944 SEM_FN_NAME (frvbf,tnv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11946 #define FLD(f) abuf->fields.sfmt_teq.f
11947 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11948 int UNUSED written = 0;
11949 IADDR UNUSED pc = abuf->addr;
11950 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11952 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1)))) {
11954 ; /*clobber*/
11955 ; /*clobber*/
11956 ; /*clobber*/
11957 ; /*clobber*/
11958 if (NEBI (CPU (h_psr_esr), 0)) {
11960 ; /*clobber*/
11961 ; /*clobber*/
11962 ; /*clobber*/
11963 ; /*clobber*/
11966 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
11970 abuf->written = written;
11971 return vpc;
11972 #undef FLD
11975 /* ftra: ftra$pack $GRi,$GRj */
11977 static SEM_PC
11978 SEM_FN_NAME (frvbf,ftra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
11980 #define FLD(f) abuf->fields.sfmt_ftne.f
11981 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
11982 int UNUSED written = 0;
11983 IADDR UNUSED pc = abuf->addr;
11984 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
11987 ; /*clobber*/
11988 ; /*clobber*/
11989 ; /*clobber*/
11990 ; /*clobber*/
11991 if (NEBI (CPU (h_psr_esr), 0)) {
11993 ; /*clobber*/
11994 ; /*clobber*/
11995 ; /*clobber*/
11996 ; /*clobber*/
11999 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12002 abuf->written = written;
12003 return vpc;
12004 #undef FLD
12007 /* ftno: ftno$pack */
12009 static SEM_PC
12010 SEM_FN_NAME (frvbf,ftno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12012 #define FLD(f) abuf->fields.sfmt_empty.f
12013 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12014 int UNUSED written = 0;
12015 IADDR UNUSED pc = abuf->addr;
12016 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12018 ((void) 0); /*nop*/
12020 return vpc;
12021 #undef FLD
12024 /* ftne: ftne$pack $FCCi_2,$GRi,$GRj */
12026 static SEM_PC
12027 SEM_FN_NAME (frvbf,ftne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12029 #define FLD(f) abuf->fields.sfmt_ftne.f
12030 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12031 int UNUSED written = 0;
12032 IADDR UNUSED pc = abuf->addr;
12033 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12035 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))))) {
12037 ; /*clobber*/
12038 ; /*clobber*/
12039 ; /*clobber*/
12040 ; /*clobber*/
12041 if (NEBI (CPU (h_psr_esr), 0)) {
12043 ; /*clobber*/
12044 ; /*clobber*/
12045 ; /*clobber*/
12046 ; /*clobber*/
12049 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12053 abuf->written = written;
12054 return vpc;
12055 #undef FLD
12058 /* fteq: fteq$pack $FCCi_2,$GRi,$GRj */
12060 static SEM_PC
12061 SEM_FN_NAME (frvbf,fteq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12063 #define FLD(f) abuf->fields.sfmt_ftne.f
12064 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12065 int UNUSED written = 0;
12066 IADDR UNUSED pc = abuf->addr;
12067 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12069 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3))) {
12071 ; /*clobber*/
12072 ; /*clobber*/
12073 ; /*clobber*/
12074 ; /*clobber*/
12075 if (NEBI (CPU (h_psr_esr), 0)) {
12077 ; /*clobber*/
12078 ; /*clobber*/
12079 ; /*clobber*/
12080 ; /*clobber*/
12083 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12087 abuf->written = written;
12088 return vpc;
12089 #undef FLD
12092 /* ftlg: ftlg$pack $FCCi_2,$GRi,$GRj */
12094 static SEM_PC
12095 SEM_FN_NAME (frvbf,ftlg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12097 #define FLD(f) abuf->fields.sfmt_ftne.f
12098 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12099 int UNUSED written = 0;
12100 IADDR UNUSED pc = abuf->addr;
12101 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12103 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)))) {
12105 ; /*clobber*/
12106 ; /*clobber*/
12107 ; /*clobber*/
12108 ; /*clobber*/
12109 if (NEBI (CPU (h_psr_esr), 0)) {
12111 ; /*clobber*/
12112 ; /*clobber*/
12113 ; /*clobber*/
12114 ; /*clobber*/
12117 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12121 abuf->written = written;
12122 return vpc;
12123 #undef FLD
12126 /* ftue: ftue$pack $FCCi_2,$GRi,$GRj */
12128 static SEM_PC
12129 SEM_FN_NAME (frvbf,ftue) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12131 #define FLD(f) abuf->fields.sfmt_ftne.f
12132 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12133 int UNUSED written = 0;
12134 IADDR UNUSED pc = abuf->addr;
12135 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12137 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
12139 ; /*clobber*/
12140 ; /*clobber*/
12141 ; /*clobber*/
12142 ; /*clobber*/
12143 if (NEBI (CPU (h_psr_esr), 0)) {
12145 ; /*clobber*/
12146 ; /*clobber*/
12147 ; /*clobber*/
12148 ; /*clobber*/
12151 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12155 abuf->written = written;
12156 return vpc;
12157 #undef FLD
12160 /* ftul: ftul$pack $FCCi_2,$GRi,$GRj */
12162 static SEM_PC
12163 SEM_FN_NAME (frvbf,ftul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12165 #define FLD(f) abuf->fields.sfmt_ftne.f
12166 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12167 int UNUSED written = 0;
12168 IADDR UNUSED pc = abuf->addr;
12169 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12171 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
12173 ; /*clobber*/
12174 ; /*clobber*/
12175 ; /*clobber*/
12176 ; /*clobber*/
12177 if (NEBI (CPU (h_psr_esr), 0)) {
12179 ; /*clobber*/
12180 ; /*clobber*/
12181 ; /*clobber*/
12182 ; /*clobber*/
12185 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12189 abuf->written = written;
12190 return vpc;
12191 #undef FLD
12194 /* ftge: ftge$pack $FCCi_2,$GRi,$GRj */
12196 static SEM_PC
12197 SEM_FN_NAME (frvbf,ftge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12199 #define FLD(f) abuf->fields.sfmt_ftne.f
12200 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12201 int UNUSED written = 0;
12202 IADDR UNUSED pc = abuf->addr;
12203 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12205 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)))) {
12207 ; /*clobber*/
12208 ; /*clobber*/
12209 ; /*clobber*/
12210 ; /*clobber*/
12211 if (NEBI (CPU (h_psr_esr), 0)) {
12213 ; /*clobber*/
12214 ; /*clobber*/
12215 ; /*clobber*/
12216 ; /*clobber*/
12219 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12223 abuf->written = written;
12224 return vpc;
12225 #undef FLD
12228 /* ftlt: ftlt$pack $FCCi_2,$GRi,$GRj */
12230 static SEM_PC
12231 SEM_FN_NAME (frvbf,ftlt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12233 #define FLD(f) abuf->fields.sfmt_ftne.f
12234 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12235 int UNUSED written = 0;
12236 IADDR UNUSED pc = abuf->addr;
12237 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12239 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2))) {
12241 ; /*clobber*/
12242 ; /*clobber*/
12243 ; /*clobber*/
12244 ; /*clobber*/
12245 if (NEBI (CPU (h_psr_esr), 0)) {
12247 ; /*clobber*/
12248 ; /*clobber*/
12249 ; /*clobber*/
12250 ; /*clobber*/
12253 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12257 abuf->written = written;
12258 return vpc;
12259 #undef FLD
12262 /* ftuge: ftuge$pack $FCCi_2,$GRi,$GRj */
12264 static SEM_PC
12265 SEM_FN_NAME (frvbf,ftuge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12267 #define FLD(f) abuf->fields.sfmt_ftne.f
12268 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12269 int UNUSED written = 0;
12270 IADDR UNUSED pc = abuf->addr;
12271 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12273 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))))) {
12275 ; /*clobber*/
12276 ; /*clobber*/
12277 ; /*clobber*/
12278 ; /*clobber*/
12279 if (NEBI (CPU (h_psr_esr), 0)) {
12281 ; /*clobber*/
12282 ; /*clobber*/
12283 ; /*clobber*/
12284 ; /*clobber*/
12287 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12291 abuf->written = written;
12292 return vpc;
12293 #undef FLD
12296 /* ftug: ftug$pack $FCCi_2,$GRi,$GRj */
12298 static SEM_PC
12299 SEM_FN_NAME (frvbf,ftug) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12301 #define FLD(f) abuf->fields.sfmt_ftne.f
12302 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12303 int UNUSED written = 0;
12304 IADDR UNUSED pc = abuf->addr;
12305 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12307 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
12309 ; /*clobber*/
12310 ; /*clobber*/
12311 ; /*clobber*/
12312 ; /*clobber*/
12313 if (NEBI (CPU (h_psr_esr), 0)) {
12315 ; /*clobber*/
12316 ; /*clobber*/
12317 ; /*clobber*/
12318 ; /*clobber*/
12321 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12325 abuf->written = written;
12326 return vpc;
12327 #undef FLD
12330 /* ftle: ftle$pack $FCCi_2,$GRi,$GRj */
12332 static SEM_PC
12333 SEM_FN_NAME (frvbf,ftle) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12335 #define FLD(f) abuf->fields.sfmt_ftne.f
12336 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12337 int UNUSED written = 0;
12338 IADDR UNUSED pc = abuf->addr;
12339 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12341 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)))) {
12343 ; /*clobber*/
12344 ; /*clobber*/
12345 ; /*clobber*/
12346 ; /*clobber*/
12347 if (NEBI (CPU (h_psr_esr), 0)) {
12349 ; /*clobber*/
12350 ; /*clobber*/
12351 ; /*clobber*/
12352 ; /*clobber*/
12355 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12359 abuf->written = written;
12360 return vpc;
12361 #undef FLD
12364 /* ftgt: ftgt$pack $FCCi_2,$GRi,$GRj */
12366 static SEM_PC
12367 SEM_FN_NAME (frvbf,ftgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12369 #define FLD(f) abuf->fields.sfmt_ftne.f
12370 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12371 int UNUSED written = 0;
12372 IADDR UNUSED pc = abuf->addr;
12373 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12375 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1))) {
12377 ; /*clobber*/
12378 ; /*clobber*/
12379 ; /*clobber*/
12380 ; /*clobber*/
12381 if (NEBI (CPU (h_psr_esr), 0)) {
12383 ; /*clobber*/
12384 ; /*clobber*/
12385 ; /*clobber*/
12386 ; /*clobber*/
12389 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12393 abuf->written = written;
12394 return vpc;
12395 #undef FLD
12398 /* ftule: ftule$pack $FCCi_2,$GRi,$GRj */
12400 static SEM_PC
12401 SEM_FN_NAME (frvbf,ftule) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12403 #define FLD(f) abuf->fields.sfmt_ftne.f
12404 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12405 int UNUSED written = 0;
12406 IADDR UNUSED pc = abuf->addr;
12407 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12409 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))))) {
12411 ; /*clobber*/
12412 ; /*clobber*/
12413 ; /*clobber*/
12414 ; /*clobber*/
12415 if (NEBI (CPU (h_psr_esr), 0)) {
12417 ; /*clobber*/
12418 ; /*clobber*/
12419 ; /*clobber*/
12420 ; /*clobber*/
12423 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12427 abuf->written = written;
12428 return vpc;
12429 #undef FLD
12432 /* ftu: ftu$pack $FCCi_2,$GRi,$GRj */
12434 static SEM_PC
12435 SEM_FN_NAME (frvbf,ftu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12437 #define FLD(f) abuf->fields.sfmt_ftne.f
12438 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12439 int UNUSED written = 0;
12440 IADDR UNUSED pc = abuf->addr;
12441 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12443 if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))) {
12445 ; /*clobber*/
12446 ; /*clobber*/
12447 ; /*clobber*/
12448 ; /*clobber*/
12449 if (NEBI (CPU (h_psr_esr), 0)) {
12451 ; /*clobber*/
12452 ; /*clobber*/
12453 ; /*clobber*/
12454 ; /*clobber*/
12457 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12461 abuf->written = written;
12462 return vpc;
12463 #undef FLD
12466 /* fto: fto$pack $FCCi_2,$GRi,$GRj */
12468 static SEM_PC
12469 SEM_FN_NAME (frvbf,fto) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12471 #define FLD(f) abuf->fields.sfmt_ftne.f
12472 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12473 int UNUSED written = 0;
12474 IADDR UNUSED pc = abuf->addr;
12475 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12477 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1))))) {
12479 ; /*clobber*/
12480 ; /*clobber*/
12481 ; /*clobber*/
12482 ; /*clobber*/
12483 if (NEBI (CPU (h_psr_esr), 0)) {
12485 ; /*clobber*/
12486 ; /*clobber*/
12487 ; /*clobber*/
12488 ; /*clobber*/
12491 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)));
12495 abuf->written = written;
12496 return vpc;
12497 #undef FLD
12500 /* tira: tira$pack $GRi,$s12 */
12502 static SEM_PC
12503 SEM_FN_NAME (frvbf,tira) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12505 #define FLD(f) abuf->fields.sfmt_ftine.f
12506 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12507 int UNUSED written = 0;
12508 IADDR UNUSED pc = abuf->addr;
12509 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12512 ; /*clobber*/
12513 ; /*clobber*/
12514 ; /*clobber*/
12515 ; /*clobber*/
12516 if (NEBI (CPU (h_psr_esr), 0)) {
12518 ; /*clobber*/
12519 ; /*clobber*/
12520 ; /*clobber*/
12521 ; /*clobber*/
12524 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12527 abuf->written = written;
12528 return vpc;
12529 #undef FLD
12532 /* tino: tino$pack */
12534 static SEM_PC
12535 SEM_FN_NAME (frvbf,tino) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12537 #define FLD(f) abuf->fields.sfmt_empty.f
12538 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12539 int UNUSED written = 0;
12540 IADDR UNUSED pc = abuf->addr;
12541 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12543 ((void) 0); /*nop*/
12545 return vpc;
12546 #undef FLD
12549 /* tieq: tieq$pack $ICCi_2,$GRi,$s12 */
12551 static SEM_PC
12552 SEM_FN_NAME (frvbf,tieq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12554 #define FLD(f) abuf->fields.sfmt_tieq.f
12555 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12556 int UNUSED written = 0;
12557 IADDR UNUSED pc = abuf->addr;
12558 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12560 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))) {
12562 ; /*clobber*/
12563 ; /*clobber*/
12564 ; /*clobber*/
12565 ; /*clobber*/
12566 if (NEBI (CPU (h_psr_esr), 0)) {
12568 ; /*clobber*/
12569 ; /*clobber*/
12570 ; /*clobber*/
12571 ; /*clobber*/
12574 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12578 abuf->written = written;
12579 return vpc;
12580 #undef FLD
12583 /* tine: tine$pack $ICCi_2,$GRi,$s12 */
12585 static SEM_PC
12586 SEM_FN_NAME (frvbf,tine) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12588 #define FLD(f) abuf->fields.sfmt_tieq.f
12589 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12590 int UNUSED written = 0;
12591 IADDR UNUSED pc = abuf->addr;
12592 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12594 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
12596 ; /*clobber*/
12597 ; /*clobber*/
12598 ; /*clobber*/
12599 ; /*clobber*/
12600 if (NEBI (CPU (h_psr_esr), 0)) {
12602 ; /*clobber*/
12603 ; /*clobber*/
12604 ; /*clobber*/
12605 ; /*clobber*/
12608 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12612 abuf->written = written;
12613 return vpc;
12614 #undef FLD
12617 /* tile: tile$pack $ICCi_2,$GRi,$s12 */
12619 static SEM_PC
12620 SEM_FN_NAME (frvbf,tile) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12622 #define FLD(f) abuf->fields.sfmt_tieq.f
12623 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12624 int UNUSED written = 0;
12625 IADDR UNUSED pc = abuf->addr;
12626 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12628 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)), XORBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1))))) {
12630 ; /*clobber*/
12631 ; /*clobber*/
12632 ; /*clobber*/
12633 ; /*clobber*/
12634 if (NEBI (CPU (h_psr_esr), 0)) {
12636 ; /*clobber*/
12637 ; /*clobber*/
12638 ; /*clobber*/
12639 ; /*clobber*/
12642 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12646 abuf->written = written;
12647 return vpc;
12648 #undef FLD
12651 /* tigt: tigt$pack $ICCi_2,$GRi,$s12 */
12653 static SEM_PC
12654 SEM_FN_NAME (frvbf,tigt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12656 #define FLD(f) abuf->fields.sfmt_tieq.f
12657 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12658 int UNUSED written = 0;
12659 IADDR UNUSED pc = abuf->addr;
12660 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12662 if (NOTBI (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)), XORBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1)))))) {
12664 ; /*clobber*/
12665 ; /*clobber*/
12666 ; /*clobber*/
12667 ; /*clobber*/
12668 if (NEBI (CPU (h_psr_esr), 0)) {
12670 ; /*clobber*/
12671 ; /*clobber*/
12672 ; /*clobber*/
12673 ; /*clobber*/
12676 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12680 abuf->written = written;
12681 return vpc;
12682 #undef FLD
12685 /* tilt: tilt$pack $ICCi_2,$GRi,$s12 */
12687 static SEM_PC
12688 SEM_FN_NAME (frvbf,tilt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12690 #define FLD(f) abuf->fields.sfmt_tieq.f
12691 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12692 int UNUSED written = 0;
12693 IADDR UNUSED pc = abuf->addr;
12694 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12696 if (XORBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1)))) {
12698 ; /*clobber*/
12699 ; /*clobber*/
12700 ; /*clobber*/
12701 ; /*clobber*/
12702 if (NEBI (CPU (h_psr_esr), 0)) {
12704 ; /*clobber*/
12705 ; /*clobber*/
12706 ; /*clobber*/
12707 ; /*clobber*/
12710 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12714 abuf->written = written;
12715 return vpc;
12716 #undef FLD
12719 /* tige: tige$pack $ICCi_2,$GRi,$s12 */
12721 static SEM_PC
12722 SEM_FN_NAME (frvbf,tige) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12724 #define FLD(f) abuf->fields.sfmt_tieq.f
12725 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12726 int UNUSED written = 0;
12727 IADDR UNUSED pc = abuf->addr;
12728 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12730 if (NOTBI (XORBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1))))) {
12732 ; /*clobber*/
12733 ; /*clobber*/
12734 ; /*clobber*/
12735 ; /*clobber*/
12736 if (NEBI (CPU (h_psr_esr), 0)) {
12738 ; /*clobber*/
12739 ; /*clobber*/
12740 ; /*clobber*/
12741 ; /*clobber*/
12744 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12748 abuf->written = written;
12749 return vpc;
12750 #undef FLD
12753 /* tils: tils$pack $ICCi_2,$GRi,$s12 */
12755 static SEM_PC
12756 SEM_FN_NAME (frvbf,tils) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12758 #define FLD(f) abuf->fields.sfmt_tieq.f
12759 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12760 int UNUSED written = 0;
12761 IADDR UNUSED pc = abuf->addr;
12762 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12764 if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2)))) {
12766 ; /*clobber*/
12767 ; /*clobber*/
12768 ; /*clobber*/
12769 ; /*clobber*/
12770 if (NEBI (CPU (h_psr_esr), 0)) {
12772 ; /*clobber*/
12773 ; /*clobber*/
12774 ; /*clobber*/
12775 ; /*clobber*/
12778 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12782 abuf->written = written;
12783 return vpc;
12784 #undef FLD
12787 /* tihi: tihi$pack $ICCi_2,$GRi,$s12 */
12789 static SEM_PC
12790 SEM_FN_NAME (frvbf,tihi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12792 #define FLD(f) abuf->fields.sfmt_tieq.f
12793 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12794 int UNUSED written = 0;
12795 IADDR UNUSED pc = abuf->addr;
12796 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12798 if (NOTBI (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 4), 2))))) {
12800 ; /*clobber*/
12801 ; /*clobber*/
12802 ; /*clobber*/
12803 ; /*clobber*/
12804 if (NEBI (CPU (h_psr_esr), 0)) {
12806 ; /*clobber*/
12807 ; /*clobber*/
12808 ; /*clobber*/
12809 ; /*clobber*/
12812 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12816 abuf->written = written;
12817 return vpc;
12818 #undef FLD
12821 /* tic: tic$pack $ICCi_2,$GRi,$s12 */
12823 static SEM_PC
12824 SEM_FN_NAME (frvbf,tic) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12826 #define FLD(f) abuf->fields.sfmt_tieq.f
12827 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12828 int UNUSED written = 0;
12829 IADDR UNUSED pc = abuf->addr;
12830 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12832 if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1))) {
12834 ; /*clobber*/
12835 ; /*clobber*/
12836 ; /*clobber*/
12837 ; /*clobber*/
12838 if (NEBI (CPU (h_psr_esr), 0)) {
12840 ; /*clobber*/
12841 ; /*clobber*/
12842 ; /*clobber*/
12843 ; /*clobber*/
12846 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12850 abuf->written = written;
12851 return vpc;
12852 #undef FLD
12855 /* tinc: tinc$pack $ICCi_2,$GRi,$s12 */
12857 static SEM_PC
12858 SEM_FN_NAME (frvbf,tinc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12860 #define FLD(f) abuf->fields.sfmt_tieq.f
12861 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12862 int UNUSED written = 0;
12863 IADDR UNUSED pc = abuf->addr;
12864 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12866 if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 1)))) {
12868 ; /*clobber*/
12869 ; /*clobber*/
12870 ; /*clobber*/
12871 ; /*clobber*/
12872 if (NEBI (CPU (h_psr_esr), 0)) {
12874 ; /*clobber*/
12875 ; /*clobber*/
12876 ; /*clobber*/
12877 ; /*clobber*/
12880 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12884 abuf->written = written;
12885 return vpc;
12886 #undef FLD
12889 /* tin: tin$pack $ICCi_2,$GRi,$s12 */
12891 static SEM_PC
12892 SEM_FN_NAME (frvbf,tin) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12894 #define FLD(f) abuf->fields.sfmt_tieq.f
12895 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12896 int UNUSED written = 0;
12897 IADDR UNUSED pc = abuf->addr;
12898 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12900 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3))) {
12902 ; /*clobber*/
12903 ; /*clobber*/
12904 ; /*clobber*/
12905 ; /*clobber*/
12906 if (NEBI (CPU (h_psr_esr), 0)) {
12908 ; /*clobber*/
12909 ; /*clobber*/
12910 ; /*clobber*/
12911 ; /*clobber*/
12914 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12918 abuf->written = written;
12919 return vpc;
12920 #undef FLD
12923 /* tip: tip$pack $ICCi_2,$GRi,$s12 */
12925 static SEM_PC
12926 SEM_FN_NAME (frvbf,tip) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12928 #define FLD(f) abuf->fields.sfmt_tieq.f
12929 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12930 int UNUSED written = 0;
12931 IADDR UNUSED pc = abuf->addr;
12932 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12934 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 8), 3)))) {
12936 ; /*clobber*/
12937 ; /*clobber*/
12938 ; /*clobber*/
12939 ; /*clobber*/
12940 if (NEBI (CPU (h_psr_esr), 0)) {
12942 ; /*clobber*/
12943 ; /*clobber*/
12944 ; /*clobber*/
12945 ; /*clobber*/
12948 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12952 abuf->written = written;
12953 return vpc;
12954 #undef FLD
12957 /* tiv: tiv$pack $ICCi_2,$GRi,$s12 */
12959 static SEM_PC
12960 SEM_FN_NAME (frvbf,tiv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12962 #define FLD(f) abuf->fields.sfmt_tieq.f
12963 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12964 int UNUSED written = 0;
12965 IADDR UNUSED pc = abuf->addr;
12966 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
12968 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1))) {
12970 ; /*clobber*/
12971 ; /*clobber*/
12972 ; /*clobber*/
12973 ; /*clobber*/
12974 if (NEBI (CPU (h_psr_esr), 0)) {
12976 ; /*clobber*/
12977 ; /*clobber*/
12978 ; /*clobber*/
12979 ; /*clobber*/
12982 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
12986 abuf->written = written;
12987 return vpc;
12988 #undef FLD
12991 /* tinv: tinv$pack $ICCi_2,$GRi,$s12 */
12993 static SEM_PC
12994 SEM_FN_NAME (frvbf,tinv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
12996 #define FLD(f) abuf->fields.sfmt_tieq.f
12997 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
12998 int UNUSED written = 0;
12999 IADDR UNUSED pc = abuf->addr;
13000 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13002 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_2)]), 2), 1)))) {
13004 ; /*clobber*/
13005 ; /*clobber*/
13006 ; /*clobber*/
13007 ; /*clobber*/
13008 if (NEBI (CPU (h_psr_esr), 0)) {
13010 ; /*clobber*/
13011 ; /*clobber*/
13012 ; /*clobber*/
13013 ; /*clobber*/
13016 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13020 abuf->written = written;
13021 return vpc;
13022 #undef FLD
13025 /* ftira: ftira$pack $GRi,$s12 */
13027 static SEM_PC
13028 SEM_FN_NAME (frvbf,ftira) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13030 #define FLD(f) abuf->fields.sfmt_ftine.f
13031 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13032 int UNUSED written = 0;
13033 IADDR UNUSED pc = abuf->addr;
13034 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13037 ; /*clobber*/
13038 ; /*clobber*/
13039 ; /*clobber*/
13040 ; /*clobber*/
13041 if (NEBI (CPU (h_psr_esr), 0)) {
13043 ; /*clobber*/
13044 ; /*clobber*/
13045 ; /*clobber*/
13046 ; /*clobber*/
13049 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13052 abuf->written = written;
13053 return vpc;
13054 #undef FLD
13057 /* ftino: ftino$pack */
13059 static SEM_PC
13060 SEM_FN_NAME (frvbf,ftino) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13062 #define FLD(f) abuf->fields.sfmt_empty.f
13063 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13064 int UNUSED written = 0;
13065 IADDR UNUSED pc = abuf->addr;
13066 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13068 ((void) 0); /*nop*/
13070 return vpc;
13071 #undef FLD
13074 /* ftine: ftine$pack $FCCi_2,$GRi,$s12 */
13076 static SEM_PC
13077 SEM_FN_NAME (frvbf,ftine) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13079 #define FLD(f) abuf->fields.sfmt_ftine.f
13080 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13081 int UNUSED written = 0;
13082 IADDR UNUSED pc = abuf->addr;
13083 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13085 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))))) {
13087 ; /*clobber*/
13088 ; /*clobber*/
13089 ; /*clobber*/
13090 ; /*clobber*/
13091 if (NEBI (CPU (h_psr_esr), 0)) {
13093 ; /*clobber*/
13094 ; /*clobber*/
13095 ; /*clobber*/
13096 ; /*clobber*/
13099 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13103 abuf->written = written;
13104 return vpc;
13105 #undef FLD
13108 /* ftieq: ftieq$pack $FCCi_2,$GRi,$s12 */
13110 static SEM_PC
13111 SEM_FN_NAME (frvbf,ftieq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13113 #define FLD(f) abuf->fields.sfmt_ftine.f
13114 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13115 int UNUSED written = 0;
13116 IADDR UNUSED pc = abuf->addr;
13117 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13119 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3))) {
13121 ; /*clobber*/
13122 ; /*clobber*/
13123 ; /*clobber*/
13124 ; /*clobber*/
13125 if (NEBI (CPU (h_psr_esr), 0)) {
13127 ; /*clobber*/
13128 ; /*clobber*/
13129 ; /*clobber*/
13130 ; /*clobber*/
13133 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13137 abuf->written = written;
13138 return vpc;
13139 #undef FLD
13142 /* ftilg: ftilg$pack $FCCi_2,$GRi,$s12 */
13144 static SEM_PC
13145 SEM_FN_NAME (frvbf,ftilg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13147 #define FLD(f) abuf->fields.sfmt_ftine.f
13148 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13149 int UNUSED written = 0;
13150 IADDR UNUSED pc = abuf->addr;
13151 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13153 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)))) {
13155 ; /*clobber*/
13156 ; /*clobber*/
13157 ; /*clobber*/
13158 ; /*clobber*/
13159 if (NEBI (CPU (h_psr_esr), 0)) {
13161 ; /*clobber*/
13162 ; /*clobber*/
13163 ; /*clobber*/
13164 ; /*clobber*/
13167 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13171 abuf->written = written;
13172 return vpc;
13173 #undef FLD
13176 /* ftiue: ftiue$pack $FCCi_2,$GRi,$s12 */
13178 static SEM_PC
13179 SEM_FN_NAME (frvbf,ftiue) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13181 #define FLD(f) abuf->fields.sfmt_ftine.f
13182 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13183 int UNUSED written = 0;
13184 IADDR UNUSED pc = abuf->addr;
13185 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13187 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
13189 ; /*clobber*/
13190 ; /*clobber*/
13191 ; /*clobber*/
13192 ; /*clobber*/
13193 if (NEBI (CPU (h_psr_esr), 0)) {
13195 ; /*clobber*/
13196 ; /*clobber*/
13197 ; /*clobber*/
13198 ; /*clobber*/
13201 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13205 abuf->written = written;
13206 return vpc;
13207 #undef FLD
13210 /* ftiul: ftiul$pack $FCCi_2,$GRi,$s12 */
13212 static SEM_PC
13213 SEM_FN_NAME (frvbf,ftiul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13215 #define FLD(f) abuf->fields.sfmt_ftine.f
13216 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13217 int UNUSED written = 0;
13218 IADDR UNUSED pc = abuf->addr;
13219 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13221 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
13223 ; /*clobber*/
13224 ; /*clobber*/
13225 ; /*clobber*/
13226 ; /*clobber*/
13227 if (NEBI (CPU (h_psr_esr), 0)) {
13229 ; /*clobber*/
13230 ; /*clobber*/
13231 ; /*clobber*/
13232 ; /*clobber*/
13235 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13239 abuf->written = written;
13240 return vpc;
13241 #undef FLD
13244 /* ftige: ftige$pack $FCCi_2,$GRi,$s12 */
13246 static SEM_PC
13247 SEM_FN_NAME (frvbf,ftige) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13249 #define FLD(f) abuf->fields.sfmt_ftine.f
13250 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13251 int UNUSED written = 0;
13252 IADDR UNUSED pc = abuf->addr;
13253 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13255 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)))) {
13257 ; /*clobber*/
13258 ; /*clobber*/
13259 ; /*clobber*/
13260 ; /*clobber*/
13261 if (NEBI (CPU (h_psr_esr), 0)) {
13263 ; /*clobber*/
13264 ; /*clobber*/
13265 ; /*clobber*/
13266 ; /*clobber*/
13269 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13273 abuf->written = written;
13274 return vpc;
13275 #undef FLD
13278 /* ftilt: ftilt$pack $FCCi_2,$GRi,$s12 */
13280 static SEM_PC
13281 SEM_FN_NAME (frvbf,ftilt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13283 #define FLD(f) abuf->fields.sfmt_ftine.f
13284 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13285 int UNUSED written = 0;
13286 IADDR UNUSED pc = abuf->addr;
13287 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13289 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2))) {
13291 ; /*clobber*/
13292 ; /*clobber*/
13293 ; /*clobber*/
13294 ; /*clobber*/
13295 if (NEBI (CPU (h_psr_esr), 0)) {
13297 ; /*clobber*/
13298 ; /*clobber*/
13299 ; /*clobber*/
13300 ; /*clobber*/
13303 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13307 abuf->written = written;
13308 return vpc;
13309 #undef FLD
13312 /* ftiuge: ftiuge$pack $FCCi_2,$GRi,$s12 */
13314 static SEM_PC
13315 SEM_FN_NAME (frvbf,ftiuge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13317 #define FLD(f) abuf->fields.sfmt_ftine.f
13318 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13319 int UNUSED written = 0;
13320 IADDR UNUSED pc = abuf->addr;
13321 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13323 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))))) {
13325 ; /*clobber*/
13326 ; /*clobber*/
13327 ; /*clobber*/
13328 ; /*clobber*/
13329 if (NEBI (CPU (h_psr_esr), 0)) {
13331 ; /*clobber*/
13332 ; /*clobber*/
13333 ; /*clobber*/
13334 ; /*clobber*/
13337 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13341 abuf->written = written;
13342 return vpc;
13343 #undef FLD
13346 /* ftiug: ftiug$pack $FCCi_2,$GRi,$s12 */
13348 static SEM_PC
13349 SEM_FN_NAME (frvbf,ftiug) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13351 #define FLD(f) abuf->fields.sfmt_ftine.f
13352 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13353 int UNUSED written = 0;
13354 IADDR UNUSED pc = abuf->addr;
13355 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13357 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1)))) {
13359 ; /*clobber*/
13360 ; /*clobber*/
13361 ; /*clobber*/
13362 ; /*clobber*/
13363 if (NEBI (CPU (h_psr_esr), 0)) {
13365 ; /*clobber*/
13366 ; /*clobber*/
13367 ; /*clobber*/
13368 ; /*clobber*/
13371 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13375 abuf->written = written;
13376 return vpc;
13377 #undef FLD
13380 /* ftile: ftile$pack $FCCi_2,$GRi,$s12 */
13382 static SEM_PC
13383 SEM_FN_NAME (frvbf,ftile) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13385 #define FLD(f) abuf->fields.sfmt_ftine.f
13386 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13387 int UNUSED written = 0;
13388 IADDR UNUSED pc = abuf->addr;
13389 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13391 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)))) {
13393 ; /*clobber*/
13394 ; /*clobber*/
13395 ; /*clobber*/
13396 ; /*clobber*/
13397 if (NEBI (CPU (h_psr_esr), 0)) {
13399 ; /*clobber*/
13400 ; /*clobber*/
13401 ; /*clobber*/
13402 ; /*clobber*/
13405 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13409 abuf->written = written;
13410 return vpc;
13411 #undef FLD
13414 /* ftigt: ftigt$pack $FCCi_2,$GRi,$s12 */
13416 static SEM_PC
13417 SEM_FN_NAME (frvbf,ftigt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13419 #define FLD(f) abuf->fields.sfmt_ftine.f
13420 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13421 int UNUSED written = 0;
13422 IADDR UNUSED pc = abuf->addr;
13423 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13425 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1))) {
13427 ; /*clobber*/
13428 ; /*clobber*/
13429 ; /*clobber*/
13430 ; /*clobber*/
13431 if (NEBI (CPU (h_psr_esr), 0)) {
13433 ; /*clobber*/
13434 ; /*clobber*/
13435 ; /*clobber*/
13436 ; /*clobber*/
13439 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13443 abuf->written = written;
13444 return vpc;
13445 #undef FLD
13448 /* ftiule: ftiule$pack $FCCi_2,$GRi,$s12 */
13450 static SEM_PC
13451 SEM_FN_NAME (frvbf,ftiule) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13453 #define FLD(f) abuf->fields.sfmt_ftine.f
13454 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13455 int UNUSED written = 0;
13456 IADDR UNUSED pc = abuf->addr;
13457 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13459 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))))) {
13461 ; /*clobber*/
13462 ; /*clobber*/
13463 ; /*clobber*/
13464 ; /*clobber*/
13465 if (NEBI (CPU (h_psr_esr), 0)) {
13467 ; /*clobber*/
13468 ; /*clobber*/
13469 ; /*clobber*/
13470 ; /*clobber*/
13473 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13477 abuf->written = written;
13478 return vpc;
13479 #undef FLD
13482 /* ftiu: ftiu$pack $FCCi_2,$GRi,$s12 */
13484 static SEM_PC
13485 SEM_FN_NAME (frvbf,ftiu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13487 #define FLD(f) abuf->fields.sfmt_ftine.f
13488 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13489 int UNUSED written = 0;
13490 IADDR UNUSED pc = abuf->addr;
13491 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13493 if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 1))) {
13495 ; /*clobber*/
13496 ; /*clobber*/
13497 ; /*clobber*/
13498 ; /*clobber*/
13499 if (NEBI (CPU (h_psr_esr), 0)) {
13501 ; /*clobber*/
13502 ; /*clobber*/
13503 ; /*clobber*/
13504 ; /*clobber*/
13507 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13511 abuf->written = written;
13512 return vpc;
13513 #undef FLD
13516 /* ftio: ftio$pack $FCCi_2,$GRi,$s12 */
13518 static SEM_PC
13519 SEM_FN_NAME (frvbf,ftio) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13521 #define FLD(f) abuf->fields.sfmt_ftine.f
13522 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13523 int UNUSED written = 0;
13524 IADDR UNUSED pc = abuf->addr;
13525 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13527 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 8), 3)), ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 4), 2)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_2)]), 2), 1))))) {
13529 ; /*clobber*/
13530 ; /*clobber*/
13531 ; /*clobber*/
13532 ; /*clobber*/
13533 if (NEBI (CPU (h_psr_esr), 0)) {
13535 ; /*clobber*/
13536 ; /*clobber*/
13537 ; /*clobber*/
13538 ; /*clobber*/
13541 frv_itrap (current_cpu, pc, GET_H_GR (FLD (f_GRi)), FLD (f_d12));
13545 abuf->written = written;
13546 return vpc;
13547 #undef FLD
13550 /* break: break$pack */
13552 static SEM_PC
13553 SEM_FN_NAME (frvbf,break) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13555 #define FLD(f) abuf->fields.sfmt_break.f
13556 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13557 int UNUSED written = 0;
13558 IADDR UNUSED pc = abuf->addr;
13559 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13562 ; /*clobber*/
13563 ; /*clobber*/
13564 ; /*clobber*/
13565 ; /*clobber*/
13566 ; /*clobber*/
13567 ; /*clobber*/
13568 frv_break (current_cpu);
13571 return vpc;
13572 #undef FLD
13575 /* mtrap: mtrap$pack */
13577 static SEM_PC
13578 SEM_FN_NAME (frvbf,mtrap) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13580 #define FLD(f) abuf->fields.sfmt_empty.f
13581 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13582 int UNUSED written = 0;
13583 IADDR UNUSED pc = abuf->addr;
13584 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13586 frv_mtrap (current_cpu);
13588 return vpc;
13589 #undef FLD
13592 /* andcr: andcr$pack $CRi,$CRj,$CRk */
13594 static SEM_PC
13595 SEM_FN_NAME (frvbf,andcr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13597 #define FLD(f) abuf->fields.sfmt_andcr.f
13598 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13599 int UNUSED written = 0;
13600 IADDR UNUSED pc = abuf->addr;
13601 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13604 UQI opval = frvbf_cr_logic (current_cpu, 0, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13605 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13606 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13609 return vpc;
13610 #undef FLD
13613 /* orcr: orcr$pack $CRi,$CRj,$CRk */
13615 static SEM_PC
13616 SEM_FN_NAME (frvbf,orcr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13618 #define FLD(f) abuf->fields.sfmt_andcr.f
13619 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13620 int UNUSED written = 0;
13621 IADDR UNUSED pc = abuf->addr;
13622 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13625 UQI opval = frvbf_cr_logic (current_cpu, 1, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13626 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13627 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13630 return vpc;
13631 #undef FLD
13634 /* xorcr: xorcr$pack $CRi,$CRj,$CRk */
13636 static SEM_PC
13637 SEM_FN_NAME (frvbf,xorcr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13639 #define FLD(f) abuf->fields.sfmt_andcr.f
13640 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13641 int UNUSED written = 0;
13642 IADDR UNUSED pc = abuf->addr;
13643 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13646 UQI opval = frvbf_cr_logic (current_cpu, 2, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13647 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13648 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13651 return vpc;
13652 #undef FLD
13655 /* nandcr: nandcr$pack $CRi,$CRj,$CRk */
13657 static SEM_PC
13658 SEM_FN_NAME (frvbf,nandcr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13660 #define FLD(f) abuf->fields.sfmt_andcr.f
13661 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13662 int UNUSED written = 0;
13663 IADDR UNUSED pc = abuf->addr;
13664 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13667 UQI opval = frvbf_cr_logic (current_cpu, 3, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13668 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13669 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13672 return vpc;
13673 #undef FLD
13676 /* norcr: norcr$pack $CRi,$CRj,$CRk */
13678 static SEM_PC
13679 SEM_FN_NAME (frvbf,norcr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13681 #define FLD(f) abuf->fields.sfmt_andcr.f
13682 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13683 int UNUSED written = 0;
13684 IADDR UNUSED pc = abuf->addr;
13685 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13688 UQI opval = frvbf_cr_logic (current_cpu, 4, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13689 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13690 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13693 return vpc;
13694 #undef FLD
13697 /* andncr: andncr$pack $CRi,$CRj,$CRk */
13699 static SEM_PC
13700 SEM_FN_NAME (frvbf,andncr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13702 #define FLD(f) abuf->fields.sfmt_andcr.f
13703 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13704 int UNUSED written = 0;
13705 IADDR UNUSED pc = abuf->addr;
13706 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13709 UQI opval = frvbf_cr_logic (current_cpu, 5, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13710 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13711 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13714 return vpc;
13715 #undef FLD
13718 /* orncr: orncr$pack $CRi,$CRj,$CRk */
13720 static SEM_PC
13721 SEM_FN_NAME (frvbf,orncr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13723 #define FLD(f) abuf->fields.sfmt_andcr.f
13724 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13725 int UNUSED written = 0;
13726 IADDR UNUSED pc = abuf->addr;
13727 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13730 UQI opval = frvbf_cr_logic (current_cpu, 6, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13731 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13732 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13735 return vpc;
13736 #undef FLD
13739 /* nandncr: nandncr$pack $CRi,$CRj,$CRk */
13741 static SEM_PC
13742 SEM_FN_NAME (frvbf,nandncr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13744 #define FLD(f) abuf->fields.sfmt_andcr.f
13745 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13746 int UNUSED written = 0;
13747 IADDR UNUSED pc = abuf->addr;
13748 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13751 UQI opval = frvbf_cr_logic (current_cpu, 7, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13752 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13753 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13756 return vpc;
13757 #undef FLD
13760 /* norncr: norncr$pack $CRi,$CRj,$CRk */
13762 static SEM_PC
13763 SEM_FN_NAME (frvbf,norncr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13765 #define FLD(f) abuf->fields.sfmt_andcr.f
13766 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13767 int UNUSED written = 0;
13768 IADDR UNUSED pc = abuf->addr;
13769 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13772 UQI opval = frvbf_cr_logic (current_cpu, 8, CPU (h_cccr[FLD (f_CRi)]), CPU (h_cccr[FLD (f_CRj)]));
13773 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13774 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13777 return vpc;
13778 #undef FLD
13781 /* notcr: notcr$pack $CRj,$CRk */
13783 static SEM_PC
13784 SEM_FN_NAME (frvbf,notcr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13786 #define FLD(f) abuf->fields.sfmt_andcr.f
13787 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13788 int UNUSED written = 0;
13789 IADDR UNUSED pc = abuf->addr;
13790 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13793 UQI opval = XORQI (CPU (h_cccr[FLD (f_CRj)]), 1);
13794 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRk)]), opval);
13795 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13798 return vpc;
13799 #undef FLD
13802 /* ckra: ckra$pack $CRj_int */
13804 static SEM_PC
13805 SEM_FN_NAME (frvbf,ckra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13807 #define FLD(f) abuf->fields.sfmt_cckeq.f
13808 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13809 int UNUSED written = 0;
13810 IADDR UNUSED pc = abuf->addr;
13811 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13814 UQI opval = 3;
13815 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13816 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13819 return vpc;
13820 #undef FLD
13823 /* ckno: ckno$pack $CRj_int */
13825 static SEM_PC
13826 SEM_FN_NAME (frvbf,ckno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13828 #define FLD(f) abuf->fields.sfmt_cckeq.f
13829 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13830 int UNUSED written = 0;
13831 IADDR UNUSED pc = abuf->addr;
13832 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13835 UQI opval = 2;
13836 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13837 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13840 return vpc;
13841 #undef FLD
13844 /* ckeq: ckeq$pack $ICCi_3,$CRj_int */
13846 static SEM_PC
13847 SEM_FN_NAME (frvbf,ckeq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13849 #define FLD(f) abuf->fields.sfmt_cckeq.f
13850 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13851 int UNUSED written = 0;
13852 IADDR UNUSED pc = abuf->addr;
13853 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13855 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2))) {
13857 UQI opval = 3;
13858 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13859 written |= (1 << 1);
13860 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13862 } else {
13864 UQI opval = 2;
13865 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13866 written |= (1 << 1);
13867 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13871 abuf->written = written;
13872 return vpc;
13873 #undef FLD
13876 /* ckne: ckne$pack $ICCi_3,$CRj_int */
13878 static SEM_PC
13879 SEM_FN_NAME (frvbf,ckne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13881 #define FLD(f) abuf->fields.sfmt_cckeq.f
13882 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13883 int UNUSED written = 0;
13884 IADDR UNUSED pc = abuf->addr;
13885 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13887 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2)))) {
13889 UQI opval = 3;
13890 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13891 written |= (1 << 1);
13892 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13894 } else {
13896 UQI opval = 2;
13897 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13898 written |= (1 << 1);
13899 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13903 abuf->written = written;
13904 return vpc;
13905 #undef FLD
13908 /* ckle: ckle$pack $ICCi_3,$CRj_int */
13910 static SEM_PC
13911 SEM_FN_NAME (frvbf,ckle) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13913 #define FLD(f) abuf->fields.sfmt_cckeq.f
13914 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13915 int UNUSED written = 0;
13916 IADDR UNUSED pc = abuf->addr;
13917 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13919 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2)), XORBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 8), 3)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 2), 1))))) {
13921 UQI opval = 3;
13922 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13923 written |= (1 << 1);
13924 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13926 } else {
13928 UQI opval = 2;
13929 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13930 written |= (1 << 1);
13931 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13935 abuf->written = written;
13936 return vpc;
13937 #undef FLD
13940 /* ckgt: ckgt$pack $ICCi_3,$CRj_int */
13942 static SEM_PC
13943 SEM_FN_NAME (frvbf,ckgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13945 #define FLD(f) abuf->fields.sfmt_cckeq.f
13946 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13947 int UNUSED written = 0;
13948 IADDR UNUSED pc = abuf->addr;
13949 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13951 if (NOTBI (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2)), XORBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 8), 3)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 2), 1)))))) {
13953 UQI opval = 3;
13954 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13955 written |= (1 << 1);
13956 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13958 } else {
13960 UQI opval = 2;
13961 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13962 written |= (1 << 1);
13963 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13967 abuf->written = written;
13968 return vpc;
13969 #undef FLD
13972 /* cklt: cklt$pack $ICCi_3,$CRj_int */
13974 static SEM_PC
13975 SEM_FN_NAME (frvbf,cklt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
13977 #define FLD(f) abuf->fields.sfmt_cckeq.f
13978 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
13979 int UNUSED written = 0;
13980 IADDR UNUSED pc = abuf->addr;
13981 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
13983 if (XORBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 8), 3)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 2), 1)))) {
13985 UQI opval = 3;
13986 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13987 written |= (1 << 1);
13988 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13990 } else {
13992 UQI opval = 2;
13993 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
13994 written |= (1 << 1);
13995 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
13999 abuf->written = written;
14000 return vpc;
14001 #undef FLD
14004 /* ckge: ckge$pack $ICCi_3,$CRj_int */
14006 static SEM_PC
14007 SEM_FN_NAME (frvbf,ckge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14009 #define FLD(f) abuf->fields.sfmt_cckeq.f
14010 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14011 int UNUSED written = 0;
14012 IADDR UNUSED pc = abuf->addr;
14013 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14015 if (NOTBI (XORBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 8), 3)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 2), 1))))) {
14017 UQI opval = 3;
14018 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14019 written |= (1 << 1);
14020 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14022 } else {
14024 UQI opval = 2;
14025 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14026 written |= (1 << 1);
14027 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14031 abuf->written = written;
14032 return vpc;
14033 #undef FLD
14036 /* ckls: ckls$pack $ICCi_3,$CRj_int */
14038 static SEM_PC
14039 SEM_FN_NAME (frvbf,ckls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14041 #define FLD(f) abuf->fields.sfmt_cckeq.f
14042 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14043 int UNUSED written = 0;
14044 IADDR UNUSED pc = abuf->addr;
14045 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14047 if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2)))) {
14049 UQI opval = 3;
14050 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14051 written |= (1 << 1);
14052 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14054 } else {
14056 UQI opval = 2;
14057 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14058 written |= (1 << 1);
14059 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14063 abuf->written = written;
14064 return vpc;
14065 #undef FLD
14068 /* ckhi: ckhi$pack $ICCi_3,$CRj_int */
14070 static SEM_PC
14071 SEM_FN_NAME (frvbf,ckhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14073 #define FLD(f) abuf->fields.sfmt_cckeq.f
14074 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14075 int UNUSED written = 0;
14076 IADDR UNUSED pc = abuf->addr;
14077 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14079 if (NOTBI (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2))))) {
14081 UQI opval = 3;
14082 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14083 written |= (1 << 1);
14084 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14086 } else {
14088 UQI opval = 2;
14089 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14090 written |= (1 << 1);
14091 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14095 abuf->written = written;
14096 return vpc;
14097 #undef FLD
14100 /* ckc: ckc$pack $ICCi_3,$CRj_int */
14102 static SEM_PC
14103 SEM_FN_NAME (frvbf,ckc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14105 #define FLD(f) abuf->fields.sfmt_cckeq.f
14106 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14107 int UNUSED written = 0;
14108 IADDR UNUSED pc = abuf->addr;
14109 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14111 if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1))) {
14113 UQI opval = 3;
14114 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14115 written |= (1 << 1);
14116 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14118 } else {
14120 UQI opval = 2;
14121 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14122 written |= (1 << 1);
14123 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14127 abuf->written = written;
14128 return vpc;
14129 #undef FLD
14132 /* cknc: cknc$pack $ICCi_3,$CRj_int */
14134 static SEM_PC
14135 SEM_FN_NAME (frvbf,cknc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14137 #define FLD(f) abuf->fields.sfmt_cckeq.f
14138 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14139 int UNUSED written = 0;
14140 IADDR UNUSED pc = abuf->addr;
14141 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14143 if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1)))) {
14145 UQI opval = 3;
14146 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14147 written |= (1 << 1);
14148 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14150 } else {
14152 UQI opval = 2;
14153 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14154 written |= (1 << 1);
14155 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14159 abuf->written = written;
14160 return vpc;
14161 #undef FLD
14164 /* ckn: ckn$pack $ICCi_3,$CRj_int */
14166 static SEM_PC
14167 SEM_FN_NAME (frvbf,ckn) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14169 #define FLD(f) abuf->fields.sfmt_cckeq.f
14170 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14171 int UNUSED written = 0;
14172 IADDR UNUSED pc = abuf->addr;
14173 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14175 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 8), 3))) {
14177 UQI opval = 3;
14178 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14179 written |= (1 << 1);
14180 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14182 } else {
14184 UQI opval = 2;
14185 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14186 written |= (1 << 1);
14187 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14191 abuf->written = written;
14192 return vpc;
14193 #undef FLD
14196 /* ckp: ckp$pack $ICCi_3,$CRj_int */
14198 static SEM_PC
14199 SEM_FN_NAME (frvbf,ckp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14201 #define FLD(f) abuf->fields.sfmt_cckeq.f
14202 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14203 int UNUSED written = 0;
14204 IADDR UNUSED pc = abuf->addr;
14205 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14207 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 8), 3)))) {
14209 UQI opval = 3;
14210 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14211 written |= (1 << 1);
14212 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14214 } else {
14216 UQI opval = 2;
14217 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14218 written |= (1 << 1);
14219 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14223 abuf->written = written;
14224 return vpc;
14225 #undef FLD
14228 /* ckv: ckv$pack $ICCi_3,$CRj_int */
14230 static SEM_PC
14231 SEM_FN_NAME (frvbf,ckv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14233 #define FLD(f) abuf->fields.sfmt_cckeq.f
14234 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14235 int UNUSED written = 0;
14236 IADDR UNUSED pc = abuf->addr;
14237 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14239 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 2), 1))) {
14241 UQI opval = 3;
14242 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14243 written |= (1 << 1);
14244 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14246 } else {
14248 UQI opval = 2;
14249 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14250 written |= (1 << 1);
14251 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14255 abuf->written = written;
14256 return vpc;
14257 #undef FLD
14260 /* cknv: cknv$pack $ICCi_3,$CRj_int */
14262 static SEM_PC
14263 SEM_FN_NAME (frvbf,cknv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14265 #define FLD(f) abuf->fields.sfmt_cckeq.f
14266 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14267 int UNUSED written = 0;
14268 IADDR UNUSED pc = abuf->addr;
14269 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14271 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 2), 1)))) {
14273 UQI opval = 3;
14274 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14275 written |= (1 << 1);
14276 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14278 } else {
14280 UQI opval = 2;
14281 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14282 written |= (1 << 1);
14283 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14287 abuf->written = written;
14288 return vpc;
14289 #undef FLD
14292 /* fckra: fckra$pack $CRj_float */
14294 static SEM_PC
14295 SEM_FN_NAME (frvbf,fckra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14297 #define FLD(f) abuf->fields.sfmt_cfckne.f
14298 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14299 int UNUSED written = 0;
14300 IADDR UNUSED pc = abuf->addr;
14301 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14304 UQI opval = 3;
14305 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14306 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14309 return vpc;
14310 #undef FLD
14313 /* fckno: fckno$pack $CRj_float */
14315 static SEM_PC
14316 SEM_FN_NAME (frvbf,fckno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14318 #define FLD(f) abuf->fields.sfmt_cfckne.f
14319 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14320 int UNUSED written = 0;
14321 IADDR UNUSED pc = abuf->addr;
14322 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14325 UQI opval = 2;
14326 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14327 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14330 return vpc;
14331 #undef FLD
14334 /* fckne: fckne$pack $FCCi_3,$CRj_float */
14336 static SEM_PC
14337 SEM_FN_NAME (frvbf,fckne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14339 #define FLD(f) abuf->fields.sfmt_cfckne.f
14340 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14341 int UNUSED written = 0;
14342 IADDR UNUSED pc = abuf->addr;
14343 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14345 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 4), 2)), ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1))))) {
14347 UQI opval = 3;
14348 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14349 written |= (1 << 1);
14350 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14352 } else {
14354 UQI opval = 2;
14355 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14356 written |= (1 << 1);
14357 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14361 abuf->written = written;
14362 return vpc;
14363 #undef FLD
14366 /* fckeq: fckeq$pack $FCCi_3,$CRj_float */
14368 static SEM_PC
14369 SEM_FN_NAME (frvbf,fckeq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14371 #define FLD(f) abuf->fields.sfmt_cfckne.f
14372 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14373 int UNUSED written = 0;
14374 IADDR UNUSED pc = abuf->addr;
14375 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14377 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 8), 3))) {
14379 UQI opval = 3;
14380 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14381 written |= (1 << 1);
14382 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14384 } else {
14386 UQI opval = 2;
14387 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14388 written |= (1 << 1);
14389 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14393 abuf->written = written;
14394 return vpc;
14395 #undef FLD
14398 /* fcklg: fcklg$pack $FCCi_3,$CRj_float */
14400 static SEM_PC
14401 SEM_FN_NAME (frvbf,fcklg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14403 #define FLD(f) abuf->fields.sfmt_cfckne.f
14404 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14405 int UNUSED written = 0;
14406 IADDR UNUSED pc = abuf->addr;
14407 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14409 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 4), 2)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 2), 1)))) {
14411 UQI opval = 3;
14412 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14413 written |= (1 << 1);
14414 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14416 } else {
14418 UQI opval = 2;
14419 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14420 written |= (1 << 1);
14421 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14425 abuf->written = written;
14426 return vpc;
14427 #undef FLD
14430 /* fckue: fckue$pack $FCCi_3,$CRj_float */
14432 static SEM_PC
14433 SEM_FN_NAME (frvbf,fckue) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14435 #define FLD(f) abuf->fields.sfmt_cfckne.f
14436 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14437 int UNUSED written = 0;
14438 IADDR UNUSED pc = abuf->addr;
14439 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14441 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1)))) {
14443 UQI opval = 3;
14444 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14445 written |= (1 << 1);
14446 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14448 } else {
14450 UQI opval = 2;
14451 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14452 written |= (1 << 1);
14453 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14457 abuf->written = written;
14458 return vpc;
14459 #undef FLD
14462 /* fckul: fckul$pack $FCCi_3,$CRj_float */
14464 static SEM_PC
14465 SEM_FN_NAME (frvbf,fckul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14467 #define FLD(f) abuf->fields.sfmt_cfckne.f
14468 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14469 int UNUSED written = 0;
14470 IADDR UNUSED pc = abuf->addr;
14471 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14473 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1)))) {
14475 UQI opval = 3;
14476 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14477 written |= (1 << 1);
14478 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14480 } else {
14482 UQI opval = 2;
14483 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14484 written |= (1 << 1);
14485 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14489 abuf->written = written;
14490 return vpc;
14491 #undef FLD
14494 /* fckge: fckge$pack $FCCi_3,$CRj_float */
14496 static SEM_PC
14497 SEM_FN_NAME (frvbf,fckge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14499 #define FLD(f) abuf->fields.sfmt_cfckne.f
14500 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14501 int UNUSED written = 0;
14502 IADDR UNUSED pc = abuf->addr;
14503 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14505 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 8), 3)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 2), 1)))) {
14507 UQI opval = 3;
14508 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14509 written |= (1 << 1);
14510 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14512 } else {
14514 UQI opval = 2;
14515 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14516 written |= (1 << 1);
14517 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14521 abuf->written = written;
14522 return vpc;
14523 #undef FLD
14526 /* fcklt: fcklt$pack $FCCi_3,$CRj_float */
14528 static SEM_PC
14529 SEM_FN_NAME (frvbf,fcklt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14531 #define FLD(f) abuf->fields.sfmt_cfckne.f
14532 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14533 int UNUSED written = 0;
14534 IADDR UNUSED pc = abuf->addr;
14535 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14537 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 4), 2))) {
14539 UQI opval = 3;
14540 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14541 written |= (1 << 1);
14542 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14544 } else {
14546 UQI opval = 2;
14547 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14548 written |= (1 << 1);
14549 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14553 abuf->written = written;
14554 return vpc;
14555 #undef FLD
14558 /* fckuge: fckuge$pack $FCCi_3,$CRj_float */
14560 static SEM_PC
14561 SEM_FN_NAME (frvbf,fckuge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14563 #define FLD(f) abuf->fields.sfmt_cfckne.f
14564 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14565 int UNUSED written = 0;
14566 IADDR UNUSED pc = abuf->addr;
14567 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14569 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 8), 3)), ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1))))) {
14571 UQI opval = 3;
14572 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14573 written |= (1 << 1);
14574 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14576 } else {
14578 UQI opval = 2;
14579 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14580 written |= (1 << 1);
14581 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14585 abuf->written = written;
14586 return vpc;
14587 #undef FLD
14590 /* fckug: fckug$pack $FCCi_3,$CRj_float */
14592 static SEM_PC
14593 SEM_FN_NAME (frvbf,fckug) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14595 #define FLD(f) abuf->fields.sfmt_cfckne.f
14596 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14597 int UNUSED written = 0;
14598 IADDR UNUSED pc = abuf->addr;
14599 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14601 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1)))) {
14603 UQI opval = 3;
14604 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14605 written |= (1 << 1);
14606 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14608 } else {
14610 UQI opval = 2;
14611 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14612 written |= (1 << 1);
14613 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14617 abuf->written = written;
14618 return vpc;
14619 #undef FLD
14622 /* fckle: fckle$pack $FCCi_3,$CRj_float */
14624 static SEM_PC
14625 SEM_FN_NAME (frvbf,fckle) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14627 #define FLD(f) abuf->fields.sfmt_cfckne.f
14628 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14629 int UNUSED written = 0;
14630 IADDR UNUSED pc = abuf->addr;
14631 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14633 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 8), 3)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 4), 2)))) {
14635 UQI opval = 3;
14636 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14637 written |= (1 << 1);
14638 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14640 } else {
14642 UQI opval = 2;
14643 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14644 written |= (1 << 1);
14645 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14649 abuf->written = written;
14650 return vpc;
14651 #undef FLD
14654 /* fckgt: fckgt$pack $FCCi_3,$CRj_float */
14656 static SEM_PC
14657 SEM_FN_NAME (frvbf,fckgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14659 #define FLD(f) abuf->fields.sfmt_cfckne.f
14660 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14661 int UNUSED written = 0;
14662 IADDR UNUSED pc = abuf->addr;
14663 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14665 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 2), 1))) {
14667 UQI opval = 3;
14668 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14669 written |= (1 << 1);
14670 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14672 } else {
14674 UQI opval = 2;
14675 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14676 written |= (1 << 1);
14677 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14681 abuf->written = written;
14682 return vpc;
14683 #undef FLD
14686 /* fckule: fckule$pack $FCCi_3,$CRj_float */
14688 static SEM_PC
14689 SEM_FN_NAME (frvbf,fckule) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14691 #define FLD(f) abuf->fields.sfmt_cfckne.f
14692 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14693 int UNUSED written = 0;
14694 IADDR UNUSED pc = abuf->addr;
14695 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14697 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 8), 3)), ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1))))) {
14699 UQI opval = 3;
14700 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14701 written |= (1 << 1);
14702 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14704 } else {
14706 UQI opval = 2;
14707 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14708 written |= (1 << 1);
14709 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14713 abuf->written = written;
14714 return vpc;
14715 #undef FLD
14718 /* fcku: fcku$pack $FCCi_3,$CRj_float */
14720 static SEM_PC
14721 SEM_FN_NAME (frvbf,fcku) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14723 #define FLD(f) abuf->fields.sfmt_cfckne.f
14724 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14725 int UNUSED written = 0;
14726 IADDR UNUSED pc = abuf->addr;
14727 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14729 if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1))) {
14731 UQI opval = 3;
14732 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14733 written |= (1 << 1);
14734 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14736 } else {
14738 UQI opval = 2;
14739 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14740 written |= (1 << 1);
14741 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14745 abuf->written = written;
14746 return vpc;
14747 #undef FLD
14750 /* fcko: fcko$pack $FCCi_3,$CRj_float */
14752 static SEM_PC
14753 SEM_FN_NAME (frvbf,fcko) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14755 #define FLD(f) abuf->fields.sfmt_cfckne.f
14756 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14757 int UNUSED written = 0;
14758 IADDR UNUSED pc = abuf->addr;
14759 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14761 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 8), 3)), ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 4), 2)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 2), 1))))) {
14763 UQI opval = 3;
14764 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14765 written |= (1 << 1);
14766 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14768 } else {
14770 UQI opval = 2;
14771 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
14772 written |= (1 << 1);
14773 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14777 abuf->written = written;
14778 return vpc;
14779 #undef FLD
14782 /* cckra: cckra$pack $CRj_int,$CCi,$cond */
14784 static SEM_PC
14785 SEM_FN_NAME (frvbf,cckra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14787 #define FLD(f) abuf->fields.sfmt_cckeq.f
14788 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14789 int UNUSED written = 0;
14790 IADDR UNUSED pc = abuf->addr;
14791 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14793 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
14795 UQI opval = 3;
14796 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14797 written |= (1 << 2);
14798 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14800 } else {
14802 UQI opval = 0;
14803 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14804 written |= (1 << 2);
14805 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14809 abuf->written = written;
14810 return vpc;
14811 #undef FLD
14814 /* cckno: cckno$pack $CRj_int,$CCi,$cond */
14816 static SEM_PC
14817 SEM_FN_NAME (frvbf,cckno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14819 #define FLD(f) abuf->fields.sfmt_cckeq.f
14820 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14821 int UNUSED written = 0;
14822 IADDR UNUSED pc = abuf->addr;
14823 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14825 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
14827 UQI opval = 2;
14828 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14829 written |= (1 << 2);
14830 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14832 } else {
14834 UQI opval = 0;
14835 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14836 written |= (1 << 2);
14837 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14841 abuf->written = written;
14842 return vpc;
14843 #undef FLD
14846 /* cckeq: cckeq$pack $ICCi_3,$CRj_int,$CCi,$cond */
14848 static SEM_PC
14849 SEM_FN_NAME (frvbf,cckeq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14851 #define FLD(f) abuf->fields.sfmt_cckeq.f
14852 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14853 int UNUSED written = 0;
14854 IADDR UNUSED pc = abuf->addr;
14855 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14857 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
14858 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2))) {
14860 UQI opval = 3;
14861 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14862 written |= (1 << 3);
14863 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14865 } else {
14867 UQI opval = 2;
14868 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14869 written |= (1 << 3);
14870 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14873 } else {
14875 UQI opval = 0;
14876 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14877 written |= (1 << 3);
14878 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14882 abuf->written = written;
14883 return vpc;
14884 #undef FLD
14887 /* cckne: cckne$pack $ICCi_3,$CRj_int,$CCi,$cond */
14889 static SEM_PC
14890 SEM_FN_NAME (frvbf,cckne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14892 #define FLD(f) abuf->fields.sfmt_cckeq.f
14893 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14894 int UNUSED written = 0;
14895 IADDR UNUSED pc = abuf->addr;
14896 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14898 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
14899 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2)))) {
14901 UQI opval = 3;
14902 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14903 written |= (1 << 3);
14904 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14906 } else {
14908 UQI opval = 2;
14909 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14910 written |= (1 << 3);
14911 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14914 } else {
14916 UQI opval = 0;
14917 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14918 written |= (1 << 3);
14919 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14923 abuf->written = written;
14924 return vpc;
14925 #undef FLD
14928 /* cckle: cckle$pack $ICCi_3,$CRj_int,$CCi,$cond */
14930 static SEM_PC
14931 SEM_FN_NAME (frvbf,cckle) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14933 #define FLD(f) abuf->fields.sfmt_cckeq.f
14934 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14935 int UNUSED written = 0;
14936 IADDR UNUSED pc = abuf->addr;
14937 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14939 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
14940 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2)), XORBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 8), 3)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 2), 1))))) {
14942 UQI opval = 3;
14943 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14944 written |= (1 << 3);
14945 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14947 } else {
14949 UQI opval = 2;
14950 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14951 written |= (1 << 3);
14952 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14955 } else {
14957 UQI opval = 0;
14958 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14959 written |= (1 << 3);
14960 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14964 abuf->written = written;
14965 return vpc;
14966 #undef FLD
14969 /* cckgt: cckgt$pack $ICCi_3,$CRj_int,$CCi,$cond */
14971 static SEM_PC
14972 SEM_FN_NAME (frvbf,cckgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
14974 #define FLD(f) abuf->fields.sfmt_cckeq.f
14975 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
14976 int UNUSED written = 0;
14977 IADDR UNUSED pc = abuf->addr;
14978 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
14980 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
14981 if (NOTBI (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2)), XORBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 8), 3)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 2), 1)))))) {
14983 UQI opval = 3;
14984 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14985 written |= (1 << 3);
14986 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14988 } else {
14990 UQI opval = 2;
14991 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
14992 written |= (1 << 3);
14993 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
14996 } else {
14998 UQI opval = 0;
14999 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15000 written |= (1 << 3);
15001 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15005 abuf->written = written;
15006 return vpc;
15007 #undef FLD
15010 /* ccklt: ccklt$pack $ICCi_3,$CRj_int,$CCi,$cond */
15012 static SEM_PC
15013 SEM_FN_NAME (frvbf,ccklt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15015 #define FLD(f) abuf->fields.sfmt_cckeq.f
15016 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15017 int UNUSED written = 0;
15018 IADDR UNUSED pc = abuf->addr;
15019 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15021 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15022 if (XORBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 8), 3)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 2), 1)))) {
15024 UQI opval = 3;
15025 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15026 written |= (1 << 3);
15027 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15029 } else {
15031 UQI opval = 2;
15032 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15033 written |= (1 << 3);
15034 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15037 } else {
15039 UQI opval = 0;
15040 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15041 written |= (1 << 3);
15042 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15046 abuf->written = written;
15047 return vpc;
15048 #undef FLD
15051 /* cckge: cckge$pack $ICCi_3,$CRj_int,$CCi,$cond */
15053 static SEM_PC
15054 SEM_FN_NAME (frvbf,cckge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15056 #define FLD(f) abuf->fields.sfmt_cckeq.f
15057 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15058 int UNUSED written = 0;
15059 IADDR UNUSED pc = abuf->addr;
15060 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15062 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15063 if (NOTBI (XORBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 8), 3)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 2), 1))))) {
15065 UQI opval = 3;
15066 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15067 written |= (1 << 3);
15068 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15070 } else {
15072 UQI opval = 2;
15073 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15074 written |= (1 << 3);
15075 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15078 } else {
15080 UQI opval = 0;
15081 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15082 written |= (1 << 3);
15083 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15087 abuf->written = written;
15088 return vpc;
15089 #undef FLD
15092 /* cckls: cckls$pack $ICCi_3,$CRj_int,$CCi,$cond */
15094 static SEM_PC
15095 SEM_FN_NAME (frvbf,cckls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15097 #define FLD(f) abuf->fields.sfmt_cckeq.f
15098 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15099 int UNUSED written = 0;
15100 IADDR UNUSED pc = abuf->addr;
15101 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15103 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15104 if (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2)))) {
15106 UQI opval = 3;
15107 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15108 written |= (1 << 3);
15109 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15111 } else {
15113 UQI opval = 2;
15114 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15115 written |= (1 << 3);
15116 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15119 } else {
15121 UQI opval = 0;
15122 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15123 written |= (1 << 3);
15124 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15128 abuf->written = written;
15129 return vpc;
15130 #undef FLD
15133 /* cckhi: cckhi$pack $ICCi_3,$CRj_int,$CCi,$cond */
15135 static SEM_PC
15136 SEM_FN_NAME (frvbf,cckhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15138 #define FLD(f) abuf->fields.sfmt_cckeq.f
15139 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15140 int UNUSED written = 0;
15141 IADDR UNUSED pc = abuf->addr;
15142 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15144 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15145 if (NOTBI (ORIF (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 4), 2))))) {
15147 UQI opval = 3;
15148 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15149 written |= (1 << 3);
15150 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15152 } else {
15154 UQI opval = 2;
15155 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15156 written |= (1 << 3);
15157 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15160 } else {
15162 UQI opval = 0;
15163 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15164 written |= (1 << 3);
15165 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15169 abuf->written = written;
15170 return vpc;
15171 #undef FLD
15174 /* cckc: cckc$pack $ICCi_3,$CRj_int,$CCi,$cond */
15176 static SEM_PC
15177 SEM_FN_NAME (frvbf,cckc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15179 #define FLD(f) abuf->fields.sfmt_cckeq.f
15180 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15181 int UNUSED written = 0;
15182 IADDR UNUSED pc = abuf->addr;
15183 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15185 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15186 if (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1))) {
15188 UQI opval = 3;
15189 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15190 written |= (1 << 3);
15191 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15193 } else {
15195 UQI opval = 2;
15196 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15197 written |= (1 << 3);
15198 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15201 } else {
15203 UQI opval = 0;
15204 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15205 written |= (1 << 3);
15206 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15210 abuf->written = written;
15211 return vpc;
15212 #undef FLD
15215 /* ccknc: ccknc$pack $ICCi_3,$CRj_int,$CCi,$cond */
15217 static SEM_PC
15218 SEM_FN_NAME (frvbf,ccknc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15220 #define FLD(f) abuf->fields.sfmt_cckeq.f
15221 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15222 int UNUSED written = 0;
15223 IADDR UNUSED pc = abuf->addr;
15224 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15226 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15227 if (NOTBI (TRUNCQIBI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 1)))) {
15229 UQI opval = 3;
15230 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15231 written |= (1 << 3);
15232 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15234 } else {
15236 UQI opval = 2;
15237 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15238 written |= (1 << 3);
15239 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15242 } else {
15244 UQI opval = 0;
15245 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15246 written |= (1 << 3);
15247 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15251 abuf->written = written;
15252 return vpc;
15253 #undef FLD
15256 /* cckn: cckn$pack $ICCi_3,$CRj_int,$CCi,$cond */
15258 static SEM_PC
15259 SEM_FN_NAME (frvbf,cckn) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15261 #define FLD(f) abuf->fields.sfmt_cckeq.f
15262 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15263 int UNUSED written = 0;
15264 IADDR UNUSED pc = abuf->addr;
15265 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15267 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15268 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 8), 3))) {
15270 UQI opval = 3;
15271 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15272 written |= (1 << 3);
15273 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15275 } else {
15277 UQI opval = 2;
15278 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15279 written |= (1 << 3);
15280 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15283 } else {
15285 UQI opval = 0;
15286 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15287 written |= (1 << 3);
15288 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15292 abuf->written = written;
15293 return vpc;
15294 #undef FLD
15297 /* cckp: cckp$pack $ICCi_3,$CRj_int,$CCi,$cond */
15299 static SEM_PC
15300 SEM_FN_NAME (frvbf,cckp) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15302 #define FLD(f) abuf->fields.sfmt_cckeq.f
15303 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15304 int UNUSED written = 0;
15305 IADDR UNUSED pc = abuf->addr;
15306 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15308 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15309 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 8), 3)))) {
15311 UQI opval = 3;
15312 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15313 written |= (1 << 3);
15314 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15316 } else {
15318 UQI opval = 2;
15319 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15320 written |= (1 << 3);
15321 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15324 } else {
15326 UQI opval = 0;
15327 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15328 written |= (1 << 3);
15329 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15333 abuf->written = written;
15334 return vpc;
15335 #undef FLD
15338 /* cckv: cckv$pack $ICCi_3,$CRj_int,$CCi,$cond */
15340 static SEM_PC
15341 SEM_FN_NAME (frvbf,cckv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15343 #define FLD(f) abuf->fields.sfmt_cckeq.f
15344 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15345 int UNUSED written = 0;
15346 IADDR UNUSED pc = abuf->addr;
15347 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15349 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15350 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 2), 1))) {
15352 UQI opval = 3;
15353 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15354 written |= (1 << 3);
15355 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15357 } else {
15359 UQI opval = 2;
15360 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15361 written |= (1 << 3);
15362 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15365 } else {
15367 UQI opval = 0;
15368 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15369 written |= (1 << 3);
15370 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15374 abuf->written = written;
15375 return vpc;
15376 #undef FLD
15379 /* ccknv: ccknv$pack $ICCi_3,$CRj_int,$CCi,$cond */
15381 static SEM_PC
15382 SEM_FN_NAME (frvbf,ccknv) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15384 #define FLD(f) abuf->fields.sfmt_cckeq.f
15385 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15386 int UNUSED written = 0;
15387 IADDR UNUSED pc = abuf->addr;
15388 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15390 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15391 if (NOTBI (TRUNCQIBI (SRLQI (ANDQI (CPU (h_iccr[FLD (f_ICCi_3)]), 2), 1)))) {
15393 UQI opval = 3;
15394 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15395 written |= (1 << 3);
15396 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15398 } else {
15400 UQI opval = 2;
15401 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15402 written |= (1 << 3);
15403 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15406 } else {
15408 UQI opval = 0;
15409 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_int)]), opval);
15410 written |= (1 << 3);
15411 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15415 abuf->written = written;
15416 return vpc;
15417 #undef FLD
15420 /* cfckra: cfckra$pack $CRj_float,$CCi,$cond */
15422 static SEM_PC
15423 SEM_FN_NAME (frvbf,cfckra) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15425 #define FLD(f) abuf->fields.sfmt_cfckne.f
15426 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15427 int UNUSED written = 0;
15428 IADDR UNUSED pc = abuf->addr;
15429 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15431 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15433 UQI opval = 3;
15434 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15435 written |= (1 << 2);
15436 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15438 } else {
15440 UQI opval = 0;
15441 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15442 written |= (1 << 2);
15443 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15447 abuf->written = written;
15448 return vpc;
15449 #undef FLD
15452 /* cfckno: cfckno$pack $CRj_float,$CCi,$cond */
15454 static SEM_PC
15455 SEM_FN_NAME (frvbf,cfckno) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15457 #define FLD(f) abuf->fields.sfmt_cfckne.f
15458 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15459 int UNUSED written = 0;
15460 IADDR UNUSED pc = abuf->addr;
15461 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15463 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15465 UQI opval = 2;
15466 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15467 written |= (1 << 2);
15468 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15470 } else {
15472 UQI opval = 0;
15473 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15474 written |= (1 << 2);
15475 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15479 abuf->written = written;
15480 return vpc;
15481 #undef FLD
15484 /* cfckne: cfckne$pack $FCCi_3,$CRj_float,$CCi,$cond */
15486 static SEM_PC
15487 SEM_FN_NAME (frvbf,cfckne) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15489 #define FLD(f) abuf->fields.sfmt_cfckne.f
15490 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15491 int UNUSED written = 0;
15492 IADDR UNUSED pc = abuf->addr;
15493 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15495 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15496 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 4), 2)), ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1))))) {
15498 UQI opval = 3;
15499 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15500 written |= (1 << 3);
15501 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15503 } else {
15505 UQI opval = 2;
15506 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15507 written |= (1 << 3);
15508 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15511 } else {
15513 UQI opval = 0;
15514 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15515 written |= (1 << 3);
15516 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15520 abuf->written = written;
15521 return vpc;
15522 #undef FLD
15525 /* cfckeq: cfckeq$pack $FCCi_3,$CRj_float,$CCi,$cond */
15527 static SEM_PC
15528 SEM_FN_NAME (frvbf,cfckeq) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15530 #define FLD(f) abuf->fields.sfmt_cfckne.f
15531 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15532 int UNUSED written = 0;
15533 IADDR UNUSED pc = abuf->addr;
15534 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15536 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15537 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 8), 3))) {
15539 UQI opval = 3;
15540 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15541 written |= (1 << 3);
15542 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15544 } else {
15546 UQI opval = 2;
15547 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15548 written |= (1 << 3);
15549 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15552 } else {
15554 UQI opval = 0;
15555 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15556 written |= (1 << 3);
15557 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15561 abuf->written = written;
15562 return vpc;
15563 #undef FLD
15566 /* cfcklg: cfcklg$pack $FCCi_3,$CRj_float,$CCi,$cond */
15568 static SEM_PC
15569 SEM_FN_NAME (frvbf,cfcklg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15571 #define FLD(f) abuf->fields.sfmt_cfckne.f
15572 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15573 int UNUSED written = 0;
15574 IADDR UNUSED pc = abuf->addr;
15575 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15577 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15578 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 4), 2)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 2), 1)))) {
15580 UQI opval = 3;
15581 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15582 written |= (1 << 3);
15583 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15585 } else {
15587 UQI opval = 2;
15588 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15589 written |= (1 << 3);
15590 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15593 } else {
15595 UQI opval = 0;
15596 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15597 written |= (1 << 3);
15598 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15602 abuf->written = written;
15603 return vpc;
15604 #undef FLD
15607 /* cfckue: cfckue$pack $FCCi_3,$CRj_float,$CCi,$cond */
15609 static SEM_PC
15610 SEM_FN_NAME (frvbf,cfckue) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15612 #define FLD(f) abuf->fields.sfmt_cfckne.f
15613 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15614 int UNUSED written = 0;
15615 IADDR UNUSED pc = abuf->addr;
15616 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15618 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15619 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 8), 3)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1)))) {
15621 UQI opval = 3;
15622 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15623 written |= (1 << 3);
15624 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15626 } else {
15628 UQI opval = 2;
15629 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15630 written |= (1 << 3);
15631 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15634 } else {
15636 UQI opval = 0;
15637 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15638 written |= (1 << 3);
15639 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15643 abuf->written = written;
15644 return vpc;
15645 #undef FLD
15648 /* cfckul: cfckul$pack $FCCi_3,$CRj_float,$CCi,$cond */
15650 static SEM_PC
15651 SEM_FN_NAME (frvbf,cfckul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15653 #define FLD(f) abuf->fields.sfmt_cfckne.f
15654 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15655 int UNUSED written = 0;
15656 IADDR UNUSED pc = abuf->addr;
15657 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15659 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15660 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1)))) {
15662 UQI opval = 3;
15663 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15664 written |= (1 << 3);
15665 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15667 } else {
15669 UQI opval = 2;
15670 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15671 written |= (1 << 3);
15672 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15675 } else {
15677 UQI opval = 0;
15678 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15679 written |= (1 << 3);
15680 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15684 abuf->written = written;
15685 return vpc;
15686 #undef FLD
15689 /* cfckge: cfckge$pack $FCCi_3,$CRj_float,$CCi,$cond */
15691 static SEM_PC
15692 SEM_FN_NAME (frvbf,cfckge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15694 #define FLD(f) abuf->fields.sfmt_cfckne.f
15695 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15696 int UNUSED written = 0;
15697 IADDR UNUSED pc = abuf->addr;
15698 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15700 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15701 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 8), 3)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 2), 1)))) {
15703 UQI opval = 3;
15704 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15705 written |= (1 << 3);
15706 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15708 } else {
15710 UQI opval = 2;
15711 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15712 written |= (1 << 3);
15713 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15716 } else {
15718 UQI opval = 0;
15719 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15720 written |= (1 << 3);
15721 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15725 abuf->written = written;
15726 return vpc;
15727 #undef FLD
15730 /* cfcklt: cfcklt$pack $FCCi_3,$CRj_float,$CCi,$cond */
15732 static SEM_PC
15733 SEM_FN_NAME (frvbf,cfcklt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15735 #define FLD(f) abuf->fields.sfmt_cfckne.f
15736 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15737 int UNUSED written = 0;
15738 IADDR UNUSED pc = abuf->addr;
15739 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15741 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15742 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 4), 2))) {
15744 UQI opval = 3;
15745 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15746 written |= (1 << 3);
15747 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15749 } else {
15751 UQI opval = 2;
15752 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15753 written |= (1 << 3);
15754 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15757 } else {
15759 UQI opval = 0;
15760 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15761 written |= (1 << 3);
15762 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15766 abuf->written = written;
15767 return vpc;
15768 #undef FLD
15771 /* cfckuge: cfckuge$pack $FCCi_3,$CRj_float,$CCi,$cond */
15773 static SEM_PC
15774 SEM_FN_NAME (frvbf,cfckuge) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15776 #define FLD(f) abuf->fields.sfmt_cfckne.f
15777 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15778 int UNUSED written = 0;
15779 IADDR UNUSED pc = abuf->addr;
15780 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15782 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15783 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 8), 3)), ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1))))) {
15785 UQI opval = 3;
15786 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15787 written |= (1 << 3);
15788 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15790 } else {
15792 UQI opval = 2;
15793 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15794 written |= (1 << 3);
15795 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15798 } else {
15800 UQI opval = 0;
15801 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15802 written |= (1 << 3);
15803 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15807 abuf->written = written;
15808 return vpc;
15809 #undef FLD
15812 /* cfckug: cfckug$pack $FCCi_3,$CRj_float,$CCi,$cond */
15814 static SEM_PC
15815 SEM_FN_NAME (frvbf,cfckug) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15817 #define FLD(f) abuf->fields.sfmt_cfckne.f
15818 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15819 int UNUSED written = 0;
15820 IADDR UNUSED pc = abuf->addr;
15821 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15823 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15824 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 2), 1)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1)))) {
15826 UQI opval = 3;
15827 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15828 written |= (1 << 3);
15829 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15831 } else {
15833 UQI opval = 2;
15834 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15835 written |= (1 << 3);
15836 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15839 } else {
15841 UQI opval = 0;
15842 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15843 written |= (1 << 3);
15844 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15848 abuf->written = written;
15849 return vpc;
15850 #undef FLD
15853 /* cfckle: cfckle$pack $FCCi_3,$CRj_float,$CCi,$cond */
15855 static SEM_PC
15856 SEM_FN_NAME (frvbf,cfckle) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15858 #define FLD(f) abuf->fields.sfmt_cfckne.f
15859 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15860 int UNUSED written = 0;
15861 IADDR UNUSED pc = abuf->addr;
15862 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15864 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15865 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 8), 3)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 4), 2)))) {
15867 UQI opval = 3;
15868 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15869 written |= (1 << 3);
15870 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15872 } else {
15874 UQI opval = 2;
15875 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15876 written |= (1 << 3);
15877 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15880 } else {
15882 UQI opval = 0;
15883 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15884 written |= (1 << 3);
15885 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15889 abuf->written = written;
15890 return vpc;
15891 #undef FLD
15894 /* cfckgt: cfckgt$pack $FCCi_3,$CRj_float,$CCi,$cond */
15896 static SEM_PC
15897 SEM_FN_NAME (frvbf,cfckgt) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15899 #define FLD(f) abuf->fields.sfmt_cfckne.f
15900 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15901 int UNUSED written = 0;
15902 IADDR UNUSED pc = abuf->addr;
15903 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15905 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15906 if (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 2), 1))) {
15908 UQI opval = 3;
15909 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15910 written |= (1 << 3);
15911 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15913 } else {
15915 UQI opval = 2;
15916 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15917 written |= (1 << 3);
15918 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15921 } else {
15923 UQI opval = 0;
15924 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15925 written |= (1 << 3);
15926 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15930 abuf->written = written;
15931 return vpc;
15932 #undef FLD
15935 /* cfckule: cfckule$pack $FCCi_3,$CRj_float,$CCi,$cond */
15937 static SEM_PC
15938 SEM_FN_NAME (frvbf,cfckule) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15940 #define FLD(f) abuf->fields.sfmt_cfckne.f
15941 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15942 int UNUSED written = 0;
15943 IADDR UNUSED pc = abuf->addr;
15944 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15946 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15947 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 8), 3)), ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 4), 2)), TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1))))) {
15949 UQI opval = 3;
15950 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15951 written |= (1 << 3);
15952 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15954 } else {
15956 UQI opval = 2;
15957 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15958 written |= (1 << 3);
15959 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15962 } else {
15964 UQI opval = 0;
15965 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15966 written |= (1 << 3);
15967 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15971 abuf->written = written;
15972 return vpc;
15973 #undef FLD
15976 /* cfcku: cfcku$pack $FCCi_3,$CRj_float,$CCi,$cond */
15978 static SEM_PC
15979 SEM_FN_NAME (frvbf,cfcku) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
15981 #define FLD(f) abuf->fields.sfmt_cfckne.f
15982 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
15983 int UNUSED written = 0;
15984 IADDR UNUSED pc = abuf->addr;
15985 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
15987 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
15988 if (TRUNCQIBI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 1))) {
15990 UQI opval = 3;
15991 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15992 written |= (1 << 3);
15993 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
15995 } else {
15997 UQI opval = 2;
15998 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
15999 written |= (1 << 3);
16000 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16003 } else {
16005 UQI opval = 0;
16006 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16007 written |= (1 << 3);
16008 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16012 abuf->written = written;
16013 return vpc;
16014 #undef FLD
16017 /* cfcko: cfcko$pack $FCCi_3,$CRj_float,$CCi,$cond */
16019 static SEM_PC
16020 SEM_FN_NAME (frvbf,cfcko) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16022 #define FLD(f) abuf->fields.sfmt_cfckne.f
16023 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16024 int UNUSED written = 0;
16025 IADDR UNUSED pc = abuf->addr;
16026 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16028 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
16029 if (ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 8), 3)), ORIF (TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 4), 2)), TRUNCQIBI (SRLQI (ANDQI (CPU (h_fccr[FLD (f_FCCi_3)]), 2), 1))))) {
16031 UQI opval = 3;
16032 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16033 written |= (1 << 3);
16034 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16036 } else {
16038 UQI opval = 2;
16039 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16040 written |= (1 << 3);
16041 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16044 } else {
16046 UQI opval = 0;
16047 sim_queue_qi_write (current_cpu, & CPU (h_cccr[FLD (f_CRj_float)]), opval);
16048 written |= (1 << 3);
16049 CGEN_TRACE_RESULT (current_cpu, abuf, "cccr", 'x', opval);
16053 abuf->written = written;
16054 return vpc;
16055 #undef FLD
16058 /* cjmpl: cjmpl$pack @($GRi,$GRj),$CCi,$cond */
16060 static SEM_PC
16061 SEM_FN_NAME (frvbf,cjmpl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16063 #define FLD(f) abuf->fields.sfmt_cjmpl.f
16064 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16065 int UNUSED written = 0;
16066 IADDR UNUSED pc = abuf->addr;
16067 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16069 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
16071 if (EQSI (FLD (f_LI), 1)) {
16072 frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
16075 USI opval = ANDSI (ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0xfffffffc);
16076 sim_queue_pc_write (current_cpu, opval);
16077 written |= (1 << 6);
16078 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
16080 frvbf_model_branch (current_cpu, pc, 2);
16084 abuf->written = written;
16085 return vpc;
16086 #undef FLD
16089 /* ccalll: ccalll$pack @($GRi,$GRj),$CCi,$cond */
16091 static SEM_PC
16092 SEM_FN_NAME (frvbf,ccalll) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16094 #define FLD(f) abuf->fields.sfmt_cjmpl.f
16095 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16096 int UNUSED written = 0;
16097 IADDR UNUSED pc = abuf->addr;
16098 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16100 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
16102 if (EQSI (FLD (f_LI), 1)) {
16103 frvbf_set_write_next_vliw_addr_to_LR (current_cpu, 1);
16106 USI opval = ANDSI (ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0xfffffffc);
16107 sim_queue_pc_write (current_cpu, opval);
16108 written |= (1 << 6);
16109 CGEN_TRACE_RESULT (current_cpu, abuf, "pc", 'x', opval);
16111 frvbf_model_branch (current_cpu, pc, 2);
16115 abuf->written = written;
16116 return vpc;
16117 #undef FLD
16120 /* ici: ici$pack @($GRi,$GRj) */
16122 static SEM_PC
16123 SEM_FN_NAME (frvbf,ici) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16125 #define FLD(f) abuf->fields.sfmt_icpl.f
16126 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16127 int UNUSED written = 0;
16128 IADDR UNUSED pc = abuf->addr;
16129 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16131 frvbf_insn_cache_invalidate (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0);
16133 return vpc;
16134 #undef FLD
16137 /* dci: dci$pack @($GRi,$GRj) */
16139 static SEM_PC
16140 SEM_FN_NAME (frvbf,dci) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16142 #define FLD(f) abuf->fields.sfmt_icpl.f
16143 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16144 int UNUSED written = 0;
16145 IADDR UNUSED pc = abuf->addr;
16146 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16148 frvbf_data_cache_invalidate (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0);
16150 return vpc;
16151 #undef FLD
16154 /* icei: icei$pack @($GRi,$GRj),$ae */
16156 static SEM_PC
16157 SEM_FN_NAME (frvbf,icei) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16159 #define FLD(f) abuf->fields.sfmt_icei.f
16160 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16161 int UNUSED written = 0;
16162 IADDR UNUSED pc = abuf->addr;
16163 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16165 if (EQSI (FLD (f_ae), 0)) {
16166 frvbf_insn_cache_invalidate (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), -1);
16167 } else {
16168 frvbf_insn_cache_invalidate (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), FLD (f_ae));
16171 return vpc;
16172 #undef FLD
16175 /* dcei: dcei$pack @($GRi,$GRj),$ae */
16177 static SEM_PC
16178 SEM_FN_NAME (frvbf,dcei) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16180 #define FLD(f) abuf->fields.sfmt_icei.f
16181 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16182 int UNUSED written = 0;
16183 IADDR UNUSED pc = abuf->addr;
16184 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16186 if (EQSI (FLD (f_ae), 0)) {
16187 frvbf_data_cache_invalidate (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), -1);
16188 } else {
16189 frvbf_data_cache_invalidate (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), FLD (f_ae));
16192 return vpc;
16193 #undef FLD
16196 /* dcf: dcf$pack @($GRi,$GRj) */
16198 static SEM_PC
16199 SEM_FN_NAME (frvbf,dcf) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16201 #define FLD(f) abuf->fields.sfmt_icpl.f
16202 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16203 int UNUSED written = 0;
16204 IADDR UNUSED pc = abuf->addr;
16205 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16207 frvbf_data_cache_flush (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), 0);
16209 return vpc;
16210 #undef FLD
16213 /* dcef: dcef$pack @($GRi,$GRj),$ae */
16215 static SEM_PC
16216 SEM_FN_NAME (frvbf,dcef) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16218 #define FLD(f) abuf->fields.sfmt_icei.f
16219 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16220 int UNUSED written = 0;
16221 IADDR UNUSED pc = abuf->addr;
16222 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16224 if (EQSI (FLD (f_ae), 0)) {
16225 frvbf_data_cache_flush (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), -1);
16226 } else {
16227 frvbf_data_cache_flush (current_cpu, ADDSI (GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj))), FLD (f_ae));
16230 return vpc;
16231 #undef FLD
16234 /* witlb: witlb$pack $GRk,@($GRi,$GRj) */
16236 static SEM_PC
16237 SEM_FN_NAME (frvbf,witlb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16239 #define FLD(f) abuf->fields.sfmt_empty.f
16240 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16241 int UNUSED written = 0;
16242 IADDR UNUSED pc = abuf->addr;
16243 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16245 ((void) 0); /*nop*/
16247 return vpc;
16248 #undef FLD
16251 /* wdtlb: wdtlb$pack $GRk,@($GRi,$GRj) */
16253 static SEM_PC
16254 SEM_FN_NAME (frvbf,wdtlb) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16256 #define FLD(f) abuf->fields.sfmt_empty.f
16257 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16258 int UNUSED written = 0;
16259 IADDR UNUSED pc = abuf->addr;
16260 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16262 ((void) 0); /*nop*/
16264 return vpc;
16265 #undef FLD
16268 /* itlbi: itlbi$pack @($GRi,$GRj) */
16270 static SEM_PC
16271 SEM_FN_NAME (frvbf,itlbi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16273 #define FLD(f) abuf->fields.sfmt_empty.f
16274 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16275 int UNUSED written = 0;
16276 IADDR UNUSED pc = abuf->addr;
16277 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16279 ((void) 0); /*nop*/
16281 return vpc;
16282 #undef FLD
16285 /* dtlbi: dtlbi$pack @($GRi,$GRj) */
16287 static SEM_PC
16288 SEM_FN_NAME (frvbf,dtlbi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16290 #define FLD(f) abuf->fields.sfmt_empty.f
16291 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16292 int UNUSED written = 0;
16293 IADDR UNUSED pc = abuf->addr;
16294 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16296 ((void) 0); /*nop*/
16298 return vpc;
16299 #undef FLD
16302 /* icpl: icpl$pack $GRi,$GRj,$lock */
16304 static SEM_PC
16305 SEM_FN_NAME (frvbf,icpl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16307 #define FLD(f) abuf->fields.sfmt_icpl.f
16308 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16309 int UNUSED written = 0;
16310 IADDR UNUSED pc = abuf->addr;
16311 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16313 frvbf_insn_cache_preload (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_lock));
16315 return vpc;
16316 #undef FLD
16319 /* dcpl: dcpl$pack $GRi,$GRj,$lock */
16321 static SEM_PC
16322 SEM_FN_NAME (frvbf,dcpl) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16324 #define FLD(f) abuf->fields.sfmt_icpl.f
16325 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16326 int UNUSED written = 0;
16327 IADDR UNUSED pc = abuf->addr;
16328 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16330 frvbf_data_cache_preload (current_cpu, GET_H_GR (FLD (f_GRi)), GET_H_GR (FLD (f_GRj)), FLD (f_lock));
16332 return vpc;
16333 #undef FLD
16336 /* icul: icul$pack $GRi */
16338 static SEM_PC
16339 SEM_FN_NAME (frvbf,icul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16341 #define FLD(f) abuf->fields.sfmt_jmpil.f
16342 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16343 int UNUSED written = 0;
16344 IADDR UNUSED pc = abuf->addr;
16345 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16347 frvbf_insn_cache_unlock (current_cpu, GET_H_GR (FLD (f_GRi)));
16349 return vpc;
16350 #undef FLD
16353 /* dcul: dcul$pack $GRi */
16355 static SEM_PC
16356 SEM_FN_NAME (frvbf,dcul) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16358 #define FLD(f) abuf->fields.sfmt_jmpil.f
16359 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16360 int UNUSED written = 0;
16361 IADDR UNUSED pc = abuf->addr;
16362 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16364 frvbf_data_cache_unlock (current_cpu, GET_H_GR (FLD (f_GRi)));
16366 return vpc;
16367 #undef FLD
16370 /* bar: bar$pack */
16372 static SEM_PC
16373 SEM_FN_NAME (frvbf,bar) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16375 #define FLD(f) abuf->fields.sfmt_empty.f
16376 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16377 int UNUSED written = 0;
16378 IADDR UNUSED pc = abuf->addr;
16379 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16381 ((void) 0); /*nop*/
16383 return vpc;
16384 #undef FLD
16387 /* membar: membar$pack */
16389 static SEM_PC
16390 SEM_FN_NAME (frvbf,membar) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16392 #define FLD(f) abuf->fields.sfmt_empty.f
16393 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16394 int UNUSED written = 0;
16395 IADDR UNUSED pc = abuf->addr;
16396 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16398 ((void) 0); /*nop*/
16400 return vpc;
16401 #undef FLD
16404 /* lrai: lrai$pack $GRi,$GRk,$LRAE,$LRAD,$LRAS */
16406 static SEM_PC
16407 SEM_FN_NAME (frvbf,lrai) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16409 #define FLD(f) abuf->fields.sfmt_empty.f
16410 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16411 int UNUSED written = 0;
16412 IADDR UNUSED pc = abuf->addr;
16413 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16415 ((void) 0); /*nop*/
16417 return vpc;
16418 #undef FLD
16421 /* lrad: lrad$pack $GRi,$GRk,$LRAE,$LRAD,$LRAS */
16423 static SEM_PC
16424 SEM_FN_NAME (frvbf,lrad) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16426 #define FLD(f) abuf->fields.sfmt_empty.f
16427 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16428 int UNUSED written = 0;
16429 IADDR UNUSED pc = abuf->addr;
16430 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16432 ((void) 0); /*nop*/
16434 return vpc;
16435 #undef FLD
16438 /* tlbpr: tlbpr$pack $GRi,$GRj,$TLBPRopx,$TLBPRL */
16440 static SEM_PC
16441 SEM_FN_NAME (frvbf,tlbpr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16443 #define FLD(f) abuf->fields.sfmt_empty.f
16444 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16445 int UNUSED written = 0;
16446 IADDR UNUSED pc = abuf->addr;
16447 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16449 ((void) 0); /*nop*/
16451 return vpc;
16452 #undef FLD
16455 /* cop1: cop1$pack $s6_1,$CPRi,$CPRj,$CPRk */
16457 static SEM_PC
16458 SEM_FN_NAME (frvbf,cop1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16460 #define FLD(f) abuf->fields.sfmt_empty.f
16461 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16462 int UNUSED written = 0;
16463 IADDR UNUSED pc = abuf->addr;
16464 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16466 ((void) 0); /*nop*/
16468 return vpc;
16469 #undef FLD
16472 /* cop2: cop2$pack $s6_1,$CPRi,$CPRj,$CPRk */
16474 static SEM_PC
16475 SEM_FN_NAME (frvbf,cop2) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16477 #define FLD(f) abuf->fields.sfmt_empty.f
16478 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16479 int UNUSED written = 0;
16480 IADDR UNUSED pc = abuf->addr;
16481 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16483 ((void) 0); /*nop*/
16485 return vpc;
16486 #undef FLD
16489 /* clrgr: clrgr$pack $GRk */
16491 static SEM_PC
16492 SEM_FN_NAME (frvbf,clrgr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16494 #define FLD(f) abuf->fields.sfmt_swapi.f
16495 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16496 int UNUSED written = 0;
16497 IADDR UNUSED pc = abuf->addr;
16498 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16501 frv_ref_SI (GET_H_GR (FLD (f_GRk)));
16502 frvbf_clear_ne_flags (current_cpu, FLD (f_GRk), 0);
16505 return vpc;
16506 #undef FLD
16509 /* clrfr: clrfr$pack $FRk */
16511 static SEM_PC
16512 SEM_FN_NAME (frvbf,clrfr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16514 #define FLD(f) abuf->fields.sfmt_cfmadds.f
16515 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16516 int UNUSED written = 0;
16517 IADDR UNUSED pc = abuf->addr;
16518 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16521 frv_ref_SI (GET_H_FR (FLD (f_FRk)));
16522 frvbf_clear_ne_flags (current_cpu, FLD (f_FRk), 1);
16525 return vpc;
16526 #undef FLD
16529 /* clrga: clrga$pack */
16531 static SEM_PC
16532 SEM_FN_NAME (frvbf,clrga) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16534 #define FLD(f) abuf->fields.sfmt_empty.f
16535 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16536 int UNUSED written = 0;
16537 IADDR UNUSED pc = abuf->addr;
16538 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16540 frvbf_clear_ne_flags (current_cpu, -1, 0);
16542 return vpc;
16543 #undef FLD
16546 /* clrfa: clrfa$pack */
16548 static SEM_PC
16549 SEM_FN_NAME (frvbf,clrfa) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16551 #define FLD(f) abuf->fields.sfmt_empty.f
16552 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16553 int UNUSED written = 0;
16554 IADDR UNUSED pc = abuf->addr;
16555 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16557 frvbf_clear_ne_flags (current_cpu, -1, 1);
16559 return vpc;
16560 #undef FLD
16563 /* commitgr: commitgr$pack $GRk */
16565 static SEM_PC
16566 SEM_FN_NAME (frvbf,commitgr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16568 #define FLD(f) abuf->fields.sfmt_setlos.f
16569 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16570 int UNUSED written = 0;
16571 IADDR UNUSED pc = abuf->addr;
16572 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16574 frvbf_commit (current_cpu, FLD (f_GRk), 0);
16576 return vpc;
16577 #undef FLD
16580 /* commitfr: commitfr$pack $FRk */
16582 static SEM_PC
16583 SEM_FN_NAME (frvbf,commitfr) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16585 #define FLD(f) abuf->fields.sfmt_mhsethis.f
16586 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16587 int UNUSED written = 0;
16588 IADDR UNUSED pc = abuf->addr;
16589 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16591 frvbf_commit (current_cpu, FLD (f_FRk), 1);
16593 return vpc;
16594 #undef FLD
16597 /* commitga: commitga$pack */
16599 static SEM_PC
16600 SEM_FN_NAME (frvbf,commitga) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16602 #define FLD(f) abuf->fields.sfmt_empty.f
16603 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16604 int UNUSED written = 0;
16605 IADDR UNUSED pc = abuf->addr;
16606 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16608 frvbf_commit (current_cpu, -1, 0);
16610 return vpc;
16611 #undef FLD
16614 /* commitfa: commitfa$pack */
16616 static SEM_PC
16617 SEM_FN_NAME (frvbf,commitfa) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16619 #define FLD(f) abuf->fields.sfmt_empty.f
16620 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16621 int UNUSED written = 0;
16622 IADDR UNUSED pc = abuf->addr;
16623 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16625 frvbf_commit (current_cpu, -1, 1);
16627 return vpc;
16628 #undef FLD
16631 /* fitos: fitos$pack $FRintj,$FRk */
16633 static SEM_PC
16634 SEM_FN_NAME (frvbf,fitos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16636 #define FLD(f) abuf->fields.sfmt_fditos.f
16637 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16638 int UNUSED written = 0;
16639 IADDR UNUSED pc = abuf->addr;
16640 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16643 SF opval = CGEN_CPU_FPU (current_cpu)->ops->floatsisf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR_INT (FLD (f_FRj)));
16644 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16645 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16648 return vpc;
16649 #undef FLD
16652 /* fstoi: fstoi$pack $FRj,$FRintk */
16654 static SEM_PC
16655 SEM_FN_NAME (frvbf,fstoi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16657 #define FLD(f) abuf->fields.sfmt_fdstoi.f
16658 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16659 int UNUSED written = 0;
16660 IADDR UNUSED pc = abuf->addr;
16661 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16664 SI opval = CGEN_CPU_FPU (current_cpu)->ops->fixsfsi (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (FLD (f_FRj)));
16665 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
16666 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16669 return vpc;
16670 #undef FLD
16673 /* fitod: fitod$pack $FRintj,$FRdoublek */
16675 static SEM_PC
16676 SEM_FN_NAME (frvbf,fitod) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16678 #define FLD(f) abuf->fields.sfmt_fitod.f
16679 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16680 int UNUSED written = 0;
16681 IADDR UNUSED pc = abuf->addr;
16682 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16685 DF opval = CGEN_CPU_FPU (current_cpu)->ops->floatsidf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR_INT (FLD (f_FRj)));
16686 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
16687 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
16690 return vpc;
16691 #undef FLD
16694 /* fdtoi: fdtoi$pack $FRdoublej,$FRintk */
16696 static SEM_PC
16697 SEM_FN_NAME (frvbf,fdtoi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16699 #define FLD(f) abuf->fields.sfmt_fdtoi.f
16700 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16701 int UNUSED written = 0;
16702 IADDR UNUSED pc = abuf->addr;
16703 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16706 SI opval = CGEN_CPU_FPU (current_cpu)->ops->fixdfsi (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR_DOUBLE (FLD (f_FRj)));
16707 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
16708 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16711 return vpc;
16712 #undef FLD
16715 /* fditos: fditos$pack $FRintj,$FRk */
16717 static SEM_PC
16718 SEM_FN_NAME (frvbf,fditos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16720 #define FLD(f) abuf->fields.sfmt_fditos.f
16721 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16722 int UNUSED written = 0;
16723 IADDR UNUSED pc = abuf->addr;
16724 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16728 SF opval = CGEN_CPU_FPU (current_cpu)->ops->floatsisf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR_INT (FLD (f_FRj)));
16729 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16730 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16733 SF opval = CGEN_CPU_FPU (current_cpu)->ops->floatsisf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR_INT (ADDSI (FLD (f_FRj), 1)));
16734 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
16735 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16739 return vpc;
16740 #undef FLD
16743 /* fdstoi: fdstoi$pack $FRj,$FRintk */
16745 static SEM_PC
16746 SEM_FN_NAME (frvbf,fdstoi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16748 #define FLD(f) abuf->fields.sfmt_fdstoi.f
16749 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16750 int UNUSED written = 0;
16751 IADDR UNUSED pc = abuf->addr;
16752 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16756 SI opval = CGEN_CPU_FPU (current_cpu)->ops->fixsfsi (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (FLD (f_FRj)));
16757 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
16758 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16761 USI opval = CGEN_CPU_FPU (current_cpu)->ops->fixsfsi (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (ADDSI (FLD (f_FRj), 1)));
16762 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 1), opval);
16763 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16767 return vpc;
16768 #undef FLD
16771 /* nfditos: nfditos$pack $FRintj,$FRk */
16773 static SEM_PC
16774 SEM_FN_NAME (frvbf,nfditos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16776 #define FLD(f) abuf->fields.sfmt_fditos.f
16777 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16778 int UNUSED written = 0;
16779 IADDR UNUSED pc = abuf->addr;
16780 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16783 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
16785 SF opval = CGEN_CPU_FPU (current_cpu)->ops->floatsisf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR_INT (FLD (f_FRj)));
16786 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16787 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16789 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
16791 SF opval = CGEN_CPU_FPU (current_cpu)->ops->floatsisf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR_INT (ADDSI (FLD (f_FRj), 1)));
16792 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
16793 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16797 return vpc;
16798 #undef FLD
16801 /* nfdstoi: nfdstoi$pack $FRj,$FRintk */
16803 static SEM_PC
16804 SEM_FN_NAME (frvbf,nfdstoi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16806 #define FLD(f) abuf->fields.sfmt_fdstoi.f
16807 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16808 int UNUSED written = 0;
16809 IADDR UNUSED pc = abuf->addr;
16810 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16813 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
16815 SI opval = CGEN_CPU_FPU (current_cpu)->ops->fixsfsi (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (FLD (f_FRj)));
16816 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
16817 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16819 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
16821 USI opval = CGEN_CPU_FPU (current_cpu)->ops->fixsfsi (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (ADDSI (FLD (f_FRj), 1)));
16822 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 1), opval);
16823 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16827 return vpc;
16828 #undef FLD
16831 /* cfitos: cfitos$pack $FRintj,$FRk,$CCi,$cond */
16833 static SEM_PC
16834 SEM_FN_NAME (frvbf,cfitos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16836 #define FLD(f) abuf->fields.sfmt_cfitos.f
16837 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16838 int UNUSED written = 0;
16839 IADDR UNUSED pc = abuf->addr;
16840 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16842 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
16844 SF opval = CGEN_CPU_FPU (current_cpu)->ops->floatsisf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR_INT (FLD (f_FRj)));
16845 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16846 written |= (1 << 3);
16847 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16851 abuf->written = written;
16852 return vpc;
16853 #undef FLD
16856 /* cfstoi: cfstoi$pack $FRj,$FRintk,$CCi,$cond */
16858 static SEM_PC
16859 SEM_FN_NAME (frvbf,cfstoi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16861 #define FLD(f) abuf->fields.sfmt_cfstoi.f
16862 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16863 int UNUSED written = 0;
16864 IADDR UNUSED pc = abuf->addr;
16865 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16867 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
16869 SI opval = CGEN_CPU_FPU (current_cpu)->ops->fixsfsi (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (FLD (f_FRj)));
16870 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
16871 written |= (1 << 3);
16872 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16876 abuf->written = written;
16877 return vpc;
16878 #undef FLD
16881 /* nfitos: nfitos$pack $FRintj,$FRk */
16883 static SEM_PC
16884 SEM_FN_NAME (frvbf,nfitos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16886 #define FLD(f) abuf->fields.sfmt_fditos.f
16887 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16888 int UNUSED written = 0;
16889 IADDR UNUSED pc = abuf->addr;
16890 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16893 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
16895 SF opval = CGEN_CPU_FPU (current_cpu)->ops->floatsisf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR_INT (FLD (f_FRj)));
16896 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16897 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16901 return vpc;
16902 #undef FLD
16905 /* nfstoi: nfstoi$pack $FRj,$FRintk */
16907 static SEM_PC
16908 SEM_FN_NAME (frvbf,nfstoi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16910 #define FLD(f) abuf->fields.sfmt_fdstoi.f
16911 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16912 int UNUSED written = 0;
16913 IADDR UNUSED pc = abuf->addr;
16914 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16917 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
16919 SI opval = CGEN_CPU_FPU (current_cpu)->ops->fixsfsi (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (FLD (f_FRj)));
16920 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
16921 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
16925 return vpc;
16926 #undef FLD
16929 /* fmovs: fmovs$pack $FRj,$FRk */
16931 static SEM_PC
16932 SEM_FN_NAME (frvbf,fmovs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16934 #define FLD(f) abuf->fields.sfmt_cfmadds.f
16935 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16936 int UNUSED written = 0;
16937 IADDR UNUSED pc = abuf->addr;
16938 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16941 SF opval = GET_H_FR (FLD (f_FRj));
16942 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16943 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16946 return vpc;
16947 #undef FLD
16950 /* fmovd: fmovd$pack $FRdoublej,$FRdoublek */
16952 static SEM_PC
16953 SEM_FN_NAME (frvbf,fmovd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16955 #define FLD(f) abuf->fields.sfmt_fmaddd.f
16956 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16957 int UNUSED written = 0;
16958 IADDR UNUSED pc = abuf->addr;
16959 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16962 DF opval = GET_H_FR_DOUBLE (FLD (f_FRj));
16963 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
16964 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
16967 return vpc;
16968 #undef FLD
16971 /* fdmovs: fdmovs$pack $FRj,$FRk */
16973 static SEM_PC
16974 SEM_FN_NAME (frvbf,fdmovs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
16976 #define FLD(f) abuf->fields.sfmt_fdmadds.f
16977 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
16978 int UNUSED written = 0;
16979 IADDR UNUSED pc = abuf->addr;
16980 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
16984 SF opval = GET_H_FR (FLD (f_FRj));
16985 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
16986 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16989 SF opval = GET_H_FR (ADDSI (FLD (f_FRj), 1));
16990 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
16991 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
16995 return vpc;
16996 #undef FLD
16999 /* cfmovs: cfmovs$pack $FRj,$FRk,$CCi,$cond */
17001 static SEM_PC
17002 SEM_FN_NAME (frvbf,cfmovs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17004 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17005 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17006 int UNUSED written = 0;
17007 IADDR UNUSED pc = abuf->addr;
17008 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17010 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17012 SF opval = GET_H_FR (FLD (f_FRj));
17013 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17014 written |= (1 << 3);
17015 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17019 abuf->written = written;
17020 return vpc;
17021 #undef FLD
17024 /* fnegs: fnegs$pack $FRj,$FRk */
17026 static SEM_PC
17027 SEM_FN_NAME (frvbf,fnegs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17029 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17030 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17031 int UNUSED written = 0;
17032 IADDR UNUSED pc = abuf->addr;
17033 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17036 SF opval = CGEN_CPU_FPU (current_cpu)->ops->negsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17037 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17038 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17041 return vpc;
17042 #undef FLD
17045 /* fnegd: fnegd$pack $FRdoublej,$FRdoublek */
17047 static SEM_PC
17048 SEM_FN_NAME (frvbf,fnegd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17050 #define FLD(f) abuf->fields.sfmt_fmaddd.f
17051 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17052 int UNUSED written = 0;
17053 IADDR UNUSED pc = abuf->addr;
17054 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17057 DF opval = CGEN_CPU_FPU (current_cpu)->ops->negdf (CGEN_CPU_FPU (current_cpu), GET_H_FR_DOUBLE (FLD (f_FRj)));
17058 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17059 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17062 return vpc;
17063 #undef FLD
17066 /* fdnegs: fdnegs$pack $FRj,$FRk */
17068 static SEM_PC
17069 SEM_FN_NAME (frvbf,fdnegs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17071 #define FLD(f) abuf->fields.sfmt_fdmadds.f
17072 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17073 int UNUSED written = 0;
17074 IADDR UNUSED pc = abuf->addr;
17075 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17079 SF opval = CGEN_CPU_FPU (current_cpu)->ops->negsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17080 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17081 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17084 SF opval = CGEN_CPU_FPU (current_cpu)->ops->negsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
17085 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
17086 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17090 return vpc;
17091 #undef FLD
17094 /* cfnegs: cfnegs$pack $FRj,$FRk,$CCi,$cond */
17096 static SEM_PC
17097 SEM_FN_NAME (frvbf,cfnegs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17099 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17100 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17101 int UNUSED written = 0;
17102 IADDR UNUSED pc = abuf->addr;
17103 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17105 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17107 SF opval = CGEN_CPU_FPU (current_cpu)->ops->negsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17108 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17109 written |= (1 << 3);
17110 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17114 abuf->written = written;
17115 return vpc;
17116 #undef FLD
17119 /* fabss: fabss$pack $FRj,$FRk */
17121 static SEM_PC
17122 SEM_FN_NAME (frvbf,fabss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17124 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17125 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17126 int UNUSED written = 0;
17127 IADDR UNUSED pc = abuf->addr;
17128 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17131 SF opval = CGEN_CPU_FPU (current_cpu)->ops->abssf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17132 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17133 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17136 return vpc;
17137 #undef FLD
17140 /* fabsd: fabsd$pack $FRdoublej,$FRdoublek */
17142 static SEM_PC
17143 SEM_FN_NAME (frvbf,fabsd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17145 #define FLD(f) abuf->fields.sfmt_fmaddd.f
17146 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17147 int UNUSED written = 0;
17148 IADDR UNUSED pc = abuf->addr;
17149 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17152 DF opval = CGEN_CPU_FPU (current_cpu)->ops->absdf (CGEN_CPU_FPU (current_cpu), GET_H_FR_DOUBLE (FLD (f_FRj)));
17153 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17154 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17157 return vpc;
17158 #undef FLD
17161 /* fdabss: fdabss$pack $FRj,$FRk */
17163 static SEM_PC
17164 SEM_FN_NAME (frvbf,fdabss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17166 #define FLD(f) abuf->fields.sfmt_fdmadds.f
17167 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17168 int UNUSED written = 0;
17169 IADDR UNUSED pc = abuf->addr;
17170 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17174 SF opval = CGEN_CPU_FPU (current_cpu)->ops->abssf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17175 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17176 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17179 SF opval = CGEN_CPU_FPU (current_cpu)->ops->abssf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
17180 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
17181 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17185 return vpc;
17186 #undef FLD
17189 /* cfabss: cfabss$pack $FRj,$FRk,$CCi,$cond */
17191 static SEM_PC
17192 SEM_FN_NAME (frvbf,cfabss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17194 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17195 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17196 int UNUSED written = 0;
17197 IADDR UNUSED pc = abuf->addr;
17198 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17200 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17202 SF opval = CGEN_CPU_FPU (current_cpu)->ops->abssf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17203 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17204 written |= (1 << 3);
17205 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17209 abuf->written = written;
17210 return vpc;
17211 #undef FLD
17214 /* fsqrts: fsqrts$pack $FRj,$FRk */
17216 static SEM_PC
17217 SEM_FN_NAME (frvbf,fsqrts) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17219 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17220 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17221 int UNUSED written = 0;
17222 IADDR UNUSED pc = abuf->addr;
17223 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17226 SF opval = CGEN_CPU_FPU (current_cpu)->ops->sqrtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17227 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17228 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17231 return vpc;
17232 #undef FLD
17235 /* fdsqrts: fdsqrts$pack $FRj,$FRk */
17237 static SEM_PC
17238 SEM_FN_NAME (frvbf,fdsqrts) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17240 #define FLD(f) abuf->fields.sfmt_fdmadds.f
17241 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17242 int UNUSED written = 0;
17243 IADDR UNUSED pc = abuf->addr;
17244 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17248 SF opval = CGEN_CPU_FPU (current_cpu)->ops->sqrtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17249 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17250 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17253 SF opval = CGEN_CPU_FPU (current_cpu)->ops->sqrtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
17254 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
17255 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17259 return vpc;
17260 #undef FLD
17263 /* nfdsqrts: nfdsqrts$pack $FRj,$FRk */
17265 static SEM_PC
17266 SEM_FN_NAME (frvbf,nfdsqrts) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17268 #define FLD(f) abuf->fields.sfmt_fdmadds.f
17269 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17270 int UNUSED written = 0;
17271 IADDR UNUSED pc = abuf->addr;
17272 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17275 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
17277 SF opval = CGEN_CPU_FPU (current_cpu)->ops->sqrtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17278 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17279 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17281 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
17283 SF opval = CGEN_CPU_FPU (current_cpu)->ops->sqrtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
17284 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
17285 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17289 return vpc;
17290 #undef FLD
17293 /* fsqrtd: fsqrtd$pack $FRdoublej,$FRdoublek */
17295 static SEM_PC
17296 SEM_FN_NAME (frvbf,fsqrtd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17298 #define FLD(f) abuf->fields.sfmt_fmaddd.f
17299 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17300 int UNUSED written = 0;
17301 IADDR UNUSED pc = abuf->addr;
17302 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17305 DF opval = CGEN_CPU_FPU (current_cpu)->ops->sqrtdf (CGEN_CPU_FPU (current_cpu), GET_H_FR_DOUBLE (FLD (f_FRj)));
17306 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17307 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17310 return vpc;
17311 #undef FLD
17314 /* cfsqrts: cfsqrts$pack $FRj,$FRk,$CCi,$cond */
17316 static SEM_PC
17317 SEM_FN_NAME (frvbf,cfsqrts) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17319 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17320 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17321 int UNUSED written = 0;
17322 IADDR UNUSED pc = abuf->addr;
17323 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17325 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17327 SF opval = CGEN_CPU_FPU (current_cpu)->ops->sqrtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17328 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17329 written |= (1 << 3);
17330 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17334 abuf->written = written;
17335 return vpc;
17336 #undef FLD
17339 /* nfsqrts: nfsqrts$pack $FRj,$FRk */
17341 static SEM_PC
17342 SEM_FN_NAME (frvbf,nfsqrts) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17344 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17345 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17346 int UNUSED written = 0;
17347 IADDR UNUSED pc = abuf->addr;
17348 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17351 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
17353 SF opval = CGEN_CPU_FPU (current_cpu)->ops->sqrtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRj)));
17354 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17355 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17359 return vpc;
17360 #undef FLD
17363 /* fadds: fadds$pack $FRi,$FRj,$FRk */
17365 static SEM_PC
17366 SEM_FN_NAME (frvbf,fadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17368 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17369 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17370 int UNUSED written = 0;
17371 IADDR UNUSED pc = abuf->addr;
17372 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17375 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
17376 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17377 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17380 return vpc;
17381 #undef FLD
17384 /* fsubs: fsubs$pack $FRi,$FRj,$FRk */
17386 static SEM_PC
17387 SEM_FN_NAME (frvbf,fsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17389 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17390 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17391 int UNUSED written = 0;
17392 IADDR UNUSED pc = abuf->addr;
17393 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17396 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
17397 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17398 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17401 return vpc;
17402 #undef FLD
17405 /* fmuls: fmuls$pack $FRi,$FRj,$FRk */
17407 static SEM_PC
17408 SEM_FN_NAME (frvbf,fmuls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17410 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17411 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17412 int UNUSED written = 0;
17413 IADDR UNUSED pc = abuf->addr;
17414 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17417 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
17418 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17419 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17422 return vpc;
17423 #undef FLD
17426 /* fdivs: fdivs$pack $FRi,$FRj,$FRk */
17428 static SEM_PC
17429 SEM_FN_NAME (frvbf,fdivs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17431 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17432 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17433 int UNUSED written = 0;
17434 IADDR UNUSED pc = abuf->addr;
17435 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17438 SF opval = CGEN_CPU_FPU (current_cpu)->ops->divsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
17439 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17440 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17443 return vpc;
17444 #undef FLD
17447 /* faddd: faddd$pack $FRdoublei,$FRdoublej,$FRdoublek */
17449 static SEM_PC
17450 SEM_FN_NAME (frvbf,faddd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17452 #define FLD(f) abuf->fields.sfmt_fmaddd.f
17453 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17454 int UNUSED written = 0;
17455 IADDR UNUSED pc = abuf->addr;
17456 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17459 DF opval = CGEN_CPU_FPU (current_cpu)->ops->adddf (CGEN_CPU_FPU (current_cpu), GET_H_FR_DOUBLE (FLD (f_FRi)), GET_H_FR_DOUBLE (FLD (f_FRj)));
17460 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17461 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17464 return vpc;
17465 #undef FLD
17468 /* fsubd: fsubd$pack $FRdoublei,$FRdoublej,$FRdoublek */
17470 static SEM_PC
17471 SEM_FN_NAME (frvbf,fsubd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17473 #define FLD(f) abuf->fields.sfmt_fmaddd.f
17474 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17475 int UNUSED written = 0;
17476 IADDR UNUSED pc = abuf->addr;
17477 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17480 DF opval = CGEN_CPU_FPU (current_cpu)->ops->subdf (CGEN_CPU_FPU (current_cpu), GET_H_FR_DOUBLE (FLD (f_FRi)), GET_H_FR_DOUBLE (FLD (f_FRj)));
17481 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17482 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17485 return vpc;
17486 #undef FLD
17489 /* fmuld: fmuld$pack $FRdoublei,$FRdoublej,$FRdoublek */
17491 static SEM_PC
17492 SEM_FN_NAME (frvbf,fmuld) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17494 #define FLD(f) abuf->fields.sfmt_fmaddd.f
17495 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17496 int UNUSED written = 0;
17497 IADDR UNUSED pc = abuf->addr;
17498 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17501 DF opval = CGEN_CPU_FPU (current_cpu)->ops->muldf (CGEN_CPU_FPU (current_cpu), GET_H_FR_DOUBLE (FLD (f_FRi)), GET_H_FR_DOUBLE (FLD (f_FRj)));
17502 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17503 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17506 return vpc;
17507 #undef FLD
17510 /* fdivd: fdivd$pack $FRdoublei,$FRdoublej,$FRdoublek */
17512 static SEM_PC
17513 SEM_FN_NAME (frvbf,fdivd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17515 #define FLD(f) abuf->fields.sfmt_fmaddd.f
17516 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17517 int UNUSED written = 0;
17518 IADDR UNUSED pc = abuf->addr;
17519 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17522 DF opval = CGEN_CPU_FPU (current_cpu)->ops->divdf (CGEN_CPU_FPU (current_cpu), GET_H_FR_DOUBLE (FLD (f_FRi)), GET_H_FR_DOUBLE (FLD (f_FRj)));
17523 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
17524 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
17527 return vpc;
17528 #undef FLD
17531 /* cfadds: cfadds$pack $FRi,$FRj,$FRk,$CCi,$cond */
17533 static SEM_PC
17534 SEM_FN_NAME (frvbf,cfadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17536 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17537 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17538 int UNUSED written = 0;
17539 IADDR UNUSED pc = abuf->addr;
17540 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17542 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17544 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
17545 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17546 written |= (1 << 4);
17547 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17551 abuf->written = written;
17552 return vpc;
17553 #undef FLD
17556 /* cfsubs: cfsubs$pack $FRi,$FRj,$FRk,$CCi,$cond */
17558 static SEM_PC
17559 SEM_FN_NAME (frvbf,cfsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17561 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17562 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17563 int UNUSED written = 0;
17564 IADDR UNUSED pc = abuf->addr;
17565 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17567 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17569 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
17570 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17571 written |= (1 << 4);
17572 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17576 abuf->written = written;
17577 return vpc;
17578 #undef FLD
17581 /* cfmuls: cfmuls$pack $FRi,$FRj,$FRk,$CCi,$cond */
17583 static SEM_PC
17584 SEM_FN_NAME (frvbf,cfmuls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17586 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17587 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17588 int UNUSED written = 0;
17589 IADDR UNUSED pc = abuf->addr;
17590 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17592 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17594 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
17595 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17596 written |= (1 << 4);
17597 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17601 abuf->written = written;
17602 return vpc;
17603 #undef FLD
17606 /* cfdivs: cfdivs$pack $FRi,$FRj,$FRk,$CCi,$cond */
17608 static SEM_PC
17609 SEM_FN_NAME (frvbf,cfdivs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17611 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17612 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17613 int UNUSED written = 0;
17614 IADDR UNUSED pc = abuf->addr;
17615 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17617 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17619 SF opval = CGEN_CPU_FPU (current_cpu)->ops->divsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
17620 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17621 written |= (1 << 4);
17622 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17626 abuf->written = written;
17627 return vpc;
17628 #undef FLD
17631 /* nfadds: nfadds$pack $FRi,$FRj,$FRk */
17633 static SEM_PC
17634 SEM_FN_NAME (frvbf,nfadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17636 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17637 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17638 int UNUSED written = 0;
17639 IADDR UNUSED pc = abuf->addr;
17640 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17643 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
17645 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
17646 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17647 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17651 return vpc;
17652 #undef FLD
17655 /* nfsubs: nfsubs$pack $FRi,$FRj,$FRk */
17657 static SEM_PC
17658 SEM_FN_NAME (frvbf,nfsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17660 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17661 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17662 int UNUSED written = 0;
17663 IADDR UNUSED pc = abuf->addr;
17664 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17667 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
17669 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
17670 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17671 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17675 return vpc;
17676 #undef FLD
17679 /* nfmuls: nfmuls$pack $FRi,$FRj,$FRk */
17681 static SEM_PC
17682 SEM_FN_NAME (frvbf,nfmuls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17684 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17685 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17686 int UNUSED written = 0;
17687 IADDR UNUSED pc = abuf->addr;
17688 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17691 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
17693 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
17694 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17695 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17699 return vpc;
17700 #undef FLD
17703 /* nfdivs: nfdivs$pack $FRi,$FRj,$FRk */
17705 static SEM_PC
17706 SEM_FN_NAME (frvbf,nfdivs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17708 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17709 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17710 int UNUSED written = 0;
17711 IADDR UNUSED pc = abuf->addr;
17712 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17715 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
17717 SF opval = CGEN_CPU_FPU (current_cpu)->ops->divsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
17718 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17719 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17723 return vpc;
17724 #undef FLD
17727 /* fcmps: fcmps$pack $FRi,$FRj,$FCCi_2 */
17729 static SEM_PC
17730 SEM_FN_NAME (frvbf,fcmps) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17732 #define FLD(f) abuf->fields.sfmt_cfcmps.f
17733 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17734 int UNUSED written = 0;
17735 IADDR UNUSED pc = abuf->addr;
17736 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17738 if (CGEN_CPU_FPU (current_cpu)->ops->gtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)))) {
17740 UQI opval = 2;
17741 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17742 written |= (1 << 2);
17743 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17745 } else {
17746 if (CGEN_CPU_FPU (current_cpu)->ops->eqsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)))) {
17748 UQI opval = 8;
17749 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17750 written |= (1 << 2);
17751 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17753 } else {
17754 if (CGEN_CPU_FPU (current_cpu)->ops->ltsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)))) {
17756 UQI opval = 4;
17757 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17758 written |= (1 << 2);
17759 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17761 } else {
17763 UQI opval = 1;
17764 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17765 written |= (1 << 2);
17766 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17772 abuf->written = written;
17773 return vpc;
17774 #undef FLD
17777 /* fcmpd: fcmpd$pack $FRdoublei,$FRdoublej,$FCCi_2 */
17779 static SEM_PC
17780 SEM_FN_NAME (frvbf,fcmpd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17782 #define FLD(f) abuf->fields.sfmt_fcmpd.f
17783 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17784 int UNUSED written = 0;
17785 IADDR UNUSED pc = abuf->addr;
17786 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17788 if (CGEN_CPU_FPU (current_cpu)->ops->gtdf (CGEN_CPU_FPU (current_cpu), GET_H_FR_DOUBLE (FLD (f_FRi)), GET_H_FR_DOUBLE (FLD (f_FRj)))) {
17790 UQI opval = 2;
17791 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17792 written |= (1 << 2);
17793 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17795 } else {
17796 if (CGEN_CPU_FPU (current_cpu)->ops->eqdf (CGEN_CPU_FPU (current_cpu), GET_H_FR_DOUBLE (FLD (f_FRi)), GET_H_FR_DOUBLE (FLD (f_FRj)))) {
17798 UQI opval = 8;
17799 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17800 written |= (1 << 2);
17801 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17803 } else {
17804 if (CGEN_CPU_FPU (current_cpu)->ops->ltdf (CGEN_CPU_FPU (current_cpu), GET_H_FR_DOUBLE (FLD (f_FRi)), GET_H_FR_DOUBLE (FLD (f_FRj)))) {
17806 UQI opval = 4;
17807 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17808 written |= (1 << 2);
17809 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17811 } else {
17813 UQI opval = 1;
17814 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17815 written |= (1 << 2);
17816 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17822 abuf->written = written;
17823 return vpc;
17824 #undef FLD
17827 /* cfcmps: cfcmps$pack $FRi,$FRj,$FCCi_2,$CCi,$cond */
17829 static SEM_PC
17830 SEM_FN_NAME (frvbf,cfcmps) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17832 #define FLD(f) abuf->fields.sfmt_cfcmps.f
17833 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17834 int UNUSED written = 0;
17835 IADDR UNUSED pc = abuf->addr;
17836 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17838 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
17839 if (CGEN_CPU_FPU (current_cpu)->ops->gtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)))) {
17841 UQI opval = 2;
17842 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17843 written |= (1 << 4);
17844 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17846 } else {
17847 if (CGEN_CPU_FPU (current_cpu)->ops->eqsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)))) {
17849 UQI opval = 8;
17850 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17851 written |= (1 << 4);
17852 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17854 } else {
17855 if (CGEN_CPU_FPU (current_cpu)->ops->ltsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)))) {
17857 UQI opval = 4;
17858 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17859 written |= (1 << 4);
17860 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17862 } else {
17864 UQI opval = 1;
17865 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17866 written |= (1 << 4);
17867 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17874 abuf->written = written;
17875 return vpc;
17876 #undef FLD
17879 /* fdcmps: fdcmps$pack $FRi,$FRj,$FCCi_2 */
17881 static SEM_PC
17882 SEM_FN_NAME (frvbf,fdcmps) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17884 #define FLD(f) abuf->fields.sfmt_nfdcmps.f
17885 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17886 int UNUSED written = 0;
17887 IADDR UNUSED pc = abuf->addr;
17888 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17891 if (CGEN_CPU_FPU (current_cpu)->ops->gtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)))) {
17893 UQI opval = 2;
17894 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17895 written |= (1 << 7);
17896 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17898 } else {
17899 if (CGEN_CPU_FPU (current_cpu)->ops->eqsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)))) {
17901 UQI opval = 8;
17902 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17903 written |= (1 << 7);
17904 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17906 } else {
17907 if (CGEN_CPU_FPU (current_cpu)->ops->ltsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)))) {
17909 UQI opval = 4;
17910 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17911 written |= (1 << 7);
17912 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17914 } else {
17916 UQI opval = 1;
17917 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
17918 written |= (1 << 7);
17919 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17924 if (CGEN_CPU_FPU (current_cpu)->ops->gtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)))) {
17926 UQI opval = 2;
17927 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCi_2), 1)]), opval);
17928 written |= (1 << 8);
17929 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17931 } else {
17932 if (CGEN_CPU_FPU (current_cpu)->ops->eqsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)))) {
17934 UQI opval = 8;
17935 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCi_2), 1)]), opval);
17936 written |= (1 << 8);
17937 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17939 } else {
17940 if (CGEN_CPU_FPU (current_cpu)->ops->ltsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)))) {
17942 UQI opval = 4;
17943 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCi_2), 1)]), opval);
17944 written |= (1 << 8);
17945 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17947 } else {
17949 UQI opval = 1;
17950 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCi_2), 1)]), opval);
17951 written |= (1 << 8);
17952 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
17959 abuf->written = written;
17960 return vpc;
17961 #undef FLD
17964 /* fmadds: fmadds$pack $FRi,$FRj,$FRk */
17966 static SEM_PC
17967 SEM_FN_NAME (frvbf,fmadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17969 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17970 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17971 int UNUSED written = 0;
17972 IADDR UNUSED pc = abuf->addr;
17973 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17976 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_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj))), GET_H_FR (FLD (f_FRk)));
17977 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17978 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
17981 return vpc;
17982 #undef FLD
17985 /* fmsubs: fmsubs$pack $FRi,$FRj,$FRk */
17987 static SEM_PC
17988 SEM_FN_NAME (frvbf,fmsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
17990 #define FLD(f) abuf->fields.sfmt_cfmadds.f
17991 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
17992 int UNUSED written = 0;
17993 IADDR UNUSED pc = abuf->addr;
17994 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
17997 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj))), GET_H_FR (FLD (f_FRk)));
17998 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
17999 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18002 return vpc;
18003 #undef FLD
18006 /* fmaddd: fmaddd$pack $FRdoublei,$FRdoublej,$FRdoublek */
18008 static SEM_PC
18009 SEM_FN_NAME (frvbf,fmaddd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18011 #define FLD(f) abuf->fields.sfmt_fmaddd.f
18012 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18013 int UNUSED written = 0;
18014 IADDR UNUSED pc = abuf->addr;
18015 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18018 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_FR_DOUBLE (FLD (f_FRi)), GET_H_FR_DOUBLE (FLD (f_FRj))), GET_H_FR_DOUBLE (FLD (f_FRk)));
18019 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
18020 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
18023 return vpc;
18024 #undef FLD
18027 /* fmsubd: fmsubd$pack $FRdoublei,$FRdoublej,$FRdoublek */
18029 static SEM_PC
18030 SEM_FN_NAME (frvbf,fmsubd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18032 #define FLD(f) abuf->fields.sfmt_fmaddd.f
18033 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18034 int UNUSED written = 0;
18035 IADDR UNUSED pc = abuf->addr;
18036 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18039 DF opval = CGEN_CPU_FPU (current_cpu)->ops->subdf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->muldf (CGEN_CPU_FPU (current_cpu), GET_H_FR_DOUBLE (FLD (f_FRi)), GET_H_FR_DOUBLE (FLD (f_FRj))), GET_H_FR_DOUBLE (FLD (f_FRk)));
18040 sim_queue_fn_df_write (current_cpu, frvbf_h_fr_double_set, FLD (f_FRk), opval);
18041 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_double", 'f', opval);
18044 return vpc;
18045 #undef FLD
18048 /* fdmadds: fdmadds$pack $FRi,$FRj,$FRk */
18050 static SEM_PC
18051 SEM_FN_NAME (frvbf,fdmadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18053 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18054 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18055 int UNUSED written = 0;
18056 IADDR UNUSED pc = abuf->addr;
18057 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18061 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_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj))), GET_H_FR (FLD (f_FRk)));
18062 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18063 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18066 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_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1))), GET_H_FR (ADDSI (FLD (f_FRk), 1)));
18067 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18068 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18072 return vpc;
18073 #undef FLD
18076 /* nfdmadds: nfdmadds$pack $FRi,$FRj,$FRk */
18078 static SEM_PC
18079 SEM_FN_NAME (frvbf,nfdmadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18081 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18082 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18083 int UNUSED written = 0;
18084 IADDR UNUSED pc = abuf->addr;
18085 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18088 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18090 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_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj))), GET_H_FR (FLD (f_FRk)));
18091 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18092 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18094 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18096 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_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1))), GET_H_FR (ADDSI (FLD (f_FRk), 1)));
18097 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18098 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18102 return vpc;
18103 #undef FLD
18106 /* cfmadds: cfmadds$pack $FRi,$FRj,$FRk,$CCi,$cond */
18108 static SEM_PC
18109 SEM_FN_NAME (frvbf,cfmadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18111 #define FLD(f) abuf->fields.sfmt_cfmadds.f
18112 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18113 int UNUSED written = 0;
18114 IADDR UNUSED pc = abuf->addr;
18115 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18117 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
18119 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_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj))), GET_H_FR (FLD (f_FRk)));
18120 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18121 written |= (1 << 5);
18122 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18126 abuf->written = written;
18127 return vpc;
18128 #undef FLD
18131 /* cfmsubs: cfmsubs$pack $FRi,$FRj,$FRk,$CCi,$cond */
18133 static SEM_PC
18134 SEM_FN_NAME (frvbf,cfmsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18136 #define FLD(f) abuf->fields.sfmt_cfmadds.f
18137 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18138 int UNUSED written = 0;
18139 IADDR UNUSED pc = abuf->addr;
18140 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18142 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
18144 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj))), GET_H_FR (FLD (f_FRk)));
18145 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18146 written |= (1 << 5);
18147 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18151 abuf->written = written;
18152 return vpc;
18153 #undef FLD
18156 /* nfmadds: nfmadds$pack $FRi,$FRj,$FRk */
18158 static SEM_PC
18159 SEM_FN_NAME (frvbf,nfmadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18161 #define FLD(f) abuf->fields.sfmt_cfmadds.f
18162 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18163 int UNUSED written = 0;
18164 IADDR UNUSED pc = abuf->addr;
18165 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18168 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18170 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_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj))), GET_H_FR (FLD (f_FRk)));
18171 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18172 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18176 return vpc;
18177 #undef FLD
18180 /* nfmsubs: nfmsubs$pack $FRi,$FRj,$FRk */
18182 static SEM_PC
18183 SEM_FN_NAME (frvbf,nfmsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18185 #define FLD(f) abuf->fields.sfmt_cfmadds.f
18186 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18187 int UNUSED written = 0;
18188 IADDR UNUSED pc = abuf->addr;
18189 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18192 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18194 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj))), GET_H_FR (FLD (f_FRk)));
18195 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18196 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18200 return vpc;
18201 #undef FLD
18204 /* fmas: fmas$pack $FRi,$FRj,$FRk */
18206 static SEM_PC
18207 SEM_FN_NAME (frvbf,fmas) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18209 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18210 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18211 int UNUSED written = 0;
18212 IADDR UNUSED pc = abuf->addr;
18213 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18217 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
18218 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18219 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18222 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18223 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18224 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18228 return vpc;
18229 #undef FLD
18232 /* fmss: fmss$pack $FRi,$FRj,$FRk */
18234 static SEM_PC
18235 SEM_FN_NAME (frvbf,fmss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18237 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18238 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18239 int UNUSED written = 0;
18240 IADDR UNUSED pc = abuf->addr;
18241 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18245 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
18246 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18247 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18250 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18251 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18252 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18256 return vpc;
18257 #undef FLD
18260 /* fdmas: fdmas$pack $FRi,$FRj,$FRk */
18262 static SEM_PC
18263 SEM_FN_NAME (frvbf,fdmas) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18265 #define FLD(f) abuf->fields.sfmt_fdmas.f
18266 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18267 int UNUSED written = 0;
18268 IADDR UNUSED pc = abuf->addr;
18269 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18273 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
18274 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18275 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18278 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18279 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18280 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18283 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 2)), GET_H_FR (ADDSI (FLD (f_FRj), 2)));
18284 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 2), opval);
18285 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18288 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 3)), GET_H_FR (ADDSI (FLD (f_FRj), 3)));
18289 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 3), opval);
18290 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18294 return vpc;
18295 #undef FLD
18298 /* fdmss: fdmss$pack $FRi,$FRj,$FRk */
18300 static SEM_PC
18301 SEM_FN_NAME (frvbf,fdmss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18303 #define FLD(f) abuf->fields.sfmt_fdmas.f
18304 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18305 int UNUSED written = 0;
18306 IADDR UNUSED pc = abuf->addr;
18307 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18311 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
18312 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18313 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18316 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18317 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18318 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18321 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 2)), GET_H_FR (ADDSI (FLD (f_FRj), 2)));
18322 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 2), opval);
18323 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18326 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 3)), GET_H_FR (ADDSI (FLD (f_FRj), 3)));
18327 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 3), opval);
18328 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18332 return vpc;
18333 #undef FLD
18336 /* nfdmas: nfdmas$pack $FRi,$FRj,$FRk */
18338 static SEM_PC
18339 SEM_FN_NAME (frvbf,nfdmas) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18341 #define FLD(f) abuf->fields.sfmt_fdmas.f
18342 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18343 int UNUSED written = 0;
18344 IADDR UNUSED pc = abuf->addr;
18345 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18348 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18349 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18350 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 2));
18351 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 3));
18353 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
18354 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18355 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18358 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18359 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18360 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18363 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 2)), GET_H_FR (ADDSI (FLD (f_FRj), 2)));
18364 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 2), opval);
18365 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18368 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 3)), GET_H_FR (ADDSI (FLD (f_FRj), 3)));
18369 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 3), opval);
18370 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18374 return vpc;
18375 #undef FLD
18378 /* nfdmss: nfdmss$pack $FRi,$FRj,$FRk */
18380 static SEM_PC
18381 SEM_FN_NAME (frvbf,nfdmss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18383 #define FLD(f) abuf->fields.sfmt_fdmas.f
18384 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18385 int UNUSED written = 0;
18386 IADDR UNUSED pc = abuf->addr;
18387 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18390 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18391 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18392 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 2));
18393 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 3));
18395 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
18396 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18397 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18400 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18401 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18402 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18405 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 2)), GET_H_FR (ADDSI (FLD (f_FRj), 2)));
18406 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 2), opval);
18407 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18410 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 3)), GET_H_FR (ADDSI (FLD (f_FRj), 3)));
18411 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 3), opval);
18412 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18416 return vpc;
18417 #undef FLD
18420 /* cfmas: cfmas$pack $FRi,$FRj,$FRk,$CCi,$cond */
18422 static SEM_PC
18423 SEM_FN_NAME (frvbf,cfmas) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18425 #define FLD(f) abuf->fields.sfmt_cfmas.f
18426 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18427 int UNUSED written = 0;
18428 IADDR UNUSED pc = abuf->addr;
18429 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18431 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
18434 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
18435 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18436 written |= (1 << 9);
18437 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18440 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18441 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18442 written |= (1 << 10);
18443 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18448 abuf->written = written;
18449 return vpc;
18450 #undef FLD
18453 /* cfmss: cfmss$pack $FRi,$FRj,$FRk,$CCi,$cond */
18455 static SEM_PC
18456 SEM_FN_NAME (frvbf,cfmss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18458 #define FLD(f) abuf->fields.sfmt_cfmas.f
18459 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18460 int UNUSED written = 0;
18461 IADDR UNUSED pc = abuf->addr;
18462 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18464 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
18467 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
18468 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18469 written |= (1 << 9);
18470 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18473 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18474 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18475 written |= (1 << 10);
18476 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18481 abuf->written = written;
18482 return vpc;
18483 #undef FLD
18486 /* fmad: fmad$pack $FRi,$FRj,$FRk */
18488 static SEM_PC
18489 SEM_FN_NAME (frvbf,fmad) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18491 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18492 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18493 int UNUSED written = 0;
18494 IADDR UNUSED pc = abuf->addr;
18495 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18499 SF opval = CGEN_CPU_FPU (current_cpu)->ops->ftruncdfsf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, CGEN_CPU_FPU (current_cpu)->ops->muldf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->fextsfdf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (FLD (f_FRi))), CGEN_CPU_FPU (current_cpu)->ops->fextsfdf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (FLD (f_FRj)))));
18500 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18501 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18504 SF opval = CGEN_CPU_FPU (current_cpu)->ops->ftruncdfsf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, CGEN_CPU_FPU (current_cpu)->ops->adddf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->fextsfdf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (ADDSI (FLD (f_FRi), 1))), CGEN_CPU_FPU (current_cpu)->ops->fextsfdf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (ADDSI (FLD (f_FRj), 1)))));
18505 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18506 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18510 return vpc;
18511 #undef FLD
18514 /* fmsd: fmsd$pack $FRi,$FRj,$FRk */
18516 static SEM_PC
18517 SEM_FN_NAME (frvbf,fmsd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18519 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18520 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18521 int UNUSED written = 0;
18522 IADDR UNUSED pc = abuf->addr;
18523 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18527 SF opval = CGEN_CPU_FPU (current_cpu)->ops->ftruncdfsf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, CGEN_CPU_FPU (current_cpu)->ops->muldf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->fextsfdf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (FLD (f_FRi))), CGEN_CPU_FPU (current_cpu)->ops->fextsfdf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (FLD (f_FRj)))));
18528 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18529 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18532 SF opval = CGEN_CPU_FPU (current_cpu)->ops->ftruncdfsf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, CGEN_CPU_FPU (current_cpu)->ops->subdf (CGEN_CPU_FPU (current_cpu), CGEN_CPU_FPU (current_cpu)->ops->fextsfdf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (ADDSI (FLD (f_FRi), 1))), CGEN_CPU_FPU (current_cpu)->ops->fextsfdf (CGEN_CPU_FPU (current_cpu), FPCONV_DEFAULT, GET_H_FR (ADDSI (FLD (f_FRj), 1)))));
18533 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18534 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18538 return vpc;
18539 #undef FLD
18542 /* nfmas: nfmas$pack $FRi,$FRj,$FRk */
18544 static SEM_PC
18545 SEM_FN_NAME (frvbf,nfmas) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18547 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18548 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18549 int UNUSED written = 0;
18550 IADDR UNUSED pc = abuf->addr;
18551 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18554 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18556 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
18557 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18558 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18560 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18562 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18563 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18564 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18568 return vpc;
18569 #undef FLD
18572 /* nfmss: nfmss$pack $FRi,$FRj,$FRk */
18574 static SEM_PC
18575 SEM_FN_NAME (frvbf,nfmss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18577 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18578 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18579 int UNUSED written = 0;
18580 IADDR UNUSED pc = abuf->addr;
18581 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18584 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18586 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
18587 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18588 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18590 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18592 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18593 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18594 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18598 return vpc;
18599 #undef FLD
18602 /* fdadds: fdadds$pack $FRi,$FRj,$FRk */
18604 static SEM_PC
18605 SEM_FN_NAME (frvbf,fdadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18607 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18608 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18609 int UNUSED written = 0;
18610 IADDR UNUSED pc = abuf->addr;
18611 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18615 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
18616 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18617 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18620 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18621 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18622 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18626 return vpc;
18627 #undef FLD
18630 /* fdsubs: fdsubs$pack $FRi,$FRj,$FRk */
18632 static SEM_PC
18633 SEM_FN_NAME (frvbf,fdsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18635 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18636 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18637 int UNUSED written = 0;
18638 IADDR UNUSED pc = abuf->addr;
18639 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18643 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
18644 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18645 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18648 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18649 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18650 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18654 return vpc;
18655 #undef FLD
18658 /* fdmuls: fdmuls$pack $FRi,$FRj,$FRk */
18660 static SEM_PC
18661 SEM_FN_NAME (frvbf,fdmuls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18663 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18664 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18665 int UNUSED written = 0;
18666 IADDR UNUSED pc = abuf->addr;
18667 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18671 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
18672 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18673 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18676 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18677 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18678 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18682 return vpc;
18683 #undef FLD
18686 /* fddivs: fddivs$pack $FRi,$FRj,$FRk */
18688 static SEM_PC
18689 SEM_FN_NAME (frvbf,fddivs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18691 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18692 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18693 int UNUSED written = 0;
18694 IADDR UNUSED pc = abuf->addr;
18695 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18699 SF opval = CGEN_CPU_FPU (current_cpu)->ops->divsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
18700 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18701 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18704 SF opval = CGEN_CPU_FPU (current_cpu)->ops->divsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18705 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18706 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18710 return vpc;
18711 #undef FLD
18714 /* fdsads: fdsads$pack $FRi,$FRj,$FRk */
18716 static SEM_PC
18717 SEM_FN_NAME (frvbf,fdsads) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18719 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18720 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18721 int UNUSED written = 0;
18722 IADDR UNUSED pc = abuf->addr;
18723 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18727 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
18728 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18729 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18732 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18733 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18734 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18738 return vpc;
18739 #undef FLD
18742 /* fdmulcs: fdmulcs$pack $FRi,$FRj,$FRk */
18744 static SEM_PC
18745 SEM_FN_NAME (frvbf,fdmulcs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18747 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18748 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18749 int UNUSED written = 0;
18750 IADDR UNUSED pc = abuf->addr;
18751 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18755 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18756 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18757 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18760 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (FLD (f_FRj)));
18761 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18762 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18766 return vpc;
18767 #undef FLD
18770 /* nfdmulcs: nfdmulcs$pack $FRi,$FRj,$FRk */
18772 static SEM_PC
18773 SEM_FN_NAME (frvbf,nfdmulcs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18775 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18776 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18777 int UNUSED written = 0;
18778 IADDR UNUSED pc = abuf->addr;
18779 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18782 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18784 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18785 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18786 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18788 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18790 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (FLD (f_FRj)));
18791 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18792 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18796 return vpc;
18797 #undef FLD
18800 /* nfdadds: nfdadds$pack $FRi,$FRj,$FRk */
18802 static SEM_PC
18803 SEM_FN_NAME (frvbf,nfdadds) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18805 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18806 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18807 int UNUSED written = 0;
18808 IADDR UNUSED pc = abuf->addr;
18809 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18812 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18814 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
18815 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18816 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18818 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18820 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18821 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18822 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18826 return vpc;
18827 #undef FLD
18830 /* nfdsubs: nfdsubs$pack $FRi,$FRj,$FRk */
18832 static SEM_PC
18833 SEM_FN_NAME (frvbf,nfdsubs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18835 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18836 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18837 int UNUSED written = 0;
18838 IADDR UNUSED pc = abuf->addr;
18839 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18842 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18844 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
18845 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18846 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18848 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18850 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18851 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18852 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18856 return vpc;
18857 #undef FLD
18860 /* nfdmuls: nfdmuls$pack $FRi,$FRj,$FRk */
18862 static SEM_PC
18863 SEM_FN_NAME (frvbf,nfdmuls) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18865 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18866 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18867 int UNUSED written = 0;
18868 IADDR UNUSED pc = abuf->addr;
18869 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18872 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18874 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
18875 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18876 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18878 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18880 SF opval = CGEN_CPU_FPU (current_cpu)->ops->mulsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18881 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18882 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18886 return vpc;
18887 #undef FLD
18890 /* nfddivs: nfddivs$pack $FRi,$FRj,$FRk */
18892 static SEM_PC
18893 SEM_FN_NAME (frvbf,nfddivs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18895 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18896 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18897 int UNUSED written = 0;
18898 IADDR UNUSED pc = abuf->addr;
18899 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18902 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18904 SF opval = CGEN_CPU_FPU (current_cpu)->ops->divsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
18905 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18906 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18908 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18910 SF opval = CGEN_CPU_FPU (current_cpu)->ops->divsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18911 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18912 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18916 return vpc;
18917 #undef FLD
18920 /* nfdsads: nfdsads$pack $FRi,$FRj,$FRk */
18922 static SEM_PC
18923 SEM_FN_NAME (frvbf,nfdsads) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18925 #define FLD(f) abuf->fields.sfmt_fdmadds.f
18926 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18927 int UNUSED written = 0;
18928 IADDR UNUSED pc = abuf->addr;
18929 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18932 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18934 SF opval = CGEN_CPU_FPU (current_cpu)->ops->addsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)));
18935 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, FLD (f_FRk), opval);
18936 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18938 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18940 SF opval = CGEN_CPU_FPU (current_cpu)->ops->subsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)));
18941 sim_queue_fn_sf_write (current_cpu, frvbf_h_fr_set, ADDSI (FLD (f_FRk), 1), opval);
18942 CGEN_TRACE_RESULT (current_cpu, abuf, "fr", 'f', opval);
18946 return vpc;
18947 #undef FLD
18950 /* nfdcmps: nfdcmps$pack $FRi,$FRj,$FCCi_2 */
18952 static SEM_PC
18953 SEM_FN_NAME (frvbf,nfdcmps) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
18955 #define FLD(f) abuf->fields.sfmt_nfdcmps.f
18956 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
18957 int UNUSED written = 0;
18958 IADDR UNUSED pc = abuf->addr;
18959 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
18962 frvbf_set_ne_index (current_cpu, FLD (f_FRk));
18963 if (CGEN_CPU_FPU (current_cpu)->ops->gtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)))) {
18965 UQI opval = 2;
18966 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
18967 written |= (1 << 8);
18968 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
18970 } else {
18971 if (CGEN_CPU_FPU (current_cpu)->ops->eqsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)))) {
18973 UQI opval = 8;
18974 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
18975 written |= (1 << 8);
18976 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
18978 } else {
18979 if (CGEN_CPU_FPU (current_cpu)->ops->ltsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (FLD (f_FRi)), GET_H_FR (FLD (f_FRj)))) {
18981 UQI opval = 4;
18982 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
18983 written |= (1 << 8);
18984 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
18986 } else {
18988 UQI opval = 1;
18989 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCi_2)]), opval);
18990 written |= (1 << 8);
18991 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
18996 frvbf_set_ne_index (current_cpu, ADDSI (FLD (f_FRk), 1));
18997 if (CGEN_CPU_FPU (current_cpu)->ops->gtsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)))) {
18999 UQI opval = 2;
19000 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCi_2), 1)]), opval);
19001 written |= (1 << 9);
19002 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
19004 } else {
19005 if (CGEN_CPU_FPU (current_cpu)->ops->eqsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)))) {
19007 UQI opval = 8;
19008 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCi_2), 1)]), opval);
19009 written |= (1 << 9);
19010 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
19012 } else {
19013 if (CGEN_CPU_FPU (current_cpu)->ops->ltsf (CGEN_CPU_FPU (current_cpu), GET_H_FR (ADDSI (FLD (f_FRi), 1)), GET_H_FR (ADDSI (FLD (f_FRj), 1)))) {
19015 UQI opval = 4;
19016 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCi_2), 1)]), opval);
19017 written |= (1 << 9);
19018 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
19020 } else {
19022 UQI opval = 1;
19023 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCi_2), 1)]), opval);
19024 written |= (1 << 9);
19025 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
19032 abuf->written = written;
19033 return vpc;
19034 #undef FLD
19037 /* mhsetlos: mhsetlos$pack $u12,$FRklo */
19039 static SEM_PC
19040 SEM_FN_NAME (frvbf,mhsetlos) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19042 #define FLD(f) abuf->fields.sfmt_mhsetlos.f
19043 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19044 int UNUSED written = 0;
19045 IADDR UNUSED pc = abuf->addr;
19046 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19049 UHI opval = FLD (f_u12);
19050 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, FLD (f_FRk), opval);
19051 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19054 return vpc;
19055 #undef FLD
19058 /* mhsethis: mhsethis$pack $u12,$FRkhi */
19060 static SEM_PC
19061 SEM_FN_NAME (frvbf,mhsethis) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19063 #define FLD(f) abuf->fields.sfmt_mhsethis.f
19064 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19065 int UNUSED written = 0;
19066 IADDR UNUSED pc = abuf->addr;
19067 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19070 UHI opval = FLD (f_u12);
19071 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, FLD (f_FRk), opval);
19072 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19075 return vpc;
19076 #undef FLD
19079 /* mhdsets: mhdsets$pack $u12,$FRintk */
19081 static SEM_PC
19082 SEM_FN_NAME (frvbf,mhdsets) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19084 #define FLD(f) abuf->fields.sfmt_mhdsets.f
19085 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19086 int UNUSED written = 0;
19087 IADDR UNUSED pc = abuf->addr;
19088 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19092 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19093 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19094 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19097 UHI opval = FLD (f_u12);
19098 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
19099 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19102 UHI opval = FLD (f_u12);
19103 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
19104 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19108 return vpc;
19109 #undef FLD
19112 /* mhsetloh: mhsetloh$pack $s5,$FRklo */
19114 static SEM_PC
19115 SEM_FN_NAME (frvbf,mhsetloh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19117 #define FLD(f) abuf->fields.sfmt_mhsetloh.f
19118 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19119 int UNUSED written = 0;
19120 IADDR UNUSED pc = abuf->addr;
19121 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19124 HI tmp_tmp;
19125 tmp_tmp = GET_H_FR_LO (FLD (f_FRk));
19126 tmp_tmp = ANDHI (tmp_tmp, 2047);
19127 tmp_tmp = ORHI (tmp_tmp, SLLSI (ANDSI (FLD (f_s5), 31), 11));
19129 UHI opval = tmp_tmp;
19130 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, FLD (f_FRk), opval);
19131 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19135 return vpc;
19136 #undef FLD
19139 /* mhsethih: mhsethih$pack $s5,$FRkhi */
19141 static SEM_PC
19142 SEM_FN_NAME (frvbf,mhsethih) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19144 #define FLD(f) abuf->fields.sfmt_mhsethih.f
19145 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19146 int UNUSED written = 0;
19147 IADDR UNUSED pc = abuf->addr;
19148 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19151 HI tmp_tmp;
19152 tmp_tmp = GET_H_FR_HI (FLD (f_FRk));
19153 tmp_tmp = ANDHI (tmp_tmp, 2047);
19154 tmp_tmp = ORHI (tmp_tmp, SLLSI (ANDSI (FLD (f_s5), 31), 11));
19156 UHI opval = tmp_tmp;
19157 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, FLD (f_FRk), opval);
19158 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19162 return vpc;
19163 #undef FLD
19166 /* mhdseth: mhdseth$pack $s5,$FRintk */
19168 static SEM_PC
19169 SEM_FN_NAME (frvbf,mhdseth) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19171 #define FLD(f) abuf->fields.sfmt_mhdseth.f
19172 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19173 int UNUSED written = 0;
19174 IADDR UNUSED pc = abuf->addr;
19175 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19179 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19180 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19181 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19184 HI tmp_tmp;
19185 tmp_tmp = GET_H_FR_HI (ADDSI (FLD (f_FRk), 0));
19186 tmp_tmp = ANDHI (tmp_tmp, 2047);
19187 tmp_tmp = ORHI (tmp_tmp, SLLSI (ANDSI (FLD (f_s5), 31), 11));
19189 UHI opval = tmp_tmp;
19190 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
19191 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19195 HI tmp_tmp;
19196 tmp_tmp = GET_H_FR_LO (ADDSI (FLD (f_FRk), 0));
19197 tmp_tmp = ANDHI (tmp_tmp, 2047);
19198 tmp_tmp = ORHI (tmp_tmp, SLLSI (ANDSI (FLD (f_s5), 31), 11));
19200 UHI opval = tmp_tmp;
19201 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
19202 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19207 return vpc;
19208 #undef FLD
19211 /* mand: mand$pack $FRinti,$FRintj,$FRintk */
19213 static SEM_PC
19214 SEM_FN_NAME (frvbf,mand) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19216 #define FLD(f) abuf->fields.sfmt_mwcut.f
19217 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19218 int UNUSED written = 0;
19219 IADDR UNUSED pc = abuf->addr;
19220 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19223 SI opval = ANDSI (GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19224 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19225 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19228 return vpc;
19229 #undef FLD
19232 /* mor: mor$pack $FRinti,$FRintj,$FRintk */
19234 static SEM_PC
19235 SEM_FN_NAME (frvbf,mor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19237 #define FLD(f) abuf->fields.sfmt_mwcut.f
19238 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19239 int UNUSED written = 0;
19240 IADDR UNUSED pc = abuf->addr;
19241 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19244 SI opval = ORSI (GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19245 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19246 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19249 return vpc;
19250 #undef FLD
19253 /* mxor: mxor$pack $FRinti,$FRintj,$FRintk */
19255 static SEM_PC
19256 SEM_FN_NAME (frvbf,mxor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19258 #define FLD(f) abuf->fields.sfmt_mwcut.f
19259 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19260 int UNUSED written = 0;
19261 IADDR UNUSED pc = abuf->addr;
19262 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19265 SI opval = XORSI (GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19266 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19267 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19270 return vpc;
19271 #undef FLD
19274 /* cmand: cmand$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
19276 static SEM_PC
19277 SEM_FN_NAME (frvbf,cmand) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19279 #define FLD(f) abuf->fields.sfmt_cmand.f
19280 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19281 int UNUSED written = 0;
19282 IADDR UNUSED pc = abuf->addr;
19283 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19285 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
19287 SI opval = ANDSI (GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19288 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19289 written |= (1 << 4);
19290 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19294 abuf->written = written;
19295 return vpc;
19296 #undef FLD
19299 /* cmor: cmor$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
19301 static SEM_PC
19302 SEM_FN_NAME (frvbf,cmor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19304 #define FLD(f) abuf->fields.sfmt_cmand.f
19305 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19306 int UNUSED written = 0;
19307 IADDR UNUSED pc = abuf->addr;
19308 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19310 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
19312 SI opval = ORSI (GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19313 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19314 written |= (1 << 4);
19315 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19319 abuf->written = written;
19320 return vpc;
19321 #undef FLD
19324 /* cmxor: cmxor$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
19326 static SEM_PC
19327 SEM_FN_NAME (frvbf,cmxor) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19329 #define FLD(f) abuf->fields.sfmt_cmand.f
19330 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19331 int UNUSED written = 0;
19332 IADDR UNUSED pc = abuf->addr;
19333 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19335 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
19337 SI opval = XORSI (GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19338 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19339 written |= (1 << 4);
19340 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19344 abuf->written = written;
19345 return vpc;
19346 #undef FLD
19349 /* mnot: mnot$pack $FRintj,$FRintk */
19351 static SEM_PC
19352 SEM_FN_NAME (frvbf,mnot) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19354 #define FLD(f) abuf->fields.sfmt_mcut.f
19355 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19356 int UNUSED written = 0;
19357 IADDR UNUSED pc = abuf->addr;
19358 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19361 SI opval = INVSI (GET_H_FR_INT (FLD (f_FRj)));
19362 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19363 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19366 return vpc;
19367 #undef FLD
19370 /* cmnot: cmnot$pack $FRintj,$FRintk,$CCi,$cond */
19372 static SEM_PC
19373 SEM_FN_NAME (frvbf,cmnot) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19375 #define FLD(f) abuf->fields.sfmt_cmand.f
19376 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19377 int UNUSED written = 0;
19378 IADDR UNUSED pc = abuf->addr;
19379 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19381 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
19383 SI opval = INVSI (GET_H_FR_INT (FLD (f_FRj)));
19384 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19385 written |= (1 << 3);
19386 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19390 abuf->written = written;
19391 return vpc;
19392 #undef FLD
19395 /* mrotli: mrotli$pack $FRinti,$u6,$FRintk */
19397 static SEM_PC
19398 SEM_FN_NAME (frvbf,mrotli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19400 #define FLD(f) abuf->fields.sfmt_mwcuti.f
19401 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19402 int UNUSED written = 0;
19403 IADDR UNUSED pc = abuf->addr;
19404 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19407 SI opval = ROLSI (GET_H_FR_INT (FLD (f_FRi)), ANDSI (FLD (f_u6), 31));
19408 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19409 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19412 return vpc;
19413 #undef FLD
19416 /* mrotri: mrotri$pack $FRinti,$u6,$FRintk */
19418 static SEM_PC
19419 SEM_FN_NAME (frvbf,mrotri) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19421 #define FLD(f) abuf->fields.sfmt_mwcuti.f
19422 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19423 int UNUSED written = 0;
19424 IADDR UNUSED pc = abuf->addr;
19425 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19428 SI opval = RORSI (GET_H_FR_INT (FLD (f_FRi)), ANDSI (FLD (f_u6), 31));
19429 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19430 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19433 return vpc;
19434 #undef FLD
19437 /* mwcut: mwcut$pack $FRinti,$FRintj,$FRintk */
19439 static SEM_PC
19440 SEM_FN_NAME (frvbf,mwcut) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19442 #define FLD(f) abuf->fields.sfmt_mwcut.f
19443 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19444 int UNUSED written = 0;
19445 IADDR UNUSED pc = abuf->addr;
19446 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19449 SI opval = frvbf_cut (current_cpu, GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (ADDSI (FLD (f_FRi), 1)), GET_H_FR_INT (FLD (f_FRj)));
19450 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19451 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19454 return vpc;
19455 #undef FLD
19458 /* mwcuti: mwcuti$pack $FRinti,$u6,$FRintk */
19460 static SEM_PC
19461 SEM_FN_NAME (frvbf,mwcuti) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19463 #define FLD(f) abuf->fields.sfmt_mwcuti.f
19464 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19465 int UNUSED written = 0;
19466 IADDR UNUSED pc = abuf->addr;
19467 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19470 SI opval = frvbf_cut (current_cpu, GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (ADDSI (FLD (f_FRi), 1)), FLD (f_u6));
19471 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19472 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19475 return vpc;
19476 #undef FLD
19479 /* mcut: mcut$pack $ACC40Si,$FRintj,$FRintk */
19481 static SEM_PC
19482 SEM_FN_NAME (frvbf,mcut) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19484 #define FLD(f) abuf->fields.sfmt_mcut.f
19485 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19486 int UNUSED written = 0;
19487 IADDR UNUSED pc = abuf->addr;
19488 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19491 SI opval = frvbf_media_cut (current_cpu, GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_FR_INT (FLD (f_FRj)));
19492 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19493 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19496 return vpc;
19497 #undef FLD
19500 /* mcuti: mcuti$pack $ACC40Si,$s6,$FRintk */
19502 static SEM_PC
19503 SEM_FN_NAME (frvbf,mcuti) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19505 #define FLD(f) abuf->fields.sfmt_mcuti.f
19506 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19507 int UNUSED written = 0;
19508 IADDR UNUSED pc = abuf->addr;
19509 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19512 SI opval = frvbf_media_cut (current_cpu, GET_H_ACC40S (FLD (f_ACC40Si)), FLD (f_s6));
19513 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19514 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19517 return vpc;
19518 #undef FLD
19521 /* mcutss: mcutss$pack $ACC40Si,$FRintj,$FRintk */
19523 static SEM_PC
19524 SEM_FN_NAME (frvbf,mcutss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19526 #define FLD(f) abuf->fields.sfmt_mcut.f
19527 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19528 int UNUSED written = 0;
19529 IADDR UNUSED pc = abuf->addr;
19530 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19533 SI opval = frvbf_media_cut_ss (current_cpu, GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_FR_INT (FLD (f_FRj)));
19534 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19535 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19538 return vpc;
19539 #undef FLD
19542 /* mcutssi: mcutssi$pack $ACC40Si,$s6,$FRintk */
19544 static SEM_PC
19545 SEM_FN_NAME (frvbf,mcutssi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19547 #define FLD(f) abuf->fields.sfmt_mcuti.f
19548 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19549 int UNUSED written = 0;
19550 IADDR UNUSED pc = abuf->addr;
19551 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19554 SI opval = frvbf_media_cut_ss (current_cpu, GET_H_ACC40S (FLD (f_ACC40Si)), FLD (f_s6));
19555 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19556 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19559 return vpc;
19560 #undef FLD
19563 /* mdcutssi: mdcutssi$pack $ACC40Si,$s6,$FRintkeven */
19565 static SEM_PC
19566 SEM_FN_NAME (frvbf,mdcutssi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19568 #define FLD(f) abuf->fields.sfmt_mdcutssi.f
19569 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19570 int UNUSED written = 0;
19571 IADDR UNUSED pc = abuf->addr;
19572 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19574 if (ANDSI (FLD (f_ACC40Si), SUBSI (2, 1))) {
19575 frvbf_media_acc_not_aligned (current_cpu);
19576 } else {
19577 if (ANDSI (FLD (f_FRk), SUBSI (2, 1))) {
19578 frvbf_media_register_not_aligned (current_cpu);
19579 } else {
19582 SI opval = frvbf_media_cut_ss (current_cpu, GET_H_ACC40S (FLD (f_ACC40Si)), FLD (f_s6));
19583 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19584 written |= (1 << 5);
19585 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19588 USI opval = frvbf_media_cut_ss (current_cpu, GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 1)), FLD (f_s6));
19589 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 1), opval);
19590 written |= (1 << 6);
19591 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19597 abuf->written = written;
19598 return vpc;
19599 #undef FLD
19602 /* maveh: maveh$pack $FRinti,$FRintj,$FRintk */
19604 static SEM_PC
19605 SEM_FN_NAME (frvbf,maveh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19607 #define FLD(f) abuf->fields.sfmt_mwcut.f
19608 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19609 int UNUSED written = 0;
19610 IADDR UNUSED pc = abuf->addr;
19611 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19614 SI opval = frvbf_media_average (current_cpu, GET_H_FR_INT (FLD (f_FRi)), GET_H_FR_INT (FLD (f_FRj)));
19615 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19616 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19619 return vpc;
19620 #undef FLD
19623 /* msllhi: msllhi$pack $FRinti,$u6,$FRintk */
19625 static SEM_PC
19626 SEM_FN_NAME (frvbf,msllhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19628 #define FLD(f) abuf->fields.sfmt_msllhi.f
19629 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19630 int UNUSED written = 0;
19631 IADDR UNUSED pc = abuf->addr;
19632 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19636 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
19637 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
19638 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19641 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19642 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19643 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19646 UHI opval = SLLHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), ANDSI (FLD (f_u6), 15));
19647 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
19648 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19651 UHI opval = SLLHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), ANDSI (FLD (f_u6), 15));
19652 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
19653 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19657 return vpc;
19658 #undef FLD
19661 /* msrlhi: msrlhi$pack $FRinti,$u6,$FRintk */
19663 static SEM_PC
19664 SEM_FN_NAME (frvbf,msrlhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19666 #define FLD(f) abuf->fields.sfmt_msllhi.f
19667 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19668 int UNUSED written = 0;
19669 IADDR UNUSED pc = abuf->addr;
19670 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19674 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
19675 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
19676 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19679 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19680 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19681 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19684 UHI opval = SRLHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), ANDSI (FLD (f_u6), 15));
19685 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
19686 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19689 UHI opval = SRLHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), ANDSI (FLD (f_u6), 15));
19690 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
19691 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19695 return vpc;
19696 #undef FLD
19699 /* msrahi: msrahi$pack $FRinti,$u6,$FRintk */
19701 static SEM_PC
19702 SEM_FN_NAME (frvbf,msrahi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19704 #define FLD(f) abuf->fields.sfmt_msllhi.f
19705 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19706 int UNUSED written = 0;
19707 IADDR UNUSED pc = abuf->addr;
19708 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19712 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
19713 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
19714 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19717 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19718 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19719 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19722 UHI opval = SRAHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), ANDSI (FLD (f_u6), 15));
19723 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
19724 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19727 UHI opval = SRAHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), ANDSI (FLD (f_u6), 15));
19728 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
19729 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19733 return vpc;
19734 #undef FLD
19737 /* mdrotli: mdrotli$pack $FRintieven,$s6,$FRintkeven */
19739 static SEM_PC
19740 SEM_FN_NAME (frvbf,mdrotli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19742 #define FLD(f) abuf->fields.sfmt_mdrotli.f
19743 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19744 int UNUSED written = 0;
19745 IADDR UNUSED pc = abuf->addr;
19746 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19748 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1)))) {
19749 frvbf_media_register_not_aligned (current_cpu);
19750 } else {
19753 SI opval = ROLSI (GET_H_FR_INT (FLD (f_FRi)), ANDSI (FLD (f_s6), 31));
19754 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19755 written |= (1 << 5);
19756 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19759 USI opval = ROLSI (GET_H_FR_INT (ADDSI (FLD (f_FRi), 1)), ANDSI (FLD (f_s6), 31));
19760 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, ADDSI (FLD (f_FRk), 1), opval);
19761 written |= (1 << 6);
19762 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19767 abuf->written = written;
19768 return vpc;
19769 #undef FLD
19772 /* mcplhi: mcplhi$pack $FRinti,$u6,$FRintk */
19774 static SEM_PC
19775 SEM_FN_NAME (frvbf,mcplhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19777 #define FLD(f) abuf->fields.sfmt_mcplhi.f
19778 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19779 int UNUSED written = 0;
19780 IADDR UNUSED pc = abuf->addr;
19781 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19784 HI tmp_arg1;
19785 HI tmp_arg2;
19786 HI tmp_shift;
19788 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
19789 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
19790 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19793 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19794 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19795 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19797 tmp_shift = ANDSI (FLD (f_u6), 15);
19798 tmp_arg1 = SLLHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), tmp_shift);
19799 if (NEHI (tmp_shift, 0)) {
19801 tmp_arg2 = GET_H_FR_HI (ADDSI (FLD (f_FRi), 1));
19802 tmp_arg2 = SRLHI (SLLHI (tmp_arg2, SUBSI (15, tmp_shift)), SUBSI (15, tmp_shift));
19803 tmp_arg1 = ORHI (tmp_arg1, tmp_arg2);
19807 UHI opval = tmp_arg1;
19808 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
19809 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19813 return vpc;
19814 #undef FLD
19817 /* mcpli: mcpli$pack $FRinti,$u6,$FRintk */
19819 static SEM_PC
19820 SEM_FN_NAME (frvbf,mcpli) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19822 #define FLD(f) abuf->fields.sfmt_mwcuti.f
19823 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19824 int UNUSED written = 0;
19825 IADDR UNUSED pc = abuf->addr;
19826 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19829 SI tmp_tmp;
19830 SI tmp_shift;
19831 tmp_shift = ANDSI (FLD (f_u6), 31);
19832 tmp_tmp = SLLSI (GET_H_FR_INT (FLD (f_FRi)), tmp_shift);
19833 if (NESI (tmp_shift, 0)) {
19835 SI tmp_tmp1;
19836 tmp_tmp1 = SRLSI (SLLSI (GET_H_FR_INT (ADDSI (FLD (f_FRi), 1)), SUBSI (31, tmp_shift)), SUBSI (31, tmp_shift));
19837 tmp_tmp = ORSI (tmp_tmp, tmp_tmp1);
19841 SI opval = tmp_tmp;
19842 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19843 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19847 return vpc;
19848 #undef FLD
19851 /* msaths: msaths$pack $FRinti,$FRintj,$FRintk */
19853 static SEM_PC
19854 SEM_FN_NAME (frvbf,msaths) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19856 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
19857 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19858 int UNUSED written = 0;
19859 IADDR UNUSED pc = abuf->addr;
19860 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19863 HI tmp_argihi;
19864 HI tmp_argilo;
19865 HI tmp_argjhi;
19866 HI tmp_argjlo;
19868 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
19869 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
19870 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
19871 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
19873 if (GTHI (tmp_argihi, tmp_argjhi)) {
19875 UHI opval = tmp_argjhi;
19876 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
19877 written |= (1 << 9);
19878 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19880 } else {
19881 if (LTHI (tmp_argihi, INVHI (tmp_argjhi))) {
19883 UHI opval = INVHI (tmp_argjhi);
19884 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
19885 written |= (1 << 9);
19886 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19888 } else {
19890 UHI opval = tmp_argihi;
19891 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
19892 written |= (1 << 9);
19893 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19897 if (GTHI (tmp_argilo, tmp_argjlo)) {
19899 UHI opval = tmp_argjlo;
19900 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
19901 written |= (1 << 10);
19902 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19904 } else {
19905 if (LTHI (tmp_argilo, INVHI (tmp_argjlo))) {
19907 UHI opval = INVHI (tmp_argjlo);
19908 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
19909 written |= (1 << 10);
19910 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19912 } else {
19914 UHI opval = tmp_argilo;
19915 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
19916 written |= (1 << 10);
19917 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19923 abuf->written = written;
19924 return vpc;
19925 #undef FLD
19928 /* mqsaths: mqsaths$pack $FRintieven,$FRintjeven,$FRintkeven */
19930 static SEM_PC
19931 SEM_FN_NAME (frvbf,mqsaths) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
19933 #define FLD(f) abuf->fields.sfmt_cmqaddhss.f
19934 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
19935 int UNUSED written = 0;
19936 IADDR UNUSED pc = abuf->addr;
19937 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
19939 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
19940 frvbf_media_register_not_aligned (current_cpu);
19941 } else {
19943 HI tmp_argihi;
19944 HI tmp_argilo;
19945 HI tmp_argjhi;
19946 HI tmp_argjlo;
19948 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
19949 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
19950 written |= (1 << 14);
19951 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
19954 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
19955 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
19956 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
19957 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
19959 if (GTHI (tmp_argihi, tmp_argjhi)) {
19961 UHI opval = tmp_argjhi;
19962 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
19963 written |= (1 << 15);
19964 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19966 } else {
19967 if (LTHI (tmp_argihi, INVHI (tmp_argjhi))) {
19969 UHI opval = INVHI (tmp_argjhi);
19970 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
19971 written |= (1 << 15);
19972 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19974 } else {
19976 UHI opval = tmp_argihi;
19977 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
19978 written |= (1 << 15);
19979 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
19983 if (GTHI (tmp_argilo, tmp_argjlo)) {
19985 UHI opval = tmp_argjlo;
19986 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
19987 written |= (1 << 17);
19988 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19990 } else {
19991 if (LTHI (tmp_argilo, INVHI (tmp_argjlo))) {
19993 UHI opval = INVHI (tmp_argjlo);
19994 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
19995 written |= (1 << 17);
19996 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
19998 } else {
20000 UHI opval = tmp_argilo;
20001 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20002 written |= (1 << 17);
20003 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20008 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20009 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20010 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20011 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20013 if (GTHI (tmp_argihi, tmp_argjhi)) {
20015 UHI opval = tmp_argjhi;
20016 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
20017 written |= (1 << 16);
20018 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20020 } else {
20021 if (LTHI (tmp_argihi, INVHI (tmp_argjhi))) {
20023 UHI opval = INVHI (tmp_argjhi);
20024 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
20025 written |= (1 << 16);
20026 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20028 } else {
20030 UHI opval = tmp_argihi;
20031 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
20032 written |= (1 << 16);
20033 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20037 if (GTHI (tmp_argilo, tmp_argjlo)) {
20039 UHI opval = tmp_argjlo;
20040 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
20041 written |= (1 << 18);
20042 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20044 } else {
20045 if (LTHI (tmp_argilo, INVHI (tmp_argjlo))) {
20047 UHI opval = INVHI (tmp_argjlo);
20048 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
20049 written |= (1 << 18);
20050 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20052 } else {
20054 UHI opval = tmp_argilo;
20055 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
20056 written |= (1 << 18);
20057 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20064 abuf->written = written;
20065 return vpc;
20066 #undef FLD
20069 /* msathu: msathu$pack $FRinti,$FRintj,$FRintk */
20071 static SEM_PC
20072 SEM_FN_NAME (frvbf,msathu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20074 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
20075 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20076 int UNUSED written = 0;
20077 IADDR UNUSED pc = abuf->addr;
20078 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20081 UHI tmp_argihi;
20082 UHI tmp_argilo;
20083 UHI tmp_argjhi;
20084 UHI tmp_argjlo;
20086 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20087 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20088 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20089 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20091 if (GTUHI (tmp_argihi, tmp_argjhi)) {
20093 UHI opval = tmp_argjhi;
20094 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20095 written |= (1 << 9);
20096 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20098 } else {
20100 UHI opval = tmp_argihi;
20101 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20102 written |= (1 << 9);
20103 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20106 if (GTUHI (tmp_argilo, tmp_argjlo)) {
20108 UHI opval = tmp_argjlo;
20109 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20110 written |= (1 << 10);
20111 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20113 } else {
20115 UHI opval = tmp_argilo;
20116 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20117 written |= (1 << 10);
20118 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20123 abuf->written = written;
20124 return vpc;
20125 #undef FLD
20128 /* mcmpsh: mcmpsh$pack $FRinti,$FRintj,$FCCk */
20130 static SEM_PC
20131 SEM_FN_NAME (frvbf,mcmpsh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20133 #define FLD(f) abuf->fields.sfmt_mcmpsh.f
20134 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20135 int UNUSED written = 0;
20136 IADDR UNUSED pc = abuf->addr;
20137 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20139 if (ANDSI (FLD (f_FCCk), SUBSI (2, 1))) {
20140 frvbf_media_cr_not_aligned (current_cpu);
20141 } else {
20143 HI tmp_argihi;
20144 HI tmp_argilo;
20145 HI tmp_argjhi;
20146 HI tmp_argjlo;
20148 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20149 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20150 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20151 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20153 if (GTHI (tmp_argihi, tmp_argjhi)) {
20155 UQI opval = 2;
20156 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20157 written |= (1 << 9);
20158 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20160 } else {
20161 if (EQHI (tmp_argihi, tmp_argjhi)) {
20163 UQI opval = 8;
20164 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20165 written |= (1 << 9);
20166 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20168 } else {
20169 if (LTHI (tmp_argihi, tmp_argjhi)) {
20171 UQI opval = 4;
20172 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20173 written |= (1 << 9);
20174 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20176 } else {
20178 UQI opval = 1;
20179 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20180 written |= (1 << 9);
20181 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20186 if (GTHI (tmp_argilo, tmp_argjlo)) {
20188 UQI opval = 2;
20189 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCk), 1)]), opval);
20190 written |= (1 << 10);
20191 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20193 } else {
20194 if (EQHI (tmp_argilo, tmp_argjlo)) {
20196 UQI opval = 8;
20197 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCk), 1)]), opval);
20198 written |= (1 << 10);
20199 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20201 } else {
20202 if (LTHI (tmp_argilo, tmp_argjlo)) {
20204 UQI opval = 4;
20205 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCk), 1)]), opval);
20206 written |= (1 << 10);
20207 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20209 } else {
20211 UQI opval = 1;
20212 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCk), 1)]), opval);
20213 written |= (1 << 10);
20214 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20222 abuf->written = written;
20223 return vpc;
20224 #undef FLD
20227 /* mcmpuh: mcmpuh$pack $FRinti,$FRintj,$FCCk */
20229 static SEM_PC
20230 SEM_FN_NAME (frvbf,mcmpuh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20232 #define FLD(f) abuf->fields.sfmt_mcmpsh.f
20233 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20234 int UNUSED written = 0;
20235 IADDR UNUSED pc = abuf->addr;
20236 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20238 if (ANDSI (FLD (f_FCCk), SUBSI (2, 1))) {
20239 frvbf_media_cr_not_aligned (current_cpu);
20240 } else {
20242 UHI tmp_argihi;
20243 UHI tmp_argilo;
20244 UHI tmp_argjhi;
20245 UHI tmp_argjlo;
20247 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20248 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20249 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20250 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20252 if (GTUHI (tmp_argihi, tmp_argjhi)) {
20254 UQI opval = 2;
20255 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20256 written |= (1 << 9);
20257 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20259 } else {
20260 if (EQHI (tmp_argihi, tmp_argjhi)) {
20262 UQI opval = 8;
20263 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20264 written |= (1 << 9);
20265 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20267 } else {
20268 if (LTUHI (tmp_argihi, tmp_argjhi)) {
20270 UQI opval = 4;
20271 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20272 written |= (1 << 9);
20273 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20275 } else {
20277 UQI opval = 1;
20278 sim_queue_qi_write (current_cpu, & CPU (h_fccr[FLD (f_FCCk)]), opval);
20279 written |= (1 << 9);
20280 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20285 if (GTUHI (tmp_argilo, tmp_argjlo)) {
20287 UQI opval = 2;
20288 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCk), 1)]), opval);
20289 written |= (1 << 10);
20290 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20292 } else {
20293 if (EQHI (tmp_argilo, tmp_argjlo)) {
20295 UQI opval = 8;
20296 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCk), 1)]), opval);
20297 written |= (1 << 10);
20298 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20300 } else {
20301 if (LTUHI (tmp_argilo, tmp_argjlo)) {
20303 UQI opval = 4;
20304 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCk), 1)]), opval);
20305 written |= (1 << 10);
20306 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20308 } else {
20310 UQI opval = 1;
20311 sim_queue_qi_write (current_cpu, & CPU (h_fccr[ADDSI (FLD (f_FCCk), 1)]), opval);
20312 written |= (1 << 10);
20313 CGEN_TRACE_RESULT (current_cpu, abuf, "fccr", 'x', opval);
20321 abuf->written = written;
20322 return vpc;
20323 #undef FLD
20326 /* mabshs: mabshs$pack $FRintj,$FRintk */
20328 static SEM_PC
20329 SEM_FN_NAME (frvbf,mabshs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20331 #define FLD(f) abuf->fields.sfmt_mabshs.f
20332 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20333 int UNUSED written = 0;
20334 IADDR UNUSED pc = abuf->addr;
20335 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20338 HI tmp_arghi;
20339 HI tmp_arglo;
20341 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
20342 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
20343 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
20346 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
20347 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
20348 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
20350 tmp_arghi = GET_H_FR_HI (ADDSI (FLD (f_FRj), 0));
20351 tmp_arglo = GET_H_FR_LO (ADDSI (FLD (f_FRj), 0));
20352 if (GTDI (ABSDI (EXTHIDI (tmp_arghi)), 32767)) {
20355 UHI opval = 32767;
20356 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20357 written |= (1 << 8);
20358 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20360 frvbf_media_overflow (current_cpu, 8);
20362 } else {
20363 if (LTDI (ABSDI (EXTHIDI (tmp_arghi)), -32768)) {
20366 UHI opval = -32768;
20367 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20368 written |= (1 << 8);
20369 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20371 frvbf_media_overflow (current_cpu, 8);
20373 } else {
20375 UHI opval = ABSDI (EXTHIDI (tmp_arghi));
20376 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20377 written |= (1 << 8);
20378 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20382 if (GTDI (ABSDI (EXTHIDI (tmp_arglo)), 32767)) {
20385 UHI opval = 32767;
20386 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20387 written |= (1 << 9);
20388 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20390 frvbf_media_overflow (current_cpu, 4);
20392 } else {
20393 if (LTDI (ABSDI (EXTHIDI (tmp_arglo)), -32768)) {
20396 UHI opval = -32768;
20397 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20398 written |= (1 << 9);
20399 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20401 frvbf_media_overflow (current_cpu, 4);
20403 } else {
20405 UHI opval = ABSDI (EXTHIDI (tmp_arglo));
20406 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20407 written |= (1 << 9);
20408 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20414 abuf->written = written;
20415 return vpc;
20416 #undef FLD
20419 /* maddhss: maddhss$pack $FRinti,$FRintj,$FRintk */
20421 static SEM_PC
20422 SEM_FN_NAME (frvbf,maddhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20424 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
20425 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20426 int UNUSED written = 0;
20427 IADDR UNUSED pc = abuf->addr;
20428 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20431 HI tmp_argihi;
20432 HI tmp_argilo;
20433 HI tmp_argjhi;
20434 HI tmp_argjlo;
20436 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20437 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20438 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20439 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20442 DI tmp_tmp;
20443 tmp_tmp = ADDDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
20444 if (GTDI (tmp_tmp, 32767)) {
20447 UHI opval = 32767;
20448 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20449 written |= (1 << 9);
20450 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20452 frvbf_media_overflow (current_cpu, 8);
20454 } else {
20455 if (LTDI (tmp_tmp, -32768)) {
20458 UHI opval = -32768;
20459 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20460 written |= (1 << 9);
20461 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20463 frvbf_media_overflow (current_cpu, 8);
20465 } else {
20467 UHI opval = tmp_tmp;
20468 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20469 written |= (1 << 9);
20470 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20476 DI tmp_tmp;
20477 tmp_tmp = ADDDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
20478 if (GTDI (tmp_tmp, 32767)) {
20481 UHI opval = 32767;
20482 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20483 written |= (1 << 10);
20484 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20486 frvbf_media_overflow (current_cpu, 4);
20488 } else {
20489 if (LTDI (tmp_tmp, -32768)) {
20492 UHI opval = -32768;
20493 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20494 written |= (1 << 10);
20495 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20497 frvbf_media_overflow (current_cpu, 4);
20499 } else {
20501 UHI opval = tmp_tmp;
20502 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20503 written |= (1 << 10);
20504 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20511 abuf->written = written;
20512 return vpc;
20513 #undef FLD
20516 /* maddhus: maddhus$pack $FRinti,$FRintj,$FRintk */
20518 static SEM_PC
20519 SEM_FN_NAME (frvbf,maddhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20521 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
20522 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20523 int UNUSED written = 0;
20524 IADDR UNUSED pc = abuf->addr;
20525 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20528 UHI tmp_argihi;
20529 UHI tmp_argilo;
20530 UHI tmp_argjhi;
20531 UHI tmp_argjlo;
20533 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20534 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20535 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20536 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20539 DI tmp_tmp;
20540 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
20541 if (GTDI (tmp_tmp, 65535)) {
20544 UHI opval = 65535;
20545 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20546 written |= (1 << 9);
20547 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20549 frvbf_media_overflow (current_cpu, 8);
20551 } else {
20552 if (LTDI (tmp_tmp, 0)) {
20555 UHI opval = 0;
20556 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20557 written |= (1 << 9);
20558 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20560 frvbf_media_overflow (current_cpu, 8);
20562 } else {
20564 UHI opval = tmp_tmp;
20565 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20566 written |= (1 << 9);
20567 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20573 DI tmp_tmp;
20574 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
20575 if (GTDI (tmp_tmp, 65535)) {
20578 UHI opval = 65535;
20579 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20580 written |= (1 << 10);
20581 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20583 frvbf_media_overflow (current_cpu, 4);
20585 } else {
20586 if (LTDI (tmp_tmp, 0)) {
20589 UHI opval = 0;
20590 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20591 written |= (1 << 10);
20592 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20594 frvbf_media_overflow (current_cpu, 4);
20596 } else {
20598 UHI opval = tmp_tmp;
20599 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20600 written |= (1 << 10);
20601 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20608 abuf->written = written;
20609 return vpc;
20610 #undef FLD
20613 /* msubhss: msubhss$pack $FRinti,$FRintj,$FRintk */
20615 static SEM_PC
20616 SEM_FN_NAME (frvbf,msubhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20618 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
20619 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20620 int UNUSED written = 0;
20621 IADDR UNUSED pc = abuf->addr;
20622 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20625 HI tmp_argihi;
20626 HI tmp_argilo;
20627 HI tmp_argjhi;
20628 HI tmp_argjlo;
20630 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20631 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20632 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20633 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20636 DI tmp_tmp;
20637 tmp_tmp = SUBDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
20638 if (GTDI (tmp_tmp, 32767)) {
20641 UHI opval = 32767;
20642 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20643 written |= (1 << 9);
20644 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20646 frvbf_media_overflow (current_cpu, 8);
20648 } else {
20649 if (LTDI (tmp_tmp, -32768)) {
20652 UHI opval = -32768;
20653 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20654 written |= (1 << 9);
20655 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20657 frvbf_media_overflow (current_cpu, 8);
20659 } else {
20661 UHI opval = tmp_tmp;
20662 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20663 written |= (1 << 9);
20664 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20670 DI tmp_tmp;
20671 tmp_tmp = SUBDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
20672 if (GTDI (tmp_tmp, 32767)) {
20675 UHI opval = 32767;
20676 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20677 written |= (1 << 10);
20678 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20680 frvbf_media_overflow (current_cpu, 4);
20682 } else {
20683 if (LTDI (tmp_tmp, -32768)) {
20686 UHI opval = -32768;
20687 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20688 written |= (1 << 10);
20689 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20691 frvbf_media_overflow (current_cpu, 4);
20693 } else {
20695 UHI opval = tmp_tmp;
20696 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20697 written |= (1 << 10);
20698 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20705 abuf->written = written;
20706 return vpc;
20707 #undef FLD
20710 /* msubhus: msubhus$pack $FRinti,$FRintj,$FRintk */
20712 static SEM_PC
20713 SEM_FN_NAME (frvbf,msubhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20715 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
20716 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20717 int UNUSED written = 0;
20718 IADDR UNUSED pc = abuf->addr;
20719 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20722 UHI tmp_argihi;
20723 UHI tmp_argilo;
20724 UHI tmp_argjhi;
20725 UHI tmp_argjlo;
20727 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20728 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20729 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20730 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20733 DI tmp_tmp;
20734 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
20735 if (GTDI (tmp_tmp, 65535)) {
20738 UHI opval = 65535;
20739 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20740 written |= (1 << 9);
20741 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20743 frvbf_media_overflow (current_cpu, 8);
20745 } else {
20746 if (LTDI (tmp_tmp, 0)) {
20749 UHI opval = 0;
20750 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20751 written |= (1 << 9);
20752 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20754 frvbf_media_overflow (current_cpu, 8);
20756 } else {
20758 UHI opval = tmp_tmp;
20759 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20760 written |= (1 << 9);
20761 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20767 DI tmp_tmp;
20768 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
20769 if (GTDI (tmp_tmp, 65535)) {
20772 UHI opval = 65535;
20773 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20774 written |= (1 << 10);
20775 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20777 frvbf_media_overflow (current_cpu, 4);
20779 } else {
20780 if (LTDI (tmp_tmp, 0)) {
20783 UHI opval = 0;
20784 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20785 written |= (1 << 10);
20786 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20788 frvbf_media_overflow (current_cpu, 4);
20790 } else {
20792 UHI opval = tmp_tmp;
20793 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20794 written |= (1 << 10);
20795 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20802 abuf->written = written;
20803 return vpc;
20804 #undef FLD
20807 /* cmaddhss: cmaddhss$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
20809 static SEM_PC
20810 SEM_FN_NAME (frvbf,cmaddhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20812 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
20813 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20814 int UNUSED written = 0;
20815 IADDR UNUSED pc = abuf->addr;
20816 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20818 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
20820 HI tmp_argihi;
20821 HI tmp_argilo;
20822 HI tmp_argjhi;
20823 HI tmp_argjlo;
20825 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20826 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20827 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20828 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20831 DI tmp_tmp;
20832 tmp_tmp = ADDDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
20833 if (GTDI (tmp_tmp, 32767)) {
20836 UHI opval = 32767;
20837 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20838 written |= (1 << 11);
20839 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20841 frvbf_media_overflow (current_cpu, 8);
20843 } else {
20844 if (LTDI (tmp_tmp, -32768)) {
20847 UHI opval = -32768;
20848 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20849 written |= (1 << 11);
20850 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20852 frvbf_media_overflow (current_cpu, 8);
20854 } else {
20856 UHI opval = tmp_tmp;
20857 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20858 written |= (1 << 11);
20859 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20865 DI tmp_tmp;
20866 tmp_tmp = ADDDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
20867 if (GTDI (tmp_tmp, 32767)) {
20870 UHI opval = 32767;
20871 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20872 written |= (1 << 12);
20873 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20875 frvbf_media_overflow (current_cpu, 4);
20877 } else {
20878 if (LTDI (tmp_tmp, -32768)) {
20881 UHI opval = -32768;
20882 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20883 written |= (1 << 12);
20884 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20886 frvbf_media_overflow (current_cpu, 4);
20888 } else {
20890 UHI opval = tmp_tmp;
20891 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20892 written |= (1 << 12);
20893 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20901 abuf->written = written;
20902 return vpc;
20903 #undef FLD
20906 /* cmaddhus: cmaddhus$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
20908 static SEM_PC
20909 SEM_FN_NAME (frvbf,cmaddhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
20911 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
20912 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
20913 int UNUSED written = 0;
20914 IADDR UNUSED pc = abuf->addr;
20915 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
20917 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
20919 UHI tmp_argihi;
20920 UHI tmp_argilo;
20921 UHI tmp_argjhi;
20922 UHI tmp_argjlo;
20924 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20925 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
20926 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20927 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
20930 DI tmp_tmp;
20931 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
20932 if (GTDI (tmp_tmp, 65535)) {
20935 UHI opval = 65535;
20936 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20937 written |= (1 << 11);
20938 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20940 frvbf_media_overflow (current_cpu, 8);
20942 } else {
20943 if (LTDI (tmp_tmp, 0)) {
20946 UHI opval = 0;
20947 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20948 written |= (1 << 11);
20949 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20951 frvbf_media_overflow (current_cpu, 8);
20953 } else {
20955 UHI opval = tmp_tmp;
20956 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
20957 written |= (1 << 11);
20958 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
20964 DI tmp_tmp;
20965 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
20966 if (GTDI (tmp_tmp, 65535)) {
20969 UHI opval = 65535;
20970 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20971 written |= (1 << 12);
20972 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20974 frvbf_media_overflow (current_cpu, 4);
20976 } else {
20977 if (LTDI (tmp_tmp, 0)) {
20980 UHI opval = 0;
20981 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20982 written |= (1 << 12);
20983 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
20985 frvbf_media_overflow (current_cpu, 4);
20987 } else {
20989 UHI opval = tmp_tmp;
20990 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
20991 written |= (1 << 12);
20992 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21000 abuf->written = written;
21001 return vpc;
21002 #undef FLD
21005 /* cmsubhss: cmsubhss$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
21007 static SEM_PC
21008 SEM_FN_NAME (frvbf,cmsubhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21010 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
21011 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21012 int UNUSED written = 0;
21013 IADDR UNUSED pc = abuf->addr;
21014 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21016 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
21018 HI tmp_argihi;
21019 HI tmp_argilo;
21020 HI tmp_argjhi;
21021 HI tmp_argjlo;
21023 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21024 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21025 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21026 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21029 DI tmp_tmp;
21030 tmp_tmp = SUBDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
21031 if (GTDI (tmp_tmp, 32767)) {
21034 UHI opval = 32767;
21035 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
21036 written |= (1 << 11);
21037 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21039 frvbf_media_overflow (current_cpu, 8);
21041 } else {
21042 if (LTDI (tmp_tmp, -32768)) {
21045 UHI opval = -32768;
21046 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
21047 written |= (1 << 11);
21048 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21050 frvbf_media_overflow (current_cpu, 8);
21052 } else {
21054 UHI opval = tmp_tmp;
21055 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
21056 written |= (1 << 11);
21057 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21063 DI tmp_tmp;
21064 tmp_tmp = SUBDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
21065 if (GTDI (tmp_tmp, 32767)) {
21068 UHI opval = 32767;
21069 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
21070 written |= (1 << 12);
21071 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21073 frvbf_media_overflow (current_cpu, 4);
21075 } else {
21076 if (LTDI (tmp_tmp, -32768)) {
21079 UHI opval = -32768;
21080 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
21081 written |= (1 << 12);
21082 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21084 frvbf_media_overflow (current_cpu, 4);
21086 } else {
21088 UHI opval = tmp_tmp;
21089 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
21090 written |= (1 << 12);
21091 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21099 abuf->written = written;
21100 return vpc;
21101 #undef FLD
21104 /* cmsubhus: cmsubhus$pack $FRinti,$FRintj,$FRintk,$CCi,$cond */
21106 static SEM_PC
21107 SEM_FN_NAME (frvbf,cmsubhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21109 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
21110 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21111 int UNUSED written = 0;
21112 IADDR UNUSED pc = abuf->addr;
21113 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21115 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
21117 UHI tmp_argihi;
21118 UHI tmp_argilo;
21119 UHI tmp_argjhi;
21120 UHI tmp_argjlo;
21122 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21123 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21124 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21125 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21128 DI tmp_tmp;
21129 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
21130 if (GTDI (tmp_tmp, 65535)) {
21133 UHI opval = 65535;
21134 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
21135 written |= (1 << 11);
21136 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21138 frvbf_media_overflow (current_cpu, 8);
21140 } else {
21141 if (LTDI (tmp_tmp, 0)) {
21144 UHI opval = 0;
21145 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
21146 written |= (1 << 11);
21147 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21149 frvbf_media_overflow (current_cpu, 8);
21151 } else {
21153 UHI opval = tmp_tmp;
21154 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
21155 written |= (1 << 11);
21156 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21162 DI tmp_tmp;
21163 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
21164 if (GTDI (tmp_tmp, 65535)) {
21167 UHI opval = 65535;
21168 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
21169 written |= (1 << 12);
21170 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21172 frvbf_media_overflow (current_cpu, 4);
21174 } else {
21175 if (LTDI (tmp_tmp, 0)) {
21178 UHI opval = 0;
21179 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
21180 written |= (1 << 12);
21181 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21183 frvbf_media_overflow (current_cpu, 4);
21185 } else {
21187 UHI opval = tmp_tmp;
21188 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
21189 written |= (1 << 12);
21190 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21198 abuf->written = written;
21199 return vpc;
21200 #undef FLD
21203 /* mqaddhss: mqaddhss$pack $FRintieven,$FRintjeven,$FRintkeven */
21205 static SEM_PC
21206 SEM_FN_NAME (frvbf,mqaddhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21208 #define FLD(f) abuf->fields.sfmt_cmqaddhss.f
21209 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21210 int UNUSED written = 0;
21211 IADDR UNUSED pc = abuf->addr;
21212 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21214 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
21215 frvbf_media_register_not_aligned (current_cpu);
21216 } else {
21218 HI tmp_argihi;
21219 HI tmp_argilo;
21220 HI tmp_argjhi;
21221 HI tmp_argjlo;
21223 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
21224 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
21225 written |= (1 << 14);
21226 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
21229 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21230 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21231 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21232 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21235 DI tmp_tmp;
21236 tmp_tmp = ADDDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
21237 if (GTDI (tmp_tmp, 32767)) {
21240 UHI opval = 32767;
21241 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
21242 written |= (1 << 15);
21243 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21245 frvbf_media_overflow (current_cpu, 8);
21247 } else {
21248 if (LTDI (tmp_tmp, -32768)) {
21251 UHI opval = -32768;
21252 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
21253 written |= (1 << 15);
21254 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21256 frvbf_media_overflow (current_cpu, 8);
21258 } else {
21260 UHI opval = tmp_tmp;
21261 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
21262 written |= (1 << 15);
21263 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21269 DI tmp_tmp;
21270 tmp_tmp = ADDDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
21271 if (GTDI (tmp_tmp, 32767)) {
21274 UHI opval = 32767;
21275 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
21276 written |= (1 << 17);
21277 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21279 frvbf_media_overflow (current_cpu, 4);
21281 } else {
21282 if (LTDI (tmp_tmp, -32768)) {
21285 UHI opval = -32768;
21286 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
21287 written |= (1 << 17);
21288 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21290 frvbf_media_overflow (current_cpu, 4);
21292 } else {
21294 UHI opval = tmp_tmp;
21295 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
21296 written |= (1 << 17);
21297 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21303 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21304 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21305 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21306 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21309 DI tmp_tmp;
21310 tmp_tmp = ADDDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
21311 if (GTDI (tmp_tmp, 32767)) {
21314 UHI opval = 32767;
21315 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
21316 written |= (1 << 16);
21317 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21319 frvbf_media_overflow (current_cpu, 2);
21321 } else {
21322 if (LTDI (tmp_tmp, -32768)) {
21325 UHI opval = -32768;
21326 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
21327 written |= (1 << 16);
21328 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21330 frvbf_media_overflow (current_cpu, 2);
21332 } else {
21334 UHI opval = tmp_tmp;
21335 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
21336 written |= (1 << 16);
21337 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21343 DI tmp_tmp;
21344 tmp_tmp = ADDDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
21345 if (GTDI (tmp_tmp, 32767)) {
21348 UHI opval = 32767;
21349 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
21350 written |= (1 << 18);
21351 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21353 frvbf_media_overflow (current_cpu, 1);
21355 } else {
21356 if (LTDI (tmp_tmp, -32768)) {
21359 UHI opval = -32768;
21360 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
21361 written |= (1 << 18);
21362 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21364 frvbf_media_overflow (current_cpu, 1);
21366 } else {
21368 UHI opval = tmp_tmp;
21369 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
21370 written |= (1 << 18);
21371 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21379 abuf->written = written;
21380 return vpc;
21381 #undef FLD
21384 /* mqaddhus: mqaddhus$pack $FRintieven,$FRintjeven,$FRintkeven */
21386 static SEM_PC
21387 SEM_FN_NAME (frvbf,mqaddhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21389 #define FLD(f) abuf->fields.sfmt_cmqaddhss.f
21390 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21391 int UNUSED written = 0;
21392 IADDR UNUSED pc = abuf->addr;
21393 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21395 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
21396 frvbf_media_register_not_aligned (current_cpu);
21397 } else {
21399 UHI tmp_argihi;
21400 UHI tmp_argilo;
21401 UHI tmp_argjhi;
21402 UHI tmp_argjlo;
21404 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
21405 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
21406 written |= (1 << 14);
21407 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
21410 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21411 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21412 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21413 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21416 DI tmp_tmp;
21417 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
21418 if (GTDI (tmp_tmp, 65535)) {
21421 UHI opval = 65535;
21422 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
21423 written |= (1 << 15);
21424 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21426 frvbf_media_overflow (current_cpu, 8);
21428 } else {
21429 if (LTDI (tmp_tmp, 0)) {
21432 UHI opval = 0;
21433 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
21434 written |= (1 << 15);
21435 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21437 frvbf_media_overflow (current_cpu, 8);
21439 } else {
21441 UHI opval = tmp_tmp;
21442 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
21443 written |= (1 << 15);
21444 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21450 DI tmp_tmp;
21451 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
21452 if (GTDI (tmp_tmp, 65535)) {
21455 UHI opval = 65535;
21456 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
21457 written |= (1 << 17);
21458 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21460 frvbf_media_overflow (current_cpu, 4);
21462 } else {
21463 if (LTDI (tmp_tmp, 0)) {
21466 UHI opval = 0;
21467 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
21468 written |= (1 << 17);
21469 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21471 frvbf_media_overflow (current_cpu, 4);
21473 } else {
21475 UHI opval = tmp_tmp;
21476 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
21477 written |= (1 << 17);
21478 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21484 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21485 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21486 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21487 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21490 DI tmp_tmp;
21491 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
21492 if (GTDI (tmp_tmp, 65535)) {
21495 UHI opval = 65535;
21496 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
21497 written |= (1 << 16);
21498 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21500 frvbf_media_overflow (current_cpu, 2);
21502 } else {
21503 if (LTDI (tmp_tmp, 0)) {
21506 UHI opval = 0;
21507 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
21508 written |= (1 << 16);
21509 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21511 frvbf_media_overflow (current_cpu, 2);
21513 } else {
21515 UHI opval = tmp_tmp;
21516 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
21517 written |= (1 << 16);
21518 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21524 DI tmp_tmp;
21525 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
21526 if (GTDI (tmp_tmp, 65535)) {
21529 UHI opval = 65535;
21530 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
21531 written |= (1 << 18);
21532 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21534 frvbf_media_overflow (current_cpu, 1);
21536 } else {
21537 if (LTDI (tmp_tmp, 0)) {
21540 UHI opval = 0;
21541 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
21542 written |= (1 << 18);
21543 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21545 frvbf_media_overflow (current_cpu, 1);
21547 } else {
21549 UHI opval = tmp_tmp;
21550 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
21551 written |= (1 << 18);
21552 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21560 abuf->written = written;
21561 return vpc;
21562 #undef FLD
21565 /* mqsubhss: mqsubhss$pack $FRintieven,$FRintjeven,$FRintkeven */
21567 static SEM_PC
21568 SEM_FN_NAME (frvbf,mqsubhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21570 #define FLD(f) abuf->fields.sfmt_cmqaddhss.f
21571 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21572 int UNUSED written = 0;
21573 IADDR UNUSED pc = abuf->addr;
21574 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21576 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
21577 frvbf_media_register_not_aligned (current_cpu);
21578 } else {
21580 HI tmp_argihi;
21581 HI tmp_argilo;
21582 HI tmp_argjhi;
21583 HI tmp_argjlo;
21585 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
21586 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
21587 written |= (1 << 14);
21588 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
21591 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21592 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21593 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21594 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21597 DI tmp_tmp;
21598 tmp_tmp = SUBDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
21599 if (GTDI (tmp_tmp, 32767)) {
21602 UHI opval = 32767;
21603 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
21604 written |= (1 << 15);
21605 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21607 frvbf_media_overflow (current_cpu, 8);
21609 } else {
21610 if (LTDI (tmp_tmp, -32768)) {
21613 UHI opval = -32768;
21614 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
21615 written |= (1 << 15);
21616 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21618 frvbf_media_overflow (current_cpu, 8);
21620 } else {
21622 UHI opval = tmp_tmp;
21623 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
21624 written |= (1 << 15);
21625 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21631 DI tmp_tmp;
21632 tmp_tmp = SUBDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
21633 if (GTDI (tmp_tmp, 32767)) {
21636 UHI opval = 32767;
21637 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
21638 written |= (1 << 17);
21639 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21641 frvbf_media_overflow (current_cpu, 4);
21643 } else {
21644 if (LTDI (tmp_tmp, -32768)) {
21647 UHI opval = -32768;
21648 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
21649 written |= (1 << 17);
21650 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21652 frvbf_media_overflow (current_cpu, 4);
21654 } else {
21656 UHI opval = tmp_tmp;
21657 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
21658 written |= (1 << 17);
21659 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21665 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21666 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21667 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21668 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21671 DI tmp_tmp;
21672 tmp_tmp = SUBDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
21673 if (GTDI (tmp_tmp, 32767)) {
21676 UHI opval = 32767;
21677 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
21678 written |= (1 << 16);
21679 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21681 frvbf_media_overflow (current_cpu, 2);
21683 } else {
21684 if (LTDI (tmp_tmp, -32768)) {
21687 UHI opval = -32768;
21688 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
21689 written |= (1 << 16);
21690 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21692 frvbf_media_overflow (current_cpu, 2);
21694 } else {
21696 UHI opval = tmp_tmp;
21697 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
21698 written |= (1 << 16);
21699 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21705 DI tmp_tmp;
21706 tmp_tmp = SUBDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
21707 if (GTDI (tmp_tmp, 32767)) {
21710 UHI opval = 32767;
21711 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
21712 written |= (1 << 18);
21713 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21715 frvbf_media_overflow (current_cpu, 1);
21717 } else {
21718 if (LTDI (tmp_tmp, -32768)) {
21721 UHI opval = -32768;
21722 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
21723 written |= (1 << 18);
21724 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21726 frvbf_media_overflow (current_cpu, 1);
21728 } else {
21730 UHI opval = tmp_tmp;
21731 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
21732 written |= (1 << 18);
21733 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21741 abuf->written = written;
21742 return vpc;
21743 #undef FLD
21746 /* mqsubhus: mqsubhus$pack $FRintieven,$FRintjeven,$FRintkeven */
21748 static SEM_PC
21749 SEM_FN_NAME (frvbf,mqsubhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21751 #define FLD(f) abuf->fields.sfmt_cmqaddhss.f
21752 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21753 int UNUSED written = 0;
21754 IADDR UNUSED pc = abuf->addr;
21755 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21757 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
21758 frvbf_media_register_not_aligned (current_cpu);
21759 } else {
21761 UHI tmp_argihi;
21762 UHI tmp_argilo;
21763 UHI tmp_argjhi;
21764 UHI tmp_argjlo;
21766 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
21767 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
21768 written |= (1 << 14);
21769 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
21772 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21773 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21774 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21775 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21778 DI tmp_tmp;
21779 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
21780 if (GTDI (tmp_tmp, 65535)) {
21783 UHI opval = 65535;
21784 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
21785 written |= (1 << 15);
21786 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21788 frvbf_media_overflow (current_cpu, 8);
21790 } else {
21791 if (LTDI (tmp_tmp, 0)) {
21794 UHI opval = 0;
21795 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
21796 written |= (1 << 15);
21797 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21799 frvbf_media_overflow (current_cpu, 8);
21801 } else {
21803 UHI opval = tmp_tmp;
21804 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
21805 written |= (1 << 15);
21806 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21812 DI tmp_tmp;
21813 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
21814 if (GTDI (tmp_tmp, 65535)) {
21817 UHI opval = 65535;
21818 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
21819 written |= (1 << 17);
21820 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21822 frvbf_media_overflow (current_cpu, 4);
21824 } else {
21825 if (LTDI (tmp_tmp, 0)) {
21828 UHI opval = 0;
21829 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
21830 written |= (1 << 17);
21831 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21833 frvbf_media_overflow (current_cpu, 4);
21835 } else {
21837 UHI opval = tmp_tmp;
21838 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
21839 written |= (1 << 17);
21840 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21846 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21847 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21848 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21849 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21852 DI tmp_tmp;
21853 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
21854 if (GTDI (tmp_tmp, 65535)) {
21857 UHI opval = 65535;
21858 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
21859 written |= (1 << 16);
21860 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21862 frvbf_media_overflow (current_cpu, 2);
21864 } else {
21865 if (LTDI (tmp_tmp, 0)) {
21868 UHI opval = 0;
21869 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
21870 written |= (1 << 16);
21871 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21873 frvbf_media_overflow (current_cpu, 2);
21875 } else {
21877 UHI opval = tmp_tmp;
21878 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
21879 written |= (1 << 16);
21880 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21886 DI tmp_tmp;
21887 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
21888 if (GTDI (tmp_tmp, 65535)) {
21891 UHI opval = 65535;
21892 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
21893 written |= (1 << 18);
21894 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21896 frvbf_media_overflow (current_cpu, 1);
21898 } else {
21899 if (LTDI (tmp_tmp, 0)) {
21902 UHI opval = 0;
21903 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
21904 written |= (1 << 18);
21905 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21907 frvbf_media_overflow (current_cpu, 1);
21909 } else {
21911 UHI opval = tmp_tmp;
21912 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
21913 written |= (1 << 18);
21914 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
21922 abuf->written = written;
21923 return vpc;
21924 #undef FLD
21927 /* cmqaddhss: cmqaddhss$pack $FRintieven,$FRintjeven,$FRintkeven,$CCi,$cond */
21929 static SEM_PC
21930 SEM_FN_NAME (frvbf,cmqaddhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
21932 #define FLD(f) abuf->fields.sfmt_cmqaddhss.f
21933 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
21934 int UNUSED written = 0;
21935 IADDR UNUSED pc = abuf->addr;
21936 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
21938 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
21939 frvbf_media_register_not_aligned (current_cpu);
21940 } else {
21941 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
21943 HI tmp_argihi;
21944 HI tmp_argilo;
21945 HI tmp_argjhi;
21946 HI tmp_argjlo;
21948 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
21949 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
21950 written |= (1 << 16);
21951 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
21954 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21955 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
21956 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21957 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
21960 DI tmp_tmp;
21961 tmp_tmp = ADDDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
21962 if (GTDI (tmp_tmp, 32767)) {
21965 UHI opval = 32767;
21966 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
21967 written |= (1 << 17);
21968 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21970 frvbf_media_overflow (current_cpu, 8);
21972 } else {
21973 if (LTDI (tmp_tmp, -32768)) {
21976 UHI opval = -32768;
21977 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
21978 written |= (1 << 17);
21979 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21981 frvbf_media_overflow (current_cpu, 8);
21983 } else {
21985 UHI opval = tmp_tmp;
21986 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
21987 written |= (1 << 17);
21988 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
21994 DI tmp_tmp;
21995 tmp_tmp = ADDDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
21996 if (GTDI (tmp_tmp, 32767)) {
21999 UHI opval = 32767;
22000 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
22001 written |= (1 << 19);
22002 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22004 frvbf_media_overflow (current_cpu, 4);
22006 } else {
22007 if (LTDI (tmp_tmp, -32768)) {
22010 UHI opval = -32768;
22011 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
22012 written |= (1 << 19);
22013 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22015 frvbf_media_overflow (current_cpu, 4);
22017 } else {
22019 UHI opval = tmp_tmp;
22020 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
22021 written |= (1 << 19);
22022 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22028 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22029 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22030 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22031 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22034 DI tmp_tmp;
22035 tmp_tmp = ADDDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
22036 if (GTDI (tmp_tmp, 32767)) {
22039 UHI opval = 32767;
22040 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
22041 written |= (1 << 18);
22042 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22044 frvbf_media_overflow (current_cpu, 2);
22046 } else {
22047 if (LTDI (tmp_tmp, -32768)) {
22050 UHI opval = -32768;
22051 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
22052 written |= (1 << 18);
22053 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22055 frvbf_media_overflow (current_cpu, 2);
22057 } else {
22059 UHI opval = tmp_tmp;
22060 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
22061 written |= (1 << 18);
22062 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22068 DI tmp_tmp;
22069 tmp_tmp = ADDDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
22070 if (GTDI (tmp_tmp, 32767)) {
22073 UHI opval = 32767;
22074 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
22075 written |= (1 << 20);
22076 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22078 frvbf_media_overflow (current_cpu, 1);
22080 } else {
22081 if (LTDI (tmp_tmp, -32768)) {
22084 UHI opval = -32768;
22085 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
22086 written |= (1 << 20);
22087 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22089 frvbf_media_overflow (current_cpu, 1);
22091 } else {
22093 UHI opval = tmp_tmp;
22094 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
22095 written |= (1 << 20);
22096 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22105 abuf->written = written;
22106 return vpc;
22107 #undef FLD
22110 /* cmqaddhus: cmqaddhus$pack $FRintieven,$FRintjeven,$FRintkeven,$CCi,$cond */
22112 static SEM_PC
22113 SEM_FN_NAME (frvbf,cmqaddhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22115 #define FLD(f) abuf->fields.sfmt_cmqaddhss.f
22116 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22117 int UNUSED written = 0;
22118 IADDR UNUSED pc = abuf->addr;
22119 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22121 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
22122 frvbf_media_register_not_aligned (current_cpu);
22123 } else {
22124 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
22126 UHI tmp_argihi;
22127 UHI tmp_argilo;
22128 UHI tmp_argjhi;
22129 UHI tmp_argjlo;
22131 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
22132 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
22133 written |= (1 << 16);
22134 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22137 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22138 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22139 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22140 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22143 DI tmp_tmp;
22144 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
22145 if (GTDI (tmp_tmp, 65535)) {
22148 UHI opval = 65535;
22149 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
22150 written |= (1 << 17);
22151 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22153 frvbf_media_overflow (current_cpu, 8);
22155 } else {
22156 if (LTDI (tmp_tmp, 0)) {
22159 UHI opval = 0;
22160 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
22161 written |= (1 << 17);
22162 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22164 frvbf_media_overflow (current_cpu, 8);
22166 } else {
22168 UHI opval = tmp_tmp;
22169 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
22170 written |= (1 << 17);
22171 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22177 DI tmp_tmp;
22178 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
22179 if (GTDI (tmp_tmp, 65535)) {
22182 UHI opval = 65535;
22183 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
22184 written |= (1 << 19);
22185 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22187 frvbf_media_overflow (current_cpu, 4);
22189 } else {
22190 if (LTDI (tmp_tmp, 0)) {
22193 UHI opval = 0;
22194 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
22195 written |= (1 << 19);
22196 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22198 frvbf_media_overflow (current_cpu, 4);
22200 } else {
22202 UHI opval = tmp_tmp;
22203 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
22204 written |= (1 << 19);
22205 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22211 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22212 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22213 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22214 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22217 DI tmp_tmp;
22218 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
22219 if (GTDI (tmp_tmp, 65535)) {
22222 UHI opval = 65535;
22223 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
22224 written |= (1 << 18);
22225 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22227 frvbf_media_overflow (current_cpu, 2);
22229 } else {
22230 if (LTDI (tmp_tmp, 0)) {
22233 UHI opval = 0;
22234 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
22235 written |= (1 << 18);
22236 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22238 frvbf_media_overflow (current_cpu, 2);
22240 } else {
22242 UHI opval = tmp_tmp;
22243 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
22244 written |= (1 << 18);
22245 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22251 DI tmp_tmp;
22252 tmp_tmp = ADDDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
22253 if (GTDI (tmp_tmp, 65535)) {
22256 UHI opval = 65535;
22257 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
22258 written |= (1 << 20);
22259 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22261 frvbf_media_overflow (current_cpu, 1);
22263 } else {
22264 if (LTDI (tmp_tmp, 0)) {
22267 UHI opval = 0;
22268 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
22269 written |= (1 << 20);
22270 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22272 frvbf_media_overflow (current_cpu, 1);
22274 } else {
22276 UHI opval = tmp_tmp;
22277 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
22278 written |= (1 << 20);
22279 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22288 abuf->written = written;
22289 return vpc;
22290 #undef FLD
22293 /* cmqsubhss: cmqsubhss$pack $FRintieven,$FRintjeven,$FRintkeven,$CCi,$cond */
22295 static SEM_PC
22296 SEM_FN_NAME (frvbf,cmqsubhss) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22298 #define FLD(f) abuf->fields.sfmt_cmqaddhss.f
22299 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22300 int UNUSED written = 0;
22301 IADDR UNUSED pc = abuf->addr;
22302 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22304 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
22305 frvbf_media_register_not_aligned (current_cpu);
22306 } else {
22307 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
22309 HI tmp_argihi;
22310 HI tmp_argilo;
22311 HI tmp_argjhi;
22312 HI tmp_argjlo;
22314 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
22315 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
22316 written |= (1 << 16);
22317 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22320 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22321 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22322 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22323 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22326 DI tmp_tmp;
22327 tmp_tmp = SUBDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
22328 if (GTDI (tmp_tmp, 32767)) {
22331 UHI opval = 32767;
22332 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
22333 written |= (1 << 17);
22334 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22336 frvbf_media_overflow (current_cpu, 8);
22338 } else {
22339 if (LTDI (tmp_tmp, -32768)) {
22342 UHI opval = -32768;
22343 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
22344 written |= (1 << 17);
22345 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22347 frvbf_media_overflow (current_cpu, 8);
22349 } else {
22351 UHI opval = tmp_tmp;
22352 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
22353 written |= (1 << 17);
22354 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22360 DI tmp_tmp;
22361 tmp_tmp = SUBDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
22362 if (GTDI (tmp_tmp, 32767)) {
22365 UHI opval = 32767;
22366 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
22367 written |= (1 << 19);
22368 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22370 frvbf_media_overflow (current_cpu, 4);
22372 } else {
22373 if (LTDI (tmp_tmp, -32768)) {
22376 UHI opval = -32768;
22377 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
22378 written |= (1 << 19);
22379 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22381 frvbf_media_overflow (current_cpu, 4);
22383 } else {
22385 UHI opval = tmp_tmp;
22386 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
22387 written |= (1 << 19);
22388 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22394 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22395 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22396 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22397 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22400 DI tmp_tmp;
22401 tmp_tmp = SUBDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
22402 if (GTDI (tmp_tmp, 32767)) {
22405 UHI opval = 32767;
22406 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
22407 written |= (1 << 18);
22408 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22410 frvbf_media_overflow (current_cpu, 2);
22412 } else {
22413 if (LTDI (tmp_tmp, -32768)) {
22416 UHI opval = -32768;
22417 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
22418 written |= (1 << 18);
22419 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22421 frvbf_media_overflow (current_cpu, 2);
22423 } else {
22425 UHI opval = tmp_tmp;
22426 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
22427 written |= (1 << 18);
22428 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22434 DI tmp_tmp;
22435 tmp_tmp = SUBDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
22436 if (GTDI (tmp_tmp, 32767)) {
22439 UHI opval = 32767;
22440 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
22441 written |= (1 << 20);
22442 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22444 frvbf_media_overflow (current_cpu, 1);
22446 } else {
22447 if (LTDI (tmp_tmp, -32768)) {
22450 UHI opval = -32768;
22451 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
22452 written |= (1 << 20);
22453 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22455 frvbf_media_overflow (current_cpu, 1);
22457 } else {
22459 UHI opval = tmp_tmp;
22460 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
22461 written |= (1 << 20);
22462 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22471 abuf->written = written;
22472 return vpc;
22473 #undef FLD
22476 /* cmqsubhus: cmqsubhus$pack $FRintieven,$FRintjeven,$FRintkeven,$CCi,$cond */
22478 static SEM_PC
22479 SEM_FN_NAME (frvbf,cmqsubhus) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22481 #define FLD(f) abuf->fields.sfmt_cmqaddhss.f
22482 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22483 int UNUSED written = 0;
22484 IADDR UNUSED pc = abuf->addr;
22485 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22487 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
22488 frvbf_media_register_not_aligned (current_cpu);
22489 } else {
22490 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
22492 UHI tmp_argihi;
22493 UHI tmp_argilo;
22494 UHI tmp_argjhi;
22495 UHI tmp_argjlo;
22497 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
22498 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
22499 written |= (1 << 16);
22500 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22503 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22504 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22505 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22506 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22509 DI tmp_tmp;
22510 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
22511 if (GTDI (tmp_tmp, 65535)) {
22514 UHI opval = 65535;
22515 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
22516 written |= (1 << 17);
22517 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22519 frvbf_media_overflow (current_cpu, 8);
22521 } else {
22522 if (LTDI (tmp_tmp, 0)) {
22525 UHI opval = 0;
22526 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
22527 written |= (1 << 17);
22528 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22530 frvbf_media_overflow (current_cpu, 8);
22532 } else {
22534 UHI opval = tmp_tmp;
22535 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
22536 written |= (1 << 17);
22537 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22543 DI tmp_tmp;
22544 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
22545 if (GTDI (tmp_tmp, 65535)) {
22548 UHI opval = 65535;
22549 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
22550 written |= (1 << 19);
22551 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22553 frvbf_media_overflow (current_cpu, 4);
22555 } else {
22556 if (LTDI (tmp_tmp, 0)) {
22559 UHI opval = 0;
22560 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
22561 written |= (1 << 19);
22562 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22564 frvbf_media_overflow (current_cpu, 4);
22566 } else {
22568 UHI opval = tmp_tmp;
22569 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
22570 written |= (1 << 19);
22571 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22577 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22578 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22579 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22580 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22583 DI tmp_tmp;
22584 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
22585 if (GTDI (tmp_tmp, 65535)) {
22588 UHI opval = 65535;
22589 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
22590 written |= (1 << 18);
22591 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22593 frvbf_media_overflow (current_cpu, 2);
22595 } else {
22596 if (LTDI (tmp_tmp, 0)) {
22599 UHI opval = 0;
22600 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
22601 written |= (1 << 18);
22602 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22604 frvbf_media_overflow (current_cpu, 2);
22606 } else {
22608 UHI opval = tmp_tmp;
22609 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
22610 written |= (1 << 18);
22611 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22617 DI tmp_tmp;
22618 tmp_tmp = SUBDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
22619 if (GTDI (tmp_tmp, 65535)) {
22622 UHI opval = 65535;
22623 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
22624 written |= (1 << 20);
22625 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22627 frvbf_media_overflow (current_cpu, 1);
22629 } else {
22630 if (LTDI (tmp_tmp, 0)) {
22633 UHI opval = 0;
22634 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
22635 written |= (1 << 20);
22636 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22638 frvbf_media_overflow (current_cpu, 1);
22640 } else {
22642 UHI opval = tmp_tmp;
22643 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
22644 written |= (1 << 20);
22645 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22654 abuf->written = written;
22655 return vpc;
22656 #undef FLD
22659 /* mqlclrhs: mqlclrhs$pack $FRintieven,$FRintjeven,$FRintkeven */
22661 static SEM_PC
22662 SEM_FN_NAME (frvbf,mqlclrhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22664 #define FLD(f) abuf->fields.sfmt_cmqaddhss.f
22665 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22666 int UNUSED written = 0;
22667 IADDR UNUSED pc = abuf->addr;
22668 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22670 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
22671 frvbf_media_register_not_aligned (current_cpu);
22672 } else {
22674 HI tmp_a1;
22675 HI tmp_a2;
22676 HI tmp_a3;
22677 HI tmp_a4;
22678 HI tmp_b1;
22679 HI tmp_b2;
22680 HI tmp_b3;
22681 HI tmp_b4;
22683 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
22684 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
22685 written |= (1 << 14);
22686 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22689 tmp_a1 = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22690 tmp_a2 = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22691 tmp_b1 = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22692 tmp_b2 = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22695 tmp_a3 = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22696 tmp_a4 = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22697 tmp_b3 = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22698 tmp_b4 = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22701 UHI opval = (LEUHI (ABSHI (tmp_a1), ABSHI (tmp_b1))) ? (0) : (LEHI (0, tmp_b1)) ? (tmp_a1) : (EQHI (tmp_a1, -32768)) ? (32767) : (NEGHI (tmp_a1));
22702 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
22703 written |= (1 << 15);
22704 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22707 UHI opval = (LEUHI (ABSHI (tmp_a2), ABSHI (tmp_b2))) ? (0) : (LEHI (0, tmp_b2)) ? (tmp_a2) : (EQHI (tmp_a2, -32768)) ? (32767) : (NEGHI (tmp_a2));
22708 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
22709 written |= (1 << 17);
22710 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22713 UHI opval = (LEUHI (ABSHI (tmp_a3), ABSHI (tmp_b3))) ? (0) : (LEHI (0, tmp_b3)) ? (tmp_a3) : (EQHI (tmp_a3, -32768)) ? (32767) : (NEGHI (tmp_a3));
22714 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
22715 written |= (1 << 16);
22716 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22719 UHI opval = (LEUHI (ABSHI (tmp_a4), ABSHI (tmp_b4))) ? (0) : (LEHI (0, tmp_b4)) ? (tmp_a4) : (EQHI (tmp_a4, -32768)) ? (32767) : (NEGHI (tmp_a4));
22720 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
22721 written |= (1 << 18);
22722 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22727 abuf->written = written;
22728 return vpc;
22729 #undef FLD
22732 /* mqlmths: mqlmths$pack $FRintieven,$FRintjeven,$FRintkeven */
22734 static SEM_PC
22735 SEM_FN_NAME (frvbf,mqlmths) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22737 #define FLD(f) abuf->fields.sfmt_cmqaddhss.f
22738 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22739 int UNUSED written = 0;
22740 IADDR UNUSED pc = abuf->addr;
22741 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22743 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
22744 frvbf_media_register_not_aligned (current_cpu);
22745 } else {
22747 HI tmp_a1;
22748 HI tmp_a2;
22749 HI tmp_a3;
22750 HI tmp_a4;
22751 HI tmp_b1;
22752 HI tmp_b2;
22753 HI tmp_b3;
22754 HI tmp_b4;
22756 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
22757 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
22758 written |= (1 << 14);
22759 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22762 tmp_a1 = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22763 tmp_a2 = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22764 tmp_b1 = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22765 tmp_b2 = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22768 tmp_a3 = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22769 tmp_a4 = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
22770 tmp_b3 = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22771 tmp_b4 = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
22774 UHI opval = (ANDIF (GTHI (tmp_b1, -32768), GEHI (tmp_a1, ABSHI (tmp_b1)))) ? (tmp_b1) : (GTHI (tmp_a1, NEGHI (ABSHI (tmp_b1)))) ? (tmp_a1) : (EQHI (tmp_b1, -32768)) ? (32767) : (NEGHI (tmp_b1));
22775 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
22776 written |= (1 << 15);
22777 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22780 UHI opval = (ANDIF (GTHI (tmp_b2, -32768), GEHI (tmp_a2, ABSHI (tmp_b2)))) ? (tmp_b2) : (GTHI (tmp_a2, NEGHI (ABSHI (tmp_b2)))) ? (tmp_a2) : (EQHI (tmp_b2, -32768)) ? (32767) : (NEGHI (tmp_b2));
22781 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
22782 written |= (1 << 17);
22783 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22786 UHI opval = (ANDIF (GTHI (tmp_b3, -32768), GEHI (tmp_a3, ABSHI (tmp_b3)))) ? (tmp_b3) : (GTHI (tmp_a3, NEGHI (ABSHI (tmp_b3)))) ? (tmp_a3) : (EQHI (tmp_b3, -32768)) ? (32767) : (NEGHI (tmp_b3));
22787 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
22788 written |= (1 << 16);
22789 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22792 UHI opval = (ANDIF (GTHI (tmp_b4, -32768), GEHI (tmp_a4, ABSHI (tmp_b4)))) ? (tmp_b4) : (GTHI (tmp_a4, NEGHI (ABSHI (tmp_b4)))) ? (tmp_a4) : (EQHI (tmp_b4, -32768)) ? (32767) : (NEGHI (tmp_b4));
22793 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
22794 written |= (1 << 18);
22795 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22800 abuf->written = written;
22801 return vpc;
22802 #undef FLD
22805 /* mqsllhi: mqsllhi$pack $FRintieven,$u6,$FRintkeven */
22807 static SEM_PC
22808 SEM_FN_NAME (frvbf,mqsllhi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22810 #define FLD(f) abuf->fields.sfmt_mqsllhi.f
22811 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22812 int UNUSED written = 0;
22813 IADDR UNUSED pc = abuf->addr;
22814 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22816 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1)))) {
22817 frvbf_media_register_not_aligned (current_cpu);
22818 } else {
22821 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
22822 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
22823 written |= (1 << 9);
22824 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22827 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
22828 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
22829 written |= (1 << 10);
22830 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22833 UHI opval = SLLHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), ANDSI (FLD (f_u6), 15));
22834 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
22835 written |= (1 << 11);
22836 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22839 UHI opval = SLLHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), ANDSI (FLD (f_u6), 15));
22840 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
22841 written |= (1 << 13);
22842 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22845 UHI opval = SLLHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), ANDSI (FLD (f_u6), 15));
22846 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
22847 written |= (1 << 12);
22848 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22851 UHI opval = SLLHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), ANDSI (FLD (f_u6), 15));
22852 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
22853 written |= (1 << 14);
22854 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22859 abuf->written = written;
22860 return vpc;
22861 #undef FLD
22864 /* mqsrahi: mqsrahi$pack $FRintieven,$u6,$FRintkeven */
22866 static SEM_PC
22867 SEM_FN_NAME (frvbf,mqsrahi) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22869 #define FLD(f) abuf->fields.sfmt_mqsllhi.f
22870 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22871 int UNUSED written = 0;
22872 IADDR UNUSED pc = abuf->addr;
22873 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22875 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1)))) {
22876 frvbf_media_register_not_aligned (current_cpu);
22877 } else {
22880 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
22881 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
22882 written |= (1 << 9);
22883 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22886 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
22887 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
22888 written |= (1 << 10);
22889 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
22892 UHI opval = SRAHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), ANDSI (FLD (f_u6), 15));
22893 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
22894 written |= (1 << 11);
22895 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22898 UHI opval = SRAHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), ANDSI (FLD (f_u6), 15));
22899 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
22900 written |= (1 << 13);
22901 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22904 UHI opval = SRAHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), ANDSI (FLD (f_u6), 15));
22905 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
22906 written |= (1 << 12);
22907 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
22910 UHI opval = SRAHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), ANDSI (FLD (f_u6), 15));
22911 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
22912 written |= (1 << 14);
22913 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
22918 abuf->written = written;
22919 return vpc;
22920 #undef FLD
22923 /* maddaccs: maddaccs$pack $ACC40Si,$ACC40Sk */
22925 static SEM_PC
22926 SEM_FN_NAME (frvbf,maddaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22928 #define FLD(f) abuf->fields.sfmt_mdasaccs.f
22929 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22930 int UNUSED written = 0;
22931 IADDR UNUSED pc = abuf->addr;
22932 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22934 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Si))) {
22935 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
22936 if (ANDSI (FLD (f_ACC40Si), SUBSI (2, 1))) {
22937 frvbf_media_acc_not_aligned (current_cpu);
22938 } else {
22940 DI tmp_tmp;
22941 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 1)));
22942 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
22945 DI opval = MAKEDI (127, 0xffffffff);
22946 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
22947 written |= (1 << 4);
22948 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
22950 frvbf_media_overflow (current_cpu, 8);
22952 } else {
22953 if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
22956 DI opval = INVDI (MAKEDI (127, 0xffffffff));
22957 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
22958 written |= (1 << 4);
22959 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
22961 frvbf_media_overflow (current_cpu, 8);
22963 } else {
22965 DI opval = tmp_tmp;
22966 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
22967 written |= (1 << 4);
22968 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
22977 abuf->written = written;
22978 return vpc;
22979 #undef FLD
22982 /* msubaccs: msubaccs$pack $ACC40Si,$ACC40Sk */
22984 static SEM_PC
22985 SEM_FN_NAME (frvbf,msubaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
22987 #define FLD(f) abuf->fields.sfmt_mdasaccs.f
22988 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
22989 int UNUSED written = 0;
22990 IADDR UNUSED pc = abuf->addr;
22991 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
22993 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Si))) {
22994 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
22995 if (ANDSI (FLD (f_ACC40Si), SUBSI (2, 1))) {
22996 frvbf_media_acc_not_aligned (current_cpu);
22997 } else {
22999 DI tmp_tmp;
23000 tmp_tmp = SUBDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 1)));
23001 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
23004 DI opval = MAKEDI (127, 0xffffffff);
23005 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23006 written |= (1 << 4);
23007 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23009 frvbf_media_overflow (current_cpu, 8);
23011 } else {
23012 if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
23015 DI opval = INVDI (MAKEDI (127, 0xffffffff));
23016 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23017 written |= (1 << 4);
23018 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23020 frvbf_media_overflow (current_cpu, 8);
23022 } else {
23024 DI opval = tmp_tmp;
23025 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23026 written |= (1 << 4);
23027 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23036 abuf->written = written;
23037 return vpc;
23038 #undef FLD
23041 /* mdaddaccs: mdaddaccs$pack $ACC40Si,$ACC40Sk */
23043 static SEM_PC
23044 SEM_FN_NAME (frvbf,mdaddaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23046 #define FLD(f) abuf->fields.sfmt_mdasaccs.f
23047 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23048 int UNUSED written = 0;
23049 IADDR UNUSED pc = abuf->addr;
23050 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23052 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Si))) {
23053 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23054 if (ANDSI (FLD (f_ACC40Si), SUBSI (4, 1))) {
23055 frvbf_media_acc_not_aligned (current_cpu);
23056 } else {
23057 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23058 frvbf_media_acc_not_aligned (current_cpu);
23059 } else {
23062 DI tmp_tmp;
23063 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 1)));
23064 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
23067 DI opval = MAKEDI (127, 0xffffffff);
23068 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23069 written |= (1 << 6);
23070 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23072 frvbf_media_overflow (current_cpu, 8);
23074 } else {
23075 if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
23078 DI opval = INVDI (MAKEDI (127, 0xffffffff));
23079 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23080 written |= (1 << 6);
23081 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23083 frvbf_media_overflow (current_cpu, 8);
23085 } else {
23087 DI opval = tmp_tmp;
23088 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23089 written |= (1 << 6);
23090 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23096 DI tmp_tmp;
23097 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 2)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 3)));
23098 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
23101 DI opval = MAKEDI (127, 0xffffffff);
23102 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
23103 written |= (1 << 7);
23104 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23106 frvbf_media_overflow (current_cpu, 4);
23108 } else {
23109 if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
23112 DI opval = INVDI (MAKEDI (127, 0xffffffff));
23113 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
23114 written |= (1 << 7);
23115 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23117 frvbf_media_overflow (current_cpu, 4);
23119 } else {
23121 DI opval = tmp_tmp;
23122 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
23123 written |= (1 << 7);
23124 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23135 abuf->written = written;
23136 return vpc;
23137 #undef FLD
23140 /* mdsubaccs: mdsubaccs$pack $ACC40Si,$ACC40Sk */
23142 static SEM_PC
23143 SEM_FN_NAME (frvbf,mdsubaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23145 #define FLD(f) abuf->fields.sfmt_mdasaccs.f
23146 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23147 int UNUSED written = 0;
23148 IADDR UNUSED pc = abuf->addr;
23149 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23151 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Si))) {
23152 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23153 if (ANDSI (FLD (f_ACC40Si), SUBSI (4, 1))) {
23154 frvbf_media_acc_not_aligned (current_cpu);
23155 } else {
23156 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23157 frvbf_media_acc_not_aligned (current_cpu);
23158 } else {
23161 DI tmp_tmp;
23162 tmp_tmp = SUBDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 1)));
23163 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
23166 DI opval = MAKEDI (127, 0xffffffff);
23167 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23168 written |= (1 << 6);
23169 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23171 frvbf_media_overflow (current_cpu, 8);
23173 } else {
23174 if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
23177 DI opval = INVDI (MAKEDI (127, 0xffffffff));
23178 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23179 written |= (1 << 6);
23180 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23182 frvbf_media_overflow (current_cpu, 8);
23184 } else {
23186 DI opval = tmp_tmp;
23187 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23188 written |= (1 << 6);
23189 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23195 DI tmp_tmp;
23196 tmp_tmp = SUBDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 2)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 3)));
23197 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
23200 DI opval = MAKEDI (127, 0xffffffff);
23201 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
23202 written |= (1 << 7);
23203 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23205 frvbf_media_overflow (current_cpu, 4);
23207 } else {
23208 if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
23211 DI opval = INVDI (MAKEDI (127, 0xffffffff));
23212 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
23213 written |= (1 << 7);
23214 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23216 frvbf_media_overflow (current_cpu, 4);
23218 } else {
23220 DI opval = tmp_tmp;
23221 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
23222 written |= (1 << 7);
23223 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23234 abuf->written = written;
23235 return vpc;
23236 #undef FLD
23239 /* masaccs: masaccs$pack $ACC40Si,$ACC40Sk */
23241 static SEM_PC
23242 SEM_FN_NAME (frvbf,masaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23244 #define FLD(f) abuf->fields.sfmt_mdasaccs.f
23245 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23246 int UNUSED written = 0;
23247 IADDR UNUSED pc = abuf->addr;
23248 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23250 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Si))) {
23251 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23252 if (ANDSI (FLD (f_ACC40Si), SUBSI (2, 1))) {
23253 frvbf_media_acc_not_aligned (current_cpu);
23254 } else {
23255 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23256 frvbf_media_acc_not_aligned (current_cpu);
23257 } else {
23260 DI tmp_tmp;
23261 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 1)));
23262 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
23265 DI opval = MAKEDI (127, 0xffffffff);
23266 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23267 written |= (1 << 4);
23268 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23270 frvbf_media_overflow (current_cpu, 8);
23272 } else {
23273 if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
23276 DI opval = INVDI (MAKEDI (127, 0xffffffff));
23277 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23278 written |= (1 << 4);
23279 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23281 frvbf_media_overflow (current_cpu, 8);
23283 } else {
23285 DI opval = tmp_tmp;
23286 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23287 written |= (1 << 4);
23288 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23294 DI tmp_tmp;
23295 tmp_tmp = SUBDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 1)));
23296 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
23299 DI opval = MAKEDI (127, 0xffffffff);
23300 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
23301 written |= (1 << 5);
23302 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23304 frvbf_media_overflow (current_cpu, 4);
23306 } else {
23307 if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
23310 DI opval = INVDI (MAKEDI (127, 0xffffffff));
23311 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
23312 written |= (1 << 5);
23313 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23315 frvbf_media_overflow (current_cpu, 4);
23317 } else {
23319 DI opval = tmp_tmp;
23320 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
23321 written |= (1 << 5);
23322 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23333 abuf->written = written;
23334 return vpc;
23335 #undef FLD
23338 /* mdasaccs: mdasaccs$pack $ACC40Si,$ACC40Sk */
23340 static SEM_PC
23341 SEM_FN_NAME (frvbf,mdasaccs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23343 #define FLD(f) abuf->fields.sfmt_mdasaccs.f
23344 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23345 int UNUSED written = 0;
23346 IADDR UNUSED pc = abuf->addr;
23347 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23349 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Si))) {
23350 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23351 if (ANDSI (FLD (f_ACC40Si), SUBSI (4, 1))) {
23352 frvbf_media_acc_not_aligned (current_cpu);
23353 } else {
23354 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
23355 frvbf_media_acc_not_aligned (current_cpu);
23356 } else {
23359 DI tmp_tmp;
23360 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 1)));
23361 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
23364 DI opval = MAKEDI (127, 0xffffffff);
23365 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23366 written |= (1 << 6);
23367 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23369 frvbf_media_overflow (current_cpu, 8);
23371 } else {
23372 if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
23375 DI opval = INVDI (MAKEDI (127, 0xffffffff));
23376 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23377 written |= (1 << 6);
23378 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23380 frvbf_media_overflow (current_cpu, 8);
23382 } else {
23384 DI opval = tmp_tmp;
23385 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23386 written |= (1 << 6);
23387 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23393 DI tmp_tmp;
23394 tmp_tmp = SUBDI (GET_H_ACC40S (FLD (f_ACC40Si)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 1)));
23395 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
23398 DI opval = MAKEDI (127, 0xffffffff);
23399 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
23400 written |= (1 << 7);
23401 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23403 frvbf_media_overflow (current_cpu, 4);
23405 } else {
23406 if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
23409 DI opval = INVDI (MAKEDI (127, 0xffffffff));
23410 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
23411 written |= (1 << 7);
23412 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23414 frvbf_media_overflow (current_cpu, 4);
23416 } else {
23418 DI opval = tmp_tmp;
23419 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
23420 written |= (1 << 7);
23421 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23427 DI tmp_tmp;
23428 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 2)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 3)));
23429 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
23432 DI opval = MAKEDI (127, 0xffffffff);
23433 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
23434 written |= (1 << 8);
23435 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23437 frvbf_media_overflow (current_cpu, 2);
23439 } else {
23440 if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
23443 DI opval = INVDI (MAKEDI (127, 0xffffffff));
23444 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
23445 written |= (1 << 8);
23446 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23448 frvbf_media_overflow (current_cpu, 2);
23450 } else {
23452 DI opval = tmp_tmp;
23453 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
23454 written |= (1 << 8);
23455 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23461 DI tmp_tmp;
23462 tmp_tmp = SUBDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 2)), GET_H_ACC40S (ADDSI (FLD (f_ACC40Si), 3)));
23463 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
23466 DI opval = MAKEDI (127, 0xffffffff);
23467 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
23468 written |= (1 << 9);
23469 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23471 frvbf_media_overflow (current_cpu, 1);
23473 } else {
23474 if (LTDI (tmp_tmp, INVDI (MAKEDI (127, 0xffffffff)))) {
23477 DI opval = INVDI (MAKEDI (127, 0xffffffff));
23478 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
23479 written |= (1 << 9);
23480 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23482 frvbf_media_overflow (current_cpu, 1);
23484 } else {
23486 DI opval = tmp_tmp;
23487 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
23488 written |= (1 << 9);
23489 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23500 abuf->written = written;
23501 return vpc;
23502 #undef FLD
23505 /* mmulhs: mmulhs$pack $FRinti,$FRintj,$ACC40Sk */
23507 static SEM_PC
23508 SEM_FN_NAME (frvbf,mmulhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23510 #define FLD(f) abuf->fields.sfmt_cmmachs.f
23511 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23512 int UNUSED written = 0;
23513 IADDR UNUSED pc = abuf->addr;
23514 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23516 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23517 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23518 frvbf_media_acc_not_aligned (current_cpu);
23519 } else {
23521 HI tmp_argihi;
23522 HI tmp_argilo;
23523 HI tmp_argjhi;
23524 HI tmp_argjlo;
23526 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23527 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23528 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23529 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23532 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
23533 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23534 written |= (1 << 9);
23535 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23538 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
23539 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
23540 written |= (1 << 10);
23541 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23547 abuf->written = written;
23548 return vpc;
23549 #undef FLD
23552 /* mmulhu: mmulhu$pack $FRinti,$FRintj,$ACC40Sk */
23554 static SEM_PC
23555 SEM_FN_NAME (frvbf,mmulhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23557 #define FLD(f) abuf->fields.sfmt_cmmachs.f
23558 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23559 int UNUSED written = 0;
23560 IADDR UNUSED pc = abuf->addr;
23561 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23563 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23564 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23565 frvbf_media_acc_not_aligned (current_cpu);
23566 } else {
23568 UHI tmp_argihi;
23569 UHI tmp_argilo;
23570 UHI tmp_argjhi;
23571 UHI tmp_argjlo;
23573 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23574 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23575 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23576 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23579 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
23580 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23581 written |= (1 << 9);
23582 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23585 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
23586 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
23587 written |= (1 << 10);
23588 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23594 abuf->written = written;
23595 return vpc;
23596 #undef FLD
23599 /* mmulxhs: mmulxhs$pack $FRinti,$FRintj,$ACC40Sk */
23601 static SEM_PC
23602 SEM_FN_NAME (frvbf,mmulxhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23604 #define FLD(f) abuf->fields.sfmt_cmmachs.f
23605 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23606 int UNUSED written = 0;
23607 IADDR UNUSED pc = abuf->addr;
23608 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23610 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23611 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23612 frvbf_media_acc_not_aligned (current_cpu);
23613 } else {
23615 HI tmp_argihi;
23616 HI tmp_argilo;
23617 HI tmp_argjhi;
23618 HI tmp_argjlo;
23620 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23621 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23622 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23623 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23626 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
23627 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23628 written |= (1 << 9);
23629 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23632 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
23633 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
23634 written |= (1 << 10);
23635 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23641 abuf->written = written;
23642 return vpc;
23643 #undef FLD
23646 /* mmulxhu: mmulxhu$pack $FRinti,$FRintj,$ACC40Sk */
23648 static SEM_PC
23649 SEM_FN_NAME (frvbf,mmulxhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23651 #define FLD(f) abuf->fields.sfmt_cmmachs.f
23652 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23653 int UNUSED written = 0;
23654 IADDR UNUSED pc = abuf->addr;
23655 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23657 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23658 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23659 frvbf_media_acc_not_aligned (current_cpu);
23660 } else {
23662 UHI tmp_argihi;
23663 UHI tmp_argilo;
23664 UHI tmp_argjhi;
23665 UHI tmp_argjlo;
23667 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23668 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23669 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23670 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23673 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
23674 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23675 written |= (1 << 9);
23676 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23679 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
23680 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
23681 written |= (1 << 10);
23682 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23688 abuf->written = written;
23689 return vpc;
23690 #undef FLD
23693 /* cmmulhs: cmmulhs$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
23695 static SEM_PC
23696 SEM_FN_NAME (frvbf,cmmulhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23698 #define FLD(f) abuf->fields.sfmt_cmmachs.f
23699 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23700 int UNUSED written = 0;
23701 IADDR UNUSED pc = abuf->addr;
23702 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23704 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23705 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23706 frvbf_media_acc_not_aligned (current_cpu);
23707 } else {
23708 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
23710 HI tmp_argihi;
23711 HI tmp_argilo;
23712 HI tmp_argjhi;
23713 HI tmp_argjlo;
23715 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23716 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23717 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23718 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23721 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
23722 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23723 written |= (1 << 11);
23724 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23727 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
23728 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
23729 written |= (1 << 12);
23730 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23737 abuf->written = written;
23738 return vpc;
23739 #undef FLD
23742 /* cmmulhu: cmmulhu$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
23744 static SEM_PC
23745 SEM_FN_NAME (frvbf,cmmulhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23747 #define FLD(f) abuf->fields.sfmt_cmmachs.f
23748 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23749 int UNUSED written = 0;
23750 IADDR UNUSED pc = abuf->addr;
23751 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23753 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23754 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
23755 frvbf_media_acc_not_aligned (current_cpu);
23756 } else {
23757 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
23759 UHI tmp_argihi;
23760 UHI tmp_argilo;
23761 UHI tmp_argjhi;
23762 UHI tmp_argjlo;
23764 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23765 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23766 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23767 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23770 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
23771 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23772 written |= (1 << 11);
23773 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23776 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
23777 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
23778 written |= (1 << 12);
23779 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23786 abuf->written = written;
23787 return vpc;
23788 #undef FLD
23791 /* mqmulhs: mqmulhs$pack $FRintieven,$FRintjeven,$ACC40Sk */
23793 static SEM_PC
23794 SEM_FN_NAME (frvbf,mqmulhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23796 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
23797 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23798 int UNUSED written = 0;
23799 IADDR UNUSED pc = abuf->addr;
23800 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23802 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23803 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
23804 frvbf_media_acc_not_aligned (current_cpu);
23805 } else {
23806 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
23807 frvbf_media_register_not_aligned (current_cpu);
23808 } else {
23810 HI tmp_argihi;
23811 HI tmp_argilo;
23812 HI tmp_argjhi;
23813 HI tmp_argjlo;
23815 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23816 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23817 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23818 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23821 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
23822 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23823 written |= (1 << 13);
23824 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23827 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
23828 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
23829 written |= (1 << 14);
23830 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23833 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23834 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23835 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23836 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23839 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
23840 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
23841 written |= (1 << 15);
23842 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23845 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
23846 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
23847 written |= (1 << 16);
23848 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23855 abuf->written = written;
23856 return vpc;
23857 #undef FLD
23860 /* mqmulhu: mqmulhu$pack $FRintieven,$FRintjeven,$ACC40Sk */
23862 static SEM_PC
23863 SEM_FN_NAME (frvbf,mqmulhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23865 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
23866 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23867 int UNUSED written = 0;
23868 IADDR UNUSED pc = abuf->addr;
23869 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23871 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23872 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
23873 frvbf_media_acc_not_aligned (current_cpu);
23874 } else {
23875 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
23876 frvbf_media_register_not_aligned (current_cpu);
23877 } else {
23879 UHI tmp_argihi;
23880 UHI tmp_argilo;
23881 UHI tmp_argjhi;
23882 UHI tmp_argjlo;
23884 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23885 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23886 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23887 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23890 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
23891 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23892 written |= (1 << 13);
23893 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23896 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
23897 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
23898 written |= (1 << 14);
23899 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23902 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23903 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23904 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23905 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23908 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
23909 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
23910 written |= (1 << 15);
23911 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23914 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
23915 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
23916 written |= (1 << 16);
23917 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23924 abuf->written = written;
23925 return vpc;
23926 #undef FLD
23929 /* mqmulxhs: mqmulxhs$pack $FRintieven,$FRintjeven,$ACC40Sk */
23931 static SEM_PC
23932 SEM_FN_NAME (frvbf,mqmulxhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
23934 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
23935 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
23936 int UNUSED written = 0;
23937 IADDR UNUSED pc = abuf->addr;
23938 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
23940 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
23941 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
23942 frvbf_media_acc_not_aligned (current_cpu);
23943 } else {
23944 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
23945 frvbf_media_register_not_aligned (current_cpu);
23946 } else {
23948 HI tmp_argihi;
23949 HI tmp_argilo;
23950 HI tmp_argjhi;
23951 HI tmp_argjlo;
23953 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23954 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23955 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23956 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23959 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
23960 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
23961 written |= (1 << 13);
23962 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23965 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
23966 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
23967 written |= (1 << 14);
23968 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23971 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23972 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
23973 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23974 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
23977 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
23978 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
23979 written |= (1 << 15);
23980 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23983 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
23984 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
23985 written |= (1 << 16);
23986 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
23993 abuf->written = written;
23994 return vpc;
23995 #undef FLD
23998 /* mqmulxhu: mqmulxhu$pack $FRintieven,$FRintjeven,$ACC40Sk */
24000 static SEM_PC
24001 SEM_FN_NAME (frvbf,mqmulxhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24003 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
24004 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24005 int UNUSED written = 0;
24006 IADDR UNUSED pc = abuf->addr;
24007 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24009 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
24010 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
24011 frvbf_media_acc_not_aligned (current_cpu);
24012 } else {
24013 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
24014 frvbf_media_register_not_aligned (current_cpu);
24015 } else {
24017 UHI tmp_argihi;
24018 UHI tmp_argilo;
24019 UHI tmp_argjhi;
24020 UHI tmp_argjlo;
24022 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24023 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24024 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24025 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24028 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
24029 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24030 written |= (1 << 13);
24031 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24034 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
24035 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
24036 written |= (1 << 14);
24037 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24040 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24041 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24042 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24043 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24046 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
24047 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
24048 written |= (1 << 15);
24049 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24052 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
24053 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
24054 written |= (1 << 16);
24055 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24062 abuf->written = written;
24063 return vpc;
24064 #undef FLD
24067 /* cmqmulhs: cmqmulhs$pack $FRintieven,$FRintjeven,$ACC40Sk,$CCi,$cond */
24069 static SEM_PC
24070 SEM_FN_NAME (frvbf,cmqmulhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24072 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
24073 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24074 int UNUSED written = 0;
24075 IADDR UNUSED pc = abuf->addr;
24076 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24078 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
24079 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
24080 frvbf_media_acc_not_aligned (current_cpu);
24081 } else {
24082 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
24083 frvbf_media_register_not_aligned (current_cpu);
24084 } else {
24085 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
24087 HI tmp_argihi;
24088 HI tmp_argilo;
24089 HI tmp_argjhi;
24090 HI tmp_argjlo;
24092 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24093 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24094 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24095 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24098 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
24099 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24100 written |= (1 << 15);
24101 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24104 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
24105 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
24106 written |= (1 << 16);
24107 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24110 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24111 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24112 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24113 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24116 DI opval = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
24117 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
24118 written |= (1 << 17);
24119 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24122 DI opval = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
24123 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
24124 written |= (1 << 18);
24125 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24133 abuf->written = written;
24134 return vpc;
24135 #undef FLD
24138 /* cmqmulhu: cmqmulhu$pack $FRintieven,$FRintjeven,$ACC40Sk,$CCi,$cond */
24140 static SEM_PC
24141 SEM_FN_NAME (frvbf,cmqmulhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24143 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
24144 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24145 int UNUSED written = 0;
24146 IADDR UNUSED pc = abuf->addr;
24147 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24149 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
24150 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
24151 frvbf_media_acc_not_aligned (current_cpu);
24152 } else {
24153 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
24154 frvbf_media_register_not_aligned (current_cpu);
24155 } else {
24156 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
24158 UHI tmp_argihi;
24159 UHI tmp_argilo;
24160 UHI tmp_argjhi;
24161 UHI tmp_argjlo;
24163 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24164 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24165 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24166 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24169 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
24170 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24171 written |= (1 << 15);
24172 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24175 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
24176 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
24177 written |= (1 << 16);
24178 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24181 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24182 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24183 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24184 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24187 DI opval = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
24188 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
24189 written |= (1 << 17);
24190 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24193 DI opval = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
24194 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
24195 written |= (1 << 18);
24196 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24204 abuf->written = written;
24205 return vpc;
24206 #undef FLD
24209 /* mmachs: mmachs$pack $FRinti,$FRintj,$ACC40Sk */
24211 static SEM_PC
24212 SEM_FN_NAME (frvbf,mmachs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24214 #define FLD(f) abuf->fields.sfmt_cmmachs.f
24215 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24216 int UNUSED written = 0;
24217 IADDR UNUSED pc = abuf->addr;
24218 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24220 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
24221 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
24222 frvbf_media_acc_not_aligned (current_cpu);
24223 } else {
24225 HI tmp_argihi;
24226 HI tmp_argilo;
24227 HI tmp_argjhi;
24228 HI tmp_argjlo;
24230 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24231 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24232 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24233 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24236 DI tmp_tmp;
24237 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
24238 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24241 DI opval = MAKEDI (127, 0xffffffff);
24242 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24243 written |= (1 << 11);
24244 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24246 frvbf_media_overflow (current_cpu, 8);
24248 } else {
24249 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24252 DI opval = MAKEDI (0xffffff80, 0);
24253 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24254 written |= (1 << 11);
24255 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24257 frvbf_media_overflow (current_cpu, 8);
24259 } else {
24261 DI opval = tmp_tmp;
24262 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24263 written |= (1 << 11);
24264 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24270 DI tmp_tmp;
24271 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 1)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
24272 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24275 DI opval = MAKEDI (127, 0xffffffff);
24276 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
24277 written |= (1 << 12);
24278 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24280 frvbf_media_overflow (current_cpu, 4);
24282 } else {
24283 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24286 DI opval = MAKEDI (0xffffff80, 0);
24287 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
24288 written |= (1 << 12);
24289 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24291 frvbf_media_overflow (current_cpu, 4);
24293 } else {
24295 DI opval = tmp_tmp;
24296 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
24297 written |= (1 << 12);
24298 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24307 abuf->written = written;
24308 return vpc;
24309 #undef FLD
24312 /* mmachu: mmachu$pack $FRinti,$FRintj,$ACC40Uk */
24314 static SEM_PC
24315 SEM_FN_NAME (frvbf,mmachu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24317 #define FLD(f) abuf->fields.sfmt_cmmachu.f
24318 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24319 int UNUSED written = 0;
24320 IADDR UNUSED pc = abuf->addr;
24321 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24323 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Uk))) {
24324 if (ANDSI (FLD (f_ACC40Uk), SUBSI (2, 1))) {
24325 frvbf_media_acc_not_aligned (current_cpu);
24326 } else {
24328 UHI tmp_argihi;
24329 UHI tmp_argilo;
24330 UHI tmp_argjhi;
24331 UHI tmp_argjlo;
24333 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24334 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24335 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24336 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24339 DI tmp_tmp;
24340 tmp_tmp = ADDDI (GET_H_ACC40U (FLD (f_ACC40Uk)), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
24341 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24344 UDI opval = MAKEDI (255, 0xffffffff);
24345 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24346 written |= (1 << 11);
24347 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24349 frvbf_media_overflow (current_cpu, 8);
24351 } else {
24352 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24355 UDI opval = MAKEDI (0, 0);
24356 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24357 written |= (1 << 11);
24358 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24360 frvbf_media_overflow (current_cpu, 8);
24362 } else {
24364 UDI opval = tmp_tmp;
24365 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24366 written |= (1 << 11);
24367 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24373 DI tmp_tmp;
24374 tmp_tmp = ADDDI (GET_H_ACC40U (ADDSI (FLD (f_ACC40Uk), 1)), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
24375 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24378 DI opval = MAKEDI (255, 0xffffffff);
24379 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
24380 written |= (1 << 12);
24381 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24383 frvbf_media_overflow (current_cpu, 4);
24385 } else {
24386 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24389 DI opval = MAKEDI (0, 0);
24390 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
24391 written |= (1 << 12);
24392 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24394 frvbf_media_overflow (current_cpu, 4);
24396 } else {
24398 DI opval = tmp_tmp;
24399 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
24400 written |= (1 << 12);
24401 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24410 abuf->written = written;
24411 return vpc;
24412 #undef FLD
24415 /* mmrdhs: mmrdhs$pack $FRinti,$FRintj,$ACC40Sk */
24417 static SEM_PC
24418 SEM_FN_NAME (frvbf,mmrdhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24420 #define FLD(f) abuf->fields.sfmt_cmmachs.f
24421 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24422 int UNUSED written = 0;
24423 IADDR UNUSED pc = abuf->addr;
24424 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24426 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
24427 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
24428 frvbf_media_acc_not_aligned (current_cpu);
24429 } else {
24431 HI tmp_argihi;
24432 HI tmp_argilo;
24433 HI tmp_argjhi;
24434 HI tmp_argjlo;
24436 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24437 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24438 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24439 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24442 DI tmp_tmp;
24443 tmp_tmp = SUBDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
24444 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24447 DI opval = MAKEDI (127, 0xffffffff);
24448 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24449 written |= (1 << 11);
24450 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24452 frvbf_media_overflow (current_cpu, 8);
24454 } else {
24455 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24458 DI opval = MAKEDI (0xffffff80, 0);
24459 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24460 written |= (1 << 11);
24461 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24463 frvbf_media_overflow (current_cpu, 8);
24465 } else {
24467 DI opval = tmp_tmp;
24468 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24469 written |= (1 << 11);
24470 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24476 DI tmp_tmp;
24477 tmp_tmp = SUBDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 1)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
24478 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24481 DI opval = MAKEDI (127, 0xffffffff);
24482 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
24483 written |= (1 << 12);
24484 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24486 frvbf_media_overflow (current_cpu, 4);
24488 } else {
24489 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24492 DI opval = MAKEDI (0xffffff80, 0);
24493 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
24494 written |= (1 << 12);
24495 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24497 frvbf_media_overflow (current_cpu, 4);
24499 } else {
24501 DI opval = tmp_tmp;
24502 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
24503 written |= (1 << 12);
24504 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24513 abuf->written = written;
24514 return vpc;
24515 #undef FLD
24518 /* mmrdhu: mmrdhu$pack $FRinti,$FRintj,$ACC40Uk */
24520 static SEM_PC
24521 SEM_FN_NAME (frvbf,mmrdhu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24523 #define FLD(f) abuf->fields.sfmt_cmmachu.f
24524 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24525 int UNUSED written = 0;
24526 IADDR UNUSED pc = abuf->addr;
24527 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24529 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Uk))) {
24530 if (ANDSI (FLD (f_ACC40Uk), SUBSI (2, 1))) {
24531 frvbf_media_acc_not_aligned (current_cpu);
24532 } else {
24534 UHI tmp_argihi;
24535 UHI tmp_argilo;
24536 UHI tmp_argjhi;
24537 UHI tmp_argjlo;
24539 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24540 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24541 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24542 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24545 DI tmp_tmp;
24546 tmp_tmp = SUBDI (GET_H_ACC40U (FLD (f_ACC40Uk)), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
24547 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24550 UDI opval = MAKEDI (255, 0xffffffff);
24551 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24552 written |= (1 << 11);
24553 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24555 frvbf_media_overflow (current_cpu, 8);
24557 } else {
24558 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24561 UDI opval = MAKEDI (0, 0);
24562 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24563 written |= (1 << 11);
24564 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24566 frvbf_media_overflow (current_cpu, 8);
24568 } else {
24570 UDI opval = tmp_tmp;
24571 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24572 written |= (1 << 11);
24573 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24579 DI tmp_tmp;
24580 tmp_tmp = SUBDI (GET_H_ACC40U (ADDSI (FLD (f_ACC40Uk), 1)), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
24581 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24584 DI opval = MAKEDI (255, 0xffffffff);
24585 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
24586 written |= (1 << 12);
24587 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24589 frvbf_media_overflow (current_cpu, 4);
24591 } else {
24592 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24595 DI opval = MAKEDI (0, 0);
24596 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
24597 written |= (1 << 12);
24598 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24600 frvbf_media_overflow (current_cpu, 4);
24602 } else {
24604 DI opval = tmp_tmp;
24605 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
24606 written |= (1 << 12);
24607 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24616 abuf->written = written;
24617 return vpc;
24618 #undef FLD
24621 /* cmmachs: cmmachs$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
24623 static SEM_PC
24624 SEM_FN_NAME (frvbf,cmmachs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24626 #define FLD(f) abuf->fields.sfmt_cmmachs.f
24627 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24628 int UNUSED written = 0;
24629 IADDR UNUSED pc = abuf->addr;
24630 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24632 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
24633 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
24634 frvbf_media_acc_not_aligned (current_cpu);
24635 } else {
24636 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
24638 HI tmp_argihi;
24639 HI tmp_argilo;
24640 HI tmp_argjhi;
24641 HI tmp_argjlo;
24643 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24644 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24645 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24646 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24649 DI tmp_tmp;
24650 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
24651 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24654 DI opval = MAKEDI (127, 0xffffffff);
24655 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24656 written |= (1 << 13);
24657 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24659 frvbf_media_overflow (current_cpu, 8);
24661 } else {
24662 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24665 DI opval = MAKEDI (0xffffff80, 0);
24666 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24667 written |= (1 << 13);
24668 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24670 frvbf_media_overflow (current_cpu, 8);
24672 } else {
24674 DI opval = tmp_tmp;
24675 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24676 written |= (1 << 13);
24677 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24683 DI tmp_tmp;
24684 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 1)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
24685 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24688 DI opval = MAKEDI (127, 0xffffffff);
24689 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
24690 written |= (1 << 14);
24691 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24693 frvbf_media_overflow (current_cpu, 4);
24695 } else {
24696 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24699 DI opval = MAKEDI (0xffffff80, 0);
24700 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
24701 written |= (1 << 14);
24702 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24704 frvbf_media_overflow (current_cpu, 4);
24706 } else {
24708 DI opval = tmp_tmp;
24709 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
24710 written |= (1 << 14);
24711 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24721 abuf->written = written;
24722 return vpc;
24723 #undef FLD
24726 /* cmmachu: cmmachu$pack $FRinti,$FRintj,$ACC40Uk,$CCi,$cond */
24728 static SEM_PC
24729 SEM_FN_NAME (frvbf,cmmachu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24731 #define FLD(f) abuf->fields.sfmt_cmmachu.f
24732 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24733 int UNUSED written = 0;
24734 IADDR UNUSED pc = abuf->addr;
24735 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24737 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Uk))) {
24738 if (ANDSI (FLD (f_ACC40Uk), SUBSI (2, 1))) {
24739 frvbf_media_acc_not_aligned (current_cpu);
24740 } else {
24741 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
24743 UHI tmp_argihi;
24744 UHI tmp_argilo;
24745 UHI tmp_argjhi;
24746 UHI tmp_argjlo;
24748 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24749 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24750 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24751 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24754 DI tmp_tmp;
24755 tmp_tmp = ADDDI (GET_H_ACC40U (FLD (f_ACC40Uk)), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
24756 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24759 UDI opval = MAKEDI (255, 0xffffffff);
24760 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24761 written |= (1 << 13);
24762 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24764 frvbf_media_overflow (current_cpu, 8);
24766 } else {
24767 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24770 UDI opval = MAKEDI (0, 0);
24771 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24772 written |= (1 << 13);
24773 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24775 frvbf_media_overflow (current_cpu, 8);
24777 } else {
24779 UDI opval = tmp_tmp;
24780 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
24781 written |= (1 << 13);
24782 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24788 DI tmp_tmp;
24789 tmp_tmp = ADDDI (GET_H_ACC40U (ADDSI (FLD (f_ACC40Uk), 1)), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
24790 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
24793 DI opval = MAKEDI (255, 0xffffffff);
24794 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
24795 written |= (1 << 14);
24796 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24798 frvbf_media_overflow (current_cpu, 4);
24800 } else {
24801 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
24804 DI opval = MAKEDI (0, 0);
24805 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
24806 written |= (1 << 14);
24807 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24809 frvbf_media_overflow (current_cpu, 4);
24811 } else {
24813 DI opval = tmp_tmp;
24814 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
24815 written |= (1 << 14);
24816 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
24826 abuf->written = written;
24827 return vpc;
24828 #undef FLD
24831 /* mqmachs: mqmachs$pack $FRintieven,$FRintjeven,$ACC40Sk */
24833 static SEM_PC
24834 SEM_FN_NAME (frvbf,mqmachs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
24836 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
24837 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
24838 int UNUSED written = 0;
24839 IADDR UNUSED pc = abuf->addr;
24840 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
24842 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
24843 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
24844 frvbf_media_acc_not_aligned (current_cpu);
24845 } else {
24846 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
24847 frvbf_media_register_not_aligned (current_cpu);
24848 } else {
24850 HI tmp_argihi;
24851 HI tmp_argilo;
24852 HI tmp_argjhi;
24853 HI tmp_argjlo;
24855 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24856 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24857 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24858 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24861 DI tmp_tmp;
24862 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
24863 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24866 DI opval = MAKEDI (127, 0xffffffff);
24867 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24868 written |= (1 << 17);
24869 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24871 frvbf_media_overflow (current_cpu, 8);
24873 } else {
24874 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24877 DI opval = MAKEDI (0xffffff80, 0);
24878 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24879 written |= (1 << 17);
24880 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24882 frvbf_media_overflow (current_cpu, 8);
24884 } else {
24886 DI opval = tmp_tmp;
24887 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
24888 written |= (1 << 17);
24889 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24895 DI tmp_tmp;
24896 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 1)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
24897 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24900 DI opval = MAKEDI (127, 0xffffffff);
24901 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
24902 written |= (1 << 18);
24903 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24905 frvbf_media_overflow (current_cpu, 4);
24907 } else {
24908 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24911 DI opval = MAKEDI (0xffffff80, 0);
24912 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
24913 written |= (1 << 18);
24914 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24916 frvbf_media_overflow (current_cpu, 4);
24918 } else {
24920 DI opval = tmp_tmp;
24921 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
24922 written |= (1 << 18);
24923 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24929 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24930 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
24931 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24932 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
24935 DI tmp_tmp;
24936 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 2)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
24937 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24940 DI opval = MAKEDI (127, 0xffffffff);
24941 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
24942 written |= (1 << 19);
24943 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24945 frvbf_media_overflow (current_cpu, 2);
24947 } else {
24948 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24951 DI opval = MAKEDI (0xffffff80, 0);
24952 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
24953 written |= (1 << 19);
24954 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24956 frvbf_media_overflow (current_cpu, 2);
24958 } else {
24960 DI opval = tmp_tmp;
24961 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
24962 written |= (1 << 19);
24963 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24969 DI tmp_tmp;
24970 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 3)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
24971 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
24974 DI opval = MAKEDI (127, 0xffffffff);
24975 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
24976 written |= (1 << 20);
24977 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24979 frvbf_media_overflow (current_cpu, 1);
24981 } else {
24982 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
24985 DI opval = MAKEDI (0xffffff80, 0);
24986 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
24987 written |= (1 << 20);
24988 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
24990 frvbf_media_overflow (current_cpu, 1);
24992 } else {
24994 DI opval = tmp_tmp;
24995 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
24996 written |= (1 << 20);
24997 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25007 abuf->written = written;
25008 return vpc;
25009 #undef FLD
25012 /* mqmachu: mqmachu$pack $FRintieven,$FRintjeven,$ACC40Uk */
25014 static SEM_PC
25015 SEM_FN_NAME (frvbf,mqmachu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
25017 #define FLD(f) abuf->fields.sfmt_cmqmachu.f
25018 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
25019 int UNUSED written = 0;
25020 IADDR UNUSED pc = abuf->addr;
25021 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
25023 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Uk))) {
25024 if (ANDSI (FLD (f_ACC40Uk), SUBSI (4, 1))) {
25025 frvbf_media_acc_not_aligned (current_cpu);
25026 } else {
25027 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
25028 frvbf_media_register_not_aligned (current_cpu);
25029 } else {
25031 UHI tmp_argihi;
25032 UHI tmp_argilo;
25033 UHI tmp_argjhi;
25034 UHI tmp_argjlo;
25036 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25037 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25038 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25039 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25042 DI tmp_tmp;
25043 tmp_tmp = ADDDI (GET_H_ACC40U (FLD (f_ACC40Uk)), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
25044 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25047 UDI opval = MAKEDI (255, 0xffffffff);
25048 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
25049 written |= (1 << 17);
25050 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25052 frvbf_media_overflow (current_cpu, 8);
25054 } else {
25055 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25058 UDI opval = MAKEDI (0, 0);
25059 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
25060 written |= (1 << 17);
25061 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25063 frvbf_media_overflow (current_cpu, 8);
25065 } else {
25067 UDI opval = tmp_tmp;
25068 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
25069 written |= (1 << 17);
25070 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25076 DI tmp_tmp;
25077 tmp_tmp = ADDDI (GET_H_ACC40U (ADDSI (FLD (f_ACC40Uk), 1)), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
25078 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25081 DI opval = MAKEDI (255, 0xffffffff);
25082 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
25083 written |= (1 << 18);
25084 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25086 frvbf_media_overflow (current_cpu, 4);
25088 } else {
25089 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25092 DI opval = MAKEDI (0, 0);
25093 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
25094 written |= (1 << 18);
25095 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25097 frvbf_media_overflow (current_cpu, 4);
25099 } else {
25101 DI opval = tmp_tmp;
25102 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
25103 written |= (1 << 18);
25104 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25110 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25111 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25112 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25113 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25116 DI tmp_tmp;
25117 tmp_tmp = ADDDI (GET_H_ACC40U (ADDSI (FLD (f_ACC40Uk), 2)), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
25118 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25121 DI opval = MAKEDI (255, 0xffffffff);
25122 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 2), opval);
25123 written |= (1 << 19);
25124 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25126 frvbf_media_overflow (current_cpu, 2);
25128 } else {
25129 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25132 DI opval = MAKEDI (0, 0);
25133 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 2), opval);
25134 written |= (1 << 19);
25135 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25137 frvbf_media_overflow (current_cpu, 2);
25139 } else {
25141 DI opval = tmp_tmp;
25142 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 2), opval);
25143 written |= (1 << 19);
25144 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25150 DI tmp_tmp;
25151 tmp_tmp = ADDDI (GET_H_ACC40U (ADDSI (FLD (f_ACC40Uk), 3)), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
25152 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25155 DI opval = MAKEDI (255, 0xffffffff);
25156 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 3), opval);
25157 written |= (1 << 20);
25158 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25160 frvbf_media_overflow (current_cpu, 1);
25162 } else {
25163 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25166 DI opval = MAKEDI (0, 0);
25167 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 3), opval);
25168 written |= (1 << 20);
25169 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25171 frvbf_media_overflow (current_cpu, 1);
25173 } else {
25175 DI opval = tmp_tmp;
25176 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 3), opval);
25177 written |= (1 << 20);
25178 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25188 abuf->written = written;
25189 return vpc;
25190 #undef FLD
25193 /* cmqmachs: cmqmachs$pack $FRintieven,$FRintjeven,$ACC40Sk,$CCi,$cond */
25195 static SEM_PC
25196 SEM_FN_NAME (frvbf,cmqmachs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
25198 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
25199 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
25200 int UNUSED written = 0;
25201 IADDR UNUSED pc = abuf->addr;
25202 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
25204 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
25205 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
25206 frvbf_media_acc_not_aligned (current_cpu);
25207 } else {
25208 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
25209 frvbf_media_register_not_aligned (current_cpu);
25210 } else {
25211 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
25213 HI tmp_argihi;
25214 HI tmp_argilo;
25215 HI tmp_argjhi;
25216 HI tmp_argjlo;
25218 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25219 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25220 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25221 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25224 DI tmp_tmp;
25225 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
25226 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25229 DI opval = MAKEDI (127, 0xffffffff);
25230 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25231 written |= (1 << 19);
25232 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25234 frvbf_media_overflow (current_cpu, 8);
25236 } else {
25237 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25240 DI opval = MAKEDI (0xffffff80, 0);
25241 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25242 written |= (1 << 19);
25243 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25245 frvbf_media_overflow (current_cpu, 8);
25247 } else {
25249 DI opval = tmp_tmp;
25250 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25251 written |= (1 << 19);
25252 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25258 DI tmp_tmp;
25259 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 1)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
25260 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25263 DI opval = MAKEDI (127, 0xffffffff);
25264 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
25265 written |= (1 << 20);
25266 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25268 frvbf_media_overflow (current_cpu, 4);
25270 } else {
25271 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25274 DI opval = MAKEDI (0xffffff80, 0);
25275 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
25276 written |= (1 << 20);
25277 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25279 frvbf_media_overflow (current_cpu, 4);
25281 } else {
25283 DI opval = tmp_tmp;
25284 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
25285 written |= (1 << 20);
25286 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25292 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25293 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25294 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25295 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25298 DI tmp_tmp;
25299 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 2)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
25300 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25303 DI opval = MAKEDI (127, 0xffffffff);
25304 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
25305 written |= (1 << 21);
25306 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25308 frvbf_media_overflow (current_cpu, 2);
25310 } else {
25311 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25314 DI opval = MAKEDI (0xffffff80, 0);
25315 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
25316 written |= (1 << 21);
25317 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25319 frvbf_media_overflow (current_cpu, 2);
25321 } else {
25323 DI opval = tmp_tmp;
25324 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
25325 written |= (1 << 21);
25326 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25332 DI tmp_tmp;
25333 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 3)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
25334 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25337 DI opval = MAKEDI (127, 0xffffffff);
25338 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
25339 written |= (1 << 22);
25340 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25342 frvbf_media_overflow (current_cpu, 1);
25344 } else {
25345 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25348 DI opval = MAKEDI (0xffffff80, 0);
25349 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
25350 written |= (1 << 22);
25351 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25353 frvbf_media_overflow (current_cpu, 1);
25355 } else {
25357 DI opval = tmp_tmp;
25358 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
25359 written |= (1 << 22);
25360 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25371 abuf->written = written;
25372 return vpc;
25373 #undef FLD
25376 /* cmqmachu: cmqmachu$pack $FRintieven,$FRintjeven,$ACC40Uk,$CCi,$cond */
25378 static SEM_PC
25379 SEM_FN_NAME (frvbf,cmqmachu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
25381 #define FLD(f) abuf->fields.sfmt_cmqmachu.f
25382 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
25383 int UNUSED written = 0;
25384 IADDR UNUSED pc = abuf->addr;
25385 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
25387 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Uk))) {
25388 if (ANDSI (FLD (f_ACC40Uk), SUBSI (4, 1))) {
25389 frvbf_media_acc_not_aligned (current_cpu);
25390 } else {
25391 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
25392 frvbf_media_register_not_aligned (current_cpu);
25393 } else {
25394 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
25396 UHI tmp_argihi;
25397 UHI tmp_argilo;
25398 UHI tmp_argjhi;
25399 UHI tmp_argjlo;
25401 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25402 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25403 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25404 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25407 DI tmp_tmp;
25408 tmp_tmp = ADDDI (GET_H_ACC40U (FLD (f_ACC40Uk)), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
25409 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25412 UDI opval = MAKEDI (255, 0xffffffff);
25413 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
25414 written |= (1 << 19);
25415 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25417 frvbf_media_overflow (current_cpu, 8);
25419 } else {
25420 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25423 UDI opval = MAKEDI (0, 0);
25424 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
25425 written |= (1 << 19);
25426 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25428 frvbf_media_overflow (current_cpu, 8);
25430 } else {
25432 UDI opval = tmp_tmp;
25433 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, FLD (f_ACC40Uk), opval);
25434 written |= (1 << 19);
25435 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25441 DI tmp_tmp;
25442 tmp_tmp = ADDDI (GET_H_ACC40U (ADDSI (FLD (f_ACC40Uk), 1)), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
25443 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25446 DI opval = MAKEDI (255, 0xffffffff);
25447 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
25448 written |= (1 << 20);
25449 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25451 frvbf_media_overflow (current_cpu, 4);
25453 } else {
25454 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25457 DI opval = MAKEDI (0, 0);
25458 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
25459 written |= (1 << 20);
25460 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25462 frvbf_media_overflow (current_cpu, 4);
25464 } else {
25466 DI opval = tmp_tmp;
25467 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 1), opval);
25468 written |= (1 << 20);
25469 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25475 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25476 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25477 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25478 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25481 DI tmp_tmp;
25482 tmp_tmp = ADDDI (GET_H_ACC40U (ADDSI (FLD (f_ACC40Uk), 2)), MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi)));
25483 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25486 DI opval = MAKEDI (255, 0xffffffff);
25487 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 2), opval);
25488 written |= (1 << 21);
25489 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25491 frvbf_media_overflow (current_cpu, 2);
25493 } else {
25494 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25497 DI opval = MAKEDI (0, 0);
25498 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 2), opval);
25499 written |= (1 << 21);
25500 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25502 frvbf_media_overflow (current_cpu, 2);
25504 } else {
25506 DI opval = tmp_tmp;
25507 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 2), opval);
25508 written |= (1 << 21);
25509 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25515 DI tmp_tmp;
25516 tmp_tmp = ADDDI (GET_H_ACC40U (ADDSI (FLD (f_ACC40Uk), 3)), MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo)));
25517 if (GTDI (tmp_tmp, MAKEDI (255, 0xffffffff))) {
25520 DI opval = MAKEDI (255, 0xffffffff);
25521 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 3), opval);
25522 written |= (1 << 22);
25523 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25525 frvbf_media_overflow (current_cpu, 1);
25527 } else {
25528 if (LTDI (tmp_tmp, MAKEDI (0, 0))) {
25531 DI opval = MAKEDI (0, 0);
25532 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 3), opval);
25533 written |= (1 << 22);
25534 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25536 frvbf_media_overflow (current_cpu, 1);
25538 } else {
25540 DI opval = tmp_tmp;
25541 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40U_set, ADDSI (FLD (f_ACC40Uk), 3), opval);
25542 written |= (1 << 22);
25543 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40U", 'D', opval);
25554 abuf->written = written;
25555 return vpc;
25556 #undef FLD
25559 /* mqxmachs: mqxmachs$pack $FRintieven,$FRintjeven,$ACC40Sk */
25561 static SEM_PC
25562 SEM_FN_NAME (frvbf,mqxmachs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
25564 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
25565 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
25566 int UNUSED written = 0;
25567 IADDR UNUSED pc = abuf->addr;
25568 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
25570 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
25571 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
25572 frvbf_media_acc_not_aligned (current_cpu);
25573 } else {
25574 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
25575 frvbf_media_register_not_aligned (current_cpu);
25576 } else {
25578 HI tmp_argihi;
25579 HI tmp_argilo;
25580 HI tmp_argjhi;
25581 HI tmp_argjlo;
25583 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25584 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25585 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25586 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25589 DI tmp_tmp;
25590 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 2)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
25591 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25594 DI opval = MAKEDI (127, 0xffffffff);
25595 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
25596 written |= (1 << 19);
25597 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25599 frvbf_media_overflow (current_cpu, 2);
25601 } else {
25602 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25605 DI opval = MAKEDI (0xffffff80, 0);
25606 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
25607 written |= (1 << 19);
25608 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25610 frvbf_media_overflow (current_cpu, 2);
25612 } else {
25614 DI opval = tmp_tmp;
25615 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
25616 written |= (1 << 19);
25617 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25623 DI tmp_tmp;
25624 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 3)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
25625 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25628 DI opval = MAKEDI (127, 0xffffffff);
25629 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
25630 written |= (1 << 20);
25631 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25633 frvbf_media_overflow (current_cpu, 1);
25635 } else {
25636 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25639 DI opval = MAKEDI (0xffffff80, 0);
25640 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
25641 written |= (1 << 20);
25642 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25644 frvbf_media_overflow (current_cpu, 1);
25646 } else {
25648 DI opval = tmp_tmp;
25649 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
25650 written |= (1 << 20);
25651 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25657 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25658 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25659 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25660 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25663 DI tmp_tmp;
25664 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi)));
25665 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25668 DI opval = MAKEDI (127, 0xffffffff);
25669 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25670 written |= (1 << 17);
25671 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25673 frvbf_media_overflow (current_cpu, 8);
25675 } else {
25676 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25679 DI opval = MAKEDI (0xffffff80, 0);
25680 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25681 written |= (1 << 17);
25682 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25684 frvbf_media_overflow (current_cpu, 8);
25686 } else {
25688 DI opval = tmp_tmp;
25689 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25690 written |= (1 << 17);
25691 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25697 DI tmp_tmp;
25698 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 1)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo)));
25699 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25702 DI opval = MAKEDI (127, 0xffffffff);
25703 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
25704 written |= (1 << 18);
25705 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25707 frvbf_media_overflow (current_cpu, 4);
25709 } else {
25710 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25713 DI opval = MAKEDI (0xffffff80, 0);
25714 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
25715 written |= (1 << 18);
25716 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25718 frvbf_media_overflow (current_cpu, 4);
25720 } else {
25722 DI opval = tmp_tmp;
25723 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
25724 written |= (1 << 18);
25725 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25735 abuf->written = written;
25736 return vpc;
25737 #undef FLD
25740 /* mqxmacxhs: mqxmacxhs$pack $FRintieven,$FRintjeven,$ACC40Sk */
25742 static SEM_PC
25743 SEM_FN_NAME (frvbf,mqxmacxhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
25745 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
25746 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
25747 int UNUSED written = 0;
25748 IADDR UNUSED pc = abuf->addr;
25749 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
25751 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
25752 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
25753 frvbf_media_acc_not_aligned (current_cpu);
25754 } else {
25755 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
25756 frvbf_media_register_not_aligned (current_cpu);
25757 } else {
25759 HI tmp_argihi;
25760 HI tmp_argilo;
25761 HI tmp_argjhi;
25762 HI tmp_argjlo;
25764 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25765 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25766 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25767 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25770 DI tmp_tmp;
25771 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 2)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo)));
25772 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25775 DI opval = MAKEDI (127, 0xffffffff);
25776 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
25777 written |= (1 << 19);
25778 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25780 frvbf_media_overflow (current_cpu, 2);
25782 } else {
25783 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25786 DI opval = MAKEDI (0xffffff80, 0);
25787 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
25788 written |= (1 << 19);
25789 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25791 frvbf_media_overflow (current_cpu, 2);
25793 } else {
25795 DI opval = tmp_tmp;
25796 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
25797 written |= (1 << 19);
25798 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25804 DI tmp_tmp;
25805 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 3)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi)));
25806 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25809 DI opval = MAKEDI (127, 0xffffffff);
25810 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
25811 written |= (1 << 20);
25812 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25814 frvbf_media_overflow (current_cpu, 1);
25816 } else {
25817 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25820 DI opval = MAKEDI (0xffffff80, 0);
25821 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
25822 written |= (1 << 20);
25823 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25825 frvbf_media_overflow (current_cpu, 1);
25827 } else {
25829 DI opval = tmp_tmp;
25830 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
25831 written |= (1 << 20);
25832 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25838 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25839 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25840 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25841 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25844 DI tmp_tmp;
25845 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo)));
25846 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25849 DI opval = MAKEDI (127, 0xffffffff);
25850 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25851 written |= (1 << 17);
25852 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25854 frvbf_media_overflow (current_cpu, 8);
25856 } else {
25857 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25860 DI opval = MAKEDI (0xffffff80, 0);
25861 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25862 written |= (1 << 17);
25863 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25865 frvbf_media_overflow (current_cpu, 8);
25867 } else {
25869 DI opval = tmp_tmp;
25870 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25871 written |= (1 << 17);
25872 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25878 DI tmp_tmp;
25879 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 1)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi)));
25880 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25883 DI opval = MAKEDI (127, 0xffffffff);
25884 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
25885 written |= (1 << 18);
25886 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25888 frvbf_media_overflow (current_cpu, 4);
25890 } else {
25891 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25894 DI opval = MAKEDI (0xffffff80, 0);
25895 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
25896 written |= (1 << 18);
25897 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25899 frvbf_media_overflow (current_cpu, 4);
25901 } else {
25903 DI opval = tmp_tmp;
25904 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
25905 written |= (1 << 18);
25906 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25916 abuf->written = written;
25917 return vpc;
25918 #undef FLD
25921 /* mqmacxhs: mqmacxhs$pack $FRintieven,$FRintjeven,$ACC40Sk */
25923 static SEM_PC
25924 SEM_FN_NAME (frvbf,mqmacxhs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
25926 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
25927 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
25928 int UNUSED written = 0;
25929 IADDR UNUSED pc = abuf->addr;
25930 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
25932 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
25933 if (ANDSI (FLD (f_ACC40Sk), SUBSI (4, 1))) {
25934 frvbf_media_acc_not_aligned (current_cpu);
25935 } else {
25936 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
25937 frvbf_media_register_not_aligned (current_cpu);
25938 } else {
25940 HI tmp_argihi;
25941 HI tmp_argilo;
25942 HI tmp_argjhi;
25943 HI tmp_argjlo;
25945 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25946 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
25947 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25948 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
25951 DI tmp_tmp;
25952 tmp_tmp = ADDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo)));
25953 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25956 DI opval = MAKEDI (127, 0xffffffff);
25957 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25958 written |= (1 << 17);
25959 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25961 frvbf_media_overflow (current_cpu, 8);
25963 } else {
25964 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
25967 DI opval = MAKEDI (0xffffff80, 0);
25968 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25969 written |= (1 << 17);
25970 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25972 frvbf_media_overflow (current_cpu, 8);
25974 } else {
25976 DI opval = tmp_tmp;
25977 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
25978 written |= (1 << 17);
25979 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25985 DI tmp_tmp;
25986 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 1)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi)));
25987 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
25990 DI opval = MAKEDI (127, 0xffffffff);
25991 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
25992 written |= (1 << 18);
25993 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
25995 frvbf_media_overflow (current_cpu, 4);
25997 } else {
25998 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
26001 DI opval = MAKEDI (0xffffff80, 0);
26002 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
26003 written |= (1 << 18);
26004 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26006 frvbf_media_overflow (current_cpu, 4);
26008 } else {
26010 DI opval = tmp_tmp;
26011 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
26012 written |= (1 << 18);
26013 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26019 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26020 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26021 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26022 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26025 DI tmp_tmp;
26026 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 2)), MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo)));
26027 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
26030 DI opval = MAKEDI (127, 0xffffffff);
26031 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
26032 written |= (1 << 19);
26033 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26035 frvbf_media_overflow (current_cpu, 2);
26037 } else {
26038 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
26041 DI opval = MAKEDI (0xffffff80, 0);
26042 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
26043 written |= (1 << 19);
26044 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26046 frvbf_media_overflow (current_cpu, 2);
26048 } else {
26050 DI opval = tmp_tmp;
26051 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 2), opval);
26052 written |= (1 << 19);
26053 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26059 DI tmp_tmp;
26060 tmp_tmp = ADDDI (GET_H_ACC40S (ADDSI (FLD (f_ACC40Sk), 3)), MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi)));
26061 if (GTDI (tmp_tmp, MAKEDI (127, 0xffffffff))) {
26064 DI opval = MAKEDI (127, 0xffffffff);
26065 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
26066 written |= (1 << 20);
26067 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26069 frvbf_media_overflow (current_cpu, 1);
26071 } else {
26072 if (LTDI (tmp_tmp, MAKEDI (0xffffff80, 0))) {
26075 DI opval = MAKEDI (0xffffff80, 0);
26076 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
26077 written |= (1 << 20);
26078 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26080 frvbf_media_overflow (current_cpu, 1);
26082 } else {
26084 DI opval = tmp_tmp;
26085 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 3), opval);
26086 written |= (1 << 20);
26087 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26097 abuf->written = written;
26098 return vpc;
26099 #undef FLD
26102 /* mcpxrs: mcpxrs$pack $FRinti,$FRintj,$ACC40Sk */
26104 static SEM_PC
26105 SEM_FN_NAME (frvbf,mcpxrs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26107 #define FLD(f) abuf->fields.sfmt_cmmachs.f
26108 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26109 int UNUSED written = 0;
26110 IADDR UNUSED pc = abuf->addr;
26111 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26113 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
26115 HI tmp_argihi;
26116 HI tmp_argilo;
26117 HI tmp_argjhi;
26118 HI tmp_argjlo;
26120 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26121 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26122 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26123 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26126 DI tmp_tmp1;
26127 DI tmp_tmp2;
26128 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
26129 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
26130 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26131 if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26134 DI opval = MAKEDI (127, 0xffffffff);
26135 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26136 written |= (1 << 9);
26137 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26139 frvbf_media_overflow (current_cpu, 8);
26141 } else {
26142 if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26145 DI opval = MAKEDI (0xffffff80, 0);
26146 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26147 written |= (1 << 9);
26148 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26150 frvbf_media_overflow (current_cpu, 8);
26152 } else {
26154 DI opval = tmp_tmp1;
26155 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26156 written |= (1 << 9);
26157 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26165 abuf->written = written;
26166 return vpc;
26167 #undef FLD
26170 /* mcpxru: mcpxru$pack $FRinti,$FRintj,$ACC40Sk */
26172 static SEM_PC
26173 SEM_FN_NAME (frvbf,mcpxru) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26175 #define FLD(f) abuf->fields.sfmt_cmmachs.f
26176 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26177 int UNUSED written = 0;
26178 IADDR UNUSED pc = abuf->addr;
26179 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26181 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
26183 UHI tmp_argihi;
26184 UHI tmp_argilo;
26185 UHI tmp_argjhi;
26186 UHI tmp_argjlo;
26188 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26189 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26190 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26191 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26194 DI tmp_tmp1;
26195 DI tmp_tmp2;
26196 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
26197 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
26198 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26199 if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
26202 DI opval = MAKEDI (255, 0xffffffff);
26203 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26204 written |= (1 << 9);
26205 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26207 frvbf_media_overflow (current_cpu, 8);
26209 } else {
26210 if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
26213 DI opval = MAKEDI (0, 0);
26214 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26215 written |= (1 << 9);
26216 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26218 frvbf_media_overflow (current_cpu, 8);
26220 } else {
26222 DI opval = tmp_tmp1;
26223 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26224 written |= (1 << 9);
26225 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26233 abuf->written = written;
26234 return vpc;
26235 #undef FLD
26238 /* mcpxis: mcpxis$pack $FRinti,$FRintj,$ACC40Sk */
26240 static SEM_PC
26241 SEM_FN_NAME (frvbf,mcpxis) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26243 #define FLD(f) abuf->fields.sfmt_cmmachs.f
26244 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26245 int UNUSED written = 0;
26246 IADDR UNUSED pc = abuf->addr;
26247 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26249 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
26251 HI tmp_argihi;
26252 HI tmp_argilo;
26253 HI tmp_argjhi;
26254 HI tmp_argjlo;
26256 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26257 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26258 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26259 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26262 DI tmp_tmp1;
26263 DI tmp_tmp2;
26264 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
26265 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
26266 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
26267 if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26270 DI opval = MAKEDI (127, 0xffffffff);
26271 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26272 written |= (1 << 9);
26273 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26275 frvbf_media_overflow (current_cpu, 8);
26277 } else {
26278 if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26281 DI opval = MAKEDI (0xffffff80, 0);
26282 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26283 written |= (1 << 9);
26284 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26286 frvbf_media_overflow (current_cpu, 8);
26288 } else {
26290 DI opval = tmp_tmp1;
26291 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26292 written |= (1 << 9);
26293 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26301 abuf->written = written;
26302 return vpc;
26303 #undef FLD
26306 /* mcpxiu: mcpxiu$pack $FRinti,$FRintj,$ACC40Sk */
26308 static SEM_PC
26309 SEM_FN_NAME (frvbf,mcpxiu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26311 #define FLD(f) abuf->fields.sfmt_cmmachs.f
26312 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26313 int UNUSED written = 0;
26314 IADDR UNUSED pc = abuf->addr;
26315 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26317 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
26319 UHI tmp_argihi;
26320 UHI tmp_argilo;
26321 UHI tmp_argjhi;
26322 UHI tmp_argjlo;
26324 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26325 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26326 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26327 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26330 DI tmp_tmp1;
26331 DI tmp_tmp2;
26332 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
26333 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
26334 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
26335 if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
26338 DI opval = MAKEDI (255, 0xffffffff);
26339 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26340 written |= (1 << 9);
26341 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26343 frvbf_media_overflow (current_cpu, 8);
26345 } else {
26346 if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
26349 DI opval = MAKEDI (0, 0);
26350 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26351 written |= (1 << 9);
26352 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26354 frvbf_media_overflow (current_cpu, 8);
26356 } else {
26358 DI opval = tmp_tmp1;
26359 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26360 written |= (1 << 9);
26361 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26369 abuf->written = written;
26370 return vpc;
26371 #undef FLD
26374 /* cmcpxrs: cmcpxrs$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
26376 static SEM_PC
26377 SEM_FN_NAME (frvbf,cmcpxrs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26379 #define FLD(f) abuf->fields.sfmt_cmmachs.f
26380 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26381 int UNUSED written = 0;
26382 IADDR UNUSED pc = abuf->addr;
26383 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26385 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
26386 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
26388 HI tmp_argihi;
26389 HI tmp_argilo;
26390 HI tmp_argjhi;
26391 HI tmp_argjlo;
26393 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26394 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26395 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26396 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26399 DI tmp_tmp1;
26400 DI tmp_tmp2;
26401 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
26402 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
26403 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26404 if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26407 DI opval = MAKEDI (127, 0xffffffff);
26408 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26409 written |= (1 << 11);
26410 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26412 frvbf_media_overflow (current_cpu, 8);
26414 } else {
26415 if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26418 DI opval = MAKEDI (0xffffff80, 0);
26419 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26420 written |= (1 << 11);
26421 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26423 frvbf_media_overflow (current_cpu, 8);
26425 } else {
26427 DI opval = tmp_tmp1;
26428 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26429 written |= (1 << 11);
26430 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26439 abuf->written = written;
26440 return vpc;
26441 #undef FLD
26444 /* cmcpxru: cmcpxru$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
26446 static SEM_PC
26447 SEM_FN_NAME (frvbf,cmcpxru) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26449 #define FLD(f) abuf->fields.sfmt_cmmachs.f
26450 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26451 int UNUSED written = 0;
26452 IADDR UNUSED pc = abuf->addr;
26453 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26455 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
26456 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
26458 UHI tmp_argihi;
26459 UHI tmp_argilo;
26460 UHI tmp_argjhi;
26461 UHI tmp_argjlo;
26463 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26464 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26465 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26466 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26469 DI tmp_tmp1;
26470 DI tmp_tmp2;
26471 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
26472 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
26473 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26474 if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
26477 DI opval = MAKEDI (255, 0xffffffff);
26478 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26479 written |= (1 << 11);
26480 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26482 frvbf_media_overflow (current_cpu, 8);
26484 } else {
26485 if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
26488 DI opval = MAKEDI (0, 0);
26489 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26490 written |= (1 << 11);
26491 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26493 frvbf_media_overflow (current_cpu, 8);
26495 } else {
26497 DI opval = tmp_tmp1;
26498 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26499 written |= (1 << 11);
26500 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26509 abuf->written = written;
26510 return vpc;
26511 #undef FLD
26514 /* cmcpxis: cmcpxis$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
26516 static SEM_PC
26517 SEM_FN_NAME (frvbf,cmcpxis) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26519 #define FLD(f) abuf->fields.sfmt_cmmachs.f
26520 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26521 int UNUSED written = 0;
26522 IADDR UNUSED pc = abuf->addr;
26523 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26525 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
26526 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
26528 HI tmp_argihi;
26529 HI tmp_argilo;
26530 HI tmp_argjhi;
26531 HI tmp_argjlo;
26533 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26534 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26535 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26536 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26539 DI tmp_tmp1;
26540 DI tmp_tmp2;
26541 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
26542 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
26543 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
26544 if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26547 DI opval = MAKEDI (127, 0xffffffff);
26548 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26549 written |= (1 << 11);
26550 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26552 frvbf_media_overflow (current_cpu, 8);
26554 } else {
26555 if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26558 DI opval = MAKEDI (0xffffff80, 0);
26559 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26560 written |= (1 << 11);
26561 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26563 frvbf_media_overflow (current_cpu, 8);
26565 } else {
26567 DI opval = tmp_tmp1;
26568 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26569 written |= (1 << 11);
26570 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26579 abuf->written = written;
26580 return vpc;
26581 #undef FLD
26584 /* cmcpxiu: cmcpxiu$pack $FRinti,$FRintj,$ACC40Sk,$CCi,$cond */
26586 static SEM_PC
26587 SEM_FN_NAME (frvbf,cmcpxiu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26589 #define FLD(f) abuf->fields.sfmt_cmmachs.f
26590 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26591 int UNUSED written = 0;
26592 IADDR UNUSED pc = abuf->addr;
26593 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26595 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
26596 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
26598 UHI tmp_argihi;
26599 UHI tmp_argilo;
26600 UHI tmp_argjhi;
26601 UHI tmp_argjlo;
26603 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26604 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26605 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26606 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26609 DI tmp_tmp1;
26610 DI tmp_tmp2;
26611 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
26612 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
26613 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
26614 if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
26617 DI opval = MAKEDI (255, 0xffffffff);
26618 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26619 written |= (1 << 11);
26620 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26622 frvbf_media_overflow (current_cpu, 8);
26624 } else {
26625 if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
26628 DI opval = MAKEDI (0, 0);
26629 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26630 written |= (1 << 11);
26631 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26633 frvbf_media_overflow (current_cpu, 8);
26635 } else {
26637 DI opval = tmp_tmp1;
26638 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26639 written |= (1 << 11);
26640 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26649 abuf->written = written;
26650 return vpc;
26651 #undef FLD
26654 /* mqcpxrs: mqcpxrs$pack $FRintieven,$FRintjeven,$ACC40Sk */
26656 static SEM_PC
26657 SEM_FN_NAME (frvbf,mqcpxrs) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26659 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
26660 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26661 int UNUSED written = 0;
26662 IADDR UNUSED pc = abuf->addr;
26663 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26665 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
26666 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
26667 frvbf_media_acc_not_aligned (current_cpu);
26668 } else {
26669 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
26670 frvbf_media_register_not_aligned (current_cpu);
26671 } else {
26673 HI tmp_argihi;
26674 HI tmp_argilo;
26675 HI tmp_argjhi;
26676 HI tmp_argjlo;
26678 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26679 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26680 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26681 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26684 DI tmp_tmp1;
26685 DI tmp_tmp2;
26686 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
26687 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
26688 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26689 if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26692 DI opval = MAKEDI (127, 0xffffffff);
26693 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26694 written |= (1 << 13);
26695 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26697 frvbf_media_overflow (current_cpu, 8);
26699 } else {
26700 if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26703 DI opval = MAKEDI (0xffffff80, 0);
26704 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26705 written |= (1 << 13);
26706 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26708 frvbf_media_overflow (current_cpu, 8);
26710 } else {
26712 DI opval = tmp_tmp1;
26713 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26714 written |= (1 << 13);
26715 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26721 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26722 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26723 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26724 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26727 DI tmp_tmp1;
26728 DI tmp_tmp2;
26729 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjhi));
26730 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjlo));
26731 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26732 if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26735 DI opval = MAKEDI (127, 0xffffffff);
26736 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
26737 written |= (1 << 14);
26738 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26740 frvbf_media_overflow (current_cpu, 4);
26742 } else {
26743 if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26746 DI opval = MAKEDI (0xffffff80, 0);
26747 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
26748 written |= (1 << 14);
26749 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26751 frvbf_media_overflow (current_cpu, 4);
26753 } else {
26755 DI opval = tmp_tmp1;
26756 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
26757 written |= (1 << 14);
26758 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26768 abuf->written = written;
26769 return vpc;
26770 #undef FLD
26773 /* mqcpxru: mqcpxru$pack $FRintieven,$FRintjeven,$ACC40Sk */
26775 static SEM_PC
26776 SEM_FN_NAME (frvbf,mqcpxru) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26778 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
26779 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26780 int UNUSED written = 0;
26781 IADDR UNUSED pc = abuf->addr;
26782 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26784 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
26785 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
26786 frvbf_media_acc_not_aligned (current_cpu);
26787 } else {
26788 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
26789 frvbf_media_register_not_aligned (current_cpu);
26790 } else {
26792 UHI tmp_argihi;
26793 UHI tmp_argilo;
26794 UHI tmp_argjhi;
26795 UHI tmp_argjlo;
26797 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26798 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26799 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26800 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26803 DI tmp_tmp1;
26804 DI tmp_tmp2;
26805 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
26806 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
26807 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26808 if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
26811 DI opval = MAKEDI (255, 0xffffffff);
26812 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26813 written |= (1 << 13);
26814 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26816 frvbf_media_overflow (current_cpu, 8);
26818 } else {
26819 if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
26822 DI opval = MAKEDI (0, 0);
26823 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26824 written |= (1 << 13);
26825 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26827 frvbf_media_overflow (current_cpu, 8);
26829 } else {
26831 DI opval = tmp_tmp1;
26832 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26833 written |= (1 << 13);
26834 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26840 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26841 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26842 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26843 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26846 DI tmp_tmp1;
26847 DI tmp_tmp2;
26848 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjhi));
26849 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjlo));
26850 tmp_tmp1 = SUBDI (tmp_tmp1, tmp_tmp2);
26851 if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
26854 DI opval = MAKEDI (255, 0xffffffff);
26855 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
26856 written |= (1 << 14);
26857 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26859 frvbf_media_overflow (current_cpu, 4);
26861 } else {
26862 if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
26865 DI opval = MAKEDI (0, 0);
26866 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
26867 written |= (1 << 14);
26868 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26870 frvbf_media_overflow (current_cpu, 4);
26872 } else {
26874 DI opval = tmp_tmp1;
26875 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
26876 written |= (1 << 14);
26877 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26887 abuf->written = written;
26888 return vpc;
26889 #undef FLD
26892 /* mqcpxis: mqcpxis$pack $FRintieven,$FRintjeven,$ACC40Sk */
26894 static SEM_PC
26895 SEM_FN_NAME (frvbf,mqcpxis) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
26897 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
26898 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
26899 int UNUSED written = 0;
26900 IADDR UNUSED pc = abuf->addr;
26901 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
26903 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
26904 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
26905 frvbf_media_acc_not_aligned (current_cpu);
26906 } else {
26907 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
26908 frvbf_media_register_not_aligned (current_cpu);
26909 } else {
26911 HI tmp_argihi;
26912 HI tmp_argilo;
26913 HI tmp_argjhi;
26914 HI tmp_argjlo;
26916 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26917 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26918 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26919 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26922 DI tmp_tmp1;
26923 DI tmp_tmp2;
26924 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
26925 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
26926 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
26927 if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26930 DI opval = MAKEDI (127, 0xffffffff);
26931 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26932 written |= (1 << 13);
26933 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26935 frvbf_media_overflow (current_cpu, 8);
26937 } else {
26938 if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26941 DI opval = MAKEDI (0xffffff80, 0);
26942 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26943 written |= (1 << 13);
26944 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26946 frvbf_media_overflow (current_cpu, 8);
26948 } else {
26950 DI opval = tmp_tmp1;
26951 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
26952 written |= (1 << 13);
26953 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26959 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26960 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
26961 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26962 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
26965 DI tmp_tmp1;
26966 DI tmp_tmp2;
26967 tmp_tmp1 = MULDI (EXTHIDI (tmp_argihi), EXTHIDI (tmp_argjlo));
26968 tmp_tmp2 = MULDI (EXTHIDI (tmp_argilo), EXTHIDI (tmp_argjhi));
26969 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
26970 if (GTDI (tmp_tmp1, MAKEDI (127, 0xffffffff))) {
26973 DI opval = MAKEDI (127, 0xffffffff);
26974 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
26975 written |= (1 << 14);
26976 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26978 frvbf_media_overflow (current_cpu, 4);
26980 } else {
26981 if (LTDI (tmp_tmp1, MAKEDI (0xffffff80, 0))) {
26984 DI opval = MAKEDI (0xffffff80, 0);
26985 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
26986 written |= (1 << 14);
26987 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
26989 frvbf_media_overflow (current_cpu, 4);
26991 } else {
26993 DI opval = tmp_tmp1;
26994 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
26995 written |= (1 << 14);
26996 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
27006 abuf->written = written;
27007 return vpc;
27008 #undef FLD
27011 /* mqcpxiu: mqcpxiu$pack $FRintieven,$FRintjeven,$ACC40Sk */
27013 static SEM_PC
27014 SEM_FN_NAME (frvbf,mqcpxiu) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27016 #define FLD(f) abuf->fields.sfmt_cmqmachs.f
27017 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27018 int UNUSED written = 0;
27019 IADDR UNUSED pc = abuf->addr;
27020 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27022 if (frvbf_check_acc_range (current_cpu, FLD (f_ACC40Sk))) {
27023 if (ANDSI (FLD (f_ACC40Sk), SUBSI (2, 1))) {
27024 frvbf_media_acc_not_aligned (current_cpu);
27025 } else {
27026 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRj), SUBSI (2, 1)))) {
27027 frvbf_media_register_not_aligned (current_cpu);
27028 } else {
27030 UHI tmp_argihi;
27031 UHI tmp_argilo;
27032 UHI tmp_argjhi;
27033 UHI tmp_argjlo;
27035 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
27036 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 0)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
27037 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
27038 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 0)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
27041 DI tmp_tmp1;
27042 DI tmp_tmp2;
27043 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
27044 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
27045 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
27046 if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
27049 DI opval = MAKEDI (255, 0xffffffff);
27050 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
27051 written |= (1 << 13);
27052 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
27054 frvbf_media_overflow (current_cpu, 8);
27056 } else {
27057 if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
27060 DI opval = MAKEDI (0, 0);
27061 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
27062 written |= (1 << 13);
27063 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
27065 frvbf_media_overflow (current_cpu, 8);
27067 } else {
27069 DI opval = tmp_tmp1;
27070 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
27071 written |= (1 << 13);
27072 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
27078 tmp_argihi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
27079 tmp_argilo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRi), 1)), MULSI (GET_H_FR_INT (FLD (f_FRi)), 0));
27080 tmp_argjhi = ADDHI (GET_H_FR_HI (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
27081 tmp_argjlo = ADDHI (GET_H_FR_LO (ADDSI (FLD (f_FRj), 1)), MULSI (GET_H_FR_INT (FLD (f_FRj)), 0));
27084 DI tmp_tmp1;
27085 DI tmp_tmp2;
27086 tmp_tmp1 = MULDI (ZEXTHIDI (tmp_argihi), ZEXTHIDI (tmp_argjlo));
27087 tmp_tmp2 = MULDI (ZEXTHIDI (tmp_argilo), ZEXTHIDI (tmp_argjhi));
27088 tmp_tmp1 = ADDDI (tmp_tmp1, tmp_tmp2);
27089 if (GTDI (tmp_tmp1, MAKEDI (255, 0xffffffff))) {
27092 DI opval = MAKEDI (255, 0xffffffff);
27093 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
27094 written |= (1 << 14);
27095 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
27097 frvbf_media_overflow (current_cpu, 4);
27099 } else {
27100 if (LTDI (tmp_tmp1, MAKEDI (0, 0))) {
27103 DI opval = MAKEDI (0, 0);
27104 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
27105 written |= (1 << 14);
27106 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
27108 frvbf_media_overflow (current_cpu, 4);
27110 } else {
27112 DI opval = tmp_tmp1;
27113 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, ADDSI (FLD (f_ACC40Sk), 1), opval);
27114 written |= (1 << 14);
27115 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
27125 abuf->written = written;
27126 return vpc;
27127 #undef FLD
27130 /* mexpdhw: mexpdhw$pack $FRinti,$u6,$FRintk */
27132 static SEM_PC
27133 SEM_FN_NAME (frvbf,mexpdhw) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27135 #define FLD(f) abuf->fields.sfmt_cmexpdhw.f
27136 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27137 int UNUSED written = 0;
27138 IADDR UNUSED pc = abuf->addr;
27139 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27142 UHI tmp_tmp;
27143 if (ANDSI (FLD (f_u6), 1)) {
27144 tmp_tmp = GET_H_FR_LO (ADDSI (FLD (f_FRi), 0));
27145 } else {
27146 tmp_tmp = GET_H_FR_HI (ADDSI (FLD (f_FRi), 0));
27149 UHI opval = tmp_tmp;
27150 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
27151 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27154 UHI opval = tmp_tmp;
27155 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
27156 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27160 return vpc;
27161 #undef FLD
27164 /* cmexpdhw: cmexpdhw$pack $FRinti,$u6,$FRintk,$CCi,$cond */
27166 static SEM_PC
27167 SEM_FN_NAME (frvbf,cmexpdhw) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27169 #define FLD(f) abuf->fields.sfmt_cmexpdhw.f
27170 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27171 int UNUSED written = 0;
27172 IADDR UNUSED pc = abuf->addr;
27173 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27175 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
27177 UHI tmp_tmp;
27178 if (ANDSI (FLD (f_u6), 1)) {
27179 tmp_tmp = GET_H_FR_LO (ADDSI (FLD (f_FRi), 0));
27180 } else {
27181 tmp_tmp = GET_H_FR_HI (ADDSI (FLD (f_FRi), 0));
27184 UHI opval = tmp_tmp;
27185 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
27186 written |= (1 << 7);
27187 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27190 UHI opval = tmp_tmp;
27191 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
27192 written |= (1 << 8);
27193 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27198 abuf->written = written;
27199 return vpc;
27200 #undef FLD
27203 /* mexpdhd: mexpdhd$pack $FRinti,$u6,$FRintkeven */
27205 static SEM_PC
27206 SEM_FN_NAME (frvbf,mexpdhd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27208 #define FLD(f) abuf->fields.sfmt_cmexpdhd.f
27209 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27210 int UNUSED written = 0;
27211 IADDR UNUSED pc = abuf->addr;
27212 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27214 if (ANDSI (FLD (f_FRk), SUBSI (2, 1))) {
27215 frvbf_media_register_not_aligned (current_cpu);
27216 } else {
27218 UHI tmp_tmp;
27220 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27221 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27222 written |= (1 << 6);
27223 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27225 if (ANDSI (FLD (f_u6), 1)) {
27226 tmp_tmp = GET_H_FR_LO (ADDSI (FLD (f_FRi), 0));
27227 } else {
27228 tmp_tmp = GET_H_FR_HI (ADDSI (FLD (f_FRi), 0));
27231 UHI opval = tmp_tmp;
27232 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
27233 written |= (1 << 7);
27234 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27237 UHI opval = tmp_tmp;
27238 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
27239 written |= (1 << 9);
27240 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27243 UHI opval = tmp_tmp;
27244 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
27245 written |= (1 << 8);
27246 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27249 UHI opval = tmp_tmp;
27250 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
27251 written |= (1 << 10);
27252 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27257 abuf->written = written;
27258 return vpc;
27259 #undef FLD
27262 /* cmexpdhd: cmexpdhd$pack $FRinti,$u6,$FRintkeven,$CCi,$cond */
27264 static SEM_PC
27265 SEM_FN_NAME (frvbf,cmexpdhd) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27267 #define FLD(f) abuf->fields.sfmt_cmexpdhd.f
27268 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27269 int UNUSED written = 0;
27270 IADDR UNUSED pc = abuf->addr;
27271 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27273 if (ANDSI (FLD (f_FRk), SUBSI (2, 1))) {
27274 frvbf_media_register_not_aligned (current_cpu);
27275 } else {
27276 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
27278 UHI tmp_tmp;
27280 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27281 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27282 written |= (1 << 8);
27283 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27285 if (ANDSI (FLD (f_u6), 1)) {
27286 tmp_tmp = GET_H_FR_LO (ADDSI (FLD (f_FRi), 0));
27287 } else {
27288 tmp_tmp = GET_H_FR_HI (ADDSI (FLD (f_FRi), 0));
27291 UHI opval = tmp_tmp;
27292 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
27293 written |= (1 << 9);
27294 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27297 UHI opval = tmp_tmp;
27298 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
27299 written |= (1 << 11);
27300 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27303 UHI opval = tmp_tmp;
27304 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
27305 written |= (1 << 10);
27306 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27309 UHI opval = tmp_tmp;
27310 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
27311 written |= (1 << 12);
27312 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27318 abuf->written = written;
27319 return vpc;
27320 #undef FLD
27323 /* mpackh: mpackh$pack $FRinti,$FRintj,$FRintk */
27325 static SEM_PC
27326 SEM_FN_NAME (frvbf,mpackh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27328 #define FLD(f) abuf->fields.sfmt_cmaddhss.f
27329 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27330 int UNUSED written = 0;
27331 IADDR UNUSED pc = abuf->addr;
27332 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27336 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRi), 0));
27337 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
27338 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27341 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRj), 0));
27342 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
27343 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27347 return vpc;
27348 #undef FLD
27351 /* mdpackh: mdpackh$pack $FRintieven,$FRintjeven,$FRintkeven */
27353 static SEM_PC
27354 SEM_FN_NAME (frvbf,mdpackh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27356 #define FLD(f) abuf->fields.sfmt_mdpackh.f
27357 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27358 int UNUSED written = 0;
27359 IADDR UNUSED pc = abuf->addr;
27360 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27362 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ORIF (ANDSI (FLD (f_FRj), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (2, 1))))) {
27363 frvbf_media_register_not_aligned (current_cpu);
27364 } else {
27367 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
27368 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
27369 written |= (1 << 10);
27370 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27373 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27374 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27375 written |= (1 << 11);
27376 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27379 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27380 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27381 written |= (1 << 12);
27382 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27386 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRi), 0));
27387 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
27388 written |= (1 << 13);
27389 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27392 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRj), 0));
27393 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
27394 written |= (1 << 15);
27395 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27400 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRi), 1));
27401 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
27402 written |= (1 << 14);
27403 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27406 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRj), 1));
27407 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
27408 written |= (1 << 16);
27409 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27415 abuf->written = written;
27416 return vpc;
27417 #undef FLD
27420 /* munpackh: munpackh$pack $FRinti,$FRintkeven */
27422 static SEM_PC
27423 SEM_FN_NAME (frvbf,munpackh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27425 #define FLD(f) abuf->fields.sfmt_munpackh.f
27426 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27427 int UNUSED written = 0;
27428 IADDR UNUSED pc = abuf->addr;
27429 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27431 if (ANDSI (FLD (f_FRk), SUBSI (2, 1))) {
27432 frvbf_media_register_not_aligned (current_cpu);
27433 } else {
27436 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
27437 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
27438 written |= (1 << 6);
27439 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27442 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27443 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27444 written |= (1 << 7);
27445 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27449 UHI opval = GET_H_FR_HI (ADDSI (FLD (f_FRi), 0));
27450 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
27451 written |= (1 << 8);
27452 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27455 UHI opval = GET_H_FR_HI (ADDSI (FLD (f_FRi), 0));
27456 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
27457 written |= (1 << 10);
27458 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27461 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRi), 0));
27462 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), ADDSI (0, 1)), opval);
27463 written |= (1 << 9);
27464 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27467 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRi), 0));
27468 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), ADDSI (0, 1)), opval);
27469 written |= (1 << 11);
27470 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27476 abuf->written = written;
27477 return vpc;
27478 #undef FLD
27481 /* mdunpackh: mdunpackh$pack $FRintieven,$FRintk */
27483 static SEM_PC
27484 SEM_FN_NAME (frvbf,mdunpackh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27486 #define FLD(f) abuf->fields.sfmt_mdunpackh.f
27487 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27488 int UNUSED written = 0;
27489 IADDR UNUSED pc = abuf->addr;
27490 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27492 if (ORIF (ANDSI (FLD (f_FRi), SUBSI (2, 1)), ANDSI (FLD (f_FRk), SUBSI (4, 1)))) {
27493 frvbf_media_register_not_aligned (current_cpu);
27494 } else {
27497 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRi)));
27498 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRi), opval);
27499 written |= (1 << 8);
27500 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27503 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27504 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27505 written |= (1 << 9);
27506 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27510 UHI opval = GET_H_FR_HI (ADDSI (FLD (f_FRi), 0));
27511 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
27512 written |= (1 << 10);
27513 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27516 UHI opval = GET_H_FR_HI (ADDSI (FLD (f_FRi), 0));
27517 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
27518 written |= (1 << 14);
27519 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27522 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRi), 0));
27523 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), ADDSI (0, 1)), opval);
27524 written |= (1 << 12);
27525 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27528 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRi), 0));
27529 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), ADDSI (0, 1)), opval);
27530 written |= (1 << 16);
27531 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27536 UHI opval = GET_H_FR_HI (ADDSI (FLD (f_FRi), 1));
27537 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 2), opval);
27538 written |= (1 << 11);
27539 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27542 UHI opval = GET_H_FR_HI (ADDSI (FLD (f_FRi), 1));
27543 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 2), opval);
27544 written |= (1 << 15);
27545 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27548 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRi), 1));
27549 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), ADDSI (2, 1)), opval);
27550 written |= (1 << 13);
27551 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27554 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRi), 1));
27555 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), ADDSI (2, 1)), opval);
27556 written |= (1 << 17);
27557 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27563 abuf->written = written;
27564 return vpc;
27565 #undef FLD
27568 /* mbtoh: mbtoh$pack $FRintj,$FRintkeven */
27570 static SEM_PC
27571 SEM_FN_NAME (frvbf,mbtoh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27573 #define FLD(f) abuf->fields.sfmt_cmbtoh.f
27574 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27575 int UNUSED written = 0;
27576 IADDR UNUSED pc = abuf->addr;
27577 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27581 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27582 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27583 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27586 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27587 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27588 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27590 if (ANDSI (FLD (f_FRk), SUBSI (2, 1))) {
27591 frvbf_media_register_not_aligned (current_cpu);
27592 } else {
27595 UHI opval = GET_H_FR_3 (ADDSI (FLD (f_FRj), 0));
27596 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
27597 written |= (1 << 10);
27598 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27601 UHI opval = GET_H_FR_2 (ADDSI (FLD (f_FRj), 0));
27602 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
27603 written |= (1 << 12);
27604 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27607 UHI opval = GET_H_FR_1 (ADDSI (FLD (f_FRj), 0));
27608 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
27609 written |= (1 << 11);
27610 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27613 UHI opval = GET_H_FR_0 (ADDSI (FLD (f_FRj), 0));
27614 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
27615 written |= (1 << 13);
27616 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27622 abuf->written = written;
27623 return vpc;
27624 #undef FLD
27627 /* cmbtoh: cmbtoh$pack $FRintj,$FRintkeven,$CCi,$cond */
27629 static SEM_PC
27630 SEM_FN_NAME (frvbf,cmbtoh) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27632 #define FLD(f) abuf->fields.sfmt_cmbtoh.f
27633 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27634 int UNUSED written = 0;
27635 IADDR UNUSED pc = abuf->addr;
27636 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27640 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27641 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27642 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27645 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27646 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27647 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27649 if (ANDSI (FLD (f_FRk), SUBSI (2, 1))) {
27650 frvbf_media_register_not_aligned (current_cpu);
27651 } else {
27652 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
27655 UHI opval = GET_H_FR_3 (ADDSI (FLD (f_FRj), 0));
27656 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
27657 written |= (1 << 12);
27658 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27661 UHI opval = GET_H_FR_2 (ADDSI (FLD (f_FRj), 0));
27662 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
27663 written |= (1 << 14);
27664 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27667 UHI opval = GET_H_FR_1 (ADDSI (FLD (f_FRj), 0));
27668 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
27669 written |= (1 << 13);
27670 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27673 UHI opval = GET_H_FR_0 (ADDSI (FLD (f_FRj), 0));
27674 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
27675 written |= (1 << 15);
27676 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27683 abuf->written = written;
27684 return vpc;
27685 #undef FLD
27688 /* mhtob: mhtob$pack $FRintjeven,$FRintk */
27690 static SEM_PC
27691 SEM_FN_NAME (frvbf,mhtob) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27693 #define FLD(f) abuf->fields.sfmt_cmhtob.f
27694 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27695 int UNUSED written = 0;
27696 IADDR UNUSED pc = abuf->addr;
27697 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27701 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27702 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27703 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27706 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27707 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27708 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27710 if (ANDSI (FLD (f_FRj), SUBSI (2, 1))) {
27711 frvbf_media_register_not_aligned (current_cpu);
27712 } else {
27715 UHI opval = GET_H_FR_HI (ADDSI (FLD (f_FRj), 0));
27716 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_3_set, ADDSI (FLD (f_FRk), 0), opval);
27717 written |= (1 << 13);
27718 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_3", 'x', opval);
27721 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRj), 0));
27722 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_2_set, ADDSI (FLD (f_FRk), 0), opval);
27723 written |= (1 << 12);
27724 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_2", 'x', opval);
27727 UHI opval = GET_H_FR_HI (ADDSI (FLD (f_FRj), 1));
27728 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_1_set, ADDSI (FLD (f_FRk), 0), opval);
27729 written |= (1 << 11);
27730 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_1", 'x', opval);
27733 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRj), 1));
27734 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_0_set, ADDSI (FLD (f_FRk), 0), opval);
27735 written |= (1 << 10);
27736 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_0", 'x', opval);
27742 abuf->written = written;
27743 return vpc;
27744 #undef FLD
27747 /* cmhtob: cmhtob$pack $FRintjeven,$FRintk,$CCi,$cond */
27749 static SEM_PC
27750 SEM_FN_NAME (frvbf,cmhtob) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27752 #define FLD(f) abuf->fields.sfmt_cmhtob.f
27753 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27754 int UNUSED written = 0;
27755 IADDR UNUSED pc = abuf->addr;
27756 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27760 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27761 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27762 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27765 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27766 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27767 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27769 if (ANDSI (FLD (f_FRj), SUBSI (2, 1))) {
27770 frvbf_media_register_not_aligned (current_cpu);
27771 } else {
27772 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
27775 UHI opval = GET_H_FR_HI (ADDSI (FLD (f_FRj), 0));
27776 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_3_set, ADDSI (FLD (f_FRk), 0), opval);
27777 written |= (1 << 15);
27778 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_3", 'x', opval);
27781 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRj), 0));
27782 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_2_set, ADDSI (FLD (f_FRk), 0), opval);
27783 written |= (1 << 14);
27784 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_2", 'x', opval);
27787 UHI opval = GET_H_FR_HI (ADDSI (FLD (f_FRj), 1));
27788 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_1_set, ADDSI (FLD (f_FRk), 0), opval);
27789 written |= (1 << 13);
27790 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_1", 'x', opval);
27793 UHI opval = GET_H_FR_LO (ADDSI (FLD (f_FRj), 1));
27794 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_0_set, ADDSI (FLD (f_FRk), 0), opval);
27795 written |= (1 << 12);
27796 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_0", 'x', opval);
27803 abuf->written = written;
27804 return vpc;
27805 #undef FLD
27808 /* mbtohe: mbtohe$pack $FRintj,$FRintk */
27810 static SEM_PC
27811 SEM_FN_NAME (frvbf,mbtohe) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27813 #define FLD(f) abuf->fields.sfmt_cmbtohe.f
27814 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27815 int UNUSED written = 0;
27816 IADDR UNUSED pc = abuf->addr;
27817 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27821 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27822 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27823 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27826 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27827 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27828 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27830 if (ANDSI (FLD (f_FRk), SUBSI (4, 1))) {
27831 frvbf_media_register_not_aligned (current_cpu);
27832 } else {
27835 UHI opval = GET_H_FR_3 (ADDSI (FLD (f_FRj), 0));
27836 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
27837 written |= (1 << 10);
27838 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27841 UHI opval = GET_H_FR_3 (ADDSI (FLD (f_FRj), 0));
27842 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
27843 written |= (1 << 14);
27844 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27847 UHI opval = GET_H_FR_2 (ADDSI (FLD (f_FRj), 0));
27848 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
27849 written |= (1 << 11);
27850 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27853 UHI opval = GET_H_FR_2 (ADDSI (FLD (f_FRj), 0));
27854 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
27855 written |= (1 << 15);
27856 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27859 UHI opval = GET_H_FR_1 (ADDSI (FLD (f_FRj), 0));
27860 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 2), opval);
27861 written |= (1 << 12);
27862 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27865 UHI opval = GET_H_FR_1 (ADDSI (FLD (f_FRj), 0));
27866 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 2), opval);
27867 written |= (1 << 16);
27868 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27871 UHI opval = GET_H_FR_0 (ADDSI (FLD (f_FRj), 0));
27872 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 3), opval);
27873 written |= (1 << 13);
27874 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27877 UHI opval = GET_H_FR_0 (ADDSI (FLD (f_FRj), 0));
27878 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 3), opval);
27879 written |= (1 << 17);
27880 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27886 abuf->written = written;
27887 return vpc;
27888 #undef FLD
27891 /* cmbtohe: cmbtohe$pack $FRintj,$FRintk,$CCi,$cond */
27893 static SEM_PC
27894 SEM_FN_NAME (frvbf,cmbtohe) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27896 #define FLD(f) abuf->fields.sfmt_cmbtohe.f
27897 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27898 int UNUSED written = 0;
27899 IADDR UNUSED pc = abuf->addr;
27900 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27904 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRj)));
27905 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRj), opval);
27906 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27909 SI opval = frv_ref_SI (GET_H_FR_INT (FLD (f_FRk)));
27910 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
27911 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
27913 if (ANDSI (FLD (f_FRk), SUBSI (4, 1))) {
27914 frvbf_media_register_not_aligned (current_cpu);
27915 } else {
27916 if (EQQI (CPU (h_cccr[FLD (f_CCi)]), ORSI (FLD (f_cond), 2))) {
27919 UHI opval = GET_H_FR_3 (ADDSI (FLD (f_FRj), 0));
27920 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 0), opval);
27921 written |= (1 << 12);
27922 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27925 UHI opval = GET_H_FR_3 (ADDSI (FLD (f_FRj), 0));
27926 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 0), opval);
27927 written |= (1 << 16);
27928 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27931 UHI opval = GET_H_FR_2 (ADDSI (FLD (f_FRj), 0));
27932 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 1), opval);
27933 written |= (1 << 13);
27934 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27937 UHI opval = GET_H_FR_2 (ADDSI (FLD (f_FRj), 0));
27938 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 1), opval);
27939 written |= (1 << 17);
27940 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27943 UHI opval = GET_H_FR_1 (ADDSI (FLD (f_FRj), 0));
27944 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 2), opval);
27945 written |= (1 << 14);
27946 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27949 UHI opval = GET_H_FR_1 (ADDSI (FLD (f_FRj), 0));
27950 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 2), opval);
27951 written |= (1 << 18);
27952 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27955 UHI opval = GET_H_FR_0 (ADDSI (FLD (f_FRj), 0));
27956 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_hi_set, ADDSI (FLD (f_FRk), 3), opval);
27957 written |= (1 << 15);
27958 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_hi", 'x', opval);
27961 UHI opval = GET_H_FR_0 (ADDSI (FLD (f_FRj), 0));
27962 sim_queue_fn_hi_write (current_cpu, frvbf_h_fr_lo_set, ADDSI (FLD (f_FRk), 3), opval);
27963 written |= (1 << 19);
27964 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_lo", 'x', opval);
27971 abuf->written = written;
27972 return vpc;
27973 #undef FLD
27976 /* mnop: mnop$pack */
27978 static SEM_PC
27979 SEM_FN_NAME (frvbf,mnop) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27981 #define FLD(f) abuf->fields.sfmt_empty.f
27982 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
27983 int UNUSED written = 0;
27984 IADDR UNUSED pc = abuf->addr;
27985 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
27987 ((void) 0); /*nop*/
27989 return vpc;
27990 #undef FLD
27993 /* mclracc-0: mclracc$pack $ACC40Sk,$A0 */
27995 static SEM_PC
27996 SEM_FN_NAME (frvbf,mclracc_0) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
27998 #define FLD(f) abuf->fields.sfmt_mdasaccs.f
27999 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28000 int UNUSED written = 0;
28001 IADDR UNUSED pc = abuf->addr;
28002 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28004 frvbf_clear_accumulators (current_cpu, FLD (f_ACC40Sk), 0);
28006 return vpc;
28007 #undef FLD
28010 /* mclracc-1: mclracc$pack $ACC40Sk,$A1 */
28012 static SEM_PC
28013 SEM_FN_NAME (frvbf,mclracc_1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28015 #define FLD(f) abuf->fields.sfmt_mdasaccs.f
28016 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28017 int UNUSED written = 0;
28018 IADDR UNUSED pc = abuf->addr;
28019 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28021 frvbf_clear_accumulators (current_cpu, FLD (f_ACC40Sk), 1);
28023 return vpc;
28024 #undef FLD
28027 /* mrdacc: mrdacc$pack $ACC40Si,$FRintk */
28029 static SEM_PC
28030 SEM_FN_NAME (frvbf,mrdacc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28032 #define FLD(f) abuf->fields.sfmt_mcuti.f
28033 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28034 int UNUSED written = 0;
28035 IADDR UNUSED pc = abuf->addr;
28036 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28039 SI opval = GET_H_ACC40S (FLD (f_ACC40Si));
28040 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
28041 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
28044 return vpc;
28045 #undef FLD
28048 /* mrdaccg: mrdaccg$pack $ACCGi,$FRintk */
28050 static SEM_PC
28051 SEM_FN_NAME (frvbf,mrdaccg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28053 #define FLD(f) abuf->fields.sfmt_mrdaccg.f
28054 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28055 int UNUSED written = 0;
28056 IADDR UNUSED pc = abuf->addr;
28057 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28060 SI opval = GET_H_ACCG (FLD (f_ACCGi));
28061 sim_queue_fn_si_write (current_cpu, frvbf_h_fr_int_set, FLD (f_FRk), opval);
28062 CGEN_TRACE_RESULT (current_cpu, abuf, "fr_int", 'x', opval);
28065 return vpc;
28066 #undef FLD
28069 /* mwtacc: mwtacc$pack $FRinti,$ACC40Sk */
28071 static SEM_PC
28072 SEM_FN_NAME (frvbf,mwtacc) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28074 #define FLD(f) abuf->fields.sfmt_cmmachs.f
28075 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28076 int UNUSED written = 0;
28077 IADDR UNUSED pc = abuf->addr;
28078 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28081 DI opval = ORDI (ANDDI (GET_H_ACC40S (FLD (f_ACC40Sk)), MAKEDI (0xffffffff, 0)), GET_H_FR_INT (FLD (f_FRi)));
28082 sim_queue_fn_di_write (current_cpu, frvbf_h_acc40S_set, FLD (f_ACC40Sk), opval);
28083 CGEN_TRACE_RESULT (current_cpu, abuf, "acc40S", 'D', opval);
28086 return vpc;
28087 #undef FLD
28090 /* mwtaccg: mwtaccg$pack $FRinti,$ACCGk */
28092 static SEM_PC
28093 SEM_FN_NAME (frvbf,mwtaccg) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28095 #define FLD(f) abuf->fields.sfmt_mwtaccg.f
28096 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28097 int UNUSED written = 0;
28098 IADDR UNUSED pc = abuf->addr;
28099 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28102 frv_ref_SI (GET_H_ACCG (FLD (f_ACCGk)));
28104 USI opval = GET_H_FR_INT (FLD (f_FRi));
28105 sim_queue_fn_si_write (current_cpu, frvbf_h_accg_set, FLD (f_ACCGk), opval);
28106 CGEN_TRACE_RESULT (current_cpu, abuf, "accg", 'x', opval);
28110 return vpc;
28111 #undef FLD
28114 /* mcop1: mcop1$pack $FRi,$FRj,$FRk */
28116 static SEM_PC
28117 SEM_FN_NAME (frvbf,mcop1) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28119 #define FLD(f) abuf->fields.sfmt_empty.f
28120 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28121 int UNUSED written = 0;
28122 IADDR UNUSED pc = abuf->addr;
28123 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28125 frvbf_media_cop (current_cpu, 1);
28127 return vpc;
28128 #undef FLD
28131 /* mcop2: mcop2$pack $FRi,$FRj,$FRk */
28133 static SEM_PC
28134 SEM_FN_NAME (frvbf,mcop2) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28136 #define FLD(f) abuf->fields.sfmt_empty.f
28137 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28138 int UNUSED written = 0;
28139 IADDR UNUSED pc = abuf->addr;
28140 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28142 frvbf_media_cop (current_cpu, 2);
28144 return vpc;
28145 #undef FLD
28148 /* fnop: fnop$pack */
28150 static SEM_PC
28151 SEM_FN_NAME (frvbf,fnop) (SIM_CPU *current_cpu, SEM_ARG sem_arg)
28153 #define FLD(f) abuf->fields.sfmt_empty.f
28154 ARGBUF *abuf = SEM_ARGBUF (sem_arg);
28155 int UNUSED written = 0;
28156 IADDR UNUSED pc = abuf->addr;
28157 SEM_PC vpc = SEM_NEXT_VPC (sem_arg, pc, 4);
28159 ((void) 0); /*nop*/
28161 return vpc;
28162 #undef FLD
28165 /* Table of all semantic fns. */
28167 static const struct sem_fn_desc sem_fns[] = {
28168 { FRVBF_INSN_X_INVALID, SEM_FN_NAME (frvbf,x_invalid) },
28169 { FRVBF_INSN_X_AFTER, SEM_FN_NAME (frvbf,x_after) },
28170 { FRVBF_INSN_X_BEFORE, SEM_FN_NAME (frvbf,x_before) },
28171 { FRVBF_INSN_X_CTI_CHAIN, SEM_FN_NAME (frvbf,x_cti_chain) },
28172 { FRVBF_INSN_X_CHAIN, SEM_FN_NAME (frvbf,x_chain) },
28173 { FRVBF_INSN_X_BEGIN, SEM_FN_NAME (frvbf,x_begin) },
28174 { FRVBF_INSN_ADD, SEM_FN_NAME (frvbf,add) },
28175 { FRVBF_INSN_SUB, SEM_FN_NAME (frvbf,sub) },
28176 { FRVBF_INSN_AND, SEM_FN_NAME (frvbf,and) },
28177 { FRVBF_INSN_OR, SEM_FN_NAME (frvbf,or) },
28178 { FRVBF_INSN_XOR, SEM_FN_NAME (frvbf,xor) },
28179 { FRVBF_INSN_NOT, SEM_FN_NAME (frvbf,not) },
28180 { FRVBF_INSN_SDIV, SEM_FN_NAME (frvbf,sdiv) },
28181 { FRVBF_INSN_NSDIV, SEM_FN_NAME (frvbf,nsdiv) },
28182 { FRVBF_INSN_UDIV, SEM_FN_NAME (frvbf,udiv) },
28183 { FRVBF_INSN_NUDIV, SEM_FN_NAME (frvbf,nudiv) },
28184 { FRVBF_INSN_SMUL, SEM_FN_NAME (frvbf,smul) },
28185 { FRVBF_INSN_UMUL, SEM_FN_NAME (frvbf,umul) },
28186 { FRVBF_INSN_SMU, SEM_FN_NAME (frvbf,smu) },
28187 { FRVBF_INSN_SMASS, SEM_FN_NAME (frvbf,smass) },
28188 { FRVBF_INSN_SMSSS, SEM_FN_NAME (frvbf,smsss) },
28189 { FRVBF_INSN_SLL, SEM_FN_NAME (frvbf,sll) },
28190 { FRVBF_INSN_SRL, SEM_FN_NAME (frvbf,srl) },
28191 { FRVBF_INSN_SRA, SEM_FN_NAME (frvbf,sra) },
28192 { FRVBF_INSN_SLASS, SEM_FN_NAME (frvbf,slass) },
28193 { FRVBF_INSN_SCUTSS, SEM_FN_NAME (frvbf,scutss) },
28194 { FRVBF_INSN_SCAN, SEM_FN_NAME (frvbf,scan) },
28195 { FRVBF_INSN_CADD, SEM_FN_NAME (frvbf,cadd) },
28196 { FRVBF_INSN_CSUB, SEM_FN_NAME (frvbf,csub) },
28197 { FRVBF_INSN_CAND, SEM_FN_NAME (frvbf,cand) },
28198 { FRVBF_INSN_COR, SEM_FN_NAME (frvbf,cor) },
28199 { FRVBF_INSN_CXOR, SEM_FN_NAME (frvbf,cxor) },
28200 { FRVBF_INSN_CNOT, SEM_FN_NAME (frvbf,cnot) },
28201 { FRVBF_INSN_CSMUL, SEM_FN_NAME (frvbf,csmul) },
28202 { FRVBF_INSN_CSDIV, SEM_FN_NAME (frvbf,csdiv) },
28203 { FRVBF_INSN_CUDIV, SEM_FN_NAME (frvbf,cudiv) },
28204 { FRVBF_INSN_CSLL, SEM_FN_NAME (frvbf,csll) },
28205 { FRVBF_INSN_CSRL, SEM_FN_NAME (frvbf,csrl) },
28206 { FRVBF_INSN_CSRA, SEM_FN_NAME (frvbf,csra) },
28207 { FRVBF_INSN_CSCAN, SEM_FN_NAME (frvbf,cscan) },
28208 { FRVBF_INSN_ADDCC, SEM_FN_NAME (frvbf,addcc) },
28209 { FRVBF_INSN_SUBCC, SEM_FN_NAME (frvbf,subcc) },
28210 { FRVBF_INSN_ANDCC, SEM_FN_NAME (frvbf,andcc) },
28211 { FRVBF_INSN_ORCC, SEM_FN_NAME (frvbf,orcc) },
28212 { FRVBF_INSN_XORCC, SEM_FN_NAME (frvbf,xorcc) },
28213 { FRVBF_INSN_SLLCC, SEM_FN_NAME (frvbf,sllcc) },
28214 { FRVBF_INSN_SRLCC, SEM_FN_NAME (frvbf,srlcc) },
28215 { FRVBF_INSN_SRACC, SEM_FN_NAME (frvbf,sracc) },
28216 { FRVBF_INSN_SMULCC, SEM_FN_NAME (frvbf,smulcc) },
28217 { FRVBF_INSN_UMULCC, SEM_FN_NAME (frvbf,umulcc) },
28218 { FRVBF_INSN_CADDCC, SEM_FN_NAME (frvbf,caddcc) },
28219 { FRVBF_INSN_CSUBCC, SEM_FN_NAME (frvbf,csubcc) },
28220 { FRVBF_INSN_CSMULCC, SEM_FN_NAME (frvbf,csmulcc) },
28221 { FRVBF_INSN_CANDCC, SEM_FN_NAME (frvbf,candcc) },
28222 { FRVBF_INSN_CORCC, SEM_FN_NAME (frvbf,corcc) },
28223 { FRVBF_INSN_CXORCC, SEM_FN_NAME (frvbf,cxorcc) },
28224 { FRVBF_INSN_CSLLCC, SEM_FN_NAME (frvbf,csllcc) },
28225 { FRVBF_INSN_CSRLCC, SEM_FN_NAME (frvbf,csrlcc) },
28226 { FRVBF_INSN_CSRACC, SEM_FN_NAME (frvbf,csracc) },
28227 { FRVBF_INSN_ADDX, SEM_FN_NAME (frvbf,addx) },
28228 { FRVBF_INSN_SUBX, SEM_FN_NAME (frvbf,subx) },
28229 { FRVBF_INSN_ADDXCC, SEM_FN_NAME (frvbf,addxcc) },
28230 { FRVBF_INSN_SUBXCC, SEM_FN_NAME (frvbf,subxcc) },
28231 { FRVBF_INSN_ADDSS, SEM_FN_NAME (frvbf,addss) },
28232 { FRVBF_INSN_SUBSS, SEM_FN_NAME (frvbf,subss) },
28233 { FRVBF_INSN_ADDI, SEM_FN_NAME (frvbf,addi) },
28234 { FRVBF_INSN_SUBI, SEM_FN_NAME (frvbf,subi) },
28235 { FRVBF_INSN_ANDI, SEM_FN_NAME (frvbf,andi) },
28236 { FRVBF_INSN_ORI, SEM_FN_NAME (frvbf,ori) },
28237 { FRVBF_INSN_XORI, SEM_FN_NAME (frvbf,xori) },
28238 { FRVBF_INSN_SDIVI, SEM_FN_NAME (frvbf,sdivi) },
28239 { FRVBF_INSN_NSDIVI, SEM_FN_NAME (frvbf,nsdivi) },
28240 { FRVBF_INSN_UDIVI, SEM_FN_NAME (frvbf,udivi) },
28241 { FRVBF_INSN_NUDIVI, SEM_FN_NAME (frvbf,nudivi) },
28242 { FRVBF_INSN_SMULI, SEM_FN_NAME (frvbf,smuli) },
28243 { FRVBF_INSN_UMULI, SEM_FN_NAME (frvbf,umuli) },
28244 { FRVBF_INSN_SLLI, SEM_FN_NAME (frvbf,slli) },
28245 { FRVBF_INSN_SRLI, SEM_FN_NAME (frvbf,srli) },
28246 { FRVBF_INSN_SRAI, SEM_FN_NAME (frvbf,srai) },
28247 { FRVBF_INSN_SCANI, SEM_FN_NAME (frvbf,scani) },
28248 { FRVBF_INSN_ADDICC, SEM_FN_NAME (frvbf,addicc) },
28249 { FRVBF_INSN_SUBICC, SEM_FN_NAME (frvbf,subicc) },
28250 { FRVBF_INSN_ANDICC, SEM_FN_NAME (frvbf,andicc) },
28251 { FRVBF_INSN_ORICC, SEM_FN_NAME (frvbf,oricc) },
28252 { FRVBF_INSN_XORICC, SEM_FN_NAME (frvbf,xoricc) },
28253 { FRVBF_INSN_SMULICC, SEM_FN_NAME (frvbf,smulicc) },
28254 { FRVBF_INSN_UMULICC, SEM_FN_NAME (frvbf,umulicc) },
28255 { FRVBF_INSN_SLLICC, SEM_FN_NAME (frvbf,sllicc) },
28256 { FRVBF_INSN_SRLICC, SEM_FN_NAME (frvbf,srlicc) },
28257 { FRVBF_INSN_SRAICC, SEM_FN_NAME (frvbf,sraicc) },
28258 { FRVBF_INSN_ADDXI, SEM_FN_NAME (frvbf,addxi) },
28259 { FRVBF_INSN_SUBXI, SEM_FN_NAME (frvbf,subxi) },
28260 { FRVBF_INSN_ADDXICC, SEM_FN_NAME (frvbf,addxicc) },
28261 { FRVBF_INSN_SUBXICC, SEM_FN_NAME (frvbf,subxicc) },
28262 { FRVBF_INSN_CMPB, SEM_FN_NAME (frvbf,cmpb) },
28263 { FRVBF_INSN_CMPBA, SEM_FN_NAME (frvbf,cmpba) },
28264 { FRVBF_INSN_SETLO, SEM_FN_NAME (frvbf,setlo) },
28265 { FRVBF_INSN_SETHI, SEM_FN_NAME (frvbf,sethi) },
28266 { FRVBF_INSN_SETLOS, SEM_FN_NAME (frvbf,setlos) },
28267 { FRVBF_INSN_LDSB, SEM_FN_NAME (frvbf,ldsb) },
28268 { FRVBF_INSN_LDUB, SEM_FN_NAME (frvbf,ldub) },
28269 { FRVBF_INSN_LDSH, SEM_FN_NAME (frvbf,ldsh) },
28270 { FRVBF_INSN_LDUH, SEM_FN_NAME (frvbf,lduh) },
28271 { FRVBF_INSN_LD, SEM_FN_NAME (frvbf,ld) },
28272 { FRVBF_INSN_LDBF, SEM_FN_NAME (frvbf,ldbf) },
28273 { FRVBF_INSN_LDHF, SEM_FN_NAME (frvbf,ldhf) },
28274 { FRVBF_INSN_LDF, SEM_FN_NAME (frvbf,ldf) },
28275 { FRVBF_INSN_LDC, SEM_FN_NAME (frvbf,ldc) },
28276 { FRVBF_INSN_NLDSB, SEM_FN_NAME (frvbf,nldsb) },
28277 { FRVBF_INSN_NLDUB, SEM_FN_NAME (frvbf,nldub) },
28278 { FRVBF_INSN_NLDSH, SEM_FN_NAME (frvbf,nldsh) },
28279 { FRVBF_INSN_NLDUH, SEM_FN_NAME (frvbf,nlduh) },
28280 { FRVBF_INSN_NLD, SEM_FN_NAME (frvbf,nld) },
28281 { FRVBF_INSN_NLDBF, SEM_FN_NAME (frvbf,nldbf) },
28282 { FRVBF_INSN_NLDHF, SEM_FN_NAME (frvbf,nldhf) },
28283 { FRVBF_INSN_NLDF, SEM_FN_NAME (frvbf,nldf) },
28284 { FRVBF_INSN_LDD, SEM_FN_NAME (frvbf,ldd) },
28285 { FRVBF_INSN_LDDF, SEM_FN_NAME (frvbf,lddf) },
28286 { FRVBF_INSN_LDDC, SEM_FN_NAME (frvbf,lddc) },
28287 { FRVBF_INSN_NLDD, SEM_FN_NAME (frvbf,nldd) },
28288 { FRVBF_INSN_NLDDF, SEM_FN_NAME (frvbf,nlddf) },
28289 { FRVBF_INSN_LDQ, SEM_FN_NAME (frvbf,ldq) },
28290 { FRVBF_INSN_LDQF, SEM_FN_NAME (frvbf,ldqf) },
28291 { FRVBF_INSN_LDQC, SEM_FN_NAME (frvbf,ldqc) },
28292 { FRVBF_INSN_NLDQ, SEM_FN_NAME (frvbf,nldq) },
28293 { FRVBF_INSN_NLDQF, SEM_FN_NAME (frvbf,nldqf) },
28294 { FRVBF_INSN_LDSBU, SEM_FN_NAME (frvbf,ldsbu) },
28295 { FRVBF_INSN_LDUBU, SEM_FN_NAME (frvbf,ldubu) },
28296 { FRVBF_INSN_LDSHU, SEM_FN_NAME (frvbf,ldshu) },
28297 { FRVBF_INSN_LDUHU, SEM_FN_NAME (frvbf,lduhu) },
28298 { FRVBF_INSN_LDU, SEM_FN_NAME (frvbf,ldu) },
28299 { FRVBF_INSN_NLDSBU, SEM_FN_NAME (frvbf,nldsbu) },
28300 { FRVBF_INSN_NLDUBU, SEM_FN_NAME (frvbf,nldubu) },
28301 { FRVBF_INSN_NLDSHU, SEM_FN_NAME (frvbf,nldshu) },
28302 { FRVBF_INSN_NLDUHU, SEM_FN_NAME (frvbf,nlduhu) },
28303 { FRVBF_INSN_NLDU, SEM_FN_NAME (frvbf,nldu) },
28304 { FRVBF_INSN_LDBFU, SEM_FN_NAME (frvbf,ldbfu) },
28305 { FRVBF_INSN_LDHFU, SEM_FN_NAME (frvbf,ldhfu) },
28306 { FRVBF_INSN_LDFU, SEM_FN_NAME (frvbf,ldfu) },
28307 { FRVBF_INSN_LDCU, SEM_FN_NAME (frvbf,ldcu) },
28308 { FRVBF_INSN_NLDBFU, SEM_FN_NAME (frvbf,nldbfu) },
28309 { FRVBF_INSN_NLDHFU, SEM_FN_NAME (frvbf,nldhfu) },
28310 { FRVBF_INSN_NLDFU, SEM_FN_NAME (frvbf,nldfu) },
28311 { FRVBF_INSN_LDDU, SEM_FN_NAME (frvbf,lddu) },
28312 { FRVBF_INSN_NLDDU, SEM_FN_NAME (frvbf,nlddu) },
28313 { FRVBF_INSN_LDDFU, SEM_FN_NAME (frvbf,lddfu) },
28314 { FRVBF_INSN_LDDCU, SEM_FN_NAME (frvbf,lddcu) },
28315 { FRVBF_INSN_NLDDFU, SEM_FN_NAME (frvbf,nlddfu) },
28316 { FRVBF_INSN_LDQU, SEM_FN_NAME (frvbf,ldqu) },
28317 { FRVBF_INSN_NLDQU, SEM_FN_NAME (frvbf,nldqu) },
28318 { FRVBF_INSN_LDQFU, SEM_FN_NAME (frvbf,ldqfu) },
28319 { FRVBF_INSN_LDQCU, SEM_FN_NAME (frvbf,ldqcu) },
28320 { FRVBF_INSN_NLDQFU, SEM_FN_NAME (frvbf,nldqfu) },
28321 { FRVBF_INSN_LDSBI, SEM_FN_NAME (frvbf,ldsbi) },
28322 { FRVBF_INSN_LDSHI, SEM_FN_NAME (frvbf,ldshi) },
28323 { FRVBF_INSN_LDI, SEM_FN_NAME (frvbf,ldi) },
28324 { FRVBF_INSN_LDUBI, SEM_FN_NAME (frvbf,ldubi) },
28325 { FRVBF_INSN_LDUHI, SEM_FN_NAME (frvbf,lduhi) },
28326 { FRVBF_INSN_LDBFI, SEM_FN_NAME (frvbf,ldbfi) },
28327 { FRVBF_INSN_LDHFI, SEM_FN_NAME (frvbf,ldhfi) },
28328 { FRVBF_INSN_LDFI, SEM_FN_NAME (frvbf,ldfi) },
28329 { FRVBF_INSN_NLDSBI, SEM_FN_NAME (frvbf,nldsbi) },
28330 { FRVBF_INSN_NLDUBI, SEM_FN_NAME (frvbf,nldubi) },
28331 { FRVBF_INSN_NLDSHI, SEM_FN_NAME (frvbf,nldshi) },
28332 { FRVBF_INSN_NLDUHI, SEM_FN_NAME (frvbf,nlduhi) },
28333 { FRVBF_INSN_NLDI, SEM_FN_NAME (frvbf,nldi) },
28334 { FRVBF_INSN_NLDBFI, SEM_FN_NAME (frvbf,nldbfi) },
28335 { FRVBF_INSN_NLDHFI, SEM_FN_NAME (frvbf,nldhfi) },
28336 { FRVBF_INSN_NLDFI, SEM_FN_NAME (frvbf,nldfi) },
28337 { FRVBF_INSN_LDDI, SEM_FN_NAME (frvbf,lddi) },
28338 { FRVBF_INSN_LDDFI, SEM_FN_NAME (frvbf,lddfi) },
28339 { FRVBF_INSN_NLDDI, SEM_FN_NAME (frvbf,nlddi) },
28340 { FRVBF_INSN_NLDDFI, SEM_FN_NAME (frvbf,nlddfi) },
28341 { FRVBF_INSN_LDQI, SEM_FN_NAME (frvbf,ldqi) },
28342 { FRVBF_INSN_LDQFI, SEM_FN_NAME (frvbf,ldqfi) },
28343 { FRVBF_INSN_NLDQFI, SEM_FN_NAME (frvbf,nldqfi) },
28344 { FRVBF_INSN_STB, SEM_FN_NAME (frvbf,stb) },
28345 { FRVBF_INSN_STH, SEM_FN_NAME (frvbf,sth) },
28346 { FRVBF_INSN_ST, SEM_FN_NAME (frvbf,st) },
28347 { FRVBF_INSN_STBF, SEM_FN_NAME (frvbf,stbf) },
28348 { FRVBF_INSN_STHF, SEM_FN_NAME (frvbf,sthf) },
28349 { FRVBF_INSN_STF, SEM_FN_NAME (frvbf,stf) },
28350 { FRVBF_INSN_STC, SEM_FN_NAME (frvbf,stc) },
28351 { FRVBF_INSN_STD, SEM_FN_NAME (frvbf,std) },
28352 { FRVBF_INSN_STDF, SEM_FN_NAME (frvbf,stdf) },
28353 { FRVBF_INSN_STDC, SEM_FN_NAME (frvbf,stdc) },
28354 { FRVBF_INSN_STQ, SEM_FN_NAME (frvbf,stq) },
28355 { FRVBF_INSN_STQF, SEM_FN_NAME (frvbf,stqf) },
28356 { FRVBF_INSN_STQC, SEM_FN_NAME (frvbf,stqc) },
28357 { FRVBF_INSN_STBU, SEM_FN_NAME (frvbf,stbu) },
28358 { FRVBF_INSN_STHU, SEM_FN_NAME (frvbf,sthu) },
28359 { FRVBF_INSN_STU, SEM_FN_NAME (frvbf,stu) },
28360 { FRVBF_INSN_STBFU, SEM_FN_NAME (frvbf,stbfu) },
28361 { FRVBF_INSN_STHFU, SEM_FN_NAME (frvbf,sthfu) },
28362 { FRVBF_INSN_STFU, SEM_FN_NAME (frvbf,stfu) },
28363 { FRVBF_INSN_STCU, SEM_FN_NAME (frvbf,stcu) },
28364 { FRVBF_INSN_STDU, SEM_FN_NAME (frvbf,stdu) },
28365 { FRVBF_INSN_STDFU, SEM_FN_NAME (frvbf,stdfu) },
28366 { FRVBF_INSN_STDCU, SEM_FN_NAME (frvbf,stdcu) },
28367 { FRVBF_INSN_STQU, SEM_FN_NAME (frvbf,stqu) },
28368 { FRVBF_INSN_STQFU, SEM_FN_NAME (frvbf,stqfu) },
28369 { FRVBF_INSN_STQCU, SEM_FN_NAME (frvbf,stqcu) },
28370 { FRVBF_INSN_CLDSB, SEM_FN_NAME (frvbf,cldsb) },
28371 { FRVBF_INSN_CLDUB, SEM_FN_NAME (frvbf,cldub) },
28372 { FRVBF_INSN_CLDSH, SEM_FN_NAME (frvbf,cldsh) },
28373 { FRVBF_INSN_CLDUH, SEM_FN_NAME (frvbf,clduh) },
28374 { FRVBF_INSN_CLD, SEM_FN_NAME (frvbf,cld) },
28375 { FRVBF_INSN_CLDBF, SEM_FN_NAME (frvbf,cldbf) },
28376 { FRVBF_INSN_CLDHF, SEM_FN_NAME (frvbf,cldhf) },
28377 { FRVBF_INSN_CLDF, SEM_FN_NAME (frvbf,cldf) },
28378 { FRVBF_INSN_CLDD, SEM_FN_NAME (frvbf,cldd) },
28379 { FRVBF_INSN_CLDDF, SEM_FN_NAME (frvbf,clddf) },
28380 { FRVBF_INSN_CLDQ, SEM_FN_NAME (frvbf,cldq) },
28381 { FRVBF_INSN_CLDSBU, SEM_FN_NAME (frvbf,cldsbu) },
28382 { FRVBF_INSN_CLDUBU, SEM_FN_NAME (frvbf,cldubu) },
28383 { FRVBF_INSN_CLDSHU, SEM_FN_NAME (frvbf,cldshu) },
28384 { FRVBF_INSN_CLDUHU, SEM_FN_NAME (frvbf,clduhu) },
28385 { FRVBF_INSN_CLDU, SEM_FN_NAME (frvbf,cldu) },
28386 { FRVBF_INSN_CLDBFU, SEM_FN_NAME (frvbf,cldbfu) },
28387 { FRVBF_INSN_CLDHFU, SEM_FN_NAME (frvbf,cldhfu) },
28388 { FRVBF_INSN_CLDFU, SEM_FN_NAME (frvbf,cldfu) },
28389 { FRVBF_INSN_CLDDU, SEM_FN_NAME (frvbf,clddu) },
28390 { FRVBF_INSN_CLDDFU, SEM_FN_NAME (frvbf,clddfu) },
28391 { FRVBF_INSN_CLDQU, SEM_FN_NAME (frvbf,cldqu) },
28392 { FRVBF_INSN_CSTB, SEM_FN_NAME (frvbf,cstb) },
28393 { FRVBF_INSN_CSTH, SEM_FN_NAME (frvbf,csth) },
28394 { FRVBF_INSN_CST, SEM_FN_NAME (frvbf,cst) },
28395 { FRVBF_INSN_CSTBF, SEM_FN_NAME (frvbf,cstbf) },
28396 { FRVBF_INSN_CSTHF, SEM_FN_NAME (frvbf,csthf) },
28397 { FRVBF_INSN_CSTF, SEM_FN_NAME (frvbf,cstf) },
28398 { FRVBF_INSN_CSTD, SEM_FN_NAME (frvbf,cstd) },
28399 { FRVBF_INSN_CSTDF, SEM_FN_NAME (frvbf,cstdf) },
28400 { FRVBF_INSN_CSTQ, SEM_FN_NAME (frvbf,cstq) },
28401 { FRVBF_INSN_CSTBU, SEM_FN_NAME (frvbf,cstbu) },
28402 { FRVBF_INSN_CSTHU, SEM_FN_NAME (frvbf,csthu) },
28403 { FRVBF_INSN_CSTU, SEM_FN_NAME (frvbf,cstu) },
28404 { FRVBF_INSN_CSTBFU, SEM_FN_NAME (frvbf,cstbfu) },
28405 { FRVBF_INSN_CSTHFU, SEM_FN_NAME (frvbf,csthfu) },
28406 { FRVBF_INSN_CSTFU, SEM_FN_NAME (frvbf,cstfu) },
28407 { FRVBF_INSN_CSTDU, SEM_FN_NAME (frvbf,cstdu) },
28408 { FRVBF_INSN_CSTDFU, SEM_FN_NAME (frvbf,cstdfu) },
28409 { FRVBF_INSN_STBI, SEM_FN_NAME (frvbf,stbi) },
28410 { FRVBF_INSN_STHI, SEM_FN_NAME (frvbf,sthi) },
28411 { FRVBF_INSN_STI, SEM_FN_NAME (frvbf,sti) },
28412 { FRVBF_INSN_STBFI, SEM_FN_NAME (frvbf,stbfi) },
28413 { FRVBF_INSN_STHFI, SEM_FN_NAME (frvbf,sthfi) },
28414 { FRVBF_INSN_STFI, SEM_FN_NAME (frvbf,stfi) },
28415 { FRVBF_INSN_STDI, SEM_FN_NAME (frvbf,stdi) },
28416 { FRVBF_INSN_STDFI, SEM_FN_NAME (frvbf,stdfi) },
28417 { FRVBF_INSN_STQI, SEM_FN_NAME (frvbf,stqi) },
28418 { FRVBF_INSN_STQFI, SEM_FN_NAME (frvbf,stqfi) },
28419 { FRVBF_INSN_SWAP, SEM_FN_NAME (frvbf,swap) },
28420 { FRVBF_INSN_SWAPI, SEM_FN_NAME (frvbf,swapi) },
28421 { FRVBF_INSN_CSWAP, SEM_FN_NAME (frvbf,cswap) },
28422 { FRVBF_INSN_MOVGF, SEM_FN_NAME (frvbf,movgf) },
28423 { FRVBF_INSN_MOVFG, SEM_FN_NAME (frvbf,movfg) },
28424 { FRVBF_INSN_MOVGFD, SEM_FN_NAME (frvbf,movgfd) },
28425 { FRVBF_INSN_MOVFGD, SEM_FN_NAME (frvbf,movfgd) },
28426 { FRVBF_INSN_MOVGFQ, SEM_FN_NAME (frvbf,movgfq) },
28427 { FRVBF_INSN_MOVFGQ, SEM_FN_NAME (frvbf,movfgq) },
28428 { FRVBF_INSN_CMOVGF, SEM_FN_NAME (frvbf,cmovgf) },
28429 { FRVBF_INSN_CMOVFG, SEM_FN_NAME (frvbf,cmovfg) },
28430 { FRVBF_INSN_CMOVGFD, SEM_FN_NAME (frvbf,cmovgfd) },
28431 { FRVBF_INSN_CMOVFGD, SEM_FN_NAME (frvbf,cmovfgd) },
28432 { FRVBF_INSN_MOVGS, SEM_FN_NAME (frvbf,movgs) },
28433 { FRVBF_INSN_MOVSG, SEM_FN_NAME (frvbf,movsg) },
28434 { FRVBF_INSN_BRA, SEM_FN_NAME (frvbf,bra) },
28435 { FRVBF_INSN_BNO, SEM_FN_NAME (frvbf,bno) },
28436 { FRVBF_INSN_BEQ, SEM_FN_NAME (frvbf,beq) },
28437 { FRVBF_INSN_BNE, SEM_FN_NAME (frvbf,bne) },
28438 { FRVBF_INSN_BLE, SEM_FN_NAME (frvbf,ble) },
28439 { FRVBF_INSN_BGT, SEM_FN_NAME (frvbf,bgt) },
28440 { FRVBF_INSN_BLT, SEM_FN_NAME (frvbf,blt) },
28441 { FRVBF_INSN_BGE, SEM_FN_NAME (frvbf,bge) },
28442 { FRVBF_INSN_BLS, SEM_FN_NAME (frvbf,bls) },
28443 { FRVBF_INSN_BHI, SEM_FN_NAME (frvbf,bhi) },
28444 { FRVBF_INSN_BC, SEM_FN_NAME (frvbf,bc) },
28445 { FRVBF_INSN_BNC, SEM_FN_NAME (frvbf,bnc) },
28446 { FRVBF_INSN_BN, SEM_FN_NAME (frvbf,bn) },
28447 { FRVBF_INSN_BP, SEM_FN_NAME (frvbf,bp) },
28448 { FRVBF_INSN_BV, SEM_FN_NAME (frvbf,bv) },
28449 { FRVBF_INSN_BNV, SEM_FN_NAME (frvbf,bnv) },
28450 { FRVBF_INSN_FBRA, SEM_FN_NAME (frvbf,fbra) },
28451 { FRVBF_INSN_FBNO, SEM_FN_NAME (frvbf,fbno) },
28452 { FRVBF_INSN_FBNE, SEM_FN_NAME (frvbf,fbne) },
28453 { FRVBF_INSN_FBEQ, SEM_FN_NAME (frvbf,fbeq) },
28454 { FRVBF_INSN_FBLG, SEM_FN_NAME (frvbf,fblg) },
28455 { FRVBF_INSN_FBUE, SEM_FN_NAME (frvbf,fbue) },
28456 { FRVBF_INSN_FBUL, SEM_FN_NAME (frvbf,fbul) },
28457 { FRVBF_INSN_FBGE, SEM_FN_NAME (frvbf,fbge) },
28458 { FRVBF_INSN_FBLT, SEM_FN_NAME (frvbf,fblt) },
28459 { FRVBF_INSN_FBUGE, SEM_FN_NAME (frvbf,fbuge) },
28460 { FRVBF_INSN_FBUG, SEM_FN_NAME (frvbf,fbug) },
28461 { FRVBF_INSN_FBLE, SEM_FN_NAME (frvbf,fble) },
28462 { FRVBF_INSN_FBGT, SEM_FN_NAME (frvbf,fbgt) },
28463 { FRVBF_INSN_FBULE, SEM_FN_NAME (frvbf,fbule) },
28464 { FRVBF_INSN_FBU, SEM_FN_NAME (frvbf,fbu) },
28465 { FRVBF_INSN_FBO, SEM_FN_NAME (frvbf,fbo) },
28466 { FRVBF_INSN_BCTRLR, SEM_FN_NAME (frvbf,bctrlr) },
28467 { FRVBF_INSN_BRALR, SEM_FN_NAME (frvbf,bralr) },
28468 { FRVBF_INSN_BNOLR, SEM_FN_NAME (frvbf,bnolr) },
28469 { FRVBF_INSN_BEQLR, SEM_FN_NAME (frvbf,beqlr) },
28470 { FRVBF_INSN_BNELR, SEM_FN_NAME (frvbf,bnelr) },
28471 { FRVBF_INSN_BLELR, SEM_FN_NAME (frvbf,blelr) },
28472 { FRVBF_INSN_BGTLR, SEM_FN_NAME (frvbf,bgtlr) },
28473 { FRVBF_INSN_BLTLR, SEM_FN_NAME (frvbf,bltlr) },
28474 { FRVBF_INSN_BGELR, SEM_FN_NAME (frvbf,bgelr) },
28475 { FRVBF_INSN_BLSLR, SEM_FN_NAME (frvbf,blslr) },
28476 { FRVBF_INSN_BHILR, SEM_FN_NAME (frvbf,bhilr) },
28477 { FRVBF_INSN_BCLR, SEM_FN_NAME (frvbf,bclr) },
28478 { FRVBF_INSN_BNCLR, SEM_FN_NAME (frvbf,bnclr) },
28479 { FRVBF_INSN_BNLR, SEM_FN_NAME (frvbf,bnlr) },
28480 { FRVBF_INSN_BPLR, SEM_FN_NAME (frvbf,bplr) },
28481 { FRVBF_INSN_BVLR, SEM_FN_NAME (frvbf,bvlr) },
28482 { FRVBF_INSN_BNVLR, SEM_FN_NAME (frvbf,bnvlr) },
28483 { FRVBF_INSN_FBRALR, SEM_FN_NAME (frvbf,fbralr) },
28484 { FRVBF_INSN_FBNOLR, SEM_FN_NAME (frvbf,fbnolr) },
28485 { FRVBF_INSN_FBEQLR, SEM_FN_NAME (frvbf,fbeqlr) },
28486 { FRVBF_INSN_FBNELR, SEM_FN_NAME (frvbf,fbnelr) },
28487 { FRVBF_INSN_FBLGLR, SEM_FN_NAME (frvbf,fblglr) },
28488 { FRVBF_INSN_FBUELR, SEM_FN_NAME (frvbf,fbuelr) },
28489 { FRVBF_INSN_FBULLR, SEM_FN_NAME (frvbf,fbullr) },
28490 { FRVBF_INSN_FBGELR, SEM_FN_NAME (frvbf,fbgelr) },
28491 { FRVBF_INSN_FBLTLR, SEM_FN_NAME (frvbf,fbltlr) },
28492 { FRVBF_INSN_FBUGELR, SEM_FN_NAME (frvbf,fbugelr) },
28493 { FRVBF_INSN_FBUGLR, SEM_FN_NAME (frvbf,fbuglr) },
28494 { FRVBF_INSN_FBLELR, SEM_FN_NAME (frvbf,fblelr) },
28495 { FRVBF_INSN_FBGTLR, SEM_FN_NAME (frvbf,fbgtlr) },
28496 { FRVBF_INSN_FBULELR, SEM_FN_NAME (frvbf,fbulelr) },
28497 { FRVBF_INSN_FBULR, SEM_FN_NAME (frvbf,fbulr) },
28498 { FRVBF_INSN_FBOLR, SEM_FN_NAME (frvbf,fbolr) },
28499 { FRVBF_INSN_BCRALR, SEM_FN_NAME (frvbf,bcralr) },
28500 { FRVBF_INSN_BCNOLR, SEM_FN_NAME (frvbf,bcnolr) },
28501 { FRVBF_INSN_BCEQLR, SEM_FN_NAME (frvbf,bceqlr) },
28502 { FRVBF_INSN_BCNELR, SEM_FN_NAME (frvbf,bcnelr) },
28503 { FRVBF_INSN_BCLELR, SEM_FN_NAME (frvbf,bclelr) },
28504 { FRVBF_INSN_BCGTLR, SEM_FN_NAME (frvbf,bcgtlr) },
28505 { FRVBF_INSN_BCLTLR, SEM_FN_NAME (frvbf,bcltlr) },
28506 { FRVBF_INSN_BCGELR, SEM_FN_NAME (frvbf,bcgelr) },
28507 { FRVBF_INSN_BCLSLR, SEM_FN_NAME (frvbf,bclslr) },
28508 { FRVBF_INSN_BCHILR, SEM_FN_NAME (frvbf,bchilr) },
28509 { FRVBF_INSN_BCCLR, SEM_FN_NAME (frvbf,bcclr) },
28510 { FRVBF_INSN_BCNCLR, SEM_FN_NAME (frvbf,bcnclr) },
28511 { FRVBF_INSN_BCNLR, SEM_FN_NAME (frvbf,bcnlr) },
28512 { FRVBF_INSN_BCPLR, SEM_FN_NAME (frvbf,bcplr) },
28513 { FRVBF_INSN_BCVLR, SEM_FN_NAME (frvbf,bcvlr) },
28514 { FRVBF_INSN_BCNVLR, SEM_FN_NAME (frvbf,bcnvlr) },
28515 { FRVBF_INSN_FCBRALR, SEM_FN_NAME (frvbf,fcbralr) },
28516 { FRVBF_INSN_FCBNOLR, SEM_FN_NAME (frvbf,fcbnolr) },
28517 { FRVBF_INSN_FCBEQLR, SEM_FN_NAME (frvbf,fcbeqlr) },
28518 { FRVBF_INSN_FCBNELR, SEM_FN_NAME (frvbf,fcbnelr) },
28519 { FRVBF_INSN_FCBLGLR, SEM_FN_NAME (frvbf,fcblglr) },
28520 { FRVBF_INSN_FCBUELR, SEM_FN_NAME (frvbf,fcbuelr) },
28521 { FRVBF_INSN_FCBULLR, SEM_FN_NAME (frvbf,fcbullr) },
28522 { FRVBF_INSN_FCBGELR, SEM_FN_NAME (frvbf,fcbgelr) },
28523 { FRVBF_INSN_FCBLTLR, SEM_FN_NAME (frvbf,fcbltlr) },
28524 { FRVBF_INSN_FCBUGELR, SEM_FN_NAME (frvbf,fcbugelr) },
28525 { FRVBF_INSN_FCBUGLR, SEM_FN_NAME (frvbf,fcbuglr) },
28526 { FRVBF_INSN_FCBLELR, SEM_FN_NAME (frvbf,fcblelr) },
28527 { FRVBF_INSN_FCBGTLR, SEM_FN_NAME (frvbf,fcbgtlr) },
28528 { FRVBF_INSN_FCBULELR, SEM_FN_NAME (frvbf,fcbulelr) },
28529 { FRVBF_INSN_FCBULR, SEM_FN_NAME (frvbf,fcbulr) },
28530 { FRVBF_INSN_FCBOLR, SEM_FN_NAME (frvbf,fcbolr) },
28531 { FRVBF_INSN_JMPL, SEM_FN_NAME (frvbf,jmpl) },
28532 { FRVBF_INSN_CALLL, SEM_FN_NAME (frvbf,calll) },
28533 { FRVBF_INSN_JMPIL, SEM_FN_NAME (frvbf,jmpil) },
28534 { FRVBF_INSN_CALLIL, SEM_FN_NAME (frvbf,callil) },
28535 { FRVBF_INSN_CALL, SEM_FN_NAME (frvbf,call) },
28536 { FRVBF_INSN_RETT, SEM_FN_NAME (frvbf,rett) },
28537 { FRVBF_INSN_REI, SEM_FN_NAME (frvbf,rei) },
28538 { FRVBF_INSN_TRA, SEM_FN_NAME (frvbf,tra) },
28539 { FRVBF_INSN_TNO, SEM_FN_NAME (frvbf,tno) },
28540 { FRVBF_INSN_TEQ, SEM_FN_NAME (frvbf,teq) },
28541 { FRVBF_INSN_TNE, SEM_FN_NAME (frvbf,tne) },
28542 { FRVBF_INSN_TLE, SEM_FN_NAME (frvbf,tle) },
28543 { FRVBF_INSN_TGT, SEM_FN_NAME (frvbf,tgt) },
28544 { FRVBF_INSN_TLT, SEM_FN_NAME (frvbf,tlt) },
28545 { FRVBF_INSN_TGE, SEM_FN_NAME (frvbf,tge) },
28546 { FRVBF_INSN_TLS, SEM_FN_NAME (frvbf,tls) },
28547 { FRVBF_INSN_THI, SEM_FN_NAME (frvbf,thi) },
28548 { FRVBF_INSN_TC, SEM_FN_NAME (frvbf,tc) },
28549 { FRVBF_INSN_TNC, SEM_FN_NAME (frvbf,tnc) },
28550 { FRVBF_INSN_TN, SEM_FN_NAME (frvbf,tn) },
28551 { FRVBF_INSN_TP, SEM_FN_NAME (frvbf,tp) },
28552 { FRVBF_INSN_TV, SEM_FN_NAME (frvbf,tv) },
28553 { FRVBF_INSN_TNV, SEM_FN_NAME (frvbf,tnv) },
28554 { FRVBF_INSN_FTRA, SEM_FN_NAME (frvbf,ftra) },
28555 { FRVBF_INSN_FTNO, SEM_FN_NAME (frvbf,ftno) },
28556 { FRVBF_INSN_FTNE, SEM_FN_NAME (frvbf,ftne) },
28557 { FRVBF_INSN_FTEQ, SEM_FN_NAME (frvbf,fteq) },
28558 { FRVBF_INSN_FTLG, SEM_FN_NAME (frvbf,ftlg) },
28559 { FRVBF_INSN_FTUE, SEM_FN_NAME (frvbf,ftue) },
28560 { FRVBF_INSN_FTUL, SEM_FN_NAME (frvbf,ftul) },
28561 { FRVBF_INSN_FTGE, SEM_FN_NAME (frvbf,ftge) },
28562 { FRVBF_INSN_FTLT, SEM_FN_NAME (frvbf,ftlt) },
28563 { FRVBF_INSN_FTUGE, SEM_FN_NAME (frvbf,ftuge) },
28564 { FRVBF_INSN_FTUG, SEM_FN_NAME (frvbf,ftug) },
28565 { FRVBF_INSN_FTLE, SEM_FN_NAME (frvbf,ftle) },
28566 { FRVBF_INSN_FTGT, SEM_FN_NAME (frvbf,ftgt) },
28567 { FRVBF_INSN_FTULE, SEM_FN_NAME (frvbf,ftule) },
28568 { FRVBF_INSN_FTU, SEM_FN_NAME (frvbf,ftu) },
28569 { FRVBF_INSN_FTO, SEM_FN_NAME (frvbf,fto) },
28570 { FRVBF_INSN_TIRA, SEM_FN_NAME (frvbf,tira) },
28571 { FRVBF_INSN_TINO, SEM_FN_NAME (frvbf,tino) },
28572 { FRVBF_INSN_TIEQ, SEM_FN_NAME (frvbf,tieq) },
28573 { FRVBF_INSN_TINE, SEM_FN_NAME (frvbf,tine) },
28574 { FRVBF_INSN_TILE, SEM_FN_NAME (frvbf,tile) },
28575 { FRVBF_INSN_TIGT, SEM_FN_NAME (frvbf,tigt) },
28576 { FRVBF_INSN_TILT, SEM_FN_NAME (frvbf,tilt) },
28577 { FRVBF_INSN_TIGE, SEM_FN_NAME (frvbf,tige) },
28578 { FRVBF_INSN_TILS, SEM_FN_NAME (frvbf,tils) },
28579 { FRVBF_INSN_TIHI, SEM_FN_NAME (frvbf,tihi) },
28580 { FRVBF_INSN_TIC, SEM_FN_NAME (frvbf,tic) },
28581 { FRVBF_INSN_TINC, SEM_FN_NAME (frvbf,tinc) },
28582 { FRVBF_INSN_TIN, SEM_FN_NAME (frvbf,tin) },
28583 { FRVBF_INSN_TIP, SEM_FN_NAME (frvbf,tip) },
28584 { FRVBF_INSN_TIV, SEM_FN_NAME (frvbf,tiv) },
28585 { FRVBF_INSN_TINV, SEM_FN_NAME (frvbf,tinv) },
28586 { FRVBF_INSN_FTIRA, SEM_FN_NAME (frvbf,ftira) },
28587 { FRVBF_INSN_FTINO, SEM_FN_NAME (frvbf,ftino) },
28588 { FRVBF_INSN_FTINE, SEM_FN_NAME (frvbf,ftine) },
28589 { FRVBF_INSN_FTIEQ, SEM_FN_NAME (frvbf,ftieq) },
28590 { FRVBF_INSN_FTILG, SEM_FN_NAME (frvbf,ftilg) },
28591 { FRVBF_INSN_FTIUE, SEM_FN_NAME (frvbf,ftiue) },
28592 { FRVBF_INSN_FTIUL, SEM_FN_NAME (frvbf,ftiul) },
28593 { FRVBF_INSN_FTIGE, SEM_FN_NAME (frvbf,ftige) },
28594 { FRVBF_INSN_FTILT, SEM_FN_NAME (frvbf,ftilt) },
28595 { FRVBF_INSN_FTIUGE, SEM_FN_NAME (frvbf,ftiuge) },
28596 { FRVBF_INSN_FTIUG, SEM_FN_NAME (frvbf,ftiug) },
28597 { FRVBF_INSN_FTILE, SEM_FN_NAME (frvbf,ftile) },
28598 { FRVBF_INSN_FTIGT, SEM_FN_NAME (frvbf,ftigt) },
28599 { FRVBF_INSN_FTIULE, SEM_FN_NAME (frvbf,ftiule) },
28600 { FRVBF_INSN_FTIU, SEM_FN_NAME (frvbf,ftiu) },
28601 { FRVBF_INSN_FTIO, SEM_FN_NAME (frvbf,ftio) },
28602 { FRVBF_INSN_BREAK, SEM_FN_NAME (frvbf,break) },
28603 { FRVBF_INSN_MTRAP, SEM_FN_NAME (frvbf,mtrap) },
28604 { FRVBF_INSN_ANDCR, SEM_FN_NAME (frvbf,andcr) },
28605 { FRVBF_INSN_ORCR, SEM_FN_NAME (frvbf,orcr) },
28606 { FRVBF_INSN_XORCR, SEM_FN_NAME (frvbf,xorcr) },
28607 { FRVBF_INSN_NANDCR, SEM_FN_NAME (frvbf,nandcr) },
28608 { FRVBF_INSN_NORCR, SEM_FN_NAME (frvbf,norcr) },
28609 { FRVBF_INSN_ANDNCR, SEM_FN_NAME (frvbf,andncr) },
28610 { FRVBF_INSN_ORNCR, SEM_FN_NAME (frvbf,orncr) },
28611 { FRVBF_INSN_NANDNCR, SEM_FN_NAME (frvbf,nandncr) },
28612 { FRVBF_INSN_NORNCR, SEM_FN_NAME (frvbf,norncr) },
28613 { FRVBF_INSN_NOTCR, SEM_FN_NAME (frvbf,notcr) },
28614 { FRVBF_INSN_CKRA, SEM_FN_NAME (frvbf,ckra) },
28615 { FRVBF_INSN_CKNO, SEM_FN_NAME (frvbf,ckno) },
28616 { FRVBF_INSN_CKEQ, SEM_FN_NAME (frvbf,ckeq) },
28617 { FRVBF_INSN_CKNE, SEM_FN_NAME (frvbf,ckne) },
28618 { FRVBF_INSN_CKLE, SEM_FN_NAME (frvbf,ckle) },
28619 { FRVBF_INSN_CKGT, SEM_FN_NAME (frvbf,ckgt) },
28620 { FRVBF_INSN_CKLT, SEM_FN_NAME (frvbf,cklt) },
28621 { FRVBF_INSN_CKGE, SEM_FN_NAME (frvbf,ckge) },
28622 { FRVBF_INSN_CKLS, SEM_FN_NAME (frvbf,ckls) },
28623 { FRVBF_INSN_CKHI, SEM_FN_NAME (frvbf,ckhi) },
28624 { FRVBF_INSN_CKC, SEM_FN_NAME (frvbf,ckc) },
28625 { FRVBF_INSN_CKNC, SEM_FN_NAME (frvbf,cknc) },
28626 { FRVBF_INSN_CKN, SEM_FN_NAME (frvbf,ckn) },
28627 { FRVBF_INSN_CKP, SEM_FN_NAME (frvbf,ckp) },
28628 { FRVBF_INSN_CKV, SEM_FN_NAME (frvbf,ckv) },
28629 { FRVBF_INSN_CKNV, SEM_FN_NAME (frvbf,cknv) },
28630 { FRVBF_INSN_FCKRA, SEM_FN_NAME (frvbf,fckra) },
28631 { FRVBF_INSN_FCKNO, SEM_FN_NAME (frvbf,fckno) },
28632 { FRVBF_INSN_FCKNE, SEM_FN_NAME (frvbf,fckne) },
28633 { FRVBF_INSN_FCKEQ, SEM_FN_NAME (frvbf,fckeq) },
28634 { FRVBF_INSN_FCKLG, SEM_FN_NAME (frvbf,fcklg) },
28635 { FRVBF_INSN_FCKUE, SEM_FN_NAME (frvbf,fckue) },
28636 { FRVBF_INSN_FCKUL, SEM_FN_NAME (frvbf,fckul) },
28637 { FRVBF_INSN_FCKGE, SEM_FN_NAME (frvbf,fckge) },
28638 { FRVBF_INSN_FCKLT, SEM_FN_NAME (frvbf,fcklt) },
28639 { FRVBF_INSN_FCKUGE, SEM_FN_NAME (frvbf,fckuge) },
28640 { FRVBF_INSN_FCKUG, SEM_FN_NAME (frvbf,fckug) },
28641 { FRVBF_INSN_FCKLE, SEM_FN_NAME (frvbf,fckle) },
28642 { FRVBF_INSN_FCKGT, SEM_FN_NAME (frvbf,fckgt) },
28643 { FRVBF_INSN_FCKULE, SEM_FN_NAME (frvbf,fckule) },
28644 { FRVBF_INSN_FCKU, SEM_FN_NAME (frvbf,fcku) },
28645 { FRVBF_INSN_FCKO, SEM_FN_NAME (frvbf,fcko) },
28646 { FRVBF_INSN_CCKRA, SEM_FN_NAME (frvbf,cckra) },
28647 { FRVBF_INSN_CCKNO, SEM_FN_NAME (frvbf,cckno) },
28648 { FRVBF_INSN_CCKEQ, SEM_FN_NAME (frvbf,cckeq) },
28649 { FRVBF_INSN_CCKNE, SEM_FN_NAME (frvbf,cckne) },
28650 { FRVBF_INSN_CCKLE, SEM_FN_NAME (frvbf,cckle) },
28651 { FRVBF_INSN_CCKGT, SEM_FN_NAME (frvbf,cckgt) },
28652 { FRVBF_INSN_CCKLT, SEM_FN_NAME (frvbf,ccklt) },
28653 { FRVBF_INSN_CCKGE, SEM_FN_NAME (frvbf,cckge) },
28654 { FRVBF_INSN_CCKLS, SEM_FN_NAME (frvbf,cckls) },
28655 { FRVBF_INSN_CCKHI, SEM_FN_NAME (frvbf,cckhi) },
28656 { FRVBF_INSN_CCKC, SEM_FN_NAME (frvbf,cckc) },
28657 { FRVBF_INSN_CCKNC, SEM_FN_NAME (frvbf,ccknc) },
28658 { FRVBF_INSN_CCKN, SEM_FN_NAME (frvbf,cckn) },
28659 { FRVBF_INSN_CCKP, SEM_FN_NAME (frvbf,cckp) },
28660 { FRVBF_INSN_CCKV, SEM_FN_NAME (frvbf,cckv) },
28661 { FRVBF_INSN_CCKNV, SEM_FN_NAME (frvbf,ccknv) },
28662 { FRVBF_INSN_CFCKRA, SEM_FN_NAME (frvbf,cfckra) },
28663 { FRVBF_INSN_CFCKNO, SEM_FN_NAME (frvbf,cfckno) },
28664 { FRVBF_INSN_CFCKNE, SEM_FN_NAME (frvbf,cfckne) },
28665 { FRVBF_INSN_CFCKEQ, SEM_FN_NAME (frvbf,cfckeq) },
28666 { FRVBF_INSN_CFCKLG, SEM_FN_NAME (frvbf,cfcklg) },
28667 { FRVBF_INSN_CFCKUE, SEM_FN_NAME (frvbf,cfckue) },
28668 { FRVBF_INSN_CFCKUL, SEM_FN_NAME (frvbf,cfckul) },
28669 { FRVBF_INSN_CFCKGE, SEM_FN_NAME (frvbf,cfckge) },
28670 { FRVBF_INSN_CFCKLT, SEM_FN_NAME (frvbf,cfcklt) },
28671 { FRVBF_INSN_CFCKUGE, SEM_FN_NAME (frvbf,cfckuge) },
28672 { FRVBF_INSN_CFCKUG, SEM_FN_NAME (frvbf,cfckug) },
28673 { FRVBF_INSN_CFCKLE, SEM_FN_NAME (frvbf,cfckle) },
28674 { FRVBF_INSN_CFCKGT, SEM_FN_NAME (frvbf,cfckgt) },
28675 { FRVBF_INSN_CFCKULE, SEM_FN_NAME (frvbf,cfckule) },
28676 { FRVBF_INSN_CFCKU, SEM_FN_NAME (frvbf,cfcku) },
28677 { FRVBF_INSN_CFCKO, SEM_FN_NAME (frvbf,cfcko) },
28678 { FRVBF_INSN_CJMPL, SEM_FN_NAME (frvbf,cjmpl) },
28679 { FRVBF_INSN_CCALLL, SEM_FN_NAME (frvbf,ccalll) },
28680 { FRVBF_INSN_ICI, SEM_FN_NAME (frvbf,ici) },
28681 { FRVBF_INSN_DCI, SEM_FN_NAME (frvbf,dci) },
28682 { FRVBF_INSN_ICEI, SEM_FN_NAME (frvbf,icei) },
28683 { FRVBF_INSN_DCEI, SEM_FN_NAME (frvbf,dcei) },
28684 { FRVBF_INSN_DCF, SEM_FN_NAME (frvbf,dcf) },
28685 { FRVBF_INSN_DCEF, SEM_FN_NAME (frvbf,dcef) },
28686 { FRVBF_INSN_WITLB, SEM_FN_NAME (frvbf,witlb) },
28687 { FRVBF_INSN_WDTLB, SEM_FN_NAME (frvbf,wdtlb) },
28688 { FRVBF_INSN_ITLBI, SEM_FN_NAME (frvbf,itlbi) },
28689 { FRVBF_INSN_DTLBI, SEM_FN_NAME (frvbf,dtlbi) },
28690 { FRVBF_INSN_ICPL, SEM_FN_NAME (frvbf,icpl) },
28691 { FRVBF_INSN_DCPL, SEM_FN_NAME (frvbf,dcpl) },
28692 { FRVBF_INSN_ICUL, SEM_FN_NAME (frvbf,icul) },
28693 { FRVBF_INSN_DCUL, SEM_FN_NAME (frvbf,dcul) },
28694 { FRVBF_INSN_BAR, SEM_FN_NAME (frvbf,bar) },
28695 { FRVBF_INSN_MEMBAR, SEM_FN_NAME (frvbf,membar) },
28696 { FRVBF_INSN_LRAI, SEM_FN_NAME (frvbf,lrai) },
28697 { FRVBF_INSN_LRAD, SEM_FN_NAME (frvbf,lrad) },
28698 { FRVBF_INSN_TLBPR, SEM_FN_NAME (frvbf,tlbpr) },
28699 { FRVBF_INSN_COP1, SEM_FN_NAME (frvbf,cop1) },
28700 { FRVBF_INSN_COP2, SEM_FN_NAME (frvbf,cop2) },
28701 { FRVBF_INSN_CLRGR, SEM_FN_NAME (frvbf,clrgr) },
28702 { FRVBF_INSN_CLRFR, SEM_FN_NAME (frvbf,clrfr) },
28703 { FRVBF_INSN_CLRGA, SEM_FN_NAME (frvbf,clrga) },
28704 { FRVBF_INSN_CLRFA, SEM_FN_NAME (frvbf,clrfa) },
28705 { FRVBF_INSN_COMMITGR, SEM_FN_NAME (frvbf,commitgr) },
28706 { FRVBF_INSN_COMMITFR, SEM_FN_NAME (frvbf,commitfr) },
28707 { FRVBF_INSN_COMMITGA, SEM_FN_NAME (frvbf,commitga) },
28708 { FRVBF_INSN_COMMITFA, SEM_FN_NAME (frvbf,commitfa) },
28709 { FRVBF_INSN_FITOS, SEM_FN_NAME (frvbf,fitos) },
28710 { FRVBF_INSN_FSTOI, SEM_FN_NAME (frvbf,fstoi) },
28711 { FRVBF_INSN_FITOD, SEM_FN_NAME (frvbf,fitod) },
28712 { FRVBF_INSN_FDTOI, SEM_FN_NAME (frvbf,fdtoi) },
28713 { FRVBF_INSN_FDITOS, SEM_FN_NAME (frvbf,fditos) },
28714 { FRVBF_INSN_FDSTOI, SEM_FN_NAME (frvbf,fdstoi) },
28715 { FRVBF_INSN_NFDITOS, SEM_FN_NAME (frvbf,nfditos) },
28716 { FRVBF_INSN_NFDSTOI, SEM_FN_NAME (frvbf,nfdstoi) },
28717 { FRVBF_INSN_CFITOS, SEM_FN_NAME (frvbf,cfitos) },
28718 { FRVBF_INSN_CFSTOI, SEM_FN_NAME (frvbf,cfstoi) },
28719 { FRVBF_INSN_NFITOS, SEM_FN_NAME (frvbf,nfitos) },
28720 { FRVBF_INSN_NFSTOI, SEM_FN_NAME (frvbf,nfstoi) },
28721 { FRVBF_INSN_FMOVS, SEM_FN_NAME (frvbf,fmovs) },
28722 { FRVBF_INSN_FMOVD, SEM_FN_NAME (frvbf,fmovd) },
28723 { FRVBF_INSN_FDMOVS, SEM_FN_NAME (frvbf,fdmovs) },
28724 { FRVBF_INSN_CFMOVS, SEM_FN_NAME (frvbf,cfmovs) },
28725 { FRVBF_INSN_FNEGS, SEM_FN_NAME (frvbf,fnegs) },
28726 { FRVBF_INSN_FNEGD, SEM_FN_NAME (frvbf,fnegd) },
28727 { FRVBF_INSN_FDNEGS, SEM_FN_NAME (frvbf,fdnegs) },
28728 { FRVBF_INSN_CFNEGS, SEM_FN_NAME (frvbf,cfnegs) },
28729 { FRVBF_INSN_FABSS, SEM_FN_NAME (frvbf,fabss) },
28730 { FRVBF_INSN_FABSD, SEM_FN_NAME (frvbf,fabsd) },
28731 { FRVBF_INSN_FDABSS, SEM_FN_NAME (frvbf,fdabss) },
28732 { FRVBF_INSN_CFABSS, SEM_FN_NAME (frvbf,cfabss) },
28733 { FRVBF_INSN_FSQRTS, SEM_FN_NAME (frvbf,fsqrts) },
28734 { FRVBF_INSN_FDSQRTS, SEM_FN_NAME (frvbf,fdsqrts) },
28735 { FRVBF_INSN_NFDSQRTS, SEM_FN_NAME (frvbf,nfdsqrts) },
28736 { FRVBF_INSN_FSQRTD, SEM_FN_NAME (frvbf,fsqrtd) },
28737 { FRVBF_INSN_CFSQRTS, SEM_FN_NAME (frvbf,cfsqrts) },
28738 { FRVBF_INSN_NFSQRTS, SEM_FN_NAME (frvbf,nfsqrts) },
28739 { FRVBF_INSN_FADDS, SEM_FN_NAME (frvbf,fadds) },
28740 { FRVBF_INSN_FSUBS, SEM_FN_NAME (frvbf,fsubs) },
28741 { FRVBF_INSN_FMULS, SEM_FN_NAME (frvbf,fmuls) },
28742 { FRVBF_INSN_FDIVS, SEM_FN_NAME (frvbf,fdivs) },
28743 { FRVBF_INSN_FADDD, SEM_FN_NAME (frvbf,faddd) },
28744 { FRVBF_INSN_FSUBD, SEM_FN_NAME (frvbf,fsubd) },
28745 { FRVBF_INSN_FMULD, SEM_FN_NAME (frvbf,fmuld) },
28746 { FRVBF_INSN_FDIVD, SEM_FN_NAME (frvbf,fdivd) },
28747 { FRVBF_INSN_CFADDS, SEM_FN_NAME (frvbf,cfadds) },
28748 { FRVBF_INSN_CFSUBS, SEM_FN_NAME (frvbf,cfsubs) },
28749 { FRVBF_INSN_CFMULS, SEM_FN_NAME (frvbf,cfmuls) },
28750 { FRVBF_INSN_CFDIVS, SEM_FN_NAME (frvbf,cfdivs) },
28751 { FRVBF_INSN_NFADDS, SEM_FN_NAME (frvbf,nfadds) },
28752 { FRVBF_INSN_NFSUBS, SEM_FN_NAME (frvbf,nfsubs) },
28753 { FRVBF_INSN_NFMULS, SEM_FN_NAME (frvbf,nfmuls) },
28754 { FRVBF_INSN_NFDIVS, SEM_FN_NAME (frvbf,nfdivs) },
28755 { FRVBF_INSN_FCMPS, SEM_FN_NAME (frvbf,fcmps) },
28756 { FRVBF_INSN_FCMPD, SEM_FN_NAME (frvbf,fcmpd) },
28757 { FRVBF_INSN_CFCMPS, SEM_FN_NAME (frvbf,cfcmps) },
28758 { FRVBF_INSN_FDCMPS, SEM_FN_NAME (frvbf,fdcmps) },
28759 { FRVBF_INSN_FMADDS, SEM_FN_NAME (frvbf,fmadds) },
28760 { FRVBF_INSN_FMSUBS, SEM_FN_NAME (frvbf,fmsubs) },
28761 { FRVBF_INSN_FMADDD, SEM_FN_NAME (frvbf,fmaddd) },
28762 { FRVBF_INSN_FMSUBD, SEM_FN_NAME (frvbf,fmsubd) },
28763 { FRVBF_INSN_FDMADDS, SEM_FN_NAME (frvbf,fdmadds) },
28764 { FRVBF_INSN_NFDMADDS, SEM_FN_NAME (frvbf,nfdmadds) },
28765 { FRVBF_INSN_CFMADDS, SEM_FN_NAME (frvbf,cfmadds) },
28766 { FRVBF_INSN_CFMSUBS, SEM_FN_NAME (frvbf,cfmsubs) },
28767 { FRVBF_INSN_NFMADDS, SEM_FN_NAME (frvbf,nfmadds) },
28768 { FRVBF_INSN_NFMSUBS, SEM_FN_NAME (frvbf,nfmsubs) },
28769 { FRVBF_INSN_FMAS, SEM_FN_NAME (frvbf,fmas) },
28770 { FRVBF_INSN_FMSS, SEM_FN_NAME (frvbf,fmss) },
28771 { FRVBF_INSN_FDMAS, SEM_FN_NAME (frvbf,fdmas) },
28772 { FRVBF_INSN_FDMSS, SEM_FN_NAME (frvbf,fdmss) },
28773 { FRVBF_INSN_NFDMAS, SEM_FN_NAME (frvbf,nfdmas) },
28774 { FRVBF_INSN_NFDMSS, SEM_FN_NAME (frvbf,nfdmss) },
28775 { FRVBF_INSN_CFMAS, SEM_FN_NAME (frvbf,cfmas) },
28776 { FRVBF_INSN_CFMSS, SEM_FN_NAME (frvbf,cfmss) },
28777 { FRVBF_INSN_FMAD, SEM_FN_NAME (frvbf,fmad) },
28778 { FRVBF_INSN_FMSD, SEM_FN_NAME (frvbf,fmsd) },
28779 { FRVBF_INSN_NFMAS, SEM_FN_NAME (frvbf,nfmas) },
28780 { FRVBF_INSN_NFMSS, SEM_FN_NAME (frvbf,nfmss) },
28781 { FRVBF_INSN_FDADDS, SEM_FN_NAME (frvbf,fdadds) },
28782 { FRVBF_INSN_FDSUBS, SEM_FN_NAME (frvbf,fdsubs) },
28783 { FRVBF_INSN_FDMULS, SEM_FN_NAME (frvbf,fdmuls) },
28784 { FRVBF_INSN_FDDIVS, SEM_FN_NAME (frvbf,fddivs) },
28785 { FRVBF_INSN_FDSADS, SEM_FN_NAME (frvbf,fdsads) },
28786 { FRVBF_INSN_FDMULCS, SEM_FN_NAME (frvbf,fdmulcs) },
28787 { FRVBF_INSN_NFDMULCS, SEM_FN_NAME (frvbf,nfdmulcs) },
28788 { FRVBF_INSN_NFDADDS, SEM_FN_NAME (frvbf,nfdadds) },
28789 { FRVBF_INSN_NFDSUBS, SEM_FN_NAME (frvbf,nfdsubs) },
28790 { FRVBF_INSN_NFDMULS, SEM_FN_NAME (frvbf,nfdmuls) },
28791 { FRVBF_INSN_NFDDIVS, SEM_FN_NAME (frvbf,nfddivs) },
28792 { FRVBF_INSN_NFDSADS, SEM_FN_NAME (frvbf,nfdsads) },
28793 { FRVBF_INSN_NFDCMPS, SEM_FN_NAME (frvbf,nfdcmps) },
28794 { FRVBF_INSN_MHSETLOS, SEM_FN_NAME (frvbf,mhsetlos) },
28795 { FRVBF_INSN_MHSETHIS, SEM_FN_NAME (frvbf,mhsethis) },
28796 { FRVBF_INSN_MHDSETS, SEM_FN_NAME (frvbf,mhdsets) },
28797 { FRVBF_INSN_MHSETLOH, SEM_FN_NAME (frvbf,mhsetloh) },
28798 { FRVBF_INSN_MHSETHIH, SEM_FN_NAME (frvbf,mhsethih) },
28799 { FRVBF_INSN_MHDSETH, SEM_FN_NAME (frvbf,mhdseth) },
28800 { FRVBF_INSN_MAND, SEM_FN_NAME (frvbf,mand) },
28801 { FRVBF_INSN_MOR, SEM_FN_NAME (frvbf,mor) },
28802 { FRVBF_INSN_MXOR, SEM_FN_NAME (frvbf,mxor) },
28803 { FRVBF_INSN_CMAND, SEM_FN_NAME (frvbf,cmand) },
28804 { FRVBF_INSN_CMOR, SEM_FN_NAME (frvbf,cmor) },
28805 { FRVBF_INSN_CMXOR, SEM_FN_NAME (frvbf,cmxor) },
28806 { FRVBF_INSN_MNOT, SEM_FN_NAME (frvbf,mnot) },
28807 { FRVBF_INSN_CMNOT, SEM_FN_NAME (frvbf,cmnot) },
28808 { FRVBF_INSN_MROTLI, SEM_FN_NAME (frvbf,mrotli) },
28809 { FRVBF_INSN_MROTRI, SEM_FN_NAME (frvbf,mrotri) },
28810 { FRVBF_INSN_MWCUT, SEM_FN_NAME (frvbf,mwcut) },
28811 { FRVBF_INSN_MWCUTI, SEM_FN_NAME (frvbf,mwcuti) },
28812 { FRVBF_INSN_MCUT, SEM_FN_NAME (frvbf,mcut) },
28813 { FRVBF_INSN_MCUTI, SEM_FN_NAME (frvbf,mcuti) },
28814 { FRVBF_INSN_MCUTSS, SEM_FN_NAME (frvbf,mcutss) },
28815 { FRVBF_INSN_MCUTSSI, SEM_FN_NAME (frvbf,mcutssi) },
28816 { FRVBF_INSN_MDCUTSSI, SEM_FN_NAME (frvbf,mdcutssi) },
28817 { FRVBF_INSN_MAVEH, SEM_FN_NAME (frvbf,maveh) },
28818 { FRVBF_INSN_MSLLHI, SEM_FN_NAME (frvbf,msllhi) },
28819 { FRVBF_INSN_MSRLHI, SEM_FN_NAME (frvbf,msrlhi) },
28820 { FRVBF_INSN_MSRAHI, SEM_FN_NAME (frvbf,msrahi) },
28821 { FRVBF_INSN_MDROTLI, SEM_FN_NAME (frvbf,mdrotli) },
28822 { FRVBF_INSN_MCPLHI, SEM_FN_NAME (frvbf,mcplhi) },
28823 { FRVBF_INSN_MCPLI, SEM_FN_NAME (frvbf,mcpli) },
28824 { FRVBF_INSN_MSATHS, SEM_FN_NAME (frvbf,msaths) },
28825 { FRVBF_INSN_MQSATHS, SEM_FN_NAME (frvbf,mqsaths) },
28826 { FRVBF_INSN_MSATHU, SEM_FN_NAME (frvbf,msathu) },
28827 { FRVBF_INSN_MCMPSH, SEM_FN_NAME (frvbf,mcmpsh) },
28828 { FRVBF_INSN_MCMPUH, SEM_FN_NAME (frvbf,mcmpuh) },
28829 { FRVBF_INSN_MABSHS, SEM_FN_NAME (frvbf,mabshs) },
28830 { FRVBF_INSN_MADDHSS, SEM_FN_NAME (frvbf,maddhss) },
28831 { FRVBF_INSN_MADDHUS, SEM_FN_NAME (frvbf,maddhus) },
28832 { FRVBF_INSN_MSUBHSS, SEM_FN_NAME (frvbf,msubhss) },
28833 { FRVBF_INSN_MSUBHUS, SEM_FN_NAME (frvbf,msubhus) },
28834 { FRVBF_INSN_CMADDHSS, SEM_FN_NAME (frvbf,cmaddhss) },
28835 { FRVBF_INSN_CMADDHUS, SEM_FN_NAME (frvbf,cmaddhus) },
28836 { FRVBF_INSN_CMSUBHSS, SEM_FN_NAME (frvbf,cmsubhss) },
28837 { FRVBF_INSN_CMSUBHUS, SEM_FN_NAME (frvbf,cmsubhus) },
28838 { FRVBF_INSN_MQADDHSS, SEM_FN_NAME (frvbf,mqaddhss) },
28839 { FRVBF_INSN_MQADDHUS, SEM_FN_NAME (frvbf,mqaddhus) },
28840 { FRVBF_INSN_MQSUBHSS, SEM_FN_NAME (frvbf,mqsubhss) },
28841 { FRVBF_INSN_MQSUBHUS, SEM_FN_NAME (frvbf,mqsubhus) },
28842 { FRVBF_INSN_CMQADDHSS, SEM_FN_NAME (frvbf,cmqaddhss) },
28843 { FRVBF_INSN_CMQADDHUS, SEM_FN_NAME (frvbf,cmqaddhus) },
28844 { FRVBF_INSN_CMQSUBHSS, SEM_FN_NAME (frvbf,cmqsubhss) },
28845 { FRVBF_INSN_CMQSUBHUS, SEM_FN_NAME (frvbf,cmqsubhus) },
28846 { FRVBF_INSN_MQLCLRHS, SEM_FN_NAME (frvbf,mqlclrhs) },
28847 { FRVBF_INSN_MQLMTHS, SEM_FN_NAME (frvbf,mqlmths) },
28848 { FRVBF_INSN_MQSLLHI, SEM_FN_NAME (frvbf,mqsllhi) },
28849 { FRVBF_INSN_MQSRAHI, SEM_FN_NAME (frvbf,mqsrahi) },
28850 { FRVBF_INSN_MADDACCS, SEM_FN_NAME (frvbf,maddaccs) },
28851 { FRVBF_INSN_MSUBACCS, SEM_FN_NAME (frvbf,msubaccs) },
28852 { FRVBF_INSN_MDADDACCS, SEM_FN_NAME (frvbf,mdaddaccs) },
28853 { FRVBF_INSN_MDSUBACCS, SEM_FN_NAME (frvbf,mdsubaccs) },
28854 { FRVBF_INSN_MASACCS, SEM_FN_NAME (frvbf,masaccs) },
28855 { FRVBF_INSN_MDASACCS, SEM_FN_NAME (frvbf,mdasaccs) },
28856 { FRVBF_INSN_MMULHS, SEM_FN_NAME (frvbf,mmulhs) },
28857 { FRVBF_INSN_MMULHU, SEM_FN_NAME (frvbf,mmulhu) },
28858 { FRVBF_INSN_MMULXHS, SEM_FN_NAME (frvbf,mmulxhs) },
28859 { FRVBF_INSN_MMULXHU, SEM_FN_NAME (frvbf,mmulxhu) },
28860 { FRVBF_INSN_CMMULHS, SEM_FN_NAME (frvbf,cmmulhs) },
28861 { FRVBF_INSN_CMMULHU, SEM_FN_NAME (frvbf,cmmulhu) },
28862 { FRVBF_INSN_MQMULHS, SEM_FN_NAME (frvbf,mqmulhs) },
28863 { FRVBF_INSN_MQMULHU, SEM_FN_NAME (frvbf,mqmulhu) },
28864 { FRVBF_INSN_MQMULXHS, SEM_FN_NAME (frvbf,mqmulxhs) },
28865 { FRVBF_INSN_MQMULXHU, SEM_FN_NAME (frvbf,mqmulxhu) },
28866 { FRVBF_INSN_CMQMULHS, SEM_FN_NAME (frvbf,cmqmulhs) },
28867 { FRVBF_INSN_CMQMULHU, SEM_FN_NAME (frvbf,cmqmulhu) },
28868 { FRVBF_INSN_MMACHS, SEM_FN_NAME (frvbf,mmachs) },
28869 { FRVBF_INSN_MMACHU, SEM_FN_NAME (frvbf,mmachu) },
28870 { FRVBF_INSN_MMRDHS, SEM_FN_NAME (frvbf,mmrdhs) },
28871 { FRVBF_INSN_MMRDHU, SEM_FN_NAME (frvbf,mmrdhu) },
28872 { FRVBF_INSN_CMMACHS, SEM_FN_NAME (frvbf,cmmachs) },
28873 { FRVBF_INSN_CMMACHU, SEM_FN_NAME (frvbf,cmmachu) },
28874 { FRVBF_INSN_MQMACHS, SEM_FN_NAME (frvbf,mqmachs) },
28875 { FRVBF_INSN_MQMACHU, SEM_FN_NAME (frvbf,mqmachu) },
28876 { FRVBF_INSN_CMQMACHS, SEM_FN_NAME (frvbf,cmqmachs) },
28877 { FRVBF_INSN_CMQMACHU, SEM_FN_NAME (frvbf,cmqmachu) },
28878 { FRVBF_INSN_MQXMACHS, SEM_FN_NAME (frvbf,mqxmachs) },
28879 { FRVBF_INSN_MQXMACXHS, SEM_FN_NAME (frvbf,mqxmacxhs) },
28880 { FRVBF_INSN_MQMACXHS, SEM_FN_NAME (frvbf,mqmacxhs) },
28881 { FRVBF_INSN_MCPXRS, SEM_FN_NAME (frvbf,mcpxrs) },
28882 { FRVBF_INSN_MCPXRU, SEM_FN_NAME (frvbf,mcpxru) },
28883 { FRVBF_INSN_MCPXIS, SEM_FN_NAME (frvbf,mcpxis) },
28884 { FRVBF_INSN_MCPXIU, SEM_FN_NAME (frvbf,mcpxiu) },
28885 { FRVBF_INSN_CMCPXRS, SEM_FN_NAME (frvbf,cmcpxrs) },
28886 { FRVBF_INSN_CMCPXRU, SEM_FN_NAME (frvbf,cmcpxru) },
28887 { FRVBF_INSN_CMCPXIS, SEM_FN_NAME (frvbf,cmcpxis) },
28888 { FRVBF_INSN_CMCPXIU, SEM_FN_NAME (frvbf,cmcpxiu) },
28889 { FRVBF_INSN_MQCPXRS, SEM_FN_NAME (frvbf,mqcpxrs) },
28890 { FRVBF_INSN_MQCPXRU, SEM_FN_NAME (frvbf,mqcpxru) },
28891 { FRVBF_INSN_MQCPXIS, SEM_FN_NAME (frvbf,mqcpxis) },
28892 { FRVBF_INSN_MQCPXIU, SEM_FN_NAME (frvbf,mqcpxiu) },
28893 { FRVBF_INSN_MEXPDHW, SEM_FN_NAME (frvbf,mexpdhw) },
28894 { FRVBF_INSN_CMEXPDHW, SEM_FN_NAME (frvbf,cmexpdhw) },
28895 { FRVBF_INSN_MEXPDHD, SEM_FN_NAME (frvbf,mexpdhd) },
28896 { FRVBF_INSN_CMEXPDHD, SEM_FN_NAME (frvbf,cmexpdhd) },
28897 { FRVBF_INSN_MPACKH, SEM_FN_NAME (frvbf,mpackh) },
28898 { FRVBF_INSN_MDPACKH, SEM_FN_NAME (frvbf,mdpackh) },
28899 { FRVBF_INSN_MUNPACKH, SEM_FN_NAME (frvbf,munpackh) },
28900 { FRVBF_INSN_MDUNPACKH, SEM_FN_NAME (frvbf,mdunpackh) },
28901 { FRVBF_INSN_MBTOH, SEM_FN_NAME (frvbf,mbtoh) },
28902 { FRVBF_INSN_CMBTOH, SEM_FN_NAME (frvbf,cmbtoh) },
28903 { FRVBF_INSN_MHTOB, SEM_FN_NAME (frvbf,mhtob) },
28904 { FRVBF_INSN_CMHTOB, SEM_FN_NAME (frvbf,cmhtob) },
28905 { FRVBF_INSN_MBTOHE, SEM_FN_NAME (frvbf,mbtohe) },
28906 { FRVBF_INSN_CMBTOHE, SEM_FN_NAME (frvbf,cmbtohe) },
28907 { FRVBF_INSN_MNOP, SEM_FN_NAME (frvbf,mnop) },
28908 { FRVBF_INSN_MCLRACC_0, SEM_FN_NAME (frvbf,mclracc_0) },
28909 { FRVBF_INSN_MCLRACC_1, SEM_FN_NAME (frvbf,mclracc_1) },
28910 { FRVBF_INSN_MRDACC, SEM_FN_NAME (frvbf,mrdacc) },
28911 { FRVBF_INSN_MRDACCG, SEM_FN_NAME (frvbf,mrdaccg) },
28912 { FRVBF_INSN_MWTACC, SEM_FN_NAME (frvbf,mwtacc) },
28913 { FRVBF_INSN_MWTACCG, SEM_FN_NAME (frvbf,mwtaccg) },
28914 { FRVBF_INSN_MCOP1, SEM_FN_NAME (frvbf,mcop1) },
28915 { FRVBF_INSN_MCOP2, SEM_FN_NAME (frvbf,mcop2) },
28916 { FRVBF_INSN_FNOP, SEM_FN_NAME (frvbf,fnop) },
28917 { 0, 0 }
28920 /* Add the semantic fns to IDESC_TABLE. */
28922 void
28923 SEM_FN_NAME (frvbf,init_idesc_table) (SIM_CPU *current_cpu)
28925 IDESC *idesc_table = CPU_IDESC (current_cpu);
28926 const struct sem_fn_desc *sf;
28927 int mach_num = MACH_NUM (CPU_MACH (current_cpu));
28929 for (sf = &sem_fns[0]; sf->fn != 0; ++sf)
28931 const CGEN_INSN *insn = idesc_table[sf->index].idata;
28932 int valid_p = (CGEN_INSN_VIRTUAL_P (insn)
28933 || CGEN_INSN_MACH_HAS_P (insn, mach_num));
28934 #if FAST_P
28935 if (valid_p)
28936 idesc_table[sf->index].sem_fast = sf->fn;
28937 else
28938 idesc_table[sf->index].sem_fast = SEM_FN_NAME (frvbf,x_invalid);
28939 #else
28940 if (valid_p)
28941 idesc_table[sf->index].sem_full = sf->fn;
28942 else
28943 idesc_table[sf->index].sem_full = SEM_FN_NAME (frvbf,x_invalid);
28944 #endif